diff --git a/lib/matplotlib/_pylab_helpers.py b/lib/matplotlib/_pylab_helpers.py index cb6ca41d02c9..fe96a9d877f7 100644 --- a/lib/matplotlib/_pylab_helpers.py +++ b/lib/matplotlib/_pylab_helpers.py @@ -68,8 +68,14 @@ def destroy(cls, num): @classmethod def destroy_fig(cls, fig): """Destroy figure *fig*.""" - num = next((manager.num for manager in cls.figs.values() - if manager.canvas.figure == fig), None) + num = next( + ( + manager.num + for manager in cls.figs.values() + if manager.canvas.figure == fig + ), + None, + ) if num is not None: cls.destroy(num) @@ -106,7 +112,8 @@ def _set_new_active_manager(cls, manager): """Adopt *manager* into pyplot and make it the active manager.""" if not hasattr(manager, "_cidgcf"): manager._cidgcf = manager.canvas.mpl_connect( - "button_press_event", lambda event: cls.set_active(manager)) + "button_press_event", lambda event: cls.set_active(manager) + ) fig = manager.canvas.figure fig.number = manager.num label = fig.get_label() diff --git a/lib/matplotlib/pyplot.py b/lib/matplotlib/pyplot.py index 2376c6243929..9d675b8ba36c 100644 --- a/lib/matplotlib/pyplot.py +++ b/lib/matplotlib/pyplot.py @@ -78,6 +78,7 @@ from matplotlib.colors import _color_sequences, Colormap import numpy as np +import matplotlib.backends if TYPE_CHECKING: from collections.abc import Callable, Hashable, Iterable, Sequence @@ -1088,7 +1089,7 @@ def fignum_exists(num: int | str) -> bool: return ( _pylab_helpers.Gcf.has_fignum(num) if isinstance(num, int) - else num in get_figlabels() + else num in _figlabels_set() ) @@ -4492,3 +4493,10 @@ def nipy_spectral() -> None: image if there is one. See ``help(colormaps)`` for more information. """ set_cmap("nipy_spectral") + + +def _figlabels_set() -> set[Any]: + """Helper for fast membership check of string figure labels.""" + return { + m.canvas.figure.get_label() for m in _pylab_helpers.Gcf.get_all_fig_managers() + }