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