1{
2 lib,
3 async-timeout,
4 buildPythonPackage,
5 click,
6 click-log,
7 fetchFromGitHub,
8 pytest-asyncio,
9 pytest-timeout,
10 pytestCheckHook,
11 pythonOlder,
12 setuptools,
13 voluptuous,
14 zigpy,
15}:
16
17buildPythonPackage rec {
18 pname = "bellows";
19 version = "0.46.1";
20 pyproject = true;
21
22 src = fetchFromGitHub {
23 owner = "zigpy";
24 repo = "bellows";
25 tag = version;
26 hash = "sha256-YQt9imL9poGLrkVj9LmR+XPUufRMOgVhAr+Bw+/VdI0=";
27 };
28
29 postPatch = ''
30 substituteInPlace pyproject.toml \
31 --replace-fail '"setuptools-git-versioning<2"' "" \
32 --replace-fail 'dynamic = ["version"]' 'version = "${version}"'
33 '';
34
35 build-system = [ setuptools ];
36
37 dependencies = [
38 click
39 click-log
40 voluptuous
41 zigpy
42 ]
43 ++ lib.optionals (pythonOlder "3.11") [ async-timeout ];
44
45 nativeCheckInputs = [
46 pytestCheckHook
47 pytest-asyncio
48 pytest-timeout
49 ];
50
51 pythonImportsCheck = [ "bellows" ];
52
53 meta = with lib; {
54 description = "Python module to implement EZSP for EmberZNet devices";
55 homepage = "https://github.com/zigpy/bellows";
56 changelog = "https://github.com/zigpy/bellows/releases/tag/${src.tag}";
57 license = licenses.gpl3Plus;
58 maintainers = with maintainers; [ mvnetbiz ];
59 mainProgram = "bellows";
60 };
61}