26
26
import re
27
27
import sys
28
28
import time
29
+ try :
30
+ import threading
31
+ except ImportError :
32
+ import dummy_threading as threading
29
33
30
34
from cycler import cycler
31
35
import matplotlib
@@ -177,6 +181,12 @@ def findobj(o=None, match=None, include_self=True):
177
181
return o .findobj (match , include_self = include_self )
178
182
179
183
184
+ def _get_required_interactive_framework ():
185
+ global _backend_mod
186
+ return getattr (
187
+ _backend_mod .FigureCanvas , "required_interactive_framework" , None )
188
+
189
+
180
190
def switch_backend (newbackend ):
181
191
"""
182
192
Close all open figures and set the Matplotlib backend.
@@ -222,8 +232,7 @@ class _backend_mod(matplotlib.backend_bases._Backend):
222
232
_log .debug ("Loaded backend %s version %s." ,
223
233
newbackend , _backend_mod .backend_version )
224
234
225
- required_framework = getattr (
226
- _backend_mod .FigureCanvas , "required_interactive_framework" , None )
235
+ required_framework = _get_required_interactive_framework ()
227
236
if required_framework is not None :
228
237
current_framework = cbook ._get_running_interactive_framework ()
229
238
if (current_framework and required_framework
@@ -246,6 +255,9 @@ class _backend_mod(matplotlib.backend_bases._Backend):
246
255
247
256
def new_figure_manager (* args , ** kwargs ):
248
257
"""Create a new figure manager instance."""
258
+ if (_get_required_interactive_framework ()
259
+ and threading .current_thread () is not threading .main_thread ()):
260
+ cbook ._warn_external ("Don't do this!" )
249
261
global _backend_mod
250
262
return _backend_mod .new_figure_manager (* args , ** kwargs )
251
263
@@ -274,6 +286,9 @@ def show(*args, **kwargs):
274
286
This is experimental, and may be set to ``True`` or ``False`` to
275
287
override the blocking behavior described above.
276
288
"""
289
+ if (_get_required_interactive_framework ()
290
+ and threading .current_thread () is not threading .main_thread ()):
291
+ cbook ._warn_external ("Don't do this!" )
277
292
global _backend_mod
278
293
return _backend_mod .show (* args , ** kwargs )
279
294
0 commit comments