1{
2 lib,
3 buildPythonPackage,
4 fetchFromGitHub,
5 pycryptodome,
6 pyjwt,
7 pytestCheckHook,
8 pythonOlder,
9 requests-mock,
10 requests-oauthlib,
11 setuptools,
12 zeep,
13}:
14
15buildPythonPackage rec {
16 pname = "total-connect-client";
17 version = "2025.5";
18 pyproject = true;
19
20 disabled = pythonOlder "3.10";
21
22 src = fetchFromGitHub {
23 owner = "craigjmidwinter";
24 repo = "total-connect-client";
25 tag = version;
26 hash = "sha256-xVpR5gd185eZBoqUhVVcFGPbPFjCavwOZP7yFObzGic=";
27 };
28
29 build-system = [ setuptools ];
30
31 pythonRelaxDeps = [ "pycryptodome" ];
32
33 dependencies = [
34 pycryptodome
35 pyjwt
36 requests-oauthlib
37 zeep
38 ];
39
40 nativeCheckInputs = [
41 pytestCheckHook
42 requests-mock
43 ];
44
45 pythonImportsCheck = [ "total_connect_client" ];
46
47 meta = with lib; {
48 description = "Interact with Total Connect 2 alarm systems";
49 homepage = "https://github.com/craigjmidwinter/total-connect-client";
50 changelog = "https://github.com/craigjmidwinter/total-connect-client/releases/tag/${src.tag}";
51 license = licenses.mit;
52 maintainers = with maintainers; [ dotlambda ];
53 };
54}