1{ lib
2, async-timeout
3, buildPythonPackage
4, fetchFromGitHub
5, fetchpatch
6, cryptography
7, ifaddr
8, pytest-asyncio
9, pytestCheckHook
10, pythonOlder
11, setuptools
12, wheel
13}:
14
15buildPythonPackage rec {
16 pname = "xknx";
17 version = "2.11.2";
18 format = "pyproject";
19
20 disabled = pythonOlder "3.8";
21
22 src = fetchFromGitHub {
23 owner = "XKNX";
24 repo = pname;
25 rev = "refs/tags/${version}";
26 hash = "sha256-rKvHb0wkWVuZO8M8uIQdOiY1N6DmGSpqUgz4YYbUfSM=";
27 };
28
29 patches = [
30 (fetchpatch {
31 name = "unpin-setuptools.patch";
32 url = "https://github.com/XKNX/xknx/commit/c0826aec52ab69b8bd81f600bea154fae16f334e.patch";
33 hash = "sha256-EpfgEq4pIx7ahqJZalzo30ruj8NlZYHcKHxFXCGL98w=";
34 })
35 ];
36
37 nativeBuildInputs = [
38 setuptools
39 wheel
40 ];
41
42 propagatedBuildInputs = [
43 async-timeout
44 cryptography
45 ifaddr
46 ];
47
48 nativeCheckInputs = [
49 pytest-asyncio
50 pytestCheckHook
51 ];
52
53 pythonImportsCheck = [
54 "xknx"
55 ];
56
57 disabledTests = [
58 # Test requires network access
59 "test_scan_timeout"
60 "test_start_secure_routing_knx_keys"
61 "test_start_secure_routing_manual"
62 ];
63
64 meta = with lib; {
65 description = "KNX Library Written in Python";
66 longDescription = ''
67 XKNX is an asynchronous Python library for reading and writing KNX/IP
68 packets. It provides support for KNX/IP routing and tunneling devices.
69 '';
70 homepage = "https://github.com/XKNX/xknx";
71 changelog = "https://github.com/XKNX/xknx/releases/tag/${version}";
72 license = with licenses; [ mit ];
73 maintainers = with maintainers; [ fab ];
74 platforms = platforms.linux;
75 };
76}