1{
2 lib,
3 buildPythonPackage,
4 fetchFromGitHub,
5 setuptools,
6 packaging,
7 petsc4py,
8 slepc4py,
9 pytestCheckHook,
10}:
11
12buildPythonPackage rec {
13 pname = "petsctools";
14 version = "2025.2";
15 pyproject = true;
16
17 src = fetchFromGitHub {
18 owner = "firedrakeproject";
19 repo = "petsctools";
20 tag = version;
21 hash = "sha256-DC0jFybDEacA6otYvID5DfbUe1ANz5W4UmPXCSsRvOo=";
22 };
23
24 build-system = [
25 setuptools
26 ];
27
28 dependencies = [
29 packaging
30 ];
31
32 optional-dependencies = {
33 petsc4py = [ petsc4py ];
34 slepc4py = [ slepc4py ];
35 };
36
37 pythonImportsCheck = [
38 "petsctools"
39 ];
40
41 nativeCheckInputs = [
42 pytestCheckHook
43 ]
44 ++ optional-dependencies.petsc4py;
45
46 meta = {
47 homepage = "https://github.com/firedrakeproject/petsctools";
48 description = "Pythonic extensions for petsc4py and slepc4py";
49 changelog = "https://github.com/firedrakeproject/petsctools/releases/tag/${src.tag}";
50 license = lib.licenses.lgpl3Plus;
51 maintainers = with lib.maintainers; [ qbisi ];
52 };
53}