1{
2 lib,
3 aiohttp,
4 aresponses,
5 backoff,
6 beautifulsoup4,
7 buildPythonPackage,
8 certifi,
9 docutils,
10 fetchFromGitHub,
11 poetry-core,
12 pytest-aiohttp,
13 pytest-asyncio,
14 pytestCheckHook,
15 pythonOlder,
16 pytz,
17 types-pytz,
18 voluptuous,
19 websockets,
20}:
21
22buildPythonPackage rec {
23 pname = "simplisafe-python";
24 version = "2024.01.0";
25 pyproject = true;
26
27 disabled = pythonOlder "3.10";
28
29 src = fetchFromGitHub {
30 owner = "bachya";
31 repo = "simplisafe-python";
32 tag = version;
33 hash = "sha256-ewbR2FI0t2F8HF0ZL5omsclB9OPAjHygGLPtSkVlvgM=";
34 };
35
36 nativeBuildInputs = [ poetry-core ];
37
38 propagatedBuildInputs = [
39 aiohttp
40 backoff
41 beautifulsoup4
42 certifi
43 docutils
44 pytz
45 voluptuous
46 websockets
47 ];
48
49 nativeCheckInputs = [
50 aresponses
51 pytest-aiohttp
52 pytest-asyncio
53 pytestCheckHook
54 types-pytz
55 ];
56
57 disabledTests = [
58 # simplipy/api.py:253: InvalidCredentialsError
59 "test_request_error_failed_retry"
60 "test_update_error"
61 # ClientConnectorError: Cannot connect to host auth.simplisafe.com:443 ssl:default [Temporary failure in name resolution]
62 "test_client_async_from_refresh_token_unknown_error"
63 ];
64
65 disabledTestPaths = [
66 # Ignore the examples as they are prefixed with test_
67 "examples/"
68 ];
69
70 pythonImportsCheck = [ "simplipy" ];
71
72 __darwinAllowLocalNetworking = true;
73
74 meta = with lib; {
75 changelog = "https://github.com/bachya/simplisafe-python/releases/tag/${version}";
76 description = "Python library the SimpliSafe API";
77 homepage = "https://simplisafe-python.readthedocs.io/";
78 license = with licenses; [ mit ];
79 maintainers = with maintainers; [ fab ];
80 };
81}