Deprecate appctx - #5427
Open
connorjward wants to merge 3 commits into
Open
Conversation
Preconditioners accessing the appctx will now raise a warning telling them to use _SNESContext.get_python_option instead, and once PCs switch over users will see warnings if they continue to use appctx.
This was referenced Sep 3, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Now that we can pass Python objects in the solver parameters dictionary (firedrakeproject/petsctools#41) we don't need to use the
appctxfor solvers any more. This PR lays out a deprecation process for moving towards the new approach.Deprecation process:
_SNESContext.appctx(which happens inside PCs) will now throw aDeprecationWarning._SNESContext.get_python_option()which tries the new approach but falls back to the appctx if not found. This means that users can continue to passappctx=but will see a warning.This is the first of two PRs. The deprecation mechanism is itself a bit confusing so I wanted to review it separately. A subsequent PR will address removing
appctxfrom our own code.