1{
2 lib,
3 buildPythonPackage,
4 fetchFromGitHub,
5
6 # build-system
7 setuptools,
8 setuptools-scm,
9
10 # dependencies
11 aenum,
12 cachetools,
13 gitpython,
14 klayout,
15 loguru,
16 numpy,
17 pydantic,
18 pydantic-settings,
19 rectangle-packer,
20 requests,
21 ruamel-yaml,
22 ruamel-yaml-string,
23 scipy,
24 tomli,
25 toolz,
26 typer,
27
28 # tests
29 pytestCheckHook,
30}:
31
32buildPythonPackage rec {
33 pname = "kfactory";
34 version = "1.4.4";
35 pyproject = true;
36
37 src = fetchFromGitHub {
38 owner = "gdsfactory";
39 repo = "kfactory";
40 tag = "v${version}";
41 hash = "sha256-/dhlAcrqQP/YeKGhnBAVMEy80X3yShn65ywoZMRU/ZM=";
42 };
43
44 build-system = [
45 setuptools
46 setuptools-scm
47 ];
48
49 dependencies = [
50 aenum
51 cachetools
52 gitpython
53 klayout
54 loguru
55 numpy
56 pydantic
57 pydantic-settings
58 rectangle-packer
59 requests
60 ruamel-yaml
61 ruamel-yaml-string
62 scipy
63 tomli
64 toolz
65 typer
66 ];
67
68 pythonImportsCheck = [ "kfactory" ];
69
70 nativeCheckInputs = [ pytestCheckHook ];
71
72 disabledTestPaths = [
73 # https://github.com/gdsfactory/kfactory/issues/511
74 "tests/test_pdk.py"
75 ];
76
77 meta = {
78 description = "KLayout API implementation of gdsfactory";
79 homepage = "https://github.com/gdsfactory/kfactory";
80 changelog = "https://github.com/gdsfactory/kfactory/blob/v${version}/CHANGELOG.md";
81 license = lib.licenses.mit;
82 maintainers = with lib.maintainers; [ fbeffa ];
83 };
84}