Skip to content

Commit 6cf8450

Browse files
committed
Reuse the noninteractivity warning from Figure.show in _Backend.show.
Currently, the warning message "Matplotlib is currently using ..., which is a non-GUI backend, so cannot show the figure" and the (minor) associated logic (of catching NonGuiException) is duplicated between Figure.show and _Backend.show. Make the latter use the former, to deduplicate it.
1 parent b5b9a63 commit 6cf8450

File tree

3 files changed

+9
-18
lines changed

3 files changed

+9
-18
lines changed

lib/matplotlib/backend_bases.py

+2-8
Original file line numberDiff line numberDiff line change
@@ -185,14 +185,8 @@ def show(cls, block=None):
185185
if not managers:
186186
return
187187
for manager in managers:
188-
try:
189-
manager.show()
190-
except NonGuiException:
191-
warnings.warn(
192-
('matplotlib is currently using %s, which is a ' +
193-
'non-GUI backend, so cannot show the figure.')
194-
% get_backend())
195-
return
188+
# Emits a warning if the backend is non-interactive.
189+
manager.canvas.figure.show()
196190
if cls.mainloop is None:
197191
return
198192
if block is None:

lib/matplotlib/figure.py

+3-4
Original file line numberDiff line numberDiff line change
@@ -439,10 +439,9 @@ def show(self, warn=True):
439439
except NonGuiException:
440440
pass
441441
if warn:
442-
warnings.warn(
443-
('matplotlib is currently using %s, which is a ' +
444-
'non-GUI backend, so cannot show the figure.')
445-
% get_backend())
442+
warnings.warn('Matplotlib is currently using %s, which is a '
443+
'non-GUI backend, so cannot show the figure.'
444+
% get_backend())
446445

447446
def _get_axes(self):
448447
return self._axstack.as_list()

lib/matplotlib/tests/test_backend_bases.py

+4-6
Original file line numberDiff line numberDiff line change
@@ -69,13 +69,11 @@ def test_non_gui_warning():
6969
with pytest.warns(UserWarning) as rec:
7070
plt.show()
7171
assert len(rec) == 1
72-
assert 'matplotlib is currently using pdf, ' \
73-
'which is a non-GUI backend' \
74-
in str(rec[0].message)
72+
assert ('Matplotlib is currently using pdf, which is a non-GUI backend'
73+
in str(rec[0].message))
7574

7675
with pytest.warns(UserWarning) as rec:
7776
plt.gcf().show()
7877
assert len(rec) == 1
79-
assert 'matplotlib is currently using pdf, ' \
80-
'which is a non-GUI backend' \
81-
in str(rec[0].message)
78+
assert ('Matplotlib is currently using pdf, which is a non-GUI backend'
79+
in str(rec[0].message))

0 commit comments

Comments
 (0)