1{
2 lib,
3 amqtt,
4 buildPythonPackage,
5 click,
6 fetchFromGitHub,
7 mashumaro,
8 orjson,
9 paho-mqtt,
10 poetry-core,
11 pytest-asyncio,
12 pytestCheckHook,
13 pythonOlder,
14 tabulate,
15}:
16
17buildPythonPackage rec {
18 pname = "roombapy";
19 version = "1.9.1";
20 pyproject = true;
21
22 disabled = pythonOlder "3.10";
23
24 src = fetchFromGitHub {
25 owner = "pschmitt";
26 repo = "roombapy";
27 tag = version;
28 hash = "sha256-63PqNmJC0IWPPMVyZdKoZikvBA4phMcYxlTBk/m1cq0=";
29 };
30
31 nativeBuildInputs = [
32 poetry-core
33 ];
34
35 pythonRelaxDeps = [ "orjson" ];
36
37 propagatedBuildInputs = [
38 mashumaro
39 orjson
40 paho-mqtt
41 ];
42
43 optional-dependencies.cli = [
44 click
45 tabulate
46 ];
47
48 nativeCheckInputs = [
49 amqtt
50 pytest-asyncio
51 pytestCheckHook
52 ];
53
54 disabledTestPaths = [
55 # Requires network access
56 "tests/test_discovery.py"
57 ];
58
59 disabledTests = [
60 # Test want to connect to a local MQTT broker
61 "test_roomba_connect"
62 ];
63
64 pythonImportsCheck = [ "roombapy" ];
65
66 meta = with lib; {
67 description = "Python program and library to control Wi-Fi enabled iRobot Roombas";
68 mainProgram = "roombapy";
69 homepage = "https://github.com/pschmitt/roombapy";
70 changelog = "https://github.com/pschmitt/roombapy/releases/tag/${src.tag}";
71 license = licenses.mit;
72 maintainers = [ ];
73 };
74}