1{
2 lib,
3 buildPythonPackage,
4 fetchFromGitHub,
5 pythonOlder,
6 # build-system
7 poetry-core,
8
9 # dependencies
10 numpy,
11 click,
12 pillow,
13 pydantic,
14 pyparsing,
15 typing-extensions,
16
17 # optional dependencies
18 pygls,
19 lsprotocol,
20 drawsvg,
21 pygments,
22 shapely,
23
24 # test
25 filelock,
26 dulwich,
27 tzlocal,
28 pytest-xdist,
29 pytest-cov,
30 pytest-lsp,
31 pytest-asyncio,
32 pytest-mock,
33 pytestCheckHook,
34
35}:
36
37buildPythonPackage rec {
38 pname = "pygerber";
39 version = "2.4.3";
40 pyproject = true;
41
42 disabled = pythonOlder "3.8";
43
44 src = fetchFromGitHub {
45 owner = "Argmaster";
46 repo = "pygerber";
47 tag = "v${version}";
48 hash = "sha256-0AoRmIN1FNlummJSHdysO2IDBHtfNPhVnh9j0lyWNFI=";
49 };
50
51 build-system = [ poetry-core ];
52 dependencies = [
53 numpy
54 click
55 pillow
56 pydantic
57 pyparsing
58 typing-extensions
59 ];
60
61 passthru.optional-dependencies = {
62 language_server = [
63 pygls
64 lsprotocol
65 ];
66 svg = [ drawsvg ];
67 pygments = [ pygments ];
68 shapely = [ shapely ];
69 all = [
70 pygls
71 lsprotocol
72 drawsvg
73 pygments
74 shapely
75 ];
76 };
77
78 nativeCheckInputs = [
79 pytest-asyncio
80 pytest-cov
81 pytest-xdist
82 pytest-lsp
83 pytest-mock
84 pytestCheckHook
85 tzlocal
86 drawsvg
87 dulwich
88 filelock
89 ];
90
91 disabledTestPaths = [
92 # require network access
93 "test/gerberx3/test_assets.py"
94 "test/gerberx3/test_language_server/tests.py"
95 ];
96
97 pythonImportsCheck = [ "pygerber" ];
98
99 meta = {
100 description = "Implementation of the Gerber X3/X2 format, based on Ucamco's The Gerber Layer Format Specification";
101 homepage = "https://github.com/Argmaster/pygerber";
102 changelog = "https://argmaster.github.io/pygerber/stable/Changelog.html";
103 license = lib.licenses.mit;
104 maintainers = with lib.maintainers; [ clemjvdm ];
105 };
106}