1{
2 lib,
3 aiohttp,
4 asyncio-dgram,
5 buildPythonPackage,
6 certifi,
7 fetchFromGitHub,
8 frozenlist,
9 poetry-core,
10 pytest-aiohttp,
11 pytest-asyncio,
12 pytestCheckHook,
13 pythonOlder,
14 voluptuous,
15 typing-extensions,
16 yarl,
17}:
18
19buildPythonPackage rec {
20 pname = "aioguardian";
21 version = "2025.02.0";
22 pyproject = true;
23
24 disabled = pythonOlder "3.11";
25
26 src = fetchFromGitHub {
27 owner = "bachya";
28 repo = "aioguardian";
29 tag = version;
30 hash = "sha256-RoVD2O/OAk4l96kYEq7ZM/2QuckcPxDluf1MT4HdKc4=";
31 };
32
33 postPatch = ''
34 substituteInPlace pyproject.toml \
35 --replace-fail poetry-core==2.0.1 poetry-core
36 '';
37
38 pythonRelaxDeps = [
39 "asyncio_dgram"
40 "frozenlist"
41 "typing-extensions"
42 ];
43
44 build-system = [ poetry-core ];
45
46 dependencies = [
47 aiohttp
48 asyncio-dgram
49 certifi
50 frozenlist
51 voluptuous
52 typing-extensions
53 yarl
54 ];
55
56 nativeCheckInputs = [
57 asyncio-dgram
58 pytest-aiohttp
59 pytest-asyncio
60 pytestCheckHook
61 ];
62
63 disabledTestPaths = [ "examples/" ];
64
65 pythonImportsCheck = [ "aioguardian" ];
66
67 meta = with lib; {
68 description = "Python library to interact with Elexa Guardian devices";
69 longDescription = ''
70 aioguardian is an asyncio-focused library for interacting with the
71 Guardian line of water valves and sensors from Elexa.
72 '';
73 homepage = "https://github.com/bachya/aioguardian";
74 changelog = "https://github.com/bachya/aioguardian/releases/tag/${version}";
75 license = with licenses; [ mit ];
76 maintainers = with maintainers; [ fab ];
77 };
78}