diff --git a/pkgs/development/python-modules/petsctools/default.nix b/pkgs/development/python-modules/petsctools/default.nix new file mode 100644 index 000000000000..6caad243b97b --- /dev/null +++ b/pkgs/development/python-modules/petsctools/default.nix @@ -0,0 +1,53 @@ +{ + lib, + buildPythonPackage, + fetchFromGitHub, + setuptools, + packaging, + petsc4py, + slepc4py, + pytestCheckHook, +}: + +buildPythonPackage rec { + pname = "petsctools"; + version = "2025.2"; + pyproject = true; + + src = fetchFromGitHub { + owner = "firedrakeproject"; + repo = "petsctools"; + tag = version; + hash = "sha256-DC0jFybDEacA6otYvID5DfbUe1ANz5W4UmPXCSsRvOo="; + }; + + build-system = [ + setuptools + ]; + + dependencies = [ + packaging + ]; + + optional-dependencies = { + petsc4py = [ petsc4py ]; + slepc4py = [ slepc4py ]; + }; + + pythonImportsCheck = [ + "petsctools" + ]; + + nativeCheckInputs = [ + pytestCheckHook + ] + ++ optional-dependencies.petsc4py; + + meta = { + homepage = "https://github.com/firedrakeproject/petsctools"; + description = "Pythonic extensions for petsc4py and slepc4py"; + changelog = "https://github.com/firedrakeproject/petsctools/releases/tag/${src.tag}"; + license = lib.licenses.lgpl3Plus; + maintainers = with lib.maintainers; [ qbisi ]; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index f0f0db0aea59..be4aad9afe78 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -11672,6 +11672,8 @@ self: super: with self; { } ); + petsctools = callPackage ../development/python-modules/petsctools { }; + pettingzoo = callPackage ../development/python-modules/pettingzoo { }; pex = callPackage ../development/python-modules/pex { };