1{
2 lib,
3 aiohttp,
4 aiomqtt,
5 buildPythonPackage,
6 cachetools,
7 defusedxml,
8 docker,
9 fetchFromGitHub,
10 numpy,
11 pillow,
12 pycountry,
13 pytest-asyncio,
14 pytestCheckHook,
15 pythonOlder,
16 setuptools,
17 setuptools-scm,
18 svg-py,
19 testfixtures,
20}:
21
22buildPythonPackage rec {
23 pname = "deebot-client";
24 version = "8.2.0";
25 pyproject = true;
26
27 disabled = pythonOlder "3.12";
28
29 src = fetchFromGitHub {
30 owner = "DeebotUniverse";
31 repo = "client.py";
32 rev = "refs/tags/${version}";
33 hash = "sha256-foIRWZcv+i/UZMMr1LjNiUpvJVD9UOWHPKHpcGHXfxQ=";
34 };
35
36 build-system = [
37 setuptools
38 setuptools-scm
39 ];
40
41 dependencies = [
42 aiohttp
43 aiomqtt
44 cachetools
45 defusedxml
46 numpy
47 pillow
48 svg-py
49 ];
50
51 nativeCheckInputs = [
52 docker
53 pycountry
54 pytest-asyncio
55 pytestCheckHook
56 testfixtures
57 ];
58
59 pythonImportsCheck = [ "deebot_client" ];
60
61 disabledTests = [
62 # Tests require running container
63 "test_last_message_received_at"
64 "test_client_bot_subscription"
65 "test_client_reconnect_manual"
66 "test_p2p_success"
67 "test_p2p_not_supported"
68 "test_p2p_data_type_not_supported"
69 "test_p2p_to_late"
70 "test_p2p_parse_error"
71 "test_mqtt_task_exceptions"
72 "test_mqtt_task_exceptions"
73 "test_client_reconnect_on_broker_error"
74 ];
75
76 meta = with lib; {
77 description = "Deebot client library";
78 homepage = "https://github.com/DeebotUniverse/client.py";
79 changelog = "https://github.com/DeebotUniverse/client.py/releases/tag/${version}";
80 license = licenses.gpl3Only;
81 maintainers = with maintainers; [ fab ];
82 };
83}