1{
2 lib,
3 buildPythonPackage,
4 fetchFromGitHub,
5 # build-system
6 hatchling,
7 scikit-build-core,
8 hatch-vcs,
9 nanobind,
10 # deps
11 antlr4-python3-runtime,
12 attrs,
13 case-converter,
14 cattrs,
15 click,
16 deepdiff,
17 easyeda2ato,
18 eseries,
19 fake-useragent,
20 fastapi,
21 gitpython,
22 igraph,
23 jinja2,
24 natsort,
25 networkx,
26 pandas,
27 pint,
28 pygls,
29 quart-cors,
30 quart-schema,
31 quart,
32 rich,
33 ruamel-yaml,
34 schema,
35 scipy,
36 semver,
37 toolz,
38 urllib3,
39 uvicorn,
40 watchfiles,
41 pyyaml,
42 # tests
43 pytestCheckHook,
44 pytest-xdist,
45 pytest-timeout,
46}:
47
48buildPythonPackage rec {
49 pname = "atopile";
50 version = "0.2.69";
51 pyproject = true;
52
53 src = fetchFromGitHub {
54 owner = "atopile";
55 repo = "atopile";
56 tag = "v${version}";
57 hash = "sha256-mQYnaWch0lVzz1hV6WboYxBGe3ruw+mK2AwMx13DQJM=";
58 };
59
60 build-system = [
61 hatchling
62 scikit-build-core
63 hatch-vcs
64 nanobind
65 ];
66
67 dependencies = [
68 antlr4-python3-runtime
69 attrs
70 case-converter
71 cattrs
72 click
73 deepdiff
74 easyeda2ato
75 eseries
76 fake-useragent
77 fastapi
78 gitpython
79 igraph
80 jinja2
81 natsort
82 networkx
83 pandas
84 pint
85 pygls
86 quart-cors
87 quart-schema
88 quart
89 rich
90 ruamel-yaml
91 schema
92 scipy
93 semver
94 toolz
95 urllib3
96 uvicorn
97 watchfiles
98 pyyaml # required for ato
99 ];
100
101 pythonRelaxDeps = [ "antlr4-python3-runtime" ];
102
103 pythonImportsCheck = [ "atopile" ];
104
105 preCheck = ''
106 substituteInPlace pyproject.toml \
107 --replace-fail "--html=artifacts/test-report.html" "" \
108 --replace-fail "--self-contained-html" ""
109 '';
110
111 nativeCheckInputs = [
112 pytestCheckHook
113 pytest-xdist
114 pytest-timeout
115 ];
116
117 meta = {
118 description = "Design circuit boards with code";
119 homepage = "https://aiopg.readthedocs.io/";
120 downloadPage = "https://github.com/atopile/atopile";
121 changelog = "https://github.com/atopile/atopile/releases/tag/${src.rev}";
122 license = with lib.licenses; [ mit ];
123 maintainers = with lib.maintainers; [ sigmanificient ];
124 mainProgram = "ato";
125 };
126}