1{
2 lib,
3 buildPythonPackage,
4 dlms-cosem,
5 fetchFromGitHub,
6 pyserial,
7 pyserial-asyncio-fast,
8 pytestCheckHook,
9 pythonAtLeast,
10 pythonOlder,
11 pytz,
12 setuptools,
13 tailer,
14}:
15
16buildPythonPackage rec {
17 pname = "dsmr-parser";
18 version = "1.4.3";
19 pyproject = true;
20
21 disabled = pythonOlder "3.8";
22
23 src = fetchFromGitHub {
24 owner = "ndokter";
25 repo = "dsmr_parser";
26 tag = "v${version}";
27 hash = "sha256-jBrcliN63isFKMqgaFIAPP/ALDdtL/O9mCN8Va+g+NE=";
28 };
29
30 pythonRelaxDeps = [ "dlms_cosem" ];
31
32 build-system = [ setuptools ];
33
34 dependencies = [
35 dlms-cosem
36 pyserial
37 pyserial-asyncio-fast
38 pytz
39 tailer
40 ];
41
42 nativeCheckInputs = [ pytestCheckHook ];
43
44 disabledTests = lib.optionals (pythonAtLeast "3.12") [ "test_receive_packet" ];
45
46 pythonImportsCheck = [ "dsmr_parser" ];
47
48 meta = with lib; {
49 description = "Python module to parse Dutch Smart Meter Requirements (DSMR)";
50 homepage = "https://github.com/ndokter/dsmr_parser";
51 changelog = "https://github.com/ndokter/dsmr_parser/releases/tag/${src.tag}";
52 license = with licenses; [ mit ];
53 maintainers = with maintainers; [ fab ];
54 mainProgram = "dsmr_console";
55 };
56}