diff --git a/external-deps/spyder-kernels/.gitrepo b/external-deps/spyder-kernels/.gitrepo index 5d80de2ef64..10f693378e8 100644 --- a/external-deps/spyder-kernels/.gitrepo +++ b/external-deps/spyder-kernels/.gitrepo @@ -6,7 +6,7 @@ [subrepo] remote = https://github.com/spyder-ide/spyder-kernels.git branch = 3.x - commit = cb12edabd6bd5955131c1a958c40d9cb23c11ecb - parent = e814f71f137120ac50790cec1bd910e1545c660e + commit = 2566dc7aed78743ff30def205ac321176436a8f6 + parent = 6688a6d60cdd819b62930e7dcc1e8772752c3dd6 method = merge cmdver = 0.4.9 diff --git a/external-deps/spyder-kernels/spyder_kernels/console/shell.py b/external-deps/spyder-kernels/spyder_kernels/console/shell.py index d2d32a85f11..3e9224c9df6 100644 --- a/external-deps/spyder-kernels/spyder_kernels/console/shell.py +++ b/external-deps/spyder-kernels/spyder_kernels/console/shell.py @@ -101,6 +101,33 @@ def enable_matplotlib(self, gui=None): enabled_gui = "inline" gui = enabled_gui + # Check if the inline backend is registered. It should be at this + # point, but sometimes that can fail due to a mismatch between + # the installed versions of IPython, matplotlib and matplotlib-inline. + # Fixes spyder-ide/spyder#22420. + if gui == "inline": + is_inline_registered = False + + # The flush_figures callback should be listed as a post_execute + # event if the backend was registered successfully. + for event in self.events.callbacks["post_execute"]: + if "matplotlib_inline.backend_inline.flush_figures" in repr( + event + ): + is_inline_registered = True + break + + # Manually register the backend in case it wasn't + if not is_inline_registered: + from IPython.core.pylabtools import activate_matplotlib + from matplotlib_inline.backend_inline import ( + configure_inline_support + ) + + backend = "module://matplotlib_inline.backend_inline" + activate_matplotlib(backend) + configure_inline_support(self, backend) + # To easily track the current interactive backend if self.kernel.interactive_backend is None: self.kernel.interactive_backend = gui if gui != "inline" else None