From 300c8f1335e7d117080ea3c17f28f44948e7fa22 Mon Sep 17 00:00:00 2001 From: Gaetan Lepage Date: Sun, 17 May 2026 12:11:26 +0000 Subject: [PATCH] python3Packages.codecarbon: init at 3.2.6 --- .../python-modules/codecarbon/default.nix | 152 ++++++++++++++++++ pkgs/top-level/python-packages.nix | 2 + 2 files changed, 154 insertions(+) create mode 100644 pkgs/development/python-modules/codecarbon/default.nix diff --git a/pkgs/development/python-modules/codecarbon/default.nix b/pkgs/development/python-modules/codecarbon/default.nix new file mode 100644 index 000000000000..73407458e071 --- /dev/null +++ b/pkgs/development/python-modules/codecarbon/default.nix @@ -0,0 +1,152 @@ +{ + lib, + buildPythonPackage, + fetchFromGitHub, + + # build-system + setuptools, + + # dependencies + arrow, + authlib, + click, + nvidia-ml-py, + pandas, + prometheus-client, + psutil, + py-cpuinfo, + pycountry, + pydantic, + questionary, + rapidfuzz, + requests, + rich, + typer, + + # optional-dependencies + amdsmi, + dash, + dash-bootstrap-components, + fire, + + # tests + bcrypt, + dependency-injector, + email-validator, + fastapi, + fastapi-pagination, + httpx, + jwt, + logfire, + psycopg2, + pydantic-settings, + pytestCheckHook, + requests-mock, + responses, + sqlalchemy, +}: + +buildPythonPackage (finalAttrs: { + pname = "codecarbon"; + version = "3.2.6"; + pyproject = true; + __structuredAttrs = true; + + src = fetchFromGitHub { + owner = "mlco2"; + repo = "codecarbon"; + tag = "v${finalAttrs.version}"; + hash = "sha256-Nzt+CKXnv6zvWKsFD7duguVj0AA4eWZgFUlBdIEujD8="; + }; + + build-system = [ + setuptools + ]; + + dependencies = [ + arrow + authlib + click + nvidia-ml-py + pandas + prometheus-client + psutil + py-cpuinfo + pycountry + pydantic + questionary + rapidfuzz + requests + rich + typer + ]; + + optional-dependencies = { + amdsmi = [ + amdsmi + ]; + carbonboard = [ + dash + dash-bootstrap-components + fire + ]; + viz-legacy = [ + dash + dash-bootstrap-components + fire + ]; + }; + + pythonImportsCheck = [ "codecarbon" ]; + + nativeBuildInputs = [ + bcrypt + dash + dependency-injector + email-validator + fastapi + fastapi-pagination + httpx + jwt + logfire + psycopg2 + pydantic-settings + pytestCheckHook + requests-mock + responses + sqlalchemy + ]; + + enabledTestPaths = [ + "carbonserver/tests/" + ]; + + disabledTestPaths = [ + # Fail in the sandbox: + # FileNotFoundError: [Errno 2] No such file or directory: '/sys/class/powercap/intel-rapl/intel-rapl:0/energy_uj' + "examples/" + + # _pytest.outcomes.Exit: CODECARBON_API_URL is not defined + "carbonserver/tests/api/integration/test_api_black_box.py" + + # Require unpackaged (and unmaintained) fief-client + "carbonserver/tests/api/routers/" + "carbonserver/tests/api/service/test_auth_provider.py" + + # Require internet access + "carbonserver/tests/api/integration/test_project_cascade_delete.py" + ]; + + disabledTests = [ + # AttributeError: does not have the attribute 'decode' + "test_check_user_from_jwt" + ]; + + meta = { + description = "Track emissions from Compute and recommend ways to reduce their impact on the environment"; + homepage = "https://github.com/mlco2/codecarbon"; + changelog = "https://github.com/mlco2/codecarbon/releases/tag/${finalAttrs.src.tag}"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ GaetanLepage ]; + }; +}) diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 89670e56dacf..75a1ff10b2df 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -2978,6 +2978,8 @@ self: super: with self; { cocotb-bus = callPackage ../development/python-modules/cocotb-bus { }; + codecarbon = callPackage ../development/python-modules/codecarbon { }; + codepy = callPackage ../development/python-modules/codepy { }; coffea = callPackage ../development/python-modules/coffea { };