1{
2 lib,
3 buildPythonPackage,
4 fetchFromGitHub,
5
6 # build-system
7 flit-core,
8
9 # dependencies
10 jinja2,
11 loguru,
12 matplotlib,
13 numpy,
14 orjson,
15 pandas,
16 pydantic,
17 pydantic-settings,
18 pydantic-extra-types,
19 pyyaml,
20 qrcode,
21 rectpack,
22 rich,
23 scipy,
24 shapely,
25 toolz,
26 types-pyyaml,
27 typer,
28 kfactory,
29 watchdog,
30 freetype-py,
31 mapbox-earcut,
32 networkx,
33 scikit-image,
34 trimesh,
35 ipykernel,
36 attrs,
37 graphviz,
38 pyglet,
39 typing-extensions,
40
41 # tests
42 jsondiff,
43 jsonschema,
44 pytest-regressions,
45 pytestCheckHook,
46}:
47buildPythonPackage rec {
48 pname = "gdsfactory";
49 version = "9.17.0";
50 pyproject = true;
51
52 src = fetchFromGitHub {
53 owner = "gdsfactory";
54 repo = "gdsfactory";
55 tag = "v${version}";
56 hash = "sha256-1C7Cva5FZsYLpfF3EZt0RFaWRcYdUdid6Oz9iQHeTqo=";
57 };
58
59 build-system = [ flit-core ];
60
61 dependencies = [
62 jinja2
63 loguru
64 matplotlib
65 numpy
66 orjson
67 pandas
68 pydantic
69 pydantic-settings
70 pydantic-extra-types
71 pyyaml
72 qrcode
73 rectpack
74 rich
75 scipy
76 shapely
77 toolz
78 types-pyyaml
79 typer
80 kfactory
81 watchdog
82 freetype-py
83 mapbox-earcut
84 networkx
85 scikit-image
86 trimesh
87 ipykernel
88 attrs
89 graphviz
90 pyglet
91 typing-extensions
92 ];
93
94 nativeCheckInputs = [
95 jsondiff
96 jsonschema
97 pytest-regressions
98 pytestCheckHook
99 ];
100
101 pythonRelaxDeps = [
102 "pydantic"
103 "trimesh"
104 ];
105
106 # tests require >32GB of RAM
107 doCheck = false;
108
109 pythonImportsCheck = [ "gdsfactory" ];
110
111 meta = {
112 description = "Python library to generate GDS layouts";
113 homepage = "https://github.com/gdsfactory/gdsfactory";
114 changelog = "https://github.com/gdsfactory/gdsfactory/blob/${src.tag}/CHANGELOG.md";
115 license = lib.licenses.mit;
116 maintainers = with lib.maintainers; [ fbeffa ];
117 };
118}