1{
2 lib,
3 buildPythonPackage,
4 pythonOlder,
5 fetchFromGitHub,
6 setuptools,
7 netifaces,
8 pycryptodome,
9 pytest-asyncio,
10 pytestCheckHook,
11}:
12
13buildPythonPackage rec {
14 pname = "greeclimate";
15 version = "2.1.0";
16 pyproject = true;
17
18 disabled = pythonOlder "3.8";
19
20 src = fetchFromGitHub {
21 owner = "cmroche";
22 repo = "greeclimate";
23 tag = "v${version}";
24 hash = "sha256-SO7/uheAPVFZ1C2qrzP7jB88u6EH79f1+qMZIgHZaCE=";
25 };
26
27 build-system = [ setuptools ];
28
29 dependencies = [
30 netifaces
31 pycryptodome
32 ];
33
34 nativeCheckInputs = [
35 pytest-asyncio
36 pytestCheckHook
37 ];
38
39 disabledTests = [
40 # OSError: [Errno 101] Network is unreachable
41 "test_get_device_info"
42 "test_device_bind"
43 "test_device_late_bind"
44 "test_update_properties"
45 "test_set_properties"
46 "test_uninitialized_properties"
47 "test_update_current_temp"
48 "test_send_temperature"
49 "test_enable_disable_sleep_mode"
50 "test_mismatch_temrec_farenheit"
51 "test_device_equality"
52 "test_issue_69_TemSen_40_should_not_set_firmware_v4"
53 "test_issue_87_quiet_should_set_2"
54 ];
55
56 pythonImportsCheck = [
57 "greeclimate"
58 "greeclimate.device"
59 "greeclimate.discovery"
60 "greeclimate.exceptions"
61 "greeclimate.network"
62 ];
63
64 meta = with lib; {
65 description = "Discover, connect and control Gree based minisplit systems";
66 homepage = "https://github.com/cmroche/greeclimate";
67 changelog = "https://github.com/cmroche/greeclimate/blob/${src.rev}/CHANGELOG.md";
68 license = licenses.gpl3Only;
69 maintainers = with maintainers; [ dotlambda ];
70 };
71}