1{
2 lib,
3 aiohttp,
4 aioresponses,
5 buildPythonPackage,
6 fetchFromGitHub,
7 freezegun,
8 ical,
9 mashumaro,
10 poetry-core,
11 pyjwt,
12 pytest-asyncio,
13 pytest-cov-stub,
14 pytestCheckHook,
15 pythonOlder,
16 syrupy,
17 time-machine,
18 tzlocal,
19}:
20
21buildPythonPackage rec {
22 pname = "aioautomower";
23 version = "2025.5.1";
24 pyproject = true;
25
26 disabled = pythonOlder "3.11";
27
28 src = fetchFromGitHub {
29 owner = "Thomas55555";
30 repo = "aioautomower";
31 tag = version;
32 hash = "sha256-Fia08yBmixR47WZMuNbBg+u8CyHG8lumfWJeB/EKd78=";
33 };
34
35 postPatch = ''
36 # Upstream doesn't set a version
37 substituteInPlace pyproject.toml \
38 --replace-fail 'version = "0.0.0"' 'version = "${version}"'
39 '';
40
41 build-system = [ poetry-core ];
42
43 dependencies = [
44 aiohttp
45 ical
46 mashumaro
47 pyjwt
48 tzlocal
49 ];
50
51 nativeCheckInputs = [
52 aioresponses
53 freezegun
54 pytest-asyncio
55 pytest-cov-stub
56 pytestCheckHook
57 time-machine
58 syrupy
59 ];
60
61 pythonImportsCheck = [ "aioautomower" ];
62
63 disabledTests = [
64 # File is missing
65 "test_standard_mower"
66 # Call no found
67 "test_post_commands"
68 # Timezone mismatches
69 "test_full_planner_event"
70 "test_sinlge_planner_event"
71 ];
72
73 meta = with lib; {
74 description = "Module to communicate with the Automower Connect API";
75 homepage = "https://github.com/Thomas55555/aioautomower";
76 changelog = "https://github.com/Thomas55555/aioautomower/releases/tag/${src.tag}";
77 license = licenses.asl20;
78 maintainers = with maintainers; [ fab ];
79 };
80}