1{
2 lib,
3 aiohttp,
4 buildPythonPackage,
5 fetchFromGitHub,
6 httpx,
7 pytest-aiohttp,
8 pytest-mock,
9 pytestCheckHook,
10 pythonOlder,
11 requests,
12 setuptools-scm,
13 setuptools,
14 websockets,
15}:
16
17buildPythonPackage rec {
18 pname = "homematicip";
19 version = "2.3.0";
20 pyproject = true;
21
22 disabled = pythonOlder "3.12";
23
24 src = fetchFromGitHub {
25 owner = "hahn-th";
26 repo = "homematicip-rest-api";
27 tag = version;
28 hash = "sha256-yH9Yis6NyKD+mSjaff0S9J6UtoVceML06ny50/6aG/0=";
29 };
30
31 build-system = [
32 setuptools
33 setuptools-scm
34 ];
35
36 dependencies = [
37 aiohttp
38 httpx
39 requests
40 websockets
41 ];
42
43 nativeCheckInputs = [
44 pytest-aiohttp
45 pytest-mock
46 pytestCheckHook
47 ];
48
49 pytestFlags = [ "--asyncio-mode=auto" ];
50
51 disabledTests = [
52 # Assert issues with datetime
53 "test_contact_interface_device"
54 "test_dimmer"
55 "test_external_device"
56 "test_heating_failure_alert_group"
57 "test_heating"
58 "test_humidity_warning_rule_group"
59 "test_meta_group"
60 "test_pluggable_switch_measuring"
61 "test_rotary_handle_sensor"
62 "test_security_group"
63 "test_security_zone"
64 "test_shutter_device"
65 "test_smoke_detector"
66 "test_switching_group"
67 "test_temperature_humidity_sensor_outdoor"
68 "test_wall_mounted_thermostat_pro"
69 "test_weather_sensor"
70 # Random failures
71 "test_home_getSecurityJournal"
72 "test_home_unknown_types"
73 # Requires network access
74 "test_websocket"
75 ];
76
77 pythonImportsCheck = [ "homematicip" ];
78
79 meta = with lib; {
80 description = "Module for the homematicIP REST API";
81 homepage = "https://github.com/hahn-th/homematicip-rest-api";
82 changelog = "https://github.com/hahn-th/homematicip-rest-api/releases/tag/${src.tag}";
83 license = licenses.gpl3Plus;
84 maintainers = with maintainers; [ fab ];
85 };
86}