1{
2 lib,
3 aiohttp,
4 buildPythonPackage,
5 fetchFromGitHub,
6 freezegun,
7 orjson,
8 pydevccu,
9 pytest-aiohttp,
10 pytestCheckHook,
11 python-slugify,
12 pythonOlder,
13 setuptools,
14 voluptuous,
15 websocket-client,
16 xmltodict,
17}:
18
19buildPythonPackage rec {
20 pname = "hahomematic";
21 version = "2024.4.12";
22 pyproject = true;
23
24 disabled = pythonOlder "3.12";
25
26 src = fetchFromGitHub {
27 owner = "danielperna84";
28 repo = "hahomematic";
29 rev = "refs/tags/${version}";
30 hash = "sha256-iWl9kDLRh9CAk0tOibDOHcBV7lwVY/TWKYMBZW9G2k0=";
31 };
32
33 __darwinAllowLocalNetworking = true;
34
35 postPatch = ''
36 substituteInPlace pyproject.toml \
37 --replace-fail "setuptools~=69.2.0" "setuptools" \
38 --replace-fail "wheel~=0.43.0" "wheel"
39 '';
40
41 build-system = [ setuptools ];
42
43 dependencies = [
44 aiohttp
45 orjson
46 python-slugify
47 voluptuous
48 ];
49
50 nativeCheckInputs = [
51 freezegun
52 pydevccu
53 pytest-aiohttp
54 pytestCheckHook
55 ];
56
57 pythonImportsCheck = [ "hahomematic" ];
58
59 meta = with lib; {
60 description = "Python module to interact with HomeMatic devices";
61 homepage = "https://github.com/danielperna84/hahomematic";
62 changelog = "https://github.com/danielperna84/hahomematic/blob/${src.rev}/changelog.md";
63 license = licenses.mit;
64 maintainers = with maintainers; [
65 dotlambda
66 fab
67 ];
68 };
69}