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