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}