From 4e5419c981a73972d6dc5dd75ad56a0bdbe61f44 Mon Sep 17 00:00:00 2001 From: Antony Lee Date: Tue, 25 Sep 2018 13:12:21 +0200 Subject: [PATCH] Don't warn in show() when running a non-interactive backened headless. On Linux, $DISPLAY is unset, then we can't run a GUI toolkit anyways, so don't warn about that in `show()`. Delete the Note in the docstring which was redundant with the Parameters entry. --- lib/matplotlib/figure.py | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/lib/matplotlib/figure.py b/lib/matplotlib/figure.py index 9afca6ff81eb..819525482cb7 100644 --- a/lib/matplotlib/figure.py +++ b/lib/matplotlib/figure.py @@ -18,7 +18,7 @@ import numpy as np from matplotlib import rcParams -from matplotlib import docstring +from matplotlib import backends, docstring from matplotlib import __version__ as _mpl_version from matplotlib import get_backend @@ -415,12 +415,8 @@ def show(self, warn=True): Parameters ---------- warn : bool - If ``True``, issue warning when called on a non-GUI backend - - Notes - ----- - For non-GUI backends, this does nothing, in which case a warning will - be issued if *warn* is ``True`` (default). + If ``True`` and we are not running headless (i.e. on Linux with an + unset DISPLAY), issue warning when called on a non-GUI backend. """ try: manager = getattr(self.canvas, 'manager') @@ -436,7 +432,8 @@ def show(self, warn=True): return except NonGuiException: pass - if warn: + if (backends._get_running_interactive_framework() != "headless" + and warn): warnings.warn('Matplotlib is currently using %s, which is a ' 'non-GUI backend, so cannot show the figure.' % get_backend())