1{
2 lib,
3 aiohttp,
4 aresponses,
5 async-timeout,
6 backoff,
7 buildPythonPackage,
8 fetchFromGitHub,
9 hatchling,
10 mashumaro,
11 orjson,
12 packaging,
13 pytest-asyncio,
14 pytest-cov-stub,
15 pytest-mock,
16 pytestCheckHook,
17 pythonOlder,
18 yarl,
19}:
20
21buildPythonPackage rec {
22 pname = "python-bsblan";
23 version = "2.2.5";
24 pyproject = true;
25
26 disabled = pythonOlder "3.12";
27
28 src = fetchFromGitHub {
29 owner = "liudger";
30 repo = "python-bsblan";
31 tag = "v${version}";
32 hash = "sha256-kPkKgjze3ohaIaDax3h66JWw5tY+3S0N+lPqXSFFcRY=";
33 };
34
35 postPatch = ''
36 sed -i "/ruff/d" pyproject.toml
37 '';
38
39 env.PACKAGE_VERSION = version;
40
41 build-system = [ hatchling ];
42
43 pythonRelaxDeps = [ "async-timeout" ];
44
45 dependencies = [
46 aiohttp
47 async-timeout
48 backoff
49 mashumaro
50 orjson
51 packaging
52 yarl
53 ];
54
55 nativeCheckInputs = [
56 aresponses
57 pytest-asyncio
58 pytest-cov-stub
59 pytest-mock
60 pytestCheckHook
61 ];
62
63 pythonImportsCheck = [ "bsblan" ];
64
65 meta = with lib; {
66 description = "Module to control and monitor an BSBLan device programmatically";
67 homepage = "https://github.com/liudger/python-bsblan";
68 changelog = "https://github.com/liudger/python-bsblan/releases/tag/${src.tag}";
69 license = licenses.mit;
70 maintainers = with maintainers; [ fab ];
71 };
72}