From cec274205fc09b775fab62a896171c0a123de610 Mon Sep 17 00:00:00 2001 From: Connor Ward Date: Tue, 1 Jul 2025 11:17:41 +0100 Subject: [PATCH 1/4] Fixes for changes to petsctools OptionsManager API --- docs/source/optimising.rst | 2 +- firedrake/__init__.py | 2 +- pyproject.toml | 3 ++- requirements-build.txt | 3 ++- tests/firedrake/regression/test_solvers_options_prefix.py | 7 +------ 5 files changed, 7 insertions(+), 10 deletions(-) diff --git a/docs/source/optimising.rst b/docs/source/optimising.rst index 93a43e5cad..8163d87171 100644 --- a/docs/source/optimising.rst +++ b/docs/source/optimising.rst @@ -140,7 +140,7 @@ Caveats # If the -log_view flag is passed you don't need to call # PETSc.Log.begin because it is done automatically. - if "log_view" not in OptionsManager.commandline_options: + if "log_view" not in OptionsManager.get_commandline_options(): PETSc.Log.begin() Common performance issues diff --git a/firedrake/__init__.py b/firedrake/__init__.py index 5c975f8770..4911da4da3 100644 --- a/firedrake/__init__.py +++ b/firedrake/__init__.py @@ -32,7 +32,7 @@ def init_petsc(): # Initialise PETSc events for both import and entire duration of program import petsctools from firedrake import petsc -_is_logging = "log_view" in petsctools.OptionsManager.commandline_options +_is_logging = "log_view" in petsctools.OptionsManager.get_commandline_options() if _is_logging: _main_event = petsc.PETSc.Log.Event("firedrake") _main_event.begin() diff --git a/pyproject.toml b/pyproject.toml index 9f4f2f22d8..ad33ded36d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -29,7 +29,8 @@ dependencies = [ "packaging", # TODO RELEASE # "petsc4py==3.23.3", - "petsctools @ git+https://github.com/firedrakeproject/petsctools.git", + # UNDO ME + "petsctools @ git+https://github.com/firedrakeproject/petsctools.git@connorjward/fix-import", "pkgconfig", "progress", "pyadjoint-ad>=2025.04", diff --git a/requirements-build.txt b/requirements-build.txt index 36790d8f26..82fbacd83a 100644 --- a/requirements-build.txt +++ b/requirements-build.txt @@ -5,7 +5,8 @@ mpi4py>3; python_version >= '3.13' mpi4py; python_version < '3.13' numpy pkgconfig -petsctools @ git+https://github.com/firedrakeproject/petsctools.git +# UNDO ME +petsctools @ git+https://github.com/firedrakeproject/petsctools.git@connorjward/fix-import pybind11 setuptools>=77.0.3 rtree>=1.2 diff --git a/tests/firedrake/regression/test_solvers_options_prefix.py b/tests/firedrake/regression/test_solvers_options_prefix.py index 396df42983..5b13fd92cf 100644 --- a/tests/firedrake/regression/test_solvers_options_prefix.py +++ b/tests/firedrake/regression/test_solvers_options_prefix.py @@ -1,7 +1,6 @@ from firedrake import * from firedrake.matrix import ImplicitMatrix from firedrake.petsc import PETSc -from petsctools import OptionsManager import pytest @@ -31,14 +30,10 @@ def opts(request, prefix, global_parameters): for k, v in global_parameters.items(): opts[prefix + k] = v - # Pretend these came from the commandline - OptionsManager.commandline_options = frozenset(opts.getAll()) - def finalize(): + # And remove again for k in global_parameters.keys(): del opts[prefix + k] - # And remove again - OptionsManager.commandline_options = frozenset(opts.getAll()) request.addfinalizer(finalize) From 04484cc9307fc22916fd6e069c324c8da7005a92 Mon Sep 17 00:00:00 2001 From: Connor Ward Date: Tue, 1 Jul 2025 13:42:49 +0100 Subject: [PATCH 2/4] fixup --- docs/source/optimising.rst | 4 ++-- firedrake/__init__.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/source/optimising.rst b/docs/source/optimising.rst index 8163d87171..305a4889c6 100644 --- a/docs/source/optimising.rst +++ b/docs/source/optimising.rst @@ -136,11 +136,11 @@ Caveats .. code-block:: python - from petsctools import OptionsManager + import petsctools # If the -log_view flag is passed you don't need to call # PETSc.Log.begin because it is done automatically. - if "log_view" not in OptionsManager.get_commandline_options(): + if "log_view" not in petsctools.get_commandline_options(): PETSc.Log.begin() Common performance issues diff --git a/firedrake/__init__.py b/firedrake/__init__.py index 4911da4da3..4f97abd898 100644 --- a/firedrake/__init__.py +++ b/firedrake/__init__.py @@ -32,7 +32,7 @@ def init_petsc(): # Initialise PETSc events for both import and entire duration of program import petsctools from firedrake import petsc -_is_logging = "log_view" in petsctools.OptionsManager.get_commandline_options() +_is_logging = "log_view" in petsctools.get_commandline_options() if _is_logging: _main_event = petsc.PETSc.Log.Event("firedrake") _main_event.begin() From 0cd774429e9f49cf01addb0274dda15e61216621 Mon Sep 17 00:00:00 2001 From: Connor Ward Date: Wed, 2 Jul 2025 14:41:54 +0100 Subject: [PATCH 3/4] fixup --- tests/firedrake/regression/test_solvers_options_prefix.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/tests/firedrake/regression/test_solvers_options_prefix.py b/tests/firedrake/regression/test_solvers_options_prefix.py index 5b13fd92cf..80361f554e 100644 --- a/tests/firedrake/regression/test_solvers_options_prefix.py +++ b/tests/firedrake/regression/test_solvers_options_prefix.py @@ -1,7 +1,9 @@ +import petsctools.options +import pytest + from firedrake import * from firedrake.matrix import ImplicitMatrix from firedrake.petsc import PETSc -import pytest @pytest.fixture(params=[None, "", "foo_"]) @@ -30,10 +32,14 @@ def opts(request, prefix, global_parameters): for k, v in global_parameters.items(): opts[prefix + k] = v + # Pretend these came from the commandline + petsctools.options._commandline_options = frozenset(opts.getAll()) + def finalize(): # And remove again for k in global_parameters.keys(): del opts[prefix + k] + petsctools.options._commandline_options = frozenset(opts.getAll()) request.addfinalizer(finalize) From f861d68e484d8be4fd7022fefec7515ab0ca0eff Mon Sep 17 00:00:00 2001 From: Connor Ward Date: Thu, 3 Jul 2025 09:18:24 +0100 Subject: [PATCH 4/4] Final cleanup --- pyproject.toml | 3 +-- requirements-build.txt | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index ad33ded36d..9f4f2f22d8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -29,8 +29,7 @@ dependencies = [ "packaging", # TODO RELEASE # "petsc4py==3.23.3", - # UNDO ME - "petsctools @ git+https://github.com/firedrakeproject/petsctools.git@connorjward/fix-import", + "petsctools @ git+https://github.com/firedrakeproject/petsctools.git", "pkgconfig", "progress", "pyadjoint-ad>=2025.04", diff --git a/requirements-build.txt b/requirements-build.txt index 82fbacd83a..36790d8f26 100644 --- a/requirements-build.txt +++ b/requirements-build.txt @@ -5,8 +5,7 @@ mpi4py>3; python_version >= '3.13' mpi4py; python_version < '3.13' numpy pkgconfig -# UNDO ME -petsctools @ git+https://github.com/firedrakeproject/petsctools.git@connorjward/fix-import +petsctools @ git+https://github.com/firedrakeproject/petsctools.git pybind11 setuptools>=77.0.3 rtree>=1.2