1{
2 lib,
3 aiohttp,
4 aresponses,
5 awesomeversion,
6 backoff,
7 buildPythonPackage,
8 fetchFromGitHub,
9 mashumaro,
10 orjson,
11 poetry-core,
12 pytest-asyncio,
13 pytest-cov-stub,
14 pytestCheckHook,
15 pythonOlder,
16 syrupy,
17 typer,
18 yarl,
19 zeroconf,
20}:
21
22buildPythonPackage rec {
23 pname = "gotailwind";
24 version = "0.3.0";
25 pyproject = true;
26
27 disabled = pythonOlder "3.11";
28
29 src = fetchFromGitHub {
30 owner = "frenck";
31 repo = "python-gotailwind";
32 tag = "v${version}";
33 hash = "sha256-kNyqSyJ1ha+BumYX4ruWaN0akEvUEsRxPs7Fj7LDHOw=";
34 };
35
36 postPatch = ''
37 # Upstream doesn't set a version for the pyproject.toml
38 substituteInPlace pyproject.toml \
39 --replace-fail "0.0.0" "${version}"
40 '';
41
42 build-system = [ poetry-core ];
43
44 dependencies = [
45 aiohttp
46 awesomeversion
47 backoff
48 mashumaro
49 orjson
50 yarl
51 zeroconf
52 ];
53
54 optional-dependencies = {
55 cli = [ typer ];
56 };
57
58 nativeCheckInputs = [
59 aresponses
60 pytest-asyncio
61 pytest-cov-stub
62 pytestCheckHook
63 syrupy
64 ];
65
66 pythonImportsCheck = [ "gotailwind" ];
67
68 meta = with lib; {
69 description = "Modul to communicate with Tailwind garage door openers";
70 homepage = "https://github.com/frenck/python-gotailwind";
71 changelog = "https://github.com/frenck/python-gotailwind/releases/tag/v$version";
72 license = licenses.mit;
73 maintainers = with maintainers; [ fab ];
74 mainProgram = "tailwind";
75 };
76}