1{ lib
2, aiohttp
3, aiosqlite
4, buildPythonPackage
5, crccheck
6, cryptography
7, freezegun
8, fetchFromGitHub
9, pycryptodome
10, pyserial-asyncio
11, pytest-asyncio
12, pytest-timeout
13, pytestCheckHook
14, pythonOlder
15, setuptools
16, voluptuous
17, wheel
18}:
19
20buildPythonPackage rec {
21 pname = "zigpy";
22 version = "0.58.1";
23 format = "pyproject";
24
25 disabled = pythonOlder "3.8";
26
27 src = fetchFromGitHub {
28 owner = "zigpy";
29 repo = "zigpy";
30 rev = "refs/tags/${version}";
31 hash = "sha256-i2P9QyhT/UQ8Xu0IfQ2OzAxIiMF4H04Jkz3/6e2FCpY=";
32 };
33
34 postPatch = ''
35 substituteInPlace pyproject.toml \
36 --replace '"setuptools-git-versioning<2"' "" \
37 --replace 'dynamic = ["version"]' 'version = "${version}"'
38 '';
39
40 nativeBuildInputs = [
41 setuptools
42 wheel
43 ];
44
45 propagatedBuildInputs = [
46 aiohttp
47 aiosqlite
48 crccheck
49 cryptography
50 pyserial-asyncio
51 pycryptodome
52 voluptuous
53 ];
54
55 nativeCheckInputs = [
56 freezegun
57 pytest-asyncio
58 pytest-timeout
59 pytestCheckHook
60 ];
61
62 disabledTests = [
63 # # Our two manual scans succeeded and the periodic one was attempted
64 # assert len(mock_scan.mock_calls) == 3
65 # AssertionError: assert 4 == 3
66 "test_periodic_scan_priority"
67 ];
68
69 pythonImportsCheck = [
70 "zigpy.application"
71 "zigpy.config"
72 "zigpy.exceptions"
73 "zigpy.types"
74 "zigpy.zcl"
75 ];
76
77 meta = with lib; {
78 description = "Library implementing a ZigBee stack";
79 homepage = "https://github.com/zigpy/zigpy";
80 changelog = "https://github.com/zigpy/zigpy/releases/tag/${version}";
81 license = licenses.gpl3Plus;
82 maintainers = with maintainers; [ mvnetbiz ];
83 platforms = platforms.linux;
84 };
85}