1{ lib
2, buildPythonPackage
3, aiocoap
4, async-interrupt
5, bleak
6, bleak-retry-connector
7, chacha20poly1305
8, chacha20poly1305-reuseable
9, commentjson
10, cryptography
11, fetchFromGitHub
12, orjson
13, poetry-core
14, pytest-aiohttp
15, pytestCheckHook
16, pythonOlder
17, zeroconf
18}:
19
20buildPythonPackage rec {
21 pname = "aiohomekit";
22 version = "3.0.9";
23 format = "pyproject";
24
25 disabled = pythonOlder "3.9";
26
27 src = fetchFromGitHub {
28 owner = "Jc2k";
29 repo = pname;
30 rev = "refs/tags/${version}";
31 hash = "sha256-YaLSpWSaiEP7X+IujrQgXgWl3aPc1WDMq2yaMUTu328=";
32 };
33
34 nativeBuildInputs = [
35 poetry-core
36 ];
37
38 propagatedBuildInputs = [
39 aiocoap
40 async-interrupt
41 bleak
42 bleak-retry-connector
43 chacha20poly1305
44 chacha20poly1305-reuseable
45 commentjson
46 cryptography
47 orjson
48 zeroconf
49 ];
50
51 doCheck = lib.versionAtLeast pytest-aiohttp.version "1.0.0";
52
53 nativeCheckInputs = [
54 pytest-aiohttp
55 pytestCheckHook
56 ];
57
58 disabledTestPaths = [
59 # Tests require network access
60 "tests/test_ip_pairing.py"
61 ];
62
63 pythonImportsCheck = [
64 "aiohomekit"
65 ];
66
67 meta = with lib; {
68 description = "Python module that implements the HomeKit protocol";
69 longDescription = ''
70 This Python library implements the HomeKit protocol for controlling
71 Homekit accessories.
72 '';
73 homepage = "https://github.com/Jc2k/aiohomekit";
74 changelog = "https://github.com/Jc2k/aiohomekit/releases/tag/${version}";
75 license = with licenses; [ asl20 ];
76 maintainers = with maintainers; [ fab ];
77 };
78}