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