1{
2 lib,
3 awesomeversion,
4 buildPythonPackage,
5 envoy-utils,
6 fetchFromGitHub,
7 httpx,
8 lxml,
9 orjson,
10 poetry-core,
11 pyjwt,
12 pytest-asyncio,
13 pytest-cov-stub,
14 pytestCheckHook,
15 pythonOlder,
16 respx,
17 syrupy,
18 tenacity,
19}:
20
21buildPythonPackage rec {
22 pname = "pyenphase";
23 version = "1.26.1";
24 pyproject = true;
25
26 disabled = pythonOlder "3.11";
27
28 src = fetchFromGitHub {
29 owner = "pyenphase";
30 repo = "pyenphase";
31 tag = "v${version}";
32 hash = "sha256-EKelQNHDaWSBrr19a8kYRI/wOYcRS9umJIo4oW9aU6k=";
33 };
34
35 pythonRelaxDeps = [ "tenacity" ];
36
37 build-system = [ poetry-core ];
38
39 dependencies = [
40 awesomeversion
41 envoy-utils
42 httpx
43 lxml
44 orjson
45 pyjwt
46 tenacity
47 ];
48
49 nativeCheckInputs = [
50 pytest-asyncio
51 pytest-cov-stub
52 pytestCheckHook
53 respx
54 syrupy
55 ];
56
57 disabledTestPaths = [
58 # Tests need network access
59 "tests/test_retries.py"
60 ];
61
62 pythonImportsCheck = [ "pyenphase" ];
63
64 meta = with lib; {
65 description = "Library to control enphase envoy";
66 homepage = "https://github.com/pyenphase/pyenphase";
67 changelog = "https://github.com/pyenphase/pyenphase/blob/${src.tag}/CHANGELOG.md";
68 license = licenses.mit;
69 maintainers = with maintainers; [ fab ];
70 };
71}