1{
2 lib,
3 buildPythonPackage,
4 fetchFromGitHub,
5 influxdb-client,
6 kubernetes,
7 mock,
8 prometheus-client,
9 pymongo,
10 pytest-cov-stub,
11 pytest-timeout,
12 pytestCheckHook,
13 pythonOlder,
14 pyzmq,
15 setproctitle,
16 setuptools,
17}:
18
19buildPythonPackage rec {
20 pname = "powerapi";
21 version = "2.10.0";
22 pyproject = true;
23
24 disabled = pythonOlder "3.10";
25
26 src = fetchFromGitHub {
27 owner = "powerapi-ng";
28 repo = "powerapi";
29 tag = "v${version}";
30 hash = "sha256-rn1qe0RwYuUR23CgzOOeiwe1wuFihnhQ9a6ALgSP/cQ=";
31 };
32
33 build-system = [ setuptools ];
34
35 dependencies = [
36 pyzmq
37 setproctitle
38 ];
39
40 optional-dependencies = {
41 influxdb = [ influxdb-client ];
42 kubernetes = [ kubernetes ];
43 mongodb = [ pymongo ];
44 # opentsdb = [ opentsdb-py ];
45 prometheus = [ prometheus-client ];
46 };
47
48 nativeCheckInputs = [
49 mock
50 pytest-cov-stub
51 pytestCheckHook
52 pytest-timeout
53 ]
54 ++ lib.flatten (builtins.attrValues optional-dependencies);
55
56 pythonImportsCheck = [ "powerapi" ];
57
58 meta = {
59 description = "Python framework for building software-defined power meters";
60 homepage = "https://github.com/powerapi-ng/powerapi";
61 changelog = "https://github.com/powerapi-ng/powerapi/releases/tag/v${version}";
62 license = lib.licenses.bsd3;
63 maintainers = with lib.maintainers; [ fab ];
64 };
65}