From dafc5e080cb94ccefd8116a03ff6228fcedaaa50 Mon Sep 17 00:00:00 2001 From: Antony Lee Date: Tue, 25 Sep 2018 13:12:21 +0200 Subject: [PATCH 1/2] 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()) From 0201ad64edd0e9132107d181d19a4bca136c1399 Mon Sep 17 00:00:00 2001 From: Antony Lee Date: Fri, 28 Sep 2018 13:58:41 +0200 Subject: [PATCH 2/2] Don't mock wx in docs build. Otherwise, wx.GetApp() returns a truthy value and the backend switching machinery believes that a wx event loop is running, leading to warnings about show() not doing anything with agg. --- doc/api/backend_wxagg_api.rst | 10 ++++++---- doc/sphinxext/mock_gui_toolkits.py | 15 --------------- 2 files changed, 6 insertions(+), 19 deletions(-) diff --git a/doc/api/backend_wxagg_api.rst b/doc/api/backend_wxagg_api.rst index 67c5a00be546..9005cfdfea80 100644 --- a/doc/api/backend_wxagg_api.rst +++ b/doc/api/backend_wxagg_api.rst @@ -2,7 +2,9 @@ :mod:`matplotlib.backends.backend_wxagg` ======================================== -.. automodule:: matplotlib.backends.backend_wxagg - :members: - :undoc-members: - :show-inheritance: +**NOTE** Not included, to avoid adding a dependency to building the docs. + +.. .. automodule:: matplotlib.backends.backend_wxagg +.. :members: +.. :undoc-members: +.. :show-inheritance: diff --git a/doc/sphinxext/mock_gui_toolkits.py b/doc/sphinxext/mock_gui_toolkits.py index a7be59a940c5..a3eee4dea61a 100644 --- a/doc/sphinxext/mock_gui_toolkits.py +++ b/doc/sphinxext/mock_gui_toolkits.py @@ -6,23 +6,8 @@ class MyCairoCffi(MagicMock): __name__ = "cairocffi" -class MyWX(MagicMock): - class Panel(object): - pass - - class ToolBar(object): - pass - - class Frame(object): - pass - - class StatusBar(object): - pass - - def setup(app): sys.modules.update( cairocffi=MyCairoCffi(), - wx=MyWX(), ) return {'parallel_read_safe': True, 'parallel_write_safe': True}