Show More
@@ -1478,7 +1478,12 b' def clear_output(wait=False):' | |||
|
1478 | 1478 | |
|
1479 | 1479 | @skip_doctest |
|
1480 | 1480 | def set_matplotlib_formats(*formats, **kwargs): |
|
1481 | """Select figure formats for the inline backend. Optionally pass quality for JPEG. | |
|
1481 | """ | |
|
1482 | .. deprecated:: 7.23 | |
|
1483 | ||
|
1484 | use `matplotlib_inline.backend_inline.set_matplotlib_formats()` | |
|
1485 | ||
|
1486 | Select figure formats for the inline backend. Optionally pass quality for JPEG. | |
|
1482 | 1487 | |
|
1483 | 1488 | For example, this enables PNG and JPEG output with a JPEG quality of 90%:: |
|
1484 | 1489 | |
@@ -1496,20 +1501,28 b' def set_matplotlib_formats(*formats, **kwargs):' | |||
|
1496 | 1501 | **kwargs : |
|
1497 | 1502 | Keyword args will be relayed to ``figure.canvas.print_figure``. |
|
1498 | 1503 | """ |
|
1499 | from IPython.core.interactiveshell import InteractiveShell | |
|
1500 | from IPython.core.pylabtools import select_figure_formats | |
|
1501 | # build kwargs, starting with InlineBackend config | |
|
1502 | kw = {} | |
|
1503 | from ipykernel.pylab.config import InlineBackend | |
|
1504 | cfg = InlineBackend.instance() | |
|
1505 | kw.update(cfg.print_figure_kwargs) | |
|
1506 | kw.update(**kwargs) | |
|
1507 | shell = InteractiveShell.instance() | |
|
1508 | select_figure_formats(shell, formats, **kw) | |
|
1504 | warnings.warn( | |
|
1505 | "`set_matplotlib_formats` is deprecated since IPython 7.23, directly " | |
|
1506 | "use `matplotlib_inline.backend_inline.set_matplotlib_formats()`", | |
|
1507 | DeprecationWarning, | |
|
1508 | stacklevel=2, | |
|
1509 | ) | |
|
1510 | ||
|
1511 | from matplotlib_inline.backend_inline import ( | |
|
1512 | set_matplotlib_formats as set_matplotlib_formats_orig, | |
|
1513 | ) | |
|
1514 | ||
|
1515 | set_matplotlib_formats_orig(*formats, **kwargs) | |
|
1509 | 1516 | |
|
1510 | 1517 | @skip_doctest |
|
1511 | 1518 | def set_matplotlib_close(close=True): |
|
1512 | """Set whether the inline backend closes all figures automatically or not. | |
|
1519 | """ | |
|
1520 | .. deprecated:: 7.23 | |
|
1521 | ||
|
1522 | use `matplotlib_inline.backend_inline.set_matplotlib_close()` | |
|
1523 | ||
|
1524 | ||
|
1525 | Set whether the inline backend closes all figures automatically or not. | |
|
1513 | 1526 | |
|
1514 | 1527 | By default, the inline backend used in the IPython Notebook will close all |
|
1515 | 1528 | matplotlib figures automatically after each cell is run. This means that |
@@ -1529,6 +1542,15 b' def set_matplotlib_close(close=True):' | |||
|
1529 | 1542 | Should all matplotlib figures be automatically closed after each cell is |
|
1530 | 1543 | run? |
|
1531 | 1544 | """ |
|
1532 | from ipykernel.pylab.config import InlineBackend | |
|
1533 | cfg = InlineBackend.instance() | |
|
1534 | cfg.close_figures = close | |
|
1545 | warnings.warn( | |
|
1546 | "`set_matplotlib_close` is deprecated since IPython 7.23, directly " | |
|
1547 | "use `matplotlib_inline.backend_inline.set_matplotlib_close()`", | |
|
1548 | DeprecationWarning, | |
|
1549 | stacklevel=2, | |
|
1550 | ) | |
|
1551 | ||
|
1552 | from matplotlib_inline.backend_inline import ( | |
|
1553 | set_matplotlib_close as set_matplotlib_close_orig, | |
|
1554 | ) | |
|
1555 | ||
|
1556 | set_matplotlib_close_orig(close) |
@@ -3514,6 +3514,7 b' class InteractiveShell(SingletonConfigurable):' | |||
|
3514 | 3514 | display figures inline. |
|
3515 | 3515 | """ |
|
3516 | 3516 | from IPython.core import pylabtools as pt |
|
3517 | from matplotlib_inline.backend_inline import configure_inline_support | |
|
3517 | 3518 | gui, backend = pt.find_gui_and_backend(gui, self.pylab_gui_select) |
|
3518 | 3519 | |
|
3519 | 3520 | if gui != 'inline': |
@@ -3527,7 +3528,7 b' class InteractiveShell(SingletonConfigurable):' | |||
|
3527 | 3528 | gui, backend = pt.find_gui_and_backend(self.pylab_gui_select) |
|
3528 | 3529 | |
|
3529 | 3530 | pt.activate_matplotlib(backend) |
|
3530 |
|
|
|
3531 | configure_inline_support(self, backend) | |
|
3531 | 3532 | |
|
3532 | 3533 | # Now we must activate the gui pylab wants to use, and fix %run to take |
|
3533 | 3534 | # plot updates into account |
@@ -5,29 +5,31 b'' | |||
|
5 | 5 | # Distributed under the terms of the Modified BSD License. |
|
6 | 6 | |
|
7 | 7 | from io import BytesIO |
|
8 | import warnings | |
|
8 | 9 | |
|
9 | 10 | from IPython.core.display import _pngxy |
|
10 | 11 | from IPython.utils.decorators import flag_calls |
|
11 | 12 | |
|
12 | 13 | # If user specifies a GUI, that dictates the backend, otherwise we read the |
|
13 | 14 | # user's mpl default from the mpl rc structure |
|
14 |
backends = { |
|
|
15 | 'gtk': 'GTKAgg', | |
|
16 |
|
|
|
17 | 'wx': 'WXAgg', | |
|
18 | 'qt4': 'Qt4Agg', | |
|
19 | 'qt5': 'Qt5Agg', | |
|
20 |
|
|
|
21 | 'osx': 'MacOSX', | |
|
22 | 'nbagg': 'nbAgg', | |
|
23 | 'notebook': 'nbAgg', | |
|
24 | 'agg': 'agg', | |
|
25 | 'svg': 'svg', | |
|
26 | 'pdf': 'pdf', | |
|
27 | 'ps': 'ps', | |
|
28 | 'inline': 'module://ipykernel.pylab.backend_inline', | |
|
29 | 'ipympl': 'module://ipympl.backend_nbagg', | |
|
30 |
|
|
|
15 | backends = { | |
|
16 | "tk": "TkAgg", | |
|
17 | "gtk": "GTKAgg", | |
|
18 | "gtk3": "GTK3Agg", | |
|
19 | "wx": "WXAgg", | |
|
20 | "qt4": "Qt4Agg", | |
|
21 | "qt5": "Qt5Agg", | |
|
22 | "qt": "Qt5Agg", | |
|
23 | "osx": "MacOSX", | |
|
24 | "nbagg": "nbAgg", | |
|
25 | "notebook": "nbAgg", | |
|
26 | "agg": "agg", | |
|
27 | "svg": "svg", | |
|
28 | "pdf": "pdf", | |
|
29 | "ps": "ps", | |
|
30 | "inline": "module://matplotlib_inline.backend_inline", | |
|
31 | "ipympl": "module://ipympl.backend_nbagg", | |
|
32 | "widget": "module://ipympl.backend_nbagg", | |
|
31 | 33 | } |
|
32 | 34 | |
|
33 | 35 | # We also need a reverse backends2guis mapping that will properly choose which |
@@ -44,12 +46,12 b" backend2gui['GTK3Cairo'] = 'gtk3'" | |||
|
44 | 46 | backend2gui['WX'] = 'wx' |
|
45 | 47 | backend2gui['CocoaAgg'] = 'osx' |
|
46 | 48 | # And some backends that don't need GUI integration |
|
47 |
del backend2gui[ |
|
|
48 |
del backend2gui[ |
|
|
49 |
del backend2gui[ |
|
|
50 |
del backend2gui[ |
|
|
51 |
del backend2gui[ |
|
|
52 |
del backend2gui[ |
|
|
49 | del backend2gui["nbAgg"] | |
|
50 | del backend2gui["agg"] | |
|
51 | del backend2gui["svg"] | |
|
52 | del backend2gui["pdf"] | |
|
53 | del backend2gui["ps"] | |
|
54 | del backend2gui["module://matplotlib_inline.backend_inline"] | |
|
53 | 55 | |
|
54 | 56 | #----------------------------------------------------------------------------- |
|
55 | 57 | # Matplotlib utilities |
@@ -274,7 +276,7 b' def find_gui_and_backend(gui=None, gui_select=None):' | |||
|
274 | 276 | Returns |
|
275 | 277 | ------- |
|
276 | 278 | A tuple of (gui, backend) where backend is one of ('TkAgg','GTKAgg', |
|
277 |
'WXAgg','Qt4Agg','module:// |
|
|
279 | 'WXAgg','Qt4Agg','module://matplotlib_inline.backend_inline','agg'). | |
|
278 | 280 | """ |
|
279 | 281 | |
|
280 | 282 | import matplotlib |
@@ -361,7 +363,12 b' def import_pylab(user_ns, import_all=True):' | |||
|
361 | 363 | |
|
362 | 364 | |
|
363 | 365 | def configure_inline_support(shell, backend): |
|
364 | """Configure an IPython shell object for matplotlib use. | |
|
366 | """ | |
|
367 | .. deprecated: 7.23 | |
|
368 | ||
|
369 | use `matplotlib_inline.backend_inline.configure_inline_support()` | |
|
370 | ||
|
371 | Configure an IPython shell object for matplotlib use. | |
|
365 | 372 | |
|
366 | 373 | Parameters |
|
367 | 374 | ---------- |
@@ -369,51 +376,13 b' def configure_inline_support(shell, backend):' | |||
|
369 | 376 | |
|
370 | 377 | backend : matplotlib backend |
|
371 | 378 | """ |
|
372 | # If using our svg payload backend, register the post-execution | |
|
373 | # function that will pick up the results for display. This can only be | |
|
374 | # done with access to the real shell object. | |
|
379 | warnings.warn( | |
|
380 | "`configure_inline_support` is deprecated since IPython 7.23, directly " | |
|
381 | "use `matplotlib_inline.backend_inline.configure_inline_support()`", | |
|
382 | DeprecationWarning, | |
|
383 | stacklevel=2, | |
|
384 | ) | |
|
375 | 385 | |
|
376 | # Note: if we can't load the inline backend, then there's no point | |
|
377 | # continuing (such as in terminal-only shells in environments without | |
|
378 | # zeromq available). | |
|
379 | try: | |
|
380 | from ipykernel.pylab.backend_inline import InlineBackend | |
|
381 | except ImportError: | |
|
382 | return | |
|
383 | import matplotlib | |
|
386 | from matplotlib_inline.backend_inline import configure_inline_support_orig | |
|
384 | 387 | |
|
385 | cfg = InlineBackend.instance(parent=shell) | |
|
386 | cfg.shell = shell | |
|
387 | if cfg not in shell.configurables: | |
|
388 | shell.configurables.append(cfg) | |
|
389 | ||
|
390 | if backend == backends['inline']: | |
|
391 | from ipykernel.pylab.backend_inline import flush_figures | |
|
392 | shell.events.register('post_execute', flush_figures) | |
|
393 | ||
|
394 | # Save rcParams that will be overwrittern | |
|
395 | shell._saved_rcParams = {} | |
|
396 | for k in cfg.rc: | |
|
397 | shell._saved_rcParams[k] = matplotlib.rcParams[k] | |
|
398 | # load inline_rc | |
|
399 | matplotlib.rcParams.update(cfg.rc) | |
|
400 | new_backend_name = "inline" | |
|
401 | else: | |
|
402 | from ipykernel.pylab.backend_inline import flush_figures | |
|
403 | try: | |
|
404 | shell.events.unregister('post_execute', flush_figures) | |
|
405 | except ValueError: | |
|
406 | pass | |
|
407 | if hasattr(shell, '_saved_rcParams'): | |
|
408 | matplotlib.rcParams.update(shell._saved_rcParams) | |
|
409 | del shell._saved_rcParams | |
|
410 | new_backend_name = "other" | |
|
411 | ||
|
412 | # only enable the formats once -> don't change the enabled formats (which the user may | |
|
413 | # has changed) when getting another "%matplotlib inline" call. | |
|
414 | # See https://github.com/ipython/ipykernel/issues/29 | |
|
415 | cur_backend = getattr(configure_inline_support, "current_backend", "unset") | |
|
416 | if new_backend_name != cur_backend: | |
|
417 | # Setup the default figure format | |
|
418 | select_figure_formats(shell, cfg.figure_formats, **cfg.print_figure_kwargs) | |
|
419 | configure_inline_support.current_backend = new_backend_name | |
|
388 | configure_inline_support_orig(shell, backend) |
@@ -135,7 +135,7 b' def test_image_filename_defaults():' | |||
|
135 | 135 | nt.assert_is_none(img._repr_jpeg_()) |
|
136 | 136 | |
|
137 | 137 | def _get_inline_config(): |
|
138 |
from |
|
|
138 | from matplotlib_inline.config import InlineBackend | |
|
139 | 139 | return InlineBackend.instance() |
|
140 | 140 | |
|
141 | 141 |
@@ -15,6 +15,7 b' from nose import SkipTest' | |||
|
15 | 15 | import nose.tools as nt |
|
16 | 16 | |
|
17 | 17 | from matplotlib import pyplot as plt |
|
18 | import matplotlib_inline | |
|
18 | 19 | import numpy as np |
|
19 | 20 | |
|
20 | 21 | from IPython.core.getipython import get_ipython |
@@ -167,13 +168,15 b' class TestPylabSwitch(object):' | |||
|
167 | 168 | pt.activate_matplotlib = act_mpl |
|
168 | 169 | self._save_ip = pt.import_pylab |
|
169 | 170 | pt.import_pylab = lambda *a,**kw:None |
|
170 | self._save_cis = pt.configure_inline_support | |
|
171 |
pt.configure_inline_support = |
|
|
171 | self._save_cis = matplotlib_inline.backend_inline.configure_inline_support | |
|
172 | matplotlib_inline.backend_inline.configure_inline_support = ( | |
|
173 | lambda *a, **kw: None | |
|
174 | ) | |
|
172 | 175 | |
|
173 | 176 | def teardown(self): |
|
174 | 177 | pt.activate_matplotlib = self._save_am |
|
175 | 178 | pt.import_pylab = self._save_ip |
|
176 | pt.configure_inline_support = self._save_cis | |
|
179 | matplotlib_inline.backend_inline.configure_inline_support = self._save_cis | |
|
177 | 180 | import matplotlib |
|
178 | 181 | matplotlib.rcParams = self._saved_rcParams |
|
179 | 182 | matplotlib.rcParamsOrig = self._saved_rcParamsOrig |
General Comments 0
You need to be logged in to leave comments.
Login now