Safely import pyplot if a GUI framework is already running. #18316
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.
configure_subplots
now needs to importpyplot
(because that'show we can spin up a new figure as needed), but when relying on
embedding we could well reach that point with an already running
interactive framework, pyplot never imported, and an incompatible
rcParams["backend"] (which had not been read yet). For example, run
examples/user_interfaces/embedding_in_tk_sgskip.py
with a non-tkbackend set in your matplotlibrc: clicking on the the configure_subplots
button triggers a "cannot load backend 'foo' which requires the 'foo'
interactive framework, as 'bar' is currently running".
Instead, use a helper to safely import pyplot when another interactive
framework may already be running. The list of frameworks that
_get_running_interactive_framework
returns is fixed, so we can justhardcode the mapping. (We are going to ignore the user-set
rcParams["backend"]
anyways.)followup to #16818, especially #16818 (review) (which this does not fix, it's just the easy first step).
PR Summary
PR Checklist