1{
2 lib,
3 buildPythonPackage,
4 cbor-diag,
5 cbor2,
6 cryptography,
7 dtlssocket,
8 fetchFromGitHub,
9 filelock,
10 ge25519,
11 pygments,
12 pytestCheckHook,
13 pythonAtLeast,
14 pythonOlder,
15 setuptools,
16 termcolor,
17 websockets,
18}:
19
20buildPythonPackage rec {
21 pname = "aiocoap";
22 version = "0.4.14";
23 pyproject = true;
24
25 disabled = pythonOlder "3.10";
26
27 src = fetchFromGitHub {
28 owner = "chrysn";
29 repo = "aiocoap";
30 tag = version;
31 hash = "sha256-v0OzRWHlGaBKqqcIyAlVafd/siXVwaTAZqw+Sstju3s=";
32 };
33
34 build-system = [ setuptools ];
35
36 optional-dependencies = {
37 oscore = [
38 cbor2
39 cryptography
40 filelock
41 ge25519
42 ];
43 tinydtls = [ dtlssocket ];
44 ws = [ websockets ];
45 prettyprint = [
46 termcolor
47 cbor2
48 pygments
49 cbor-diag
50 ];
51 };
52
53 nativeCheckInputs = [ pytestCheckHook ];
54
55 disabledTestPaths = [
56 # Don't test the plugins
57 "tests/test_tls.py"
58 "tests/test_reverseproxy.py"
59 "tests/test_oscore_plugtest.py"
60 ];
61
62 disabledTests = [
63 # Communication is not properly mocked
64 "test_uri_parser"
65 # Doctest
66 "test_001"
67 # CLI test
68 "test_help"
69 ];
70
71 pythonImportsCheck = [ "aiocoap" ];
72
73 meta = with lib; {
74 description = "Python CoAP library";
75 homepage = "https://aiocoap.readthedocs.io/";
76 changelog = "https://github.com/chrysn/aiocoap/blob/${version}/NEWS";
77 license = licenses.mit;
78 maintainers = with maintainers; [ fab ];
79 };
80}