diff --git a/.flake8 b/.flake8 index 60d0a5518674..3c179f0ab298 100644 --- a/.flake8 +++ b/.flake8 @@ -49,6 +49,7 @@ per-file-ignores = tools/subset.py: E221, E251, E261, E302, E501 lib/matplotlib/__init__.py: F401 + lib/matplotlib/_api/__init__.py: F401 lib/matplotlib/_cm.py: E202, E203, E302 lib/matplotlib/_mathtext.py: E221, E251 lib/matplotlib/_mathtext_data.py: E203, E261 diff --git a/lib/matplotlib/_api/__init__.py b/lib/matplotlib/_api/__init__.py index b2778410e0cd..96e7d03c33f0 100644 --- a/lib/matplotlib/_api/__init__.py +++ b/lib/matplotlib/_api/__init__.py @@ -15,6 +15,13 @@ import sys import warnings +from .deprecation import ( + deprecated, warn_deprecated, + _rename_parameter, _delete_parameter, _make_keyword_only, + _deprecate_method_override, _deprecate_privatize_attribute, + _suppress_matplotlib_deprecation_warning, + MatplotlibDeprecationWarning) + def check_in_list(_values, *, _print_supported_values=True, **kwargs): """ diff --git a/lib/matplotlib/_api/deprecation.py b/lib/matplotlib/_api/deprecation.py index c94b76c741c1..542cc25ae627 100644 --- a/lib/matplotlib/_api/deprecation.py +++ b/lib/matplotlib/_api/deprecation.py @@ -30,6 +30,7 @@ class MatplotlibDeprecationWarning(UserWarning): # mplDeprecation is deprecated. Use MatplotlibDeprecationWarning instead. +# remove when removing the re-import from cbook mplDeprecation = MatplotlibDeprecationWarning diff --git a/lib/matplotlib/_mathtext.py b/lib/matplotlib/_mathtext.py index 72e09a9fcea0..ffa8de4b651a 100644 --- a/lib/matplotlib/_mathtext.py +++ b/lib/matplotlib/_mathtext.py @@ -18,7 +18,7 @@ ParseResults, QuotedString, Regex, StringEnd, Suppress, ZeroOrMore) import matplotlib as mpl -from . import cbook +from . import _api, cbook from ._mathtext_data import ( latex_to_bakoma, latex_to_standard, stix_virtual_fonts, tex2uni) from .afm import AFM @@ -91,7 +91,7 @@ def __init__(self, default_font_prop, mathtext_backend): self.mathtext_backend = mathtext_backend self.used_characters = {} - @cbook.deprecated("3.4") + @_api.deprecated("3.4") def destroy(self): """ Fix any cyclical references before the object is about @@ -234,7 +234,7 @@ def __init__(self, default_font_prop, mathtext_backend): self._fonts['default'] = default_font self._fonts['regular'] = default_font - @cbook.deprecated("3.4") + @_api.deprecated("3.4") def destroy(self): self.glyphd = None super().destroy() @@ -1577,43 +1577,43 @@ def grow(self): # Some convenient ways to get common kinds of glue -@cbook.deprecated("3.3", alternative="Glue('fil')") +@_api.deprecated("3.3", alternative="Glue('fil')") class Fil(Glue): def __init__(self): super().__init__('fil') -@cbook.deprecated("3.3", alternative="Glue('fill')") +@_api.deprecated("3.3", alternative="Glue('fill')") class Fill(Glue): def __init__(self): super().__init__('fill') -@cbook.deprecated("3.3", alternative="Glue('filll')") +@_api.deprecated("3.3", alternative="Glue('filll')") class Filll(Glue): def __init__(self): super().__init__('filll') -@cbook.deprecated("3.3", alternative="Glue('neg_fil')") +@_api.deprecated("3.3", alternative="Glue('neg_fil')") class NegFil(Glue): def __init__(self): super().__init__('neg_fil') -@cbook.deprecated("3.3", alternative="Glue('neg_fill')") +@_api.deprecated("3.3", alternative="Glue('neg_fill')") class NegFill(Glue): def __init__(self): super().__init__('neg_fill') -@cbook.deprecated("3.3", alternative="Glue('neg_filll')") +@_api.deprecated("3.3", alternative="Glue('neg_filll')") class NegFilll(Glue): def __init__(self): super().__init__('neg_filll') -@cbook.deprecated("3.3", alternative="Glue('ss')") +@_api.deprecated("3.3", alternative="Glue('ss')") class SsGlue(Glue): def __init__(self): super().__init__('ss') diff --git a/lib/matplotlib/animation.py b/lib/matplotlib/animation.py index 4edeb05ae4bc..c493681763d8 100644 --- a/lib/matplotlib/animation.py +++ b/lib/matplotlib/animation.py @@ -445,7 +445,7 @@ def __del__(self): if self._tmpdir: self._tmpdir.cleanup() - @cbook.deprecated("3.3") + @_api.deprecated("3.3") @property def clear_temp(self): return self._clear_temp @@ -641,7 +641,7 @@ def _args(self): # Base class of avconv information. AVConv has identical arguments to FFMpeg. -@cbook.deprecated('3.3') +@_api.deprecated('3.3') class AVConvBase(FFMpegBase): """ Mixin class for avconv output. diff --git a/lib/matplotlib/artist.py b/lib/matplotlib/artist.py index 5126471cf533..1b696813abc8 100644 --- a/lib/matplotlib/artist.py +++ b/lib/matplotlib/artist.py @@ -9,7 +9,7 @@ import numpy as np import matplotlib as mpl -from . import cbook, docstring +from . import _api, cbook, docstring from .path import Path from .transforms import (Bbox, IdentityTransform, Transform, TransformedBbox, TransformedPatchPath, TransformedPath) @@ -456,7 +456,7 @@ def contains(self, mouseevent): _log.warning("%r needs 'contains' method", self.__class__.__name__) return False, {} - @cbook.deprecated("3.3", alternative="set_picker") + @_api.deprecated("3.3", alternative="set_picker") def set_contains(self, picker): """ Define a custom contains test for the artist. @@ -484,7 +484,7 @@ def contains(artist: Artist, event: MouseEvent) -> bool, dict raise TypeError("picker is not a callable") self._contains = picker - @cbook.deprecated("3.3", alternative="get_picker") + @_api.deprecated("3.3", alternative="get_picker") def get_contains(self): """ Return the custom contains function of the artist if set, or *None*. diff --git a/lib/matplotlib/axes/_base.py b/lib/matplotlib/axes/_base.py index afe74b4e32e8..f8ad75bb11ea 100644 --- a/lib/matplotlib/axes/_base.py +++ b/lib/matplotlib/axes/_base.py @@ -1602,7 +1602,7 @@ def get_data_ratio(self): ysize = max(abs(tymax - tymin), 1e-30) return ysize / xsize - @cbook.deprecated("3.2") + @_api.deprecated("3.2") def get_data_ratio_log(self): """ Return the aspect ratio of the raw data in log scale. @@ -2213,7 +2213,7 @@ def update_datalim(self, xys, updatex=True, updatey=True): updatex=updatex, updatey=updatey) self.ignore_existing_data_limits = False - @cbook.deprecated( + @_api.deprecated( "3.3", alternative="ax.dataLim.set(Bbox.union([ax.dataLim, bounds]))") def update_datalim_bounds(self, bounds): """ diff --git a/lib/matplotlib/axes/_subplots.py b/lib/matplotlib/axes/_subplots.py index 6fb17116342d..94c5264b369f 100644 --- a/lib/matplotlib/axes/_subplots.py +++ b/lib/matplotlib/axes/_subplots.py @@ -1,7 +1,7 @@ import functools import uuid -from matplotlib import cbook, docstring +from matplotlib import _api, cbook, docstring import matplotlib.artist as martist from matplotlib.axes._axes import Axes from matplotlib.gridspec import GridSpec, SubplotSpec @@ -47,7 +47,7 @@ def __reduce__(self): (axes_class,), self.__getstate__()) - @cbook.deprecated( + @_api.deprecated( "3.4", alternative="get_subplotspec", addendum="(get_subplotspec returns a SubplotSpec instance.)") def get_geometry(self): @@ -55,7 +55,7 @@ def get_geometry(self): rows, cols, num1, num2 = self.get_subplotspec().get_geometry() return rows, cols, num1 + 1 # for compatibility - @cbook.deprecated("3.4", alternative="set_subplotspec") + @_api.deprecated("3.4", alternative="set_subplotspec") def change_geometry(self, numrows, numcols, num): """Change subplot geometry, e.g., from (1, 1, 1) to (2, 2, 3).""" self._subplotspec = GridSpec(numrows, numcols, @@ -76,51 +76,51 @@ def get_gridspec(self): """Return the `.GridSpec` instance associated with the subplot.""" return self._subplotspec.get_gridspec() - @cbook.deprecated( + @_api.deprecated( "3.4", alternative="get_subplotspec().get_position(self.figure)") @property def figbox(self): return self.get_subplotspec().get_position(self.figure) - @cbook.deprecated("3.4", alternative="get_gridspec().nrows") + @_api.deprecated("3.4", alternative="get_gridspec().nrows") @property def numRows(self): return self.get_gridspec().nrows - @cbook.deprecated("3.4", alternative="get_gridspec().ncols") + @_api.deprecated("3.4", alternative="get_gridspec().ncols") @property def numCols(self): return self.get_gridspec().ncols - @cbook.deprecated("3.4") + @_api.deprecated("3.4") def update_params(self): """Update the subplot position from ``self.figure.subplotpars``.""" # Now a no-op, as figbox/numRows/numCols are (deprecated) auto-updating # properties. - @cbook.deprecated("3.2", alternative="ax.get_subplotspec().rowspan.start") + @_api.deprecated("3.2", alternative="ax.get_subplotspec().rowspan.start") @property def rowNum(self): return self.get_subplotspec().rowspan.start - @cbook.deprecated("3.2", alternative="ax.get_subplotspec().colspan.start") + @_api.deprecated("3.2", alternative="ax.get_subplotspec().colspan.start") @property def colNum(self): return self.get_subplotspec().colspan.start - @cbook.deprecated("3.4", alternative="ax.get_subplotspec().is_first_row()") + @_api.deprecated("3.4", alternative="ax.get_subplotspec().is_first_row()") def is_first_row(self): return self.get_subplotspec().rowspan.start == 0 - @cbook.deprecated("3.4", alternative="ax.get_subplotspec().is_last_row()") + @_api.deprecated("3.4", alternative="ax.get_subplotspec().is_last_row()") def is_last_row(self): return self.get_subplotspec().rowspan.stop == self.get_gridspec().nrows - @cbook.deprecated("3.4", alternative="ax.get_subplotspec().is_first_col()") + @_api.deprecated("3.4", alternative="ax.get_subplotspec().is_first_col()") def is_first_col(self): return self.get_subplotspec().colspan.start == 0 - @cbook.deprecated("3.4", alternative="ax.get_subplotspec().is_last_col()") + @_api.deprecated("3.4", alternative="ax.get_subplotspec().is_last_col()") def is_last_col(self): return self.get_subplotspec().colspan.stop == self.get_gridspec().ncols diff --git a/lib/matplotlib/axis.py b/lib/matplotlib/axis.py index f9aaafc66ddc..1cf574756955 100644 --- a/lib/matplotlib/axis.py +++ b/lib/matplotlib/axis.py @@ -194,7 +194,7 @@ def __init__(self, axes, loc, label=None, self.update_position(loc) @property - @cbook.deprecated("3.1", alternative="Tick.label1", pending=True) + @_api.deprecated("3.1", alternative="Tick.label1", pending=True) def label(self): return self.label1 @@ -796,7 +796,7 @@ def clear(self): self.set_units(None) self.stale = True - @cbook.deprecated("3.4", alternative="Axis.clear()") + @_api.deprecated("3.4", alternative="Axis.clear()") def cla(self): """Clear this axis.""" return self.clear() @@ -1011,13 +1011,13 @@ def get_ticklabel_extents(self, renderer): bbox2 = mtransforms.Bbox.from_extents(0, 0, 0, 0) return bbox, bbox2 - @cbook.deprecated("3.2") + @_api.deprecated("3.2") def set_smart_bounds(self, value): """Set the axis to have smart bounds.""" self._smart_bounds = value self.stale = True - @cbook.deprecated("3.2") + @_api.deprecated("3.2") def get_smart_bounds(self): """Return whether the axis has smart bounds.""" return self._smart_bounds @@ -1900,12 +1900,12 @@ def _update_offset_text_position(self, bboxes, bboxes2): """ raise NotImplementedError('Derived must override') - @cbook.deprecated("3.3") + @_api.deprecated("3.3") def pan(self, numsteps): """Pan by *numsteps* (can be positive or negative).""" self.major.locator.pan(numsteps) - @cbook.deprecated("3.3") + @_api.deprecated("3.3") def zoom(self, direction): """Zoom in/out on axis; if *direction* is >0 zoom in, else zoom out.""" self.major.locator.zoom(direction) diff --git a/lib/matplotlib/backend_bases.py b/lib/matplotlib/backend_bases.py index 7f2ab50a56b2..f282adff26cc 100644 --- a/lib/matplotlib/backend_bases.py +++ b/lib/matplotlib/backend_bases.py @@ -43,7 +43,7 @@ import matplotlib as mpl from matplotlib import ( - backend_tools as tools, cbook, colors, textpath, tight_bbox, + _api, backend_tools as tools, cbook, colors, textpath, tight_bbox, transforms, widgets, get_backend, is_interactive, rcParams) from matplotlib._pylab_helpers import Gcf from matplotlib.backend_managers import ToolManager @@ -2254,7 +2254,7 @@ def get_default_filetype(cls): """ return rcParams['savefig.format'] - @cbook.deprecated( + @_api.deprecated( "3.4", alternative="manager.get_window_title or GUI-specific methods") def get_window_title(self): """ @@ -2264,7 +2264,7 @@ def get_window_title(self): if self.manager is not None: return self.manager.get_window_title() - @cbook.deprecated( + @_api.deprecated( "3.4", alternative="manager.set_window_title or GUI-specific methods") def set_window_title(self, title): """ @@ -2945,7 +2945,7 @@ def forward(self, *args): self.set_history_buttons() self._update_view() - @cbook.deprecated("3.3", alternative="__init__") + @_api.deprecated("3.3", alternative="__init__") def _init_toolbar(self): """ This is where you actually build the GUI widgets (called by @@ -3050,11 +3050,11 @@ def _zoom_pan_handler(self, event): elif event.name == "button_release_event": self.release_zoom(event) - @cbook.deprecated("3.3") + @_api.deprecated("3.3") def press(self, event): """Called whenever a mouse button is pressed.""" - @cbook.deprecated("3.3") + @_api.deprecated("3.3") def release(self, event): """Callback for mouse button release.""" @@ -3247,7 +3247,7 @@ def push_current(self): for ax in self.canvas.figure.axes})) self.set_history_buttons() - @cbook.deprecated("3.3", alternative="toolbar.canvas.draw_idle()") + @_api.deprecated("3.3", alternative="toolbar.canvas.draw_idle()") def draw(self): """Redraw the canvases, update the locators.""" self._draw() @@ -3471,7 +3471,7 @@ def set_message(self, s): raise NotImplementedError -@cbook.deprecated("3.3") +@_api.deprecated("3.3") class StatusbarBase: """Base class for the statusbar.""" def __init__(self, toolmanager): diff --git a/lib/matplotlib/backend_tools.py b/lib/matplotlib/backend_tools.py index b549bb1b9bf6..7c8a9fbfbfe6 100644 --- a/lib/matplotlib/backend_tools.py +++ b/lib/matplotlib/backend_tools.py @@ -23,7 +23,7 @@ import matplotlib as mpl from matplotlib._pylab_helpers import Gcf -import matplotlib.cbook as cbook +from matplotlib import _api, cbook _log = logging.getLogger(__name__) @@ -404,7 +404,7 @@ def trigger(self, sender, event, data=None): mpl.backend_bases.key_press_handler(event, self.figure.canvas, None) -@cbook.deprecated("3.3") +@_api.deprecated("3.3") class ToolEnableAllNavigation(_ToolEnableAllNavigation): pass @@ -419,7 +419,7 @@ def trigger(self, sender, event, data=None): mpl.backend_bases.key_press_handler(event, self.figure.canvas, None) -@cbook.deprecated("3.3") +@_api.deprecated("3.3") class ToolEnableNavigation(_ToolEnableNavigation): pass @@ -619,7 +619,7 @@ def update_home_views(self, figure=None): if a not in self.home_views[figure]: self.home_views[figure][a] = a._get_view() - @cbook.deprecated("3.3", alternative="self.figure.canvas.draw_idle()") + @_api.deprecated("3.3", alternative="self.figure.canvas.draw_idle()") def refresh_locators(self): """Redraw the canvases, update the locators.""" self._refresh_locators() diff --git a/lib/matplotlib/backends/_backend_tk.py b/lib/matplotlib/backends/_backend_tk.py index 69b57fc15d2a..3759fff9d47d 100644 --- a/lib/matplotlib/backends/_backend_tk.py +++ b/lib/matplotlib/backends/_backend_tk.py @@ -11,7 +11,7 @@ import numpy as np import matplotlib as mpl -from matplotlib import backend_tools, cbook, _c_internal_utils +from matplotlib import _api, backend_tools, cbook, _c_internal_utils from matplotlib.backend_bases import ( _Backend, FigureCanvasBase, FigureManagerBase, NavigationToolbar2, StatusbarBase, TimerBase, ToolContainerBase, cursors, _Mode) @@ -723,7 +723,7 @@ def set_message(self, s): self._message.set(s) -@cbook.deprecated("3.3") +@_api.deprecated("3.3") class StatusbarTk(StatusbarBase, tk.Frame): def __init__(self, window, *args, **kwargs): StatusbarBase.__init__(self, *args, **kwargs) diff --git a/lib/matplotlib/backends/backend_agg.py b/lib/matplotlib/backends/backend_agg.py index 09f16afa2131..16c5e64d0ae4 100644 --- a/lib/matplotlib/backends/backend_agg.py +++ b/lib/matplotlib/backends/backend_agg.py @@ -30,7 +30,7 @@ from PIL import Image import matplotlib as mpl -from matplotlib import cbook +from matplotlib import _api, cbook from matplotlib import colors as mcolors from matplotlib.backend_bases import ( _Backend, _check_savefig_extra_args, FigureCanvasBase, FigureManagerBase, @@ -115,14 +115,14 @@ def _update_methods(self): self.draw_quad_mesh = self._renderer.draw_quad_mesh self.copy_from_bbox = self._renderer.copy_from_bbox - @cbook.deprecated("3.4") + @_api.deprecated("3.4") def get_content_extents(self): orig_img = np.asarray(self.buffer_rgba()) slice_y, slice_x = cbook._get_nonzero_slices(orig_img[..., 3]) return (slice_x.start, slice_y.start, slice_x.stop - slice_x.start, slice_y.stop - slice_y.start) - @cbook.deprecated("3.4") + @_api.deprecated("3.4") def tostring_rgba_minimized(self): extents = self.get_content_extents() bbox = [[extents[0], self.height - (extents[1] + extents[3])], diff --git a/lib/matplotlib/backends/backend_gtk3.py b/lib/matplotlib/backends/backend_gtk3.py index 7587004fc685..1a322f91ac19 100644 --- a/lib/matplotlib/backends/backend_gtk3.py +++ b/lib/matplotlib/backends/backend_gtk3.py @@ -5,7 +5,7 @@ import sys import matplotlib as mpl -from matplotlib import backend_tools, cbook +from matplotlib import _api, backend_tools, cbook from matplotlib._pylab_helpers import Gcf from matplotlib.backend_bases import ( _Backend, FigureCanvasBase, FigureManagerBase, NavigationToolbar2, @@ -136,7 +136,7 @@ def __init__(self, figure): if renderer_init: renderer_init() - @cbook.deprecated("3.3", alternative="__init__") + @_api.deprecated("3.3", alternative="__init__") def _renderer_init(self): pass @@ -655,7 +655,7 @@ def set_message(self, s): self._message.set_label(s) -@cbook.deprecated("3.3") +@_api.deprecated("3.3") class StatusbarGTK3(StatusbarBase, Gtk.Statusbar): def __init__(self, *args, **kwargs): StatusbarBase.__init__(self, *args, **kwargs) diff --git a/lib/matplotlib/backends/backend_pdf.py b/lib/matplotlib/backends/backend_pdf.py index 2a4df4a6c967..49fc85842434 100644 --- a/lib/matplotlib/backends/backend_pdf.py +++ b/lib/matplotlib/backends/backend_pdf.py @@ -24,7 +24,7 @@ from PIL import Image import matplotlib as mpl -from matplotlib import _text_layout, cbook +from matplotlib import _api, _text_layout, cbook from matplotlib._pylab_helpers import Gcf from matplotlib.backend_bases import ( _Backend, _check_savefig_extra_args, FigureCanvasBase, FigureManagerBase, @@ -716,7 +716,7 @@ def __init__(self, filename, metadata=None): 'ProcSet': procsets} self.writeObject(self.resourceObject, resources) - @cbook.deprecated("3.3") + @_api.deprecated("3.3") @property def used_characters(self): return self.file._character_tracker.used_characters @@ -1844,7 +1844,7 @@ def __init__(self, file, image_dpi, height, width): self.gc = self.new_gc() self.image_dpi = image_dpi - @cbook.deprecated("3.4") + @_api.deprecated("3.4") @property def mathtext_parser(self): return MathTextParser("Pdf") @@ -1879,12 +1879,12 @@ def check_gc(self, gc, fillcolor=None): gc._fillcolor = orig_fill gc._effective_alphas = orig_alphas - @cbook.deprecated("3.3") + @_api.deprecated("3.3") def track_characters(self, *args, **kwargs): """Keep track of which characters are required from each font.""" self.file._character_tracker.track(*args, **kwargs) - @cbook.deprecated("3.3") + @_api.deprecated("3.3") def merge_used_characters(self, *args, **kwargs): self.file._character_tracker.merge(*args, **kwargs) diff --git a/lib/matplotlib/backends/backend_pgf.py b/lib/matplotlib/backends/backend_pgf.py index 1dc0401c028c..fa52c5eb7b59 100644 --- a/lib/matplotlib/backends/backend_pgf.py +++ b/lib/matplotlib/backends/backend_pgf.py @@ -17,7 +17,7 @@ from PIL import Image import matplotlib as mpl -from matplotlib import cbook, font_manager as fm +from matplotlib import _api, cbook, font_manager as fm from matplotlib.backend_bases import ( _Backend, _check_savefig_extra_args, FigureCanvasBase, FigureManagerBase, GraphicsContextBase, RendererBase) @@ -313,7 +313,7 @@ def finalize_latex(latex): self._expect("*pgf_backend_query_start") self._expect_prompt() - @cbook.deprecated("3.3") + @_api.deprecated("3.3") def latex_stdin_utf8(self): return self.latex.stdin @@ -743,27 +743,27 @@ def points_to_pixels(self, points): return points * mpl_pt_to_in * self.dpi -@cbook.deprecated("3.3", alternative="GraphicsContextBase") +@_api.deprecated("3.3", alternative="GraphicsContextBase") class GraphicsContextPgf(GraphicsContextBase): pass -@cbook.deprecated("3.4") +@_api.deprecated("3.4") class TmpDirCleaner: _remaining_tmpdirs = set() @cbook._classproperty - @cbook.deprecated("3.4") + @_api.deprecated("3.4") def remaining_tmpdirs(cls): return cls._remaining_tmpdirs @staticmethod - @cbook.deprecated("3.4") + @_api.deprecated("3.4") def add(tmpdir): TmpDirCleaner._remaining_tmpdirs.add(tmpdir) @staticmethod - @cbook.deprecated("3.4") + @_api.deprecated("3.4") @atexit.register def cleanup_remaining_tmpdirs(): for tmpdir in TmpDirCleaner._remaining_tmpdirs: diff --git a/lib/matplotlib/backends/backend_ps.py b/lib/matplotlib/backends/backend_ps.py index 62cbadaf811b..6a16e61873b5 100644 --- a/lib/matplotlib/backends/backend_ps.py +++ b/lib/matplotlib/backends/backend_ps.py @@ -254,12 +254,12 @@ def __init__(self, width, height, pswriter, imagedpi=72): self._character_tracker = _backend_pdf_ps.CharacterTracker() - @cbook.deprecated("3.3") + @_api.deprecated("3.3") def track_characters(self, *args, **kwargs): """Keep track of which characters are required from each font.""" self._character_tracker.track(*args, **kwargs) - @cbook.deprecated("3.3") + @_api.deprecated("3.3") def merge_used_characters(self, *args, **kwargs): self._character_tracker.merge(*args, **kwargs) @@ -840,7 +840,7 @@ def _is_transparent(rgb_or_rgba): return False -@cbook.deprecated("3.4", alternative="GraphicsContextBase") +@_api.deprecated("3.4", alternative="GraphicsContextBase") class GraphicsContextPS(GraphicsContextBase): def get_capstyle(self): return {'butt': 0, 'round': 1, 'projecting': 2}[super().get_capstyle()] diff --git a/lib/matplotlib/backends/backend_qt5.py b/lib/matplotlib/backends/backend_qt5.py index 162af99f0efa..1144a93318f1 100644 --- a/lib/matplotlib/backends/backend_qt5.py +++ b/lib/matplotlib/backends/backend_qt5.py @@ -7,7 +7,7 @@ import traceback import matplotlib as mpl -from matplotlib import backend_tools, cbook +from matplotlib import _api, backend_tools, cbook from matplotlib._pylab_helpers import Gcf from matplotlib.backend_bases import ( _Backend, FigureCanvasBase, FigureManagerBase, NavigationToolbar2, @@ -683,17 +683,17 @@ def __init__(self, canvas, parent, coordinates=True): NavigationToolbar2.__init__(self, canvas) - @cbook.deprecated("3.3", alternative="self.canvas.parent()") + @_api.deprecated("3.3", alternative="self.canvas.parent()") @property def parent(self): return self.canvas.parent() - @cbook.deprecated("3.3", alternative="self.canvas.setParent()") + @_api.deprecated("3.3", alternative="self.canvas.setParent()") @parent.setter def parent(self, value): pass - @cbook.deprecated( + @_api.deprecated( "3.3", alternative="os.path.join(mpl.get_data_path(), 'images')") @property def basedir(self): @@ -956,7 +956,7 @@ def set_message(self, s): self.widgetForAction(self._message_action).setText(s) -@cbook.deprecated("3.3") +@_api.deprecated("3.3") class StatusbarQt(StatusbarBase, QtWidgets.QLabel): def __init__(self, window, *args, **kwargs): StatusbarBase.__init__(self, *args, **kwargs) diff --git a/lib/matplotlib/backends/backend_svg.py b/lib/matplotlib/backends/backend_svg.py index 4d9f3fcdbc3e..79e2be045abb 100644 --- a/lib/matplotlib/backends/backend_svg.py +++ b/lib/matplotlib/backends/backend_svg.py @@ -14,7 +14,7 @@ from PIL import Image import matplotlib as mpl -from matplotlib import cbook +from matplotlib import _api, cbook from matplotlib.backend_bases import ( _Backend, _check_savefig_extra_args, FigureCanvasBase, FigureManagerBase, RendererBase) @@ -311,7 +311,7 @@ def __init__(self, width, height, svgwriter, basename=None, image_dpi=72, self._write_metadata(metadata) self._write_default_style() - @cbook.deprecated("3.4") + @_api.deprecated("3.4") @property def mathtext_parser(self): return MathTextParser('SVG') diff --git a/lib/matplotlib/backends/backend_wx.py b/lib/matplotlib/backends/backend_wx.py index 8d2083d555e5..f1b4ba239d47 100644 --- a/lib/matplotlib/backends/backend_wx.py +++ b/lib/matplotlib/backends/backend_wx.py @@ -22,7 +22,7 @@ GraphicsContextBase, MouseButton, NavigationToolbar2, RendererBase, StatusbarBase, TimerBase, ToolContainerBase, cursors) -from matplotlib import cbook, backend_tools +from matplotlib import _api, cbook, backend_tools from matplotlib._pylab_helpers import Gcf from matplotlib.backend_managers import ToolManager from matplotlib.figure import Figure @@ -43,7 +43,7 @@ _DEBUG_lvls = {1: 'Low ', 2: 'Med ', 3: 'High', 4: 'Error'} -@cbook.deprecated("3.3") +@_api.deprecated("3.3") def DEBUG_MSG(string, lvl=3, o=None): if lvl >= _DEBUG: print(f"{_DEBUG_lvls[lvl]}- {string} in {type(o)}") @@ -280,7 +280,7 @@ def new_gc(self): self.gc.unselect() return self.gc - @cbook.deprecated("3.3", alternative=".gc") + @_api.deprecated("3.3", alternative=".gc") def get_gc(self): """ Fetch the locally cached gc. @@ -1160,7 +1160,7 @@ def _icon(name): return wx.Bitmap.FromBufferRGBA( image.shape[1], image.shape[0], image.tobytes()) - @cbook.deprecated("3.4") + @_api.deprecated("3.4") def get_canvas(self, frame, fig): return type(self.canvas)(frame, -1, fig) @@ -1259,7 +1259,7 @@ def set_history_buttons(self): self.EnableTool(self.wx_ids['Forward'], can_forward) -@cbook.deprecated("3.3") +@_api.deprecated("3.3") class StatusBarWx(wx.StatusBar): """ A status bar is added to _FigureFrame to allow measurements and the @@ -1361,7 +1361,7 @@ def set_message(self, s): self._label_text.SetLabel(s) -@cbook.deprecated("3.3") +@_api.deprecated("3.3") class StatusbarWx(StatusbarBase, wx.StatusBar): """For use with ToolManager.""" def __init__(self, parent, *args, **kwargs): diff --git a/lib/matplotlib/bezier.py b/lib/matplotlib/bezier.py index b36e2c1aef0a..e0a9bcc51aa4 100644 --- a/lib/matplotlib/bezier.py +++ b/lib/matplotlib/bezier.py @@ -8,7 +8,7 @@ import numpy as np -import matplotlib.cbook as cbook +from matplotlib import _api, cbook # same algorithm as 3.8's math.comb @@ -593,7 +593,7 @@ def make_wedged_bezier2(bezier2, width, w1=1., wm=0.5, w2=0.): return path_left, path_right -@cbook.deprecated( +@_api.deprecated( "3.3", alternative="Path.cleaned() and remove the final STOP if needed") def make_path_regular(p): """ @@ -611,7 +611,7 @@ def make_path_regular(p): return p -@cbook.deprecated("3.3", alternative="Path.make_compound_path()") +@_api.deprecated("3.3", alternative="Path.make_compound_path()") def concatenate_paths(paths): """Concatenate a list of paths into a single path.""" from .path import Path diff --git a/lib/matplotlib/cm.py b/lib/matplotlib/cm.py index ab06984e9479..7cf1be850884 100644 --- a/lib/matplotlib/cm.py +++ b/lib/matplotlib/cm.py @@ -502,10 +502,10 @@ def changed(self): update_dict = cbook._deprecate_privatize_attribute("3.3") - @cbook.deprecated("3.3") + @_api.deprecated("3.3") def add_checker(self, checker): return self._add_checker(checker) - @cbook.deprecated("3.3") + @_api.deprecated("3.3") def check_update(self, checker): return self._check_update(checker) diff --git a/lib/matplotlib/collections.py b/lib/matplotlib/collections.py index 51c6c50a0305..1157b886b0e4 100644 --- a/lib/matplotlib/collections.py +++ b/lib/matplotlib/collections.py @@ -557,7 +557,7 @@ def get_offsets(self): else: return self._uniform_offsets - @cbook.deprecated("3.3") + @_api.deprecated("3.3") def set_offset_position(self, offset_position): """ Set how offsets are applied. If *offset_position* is 'screen' @@ -574,7 +574,7 @@ def set_offset_position(self, offset_position): self._offset_position = offset_position self.stale = True - @cbook.deprecated("3.3") + @_api.deprecated("3.3") def get_offset_position(self): """ Return how offsets are applied for the collection. If diff --git a/lib/matplotlib/colorbar.py b/lib/matplotlib/colorbar.py index c23aa5cf4fd5..92c21cdaf540 100644 --- a/lib/matplotlib/colorbar.py +++ b/lib/matplotlib/colorbar.py @@ -546,7 +546,7 @@ def draw_all(self): if self.filled: self._add_solids(X, Y, self._values[:, np.newaxis]) - @cbook.deprecated("3.3") + @_api.deprecated("3.3") def config_axis(self): self._config_axis() @@ -1197,7 +1197,7 @@ def __init__(self, ax, mappable, **kwargs): mappable.colorbar_cid = mappable.callbacksSM.connect( 'changed', self.update_normal) - @cbook.deprecated("3.3", alternative="update_normal") + @_api.deprecated("3.3", alternative="update_normal") def on_mappable_changed(self, mappable): """ Update this colorbar to match the mappable's properties. @@ -1255,7 +1255,7 @@ def update_normal(self, mappable): self.add_lines(CS) self.stale = True - @cbook.deprecated("3.3", alternative="update_normal") + @_api.deprecated("3.3", alternative="update_normal") def update_bruteforce(self, mappable): """ Destroy and rebuild the colorbar. This is @@ -1548,12 +1548,12 @@ def make_axes_gridspec(parent, *, location=None, orientation=None, return cax, kw -@cbook.deprecated("3.4", alternative="Colorbar") +@_api.deprecated("3.4", alternative="Colorbar") class ColorbarPatch(Colorbar): pass -@cbook.deprecated("3.4", alternative="Colorbar") +@_api.deprecated("3.4", alternative="Colorbar") def colorbar_factory(cax, mappable, **kwargs): """ Create a colorbar on the given axes for the given mappable. diff --git a/lib/matplotlib/dates.py b/lib/matplotlib/dates.py index 3b7af0d5d88f..ef4f34f57da1 100644 --- a/lib/matplotlib/dates.py +++ b/lib/matplotlib/dates.py @@ -163,9 +163,7 @@ import numpy as np import matplotlib as mpl -import matplotlib.units as units -import matplotlib.cbook as cbook -import matplotlib.ticker as ticker +from matplotlib import _api, cbook, ticker, units __all__ = ('datestr2num', 'date2num', 'num2date', 'num2timedelta', 'drange', 'epoch2num', 'num2epoch', 'mx2num', 'set_epoch', @@ -598,7 +596,7 @@ class DateFormatter(ticker.Formatter): `~datetime.datetime.strftime` format string. """ - @cbook.deprecated("3.3") + @_api.deprecated("3.3") @property def illegal_s(self): return re.compile(r"((^|[^%])(%%)*%s)") @@ -630,7 +628,7 @@ def set_tzinfo(self, tz): self.tz = tz -@cbook.deprecated("3.3") +@_api.deprecated("3.3") class IndexDateFormatter(ticker.Formatter): """Use with `.IndexLocator` to cycle format strings by index.""" @@ -1795,7 +1793,7 @@ def num2epoch(d): return np.asarray(d) * SEC_PER_DAY - dt -@cbook.deprecated("3.2") +@_api.deprecated("3.2") def mx2num(mxdates): """ Convert mx :class:`datetime` instance (or sequence of mx diff --git a/lib/matplotlib/docstring.py b/lib/matplotlib/docstring.py index e39bf9711713..d0e661ffffd9 100644 --- a/lib/matplotlib/docstring.py +++ b/lib/matplotlib/docstring.py @@ -1,6 +1,6 @@ import inspect -from matplotlib import cbook +from matplotlib import _api class Substitution: @@ -47,7 +47,7 @@ def update(self, *args, **kwargs): self.params.update(*args, **kwargs) @classmethod - @cbook.deprecated("3.3", alternative="assign to the params attribute") + @_api.deprecated("3.3", alternative="assign to the params attribute") def from_params(cls, params): """ In the case where the params is a mutable sequence (list or diff --git a/lib/matplotlib/dviread.py b/lib/matplotlib/dviread.py index 067ec6243ba5..6f65de52b654 100644 --- a/lib/matplotlib/dviread.py +++ b/lib/matplotlib/dviread.py @@ -30,7 +30,7 @@ import numpy as np -from matplotlib import cbook, rcParams +from matplotlib import _api, cbook, rcParams _log = logging.getLogger(__name__) @@ -952,7 +952,7 @@ def _parse(self, file): encoding=encoding, filename=filename) -@cbook.deprecated("3.3") +@_api.deprecated("3.3") class Encoding: r""" Parse a \*.enc file referenced from a psfonts.map style file. diff --git a/lib/matplotlib/gridspec.py b/lib/matplotlib/gridspec.py index e3fcc625e5de..0cc14e082b22 100644 --- a/lib/matplotlib/gridspec.py +++ b/lib/matplotlib/gridspec.py @@ -737,7 +737,7 @@ def get_geometry(self): rows, cols = self.get_gridspec().get_geometry() return rows, cols, self.num1, self.num2 - @cbook.deprecated("3.3", alternative="rowspan, colspan") + @_api.deprecated("3.3", alternative="rowspan, colspan") def get_rows_columns(self): """ Return the subplot row and column numbers as a tuple diff --git a/lib/matplotlib/mathtext.py b/lib/matplotlib/mathtext.py index 2396f0acf0ea..37589e267726 100644 --- a/lib/matplotlib/mathtext.py +++ b/lib/matplotlib/mathtext.py @@ -171,7 +171,7 @@ def get_hinting_type(self): return backend_agg.get_hinting_flag() -@cbook.deprecated("3.4", alternative="mathtext.math_to_image") +@_api.deprecated("3.4", alternative="mathtext.math_to_image") class MathtextBackendBitmap(MathtextBackendAgg): def get_results(self, box, used_characters): ox, oy, width, height, depth, image, characters = \ @@ -179,7 +179,7 @@ def get_results(self, box, used_characters): return image, depth -@cbook.deprecated("3.4", alternative="MathtextBackendPath") +@_api.deprecated("3.4", alternative="MathtextBackendPath") class MathtextBackendPs(MathtextBackend): """ Store information to write a mathtext rendering to the PostScript backend. @@ -222,7 +222,7 @@ def get_results(self, box, used_characters): used_characters) -@cbook.deprecated("3.4", alternative="MathtextBackendPath") +@_api.deprecated("3.4", alternative="MathtextBackendPath") class MathtextBackendPdf(MathtextBackend): """Store information to write a mathtext rendering to the PDF backend.""" @@ -253,7 +253,7 @@ def get_results(self, box, used_characters): used_characters) -@cbook.deprecated("3.4", alternative="MathtextBackendPath") +@_api.deprecated("3.4", alternative="MathtextBackendPath") class MathtextBackendSvg(MathtextBackend): """ Store information to write a mathtext rendering to the SVG @@ -312,7 +312,7 @@ def get_results(self, box, used_characters): self.rects) -@cbook.deprecated("3.4", alternative="MathtextBackendPath") +@_api.deprecated("3.4", alternative="MathtextBackendPath") class MathtextBackendCairo(MathtextBackend): """ Store information to write a mathtext rendering to the Cairo @@ -359,7 +359,7 @@ class MathTextWarning(Warning): pass -@cbook.deprecated("3.3") +@_api.deprecated("3.3") class GlueSpec: """See `Glue`.""" @@ -389,7 +389,7 @@ def factory(cls, glue_type): for k, v in _mathtext._GlueSpec._named.items()} -@cbook.deprecated("3.4") +@_api.deprecated("3.4") def ship(ox, oy, box): _mathtext.ship(ox, oy, box) @@ -474,7 +474,7 @@ def _parse_cached(self, s, dpi, prop, force_standard_ps_fonts): font_output.set_canvas_size(box.width, box.height, box.depth) return font_output.get_results(box) - @cbook.deprecated("3.4", alternative="mathtext.math_to_image") + @_api.deprecated("3.4", alternative="mathtext.math_to_image") def to_mask(self, texstr, dpi=120, fontsize=14): r""" Convert a mathtext string to a grayscale array and depth. @@ -500,7 +500,7 @@ def to_mask(self, texstr, dpi=120, fontsize=14): ftimage, depth = self.parse(texstr, dpi=dpi, prop=prop) return np.asarray(ftimage), depth - @cbook.deprecated("3.4", alternative="mathtext.math_to_image") + @_api.deprecated("3.4", alternative="mathtext.math_to_image") def to_rgba(self, texstr, color='black', dpi=120, fontsize=14): r""" Convert a mathtext string to an RGBA array and depth. @@ -533,7 +533,7 @@ def to_rgba(self, texstr, color='black', dpi=120, fontsize=14): RGBA[:, :, 3] = x return RGBA, depth - @cbook.deprecated("3.4", alternative="mathtext.math_to_image") + @_api.deprecated("3.4", alternative="mathtext.math_to_image") def to_png(self, filename, texstr, color='black', dpi=120, fontsize=14): r""" Render a tex expression to a PNG file. @@ -561,7 +561,7 @@ def to_png(self, filename, texstr, color='black', dpi=120, fontsize=14): Image.fromarray(rgba).save(filename, format="png") return depth - @cbook.deprecated("3.4", alternative="mathtext.math_to_image") + @_api.deprecated("3.4", alternative="mathtext.math_to_image") def get_depth(self, texstr, dpi=120, fontsize=14): r""" Get the depth of a mathtext string. diff --git a/lib/matplotlib/offsetbox.py b/lib/matplotlib/offsetbox.py index 0fd7317b1fe0..32443d2a2be1 100644 --- a/lib/matplotlib/offsetbox.py +++ b/lib/matplotlib/offsetbox.py @@ -838,7 +838,7 @@ def get_multilinebaseline(self): """ return self._multilinebaseline - @cbook.deprecated("3.4") + @_api.deprecated("3.4") def set_minimumdescent(self, t): """ Set minimumdescent. @@ -851,7 +851,7 @@ def set_minimumdescent(self, t): self._minimumdescent = t self.stale = True - @cbook.deprecated("3.4") + @_api.deprecated("3.4") def get_minimumdescent(self): """ Get minimumdescent. @@ -1719,7 +1719,7 @@ def on_motion(self, evt): else: self.canvas.draw() - @cbook.deprecated("3.3", alternative="self.on_motion") + @_api.deprecated("3.3", alternative="self.on_motion") def on_motion_blit(self, evt): if self._check_still_parented() and self.got_artist: dx = evt.x - self.mouse_x @@ -1772,7 +1772,7 @@ def disconnect(self): else: self.canvas.mpl_disconnect(c1) - @cbook.deprecated("3.3", alternative="self.ref_artist.contains") + @_api.deprecated("3.3", alternative="self.ref_artist.contains") def artist_picker(self, artist, evt): return self.ref_artist.contains(evt) diff --git a/lib/matplotlib/patches.py b/lib/matplotlib/patches.py index d62b54015c47..dcf21c59b997 100644 --- a/lib/matplotlib/patches.py +++ b/lib/matplotlib/patches.py @@ -1969,7 +1969,7 @@ class BoxStyle(_Style): _style_list = {} - @cbook.deprecated("3.4") + @_api.deprecated("3.4") class _Base: """ Abstract base class for styling of `.FancyBboxPatch`. @@ -1988,7 +1988,7 @@ class _Base: It returns the outline of the fancy box as `.path.Path`. """ - @cbook.deprecated("3.4") + @_api.deprecated("3.4") def transmute(self, x0, y0, width, height, mutation_size): """Return the `~.path.Path` outlining the given rectangle.""" return self(self, x0, y0, width, height, mutation_size, 1) @@ -3991,7 +3991,7 @@ def __init__(self, posA=None, posB=None, path=None, self._dpi_cor = dpi_cor - @cbook.deprecated("3.4") + @_api.deprecated("3.4") def set_dpi_cor(self, dpi_cor): """ dpi_cor is currently used for linewidth-related things and @@ -4004,7 +4004,7 @@ def set_dpi_cor(self, dpi_cor): self._dpi_cor = dpi_cor self.stale = True - @cbook.deprecated("3.4") + @_api.deprecated("3.4") def get_dpi_cor(self): """ dpi_cor is currently used for linewidth-related things and diff --git a/lib/matplotlib/projections/polar.py b/lib/matplotlib/projections/polar.py index feb1b41fa2db..965da628b0a9 100644 --- a/lib/matplotlib/projections/polar.py +++ b/lib/matplotlib/projections/polar.py @@ -245,7 +245,7 @@ def __call__(self): else: return np.deg2rad(self.base()) - @cbook.deprecated("3.3") + @_api.deprecated("3.3") def pan(self, numsteps): return self.base.pan(numsteps) @@ -257,7 +257,7 @@ def view_limits(self, vmin, vmax): vmin, vmax = np.rad2deg((vmin, vmax)) return np.deg2rad(self.base.view_limits(vmin, vmax)) - @cbook.deprecated("3.3") + @_api.deprecated("3.3") def zoom(self, direction): return self.base.zoom(direction) @@ -383,7 +383,7 @@ def clear(self): self.set_ticks_position('none') self._wrap_locator_formatter() - @cbook.deprecated("3.4", alternative="ThetaAxis.clear()") + @_api.deprecated("3.4", alternative="ThetaAxis.clear()") def cla(self): self.clear() @@ -431,15 +431,15 @@ def __call__(self): else: return [tick for tick in self.base() if tick > rorigin] - @cbook.deprecated("3.3") + @_api.deprecated("3.3") def pan(self, numsteps): return self.base.pan(numsteps) - @cbook.deprecated("3.3") + @_api.deprecated("3.3") def zoom(self, direction): return self.base.zoom(direction) - @cbook.deprecated("3.3") + @_api.deprecated("3.3") def refresh(self): # docstring inherited return self.base.refresh() @@ -689,7 +689,7 @@ def clear(self): self.set_ticks_position('none') self._wrap_locator_formatter() - @cbook.deprecated("3.4", alternative="RadialAxis.clear()") + @_api.deprecated("3.4", alternative="RadialAxis.clear()") def cla(self): self.clear() diff --git a/lib/matplotlib/quiver.py b/lib/matplotlib/quiver.py index 844a23cc5c4b..ae19fba35b00 100644 --- a/lib/matplotlib/quiver.py +++ b/lib/matplotlib/quiver.py @@ -374,7 +374,7 @@ def contains(self, mouseevent): return True, {} return False, {} - @cbook.deprecated("3.2") + @_api.deprecated("3.2") @property def quiverkey_doc(self): return self.__init__.__doc__ @@ -514,7 +514,7 @@ def on_dpi_change(fig): self._cid = ax.figure.callbacks.connect('dpi_changed', on_dpi_change) - @cbook.deprecated("3.3", alternative="axes") + @_api.deprecated("3.3", alternative="axes") def ax(self): return self.axes diff --git a/lib/matplotlib/rcsetup.py b/lib/matplotlib/rcsetup.py index 8d56a272d1ec..ad134b80599a 100644 --- a/lib/matplotlib/rcsetup.py +++ b/lib/matplotlib/rcsetup.py @@ -147,7 +147,7 @@ def validate_bool(b): raise ValueError('Could not convert "%s" to bool' % b) -@cbook.deprecated("3.3") +@_api.deprecated("3.3") def validate_bool_maybe_none(b): """Convert b to ``bool`` or raise, passing through *None*.""" if isinstance(b, str): @@ -310,7 +310,7 @@ def validate_backend(s): _deprecated_since="3.3") -@cbook.deprecated("3.3") +@_api.deprecated("3.3") def _make_nseq_validator(cls, n=None, allow_none=False): def validator(s): @@ -336,12 +336,12 @@ def validator(s): return validator -@cbook.deprecated("3.3") +@_api.deprecated("3.3") def validate_nseq_float(n): return _make_nseq_validator(float, n) -@cbook.deprecated("3.3") +@_api.deprecated("3.3") def validate_nseq_int(n): return _make_nseq_validator(int, n) @@ -666,7 +666,7 @@ def validate_markevery(s): 'svg.fonttype', ['none', 'path'], _deprecated_since="3.3") -@cbook.deprecated("3.3") +@_api.deprecated("3.3") def validate_hinting(s): return _validate_hinting(s) @@ -684,7 +684,7 @@ def validate_hinting(s): _deprecated_since="3.3") -@cbook.deprecated("3.3") +@_api.deprecated("3.3") def validate_movie_writer(s): # writers.list() would only list actually available writers, but # FFMpeg.isAvailable is slow and not worth paying for at every import. @@ -971,7 +971,7 @@ def validate_hist_bins(s): " a sequence of floats".format(valid_strs)) -@cbook.deprecated("3.3") +@_api.deprecated("3.3") def validate_webagg_address(s): if s is not None: import socket diff --git a/lib/matplotlib/scale.py b/lib/matplotlib/scale.py index e5e9d012f3b0..57d97d791d3c 100644 --- a/lib/matplotlib/scale.py +++ b/lib/matplotlib/scale.py @@ -256,12 +256,12 @@ class LogScale(ScaleBase): """ name = 'log' - @cbook.deprecated("3.3", alternative="scale.LogTransform") + @_api.deprecated("3.3", alternative="scale.LogTransform") @property def LogTransform(self): return LogTransform - @cbook.deprecated("3.3", alternative="scale.InvertedLogTransform") + @_api.deprecated("3.3", alternative="scale.InvertedLogTransform") @property def InvertedLogTransform(self): return InvertedLogTransform @@ -452,12 +452,12 @@ class SymmetricalLogScale(ScaleBase): """ name = 'symlog' - @cbook.deprecated("3.3", alternative="scale.SymmetricalLogTransform") + @_api.deprecated("3.3", alternative="scale.SymmetricalLogTransform") @property def SymmetricalLogTransform(self): return SymmetricalLogTransform - @cbook.deprecated( + @_api.deprecated( "3.3", alternative="scale.InvertedSymmetricalLogTransform") @property def InvertedSymmetricalLogTransform(self): diff --git a/lib/matplotlib/spines.py b/lib/matplotlib/spines.py index 20f103dcceb9..76d0b5745024 100644 --- a/lib/matplotlib/spines.py +++ b/lib/matplotlib/spines.py @@ -82,7 +82,7 @@ def __init__(self, axes, spine_type, path, **kwargs): # Note: This cannot be calculated until this is added to an Axes self._patch_transform = mtransforms.IdentityTransform() - @cbook.deprecated("3.2") + @_api.deprecated("3.2") def set_smart_bounds(self, value): """Set the spine and associated axis to have smart bounds.""" self._smart_bounds = value @@ -94,7 +94,7 @@ def set_smart_bounds(self, value): self.axes.xaxis.set_smart_bounds(value) self.stale = True - @cbook.deprecated("3.2") + @_api.deprecated("3.2") def get_smart_bounds(self): """Return whether the spine has smart bounds.""" return self._smart_bounds @@ -237,7 +237,7 @@ def clear(self): if self.axis is not None: self.axis.clear() - @cbook.deprecated("3.4", alternative="Spine.clear()") + @_api.deprecated("3.4", alternative="Spine.clear()") def cla(self): self.clear() diff --git a/lib/matplotlib/testing/compare.py b/lib/matplotlib/testing/compare.py index 40e6691eec74..9c2181c1cd8d 100644 --- a/lib/matplotlib/testing/compare.py +++ b/lib/matplotlib/testing/compare.py @@ -18,7 +18,7 @@ from PIL import Image import matplotlib as mpl -from matplotlib import cbook +from matplotlib import _api, cbook from matplotlib.testing.exceptions import ImageComparisonFailure _log = logging.getLogger(__name__) @@ -63,7 +63,7 @@ def get_file_hash(path, block_size=2 ** 20): return md5.hexdigest() -@cbook.deprecated("3.3") +@_api.deprecated("3.3") def make_external_conversion_command(cmd): def convert(old, new): cmdline = cmd(old, new) diff --git a/lib/matplotlib/texmanager.py b/lib/matplotlib/texmanager.py index a64938432b2b..1d892043c66e 100644 --- a/lib/matplotlib/texmanager.py +++ b/lib/matplotlib/texmanager.py @@ -40,7 +40,7 @@ import numpy as np import matplotlib as mpl -from matplotlib import cbook, dviread, rcParams +from matplotlib import _api, cbook, dviread, rcParams _log = logging.getLogger(__name__) @@ -214,7 +214,7 @@ def make_tex(self, tex, fontsize): _re_vbox = re.compile( r"MatplotlibBox:\(([\d.]+)pt\+([\d.]+)pt\)x([\d.]+)pt") - @cbook.deprecated("3.3") + @_api.deprecated("3.3") def make_tex_preview(self, tex, fontsize): """ Generate a tex file to render the tex string at a specific font size. @@ -301,7 +301,7 @@ def make_dvi(self, tex, fontsize): (Path(tmpdir) / Path(dvifile).name).replace(dvifile) return dvifile - @cbook.deprecated("3.3") + @_api.deprecated("3.3") def make_dvi_preview(self, tex, fontsize): """ Generate a dvi file containing latex's layout of tex string. diff --git a/lib/matplotlib/ticker.py b/lib/matplotlib/ticker.py index 21097e282c73..2cdc994552ab 100644 --- a/lib/matplotlib/ticker.py +++ b/lib/matplotlib/ticker.py @@ -293,7 +293,7 @@ def _set_locator(self, locator): pass -@cbook.deprecated("3.3") +@_api.deprecated("3.3") class IndexFormatter(Formatter): """ Format the position x to the nearest i-th label where ``i = int(x + 0.5)``. @@ -431,7 +431,7 @@ def __call__(self, x, pos=None): return self.fmt.format(x=x, pos=pos) -@cbook.deprecated("3.3") +@_api.deprecated("3.3") class OldScalarFormatter(Formatter): """ Tick location is a plain old number. @@ -1753,7 +1753,7 @@ def view_limits(self, vmin, vmax): """ return mtransforms.nonsingular(vmin, vmax) - @cbook.deprecated("3.3") + @_api.deprecated("3.3") def pan(self, numsteps): """Pan numticks (can be positive or negative)""" ticks = self() @@ -1771,7 +1771,7 @@ def pan(self, numsteps): vmax += step self.axis.set_view_interval(vmin, vmax, ignore=True) - @cbook.deprecated("3.3") + @_api.deprecated("3.3") def zoom(self, direction): """Zoom in/out on axis; if direction is >0 zoom in, else zoom out.""" @@ -1781,7 +1781,7 @@ def zoom(self, direction): step = 0.1 * interval * direction self.axis.set_view_interval(vmin + step, vmax - step, ignore=True) - @cbook.deprecated("3.3") + @_api.deprecated("3.3") def refresh(self): """Refresh internal information based on current limits.""" @@ -2947,7 +2947,7 @@ def tick_values(self, vmin, vmax): '%s type.' % type(self)) -@cbook.deprecated("3.3") +@_api.deprecated("3.3") class OldAutoLocator(Locator): """ On autoscale this class picks the best MultipleLocator to set the diff --git a/lib/matplotlib/transforms.py b/lib/matplotlib/transforms.py index ba29e6719740..1a73ae3d0443 100644 --- a/lib/matplotlib/transforms.py +++ b/lib/matplotlib/transforms.py @@ -471,7 +471,7 @@ def transformed(self, transform): [pts[0], [pts[0, 0], pts[1, 1]], [pts[1, 0], pts[0, 1]]])) return Bbox([ll, [lr[0], ul[1]]]) - @cbook.deprecated("3.3", alternative="transformed(transform.inverted())") + @_api.deprecated("3.3", alternative="transformed(transform.inverted())") def inverse_transformed(self, transform): """ Construct a `Bbox` by statically transforming this one by the inverse diff --git a/lib/matplotlib/widgets.py b/lib/matplotlib/widgets.py index 01f93de8bd57..967ef30f1771 100644 --- a/lib/matplotlib/widgets.py +++ b/lib/matplotlib/widgets.py @@ -1134,37 +1134,37 @@ def _on_reset(self, event): axhspace = cbook.deprecated("3.3")( property(lambda self: self.sliderhspace.ax)) - @cbook.deprecated("3.3") + @_api.deprecated("3.3") def funcleft(self, val): self.targetfig.subplots_adjust(left=val) if self.drawon: self.targetfig.canvas.draw() - @cbook.deprecated("3.3") + @_api.deprecated("3.3") def funcright(self, val): self.targetfig.subplots_adjust(right=val) if self.drawon: self.targetfig.canvas.draw() - @cbook.deprecated("3.3") + @_api.deprecated("3.3") def funcbottom(self, val): self.targetfig.subplots_adjust(bottom=val) if self.drawon: self.targetfig.canvas.draw() - @cbook.deprecated("3.3") + @_api.deprecated("3.3") def functop(self, val): self.targetfig.subplots_adjust(top=val) if self.drawon: self.targetfig.canvas.draw() - @cbook.deprecated("3.3") + @_api.deprecated("3.3") def funcwspace(self, val): self.targetfig.subplots_adjust(wspace=val) if self.drawon: self.targetfig.canvas.draw() - @cbook.deprecated("3.3") + @_api.deprecated("3.3") def funchspace(self, val): self.targetfig.subplots_adjust(hspace=val) if self.drawon: diff --git a/lib/mpl_toolkits/axes_grid1/axes_divider.py b/lib/mpl_toolkits/axes_grid1/axes_divider.py index 2a388c18815b..0a0117b6cef9 100644 --- a/lib/mpl_toolkits/axes_grid1/axes_divider.py +++ b/lib/mpl_toolkits/axes_grid1/axes_divider.py @@ -356,16 +356,16 @@ def get_position(self): """Return the bounds of the subplot box.""" return self.get_subplotspec().get_position(self.figure).bounds - @cbook.deprecated("3.4") + @_api.deprecated("3.4") @property def figbox(self): return self.get_subplotspec().get_position(self.figure) - @cbook.deprecated("3.4") + @_api.deprecated("3.4") def update_params(self): pass - @cbook.deprecated( + @_api.deprecated( "3.4", alternative="get_subplotspec", addendum="(get_subplotspec returns a SubplotSpec instance.)") def get_geometry(self): @@ -373,7 +373,7 @@ def get_geometry(self): rows, cols, num1, num2 = self.get_subplotspec().get_geometry() return rows, cols, num1 + 1 # for compatibility - @cbook.deprecated("3.4", alternative="set_subplotspec") + @_api.deprecated("3.4", alternative="set_subplotspec") def change_geometry(self, numrows, numcols, num): """Change subplot geometry, e.g., from (1, 1, 1) to (2, 2, 3).""" self._subplotspec = GridSpec(numrows, numcols)[num-1] diff --git a/lib/mpl_toolkits/axes_grid1/axes_rgb.py b/lib/mpl_toolkits/axes_grid1/axes_rgb.py index 0c06c8c756dd..ee8ce0fb4550 100644 --- a/lib/mpl_toolkits/axes_grid1/axes_rgb.py +++ b/lib/mpl_toolkits/axes_grid1/axes_rgb.py @@ -1,6 +1,6 @@ import numpy as np -from matplotlib import cbook +from matplotlib import _api, cbook from .axes_divider import make_axes_locatable, Size from .mpl_axes import Axes @@ -56,7 +56,7 @@ def make_rgb_axes(ax, pad=0.01, axes_class=None, add_all=True, **kwargs): return ax_rgb -@cbook.deprecated("3.3", alternative="ax.imshow(np.dstack([r, g, b]))") +@_api.deprecated("3.3", alternative="ax.imshow(np.dstack([r, g, b]))") def imshow_rgb(ax, r, g, b, **kwargs): return ax.imshow(np.dstack([r, g, b]), **kwargs) @@ -120,7 +120,7 @@ def __init__(self, *args, pad=0, add_all=True, **kwargs): ax1.axis[:].line.set_color("w") ax1.axis[:].major_ticks.set_markeredgecolor("w") - @cbook.deprecated("3.3") + @_api.deprecated("3.3") def add_RGB_to_figure(self): """Add red, green and blue axes to the RGB composite's axes figure.""" self.RGB.get_figure().add_axes(self.R) @@ -166,6 +166,6 @@ def imshow_rgb(self, r, g, b, **kwargs): return im_rgb, im_r, im_g, im_b -@cbook.deprecated("3.3", alternative="RGBAxes") +@_api.deprecated("3.3", alternative="RGBAxes") class RGBAxesBase(RGBAxes): pass diff --git a/lib/mpl_toolkits/axes_grid1/parasite_axes.py b/lib/mpl_toolkits/axes_grid1/parasite_axes.py index 6bb1424738ce..75981bf1bbde 100644 --- a/lib/mpl_toolkits/axes_grid1/parasite_axes.py +++ b/lib/mpl_toolkits/axes_grid1/parasite_axes.py @@ -60,7 +60,7 @@ def set_viewlim_mode(self, mode): def get_viewlim_mode(self): return self._viewlim_mode - @cbook.deprecated("3.4", alternative="apply_aspect") + @_api.deprecated("3.4", alternative="apply_aspect") def update_viewlim(self): return self._update_viewlim @@ -101,7 +101,7 @@ def parasite_axes_class_factory(axes_class=None): ParasiteAxes = parasite_axes_class_factory(Axes) -@cbook.deprecated("3.4", alternative="ParasiteAxesBase") +@_api.deprecated("3.4", alternative="ParasiteAxesBase") class ParasiteAxesAuxTransBase: def __init__(self, parent_axes, aux_transform, viewlim_mode=None, **kwargs): @@ -124,7 +124,7 @@ def set_viewlim_mode(self, mode): def get_viewlim_mode(self): return self._viewlim_mode - @cbook.deprecated("3.4", alternative="apply_aspect") + @_api.deprecated("3.4", alternative="apply_aspect") def update_viewlim(self): return self._update_viewlim() @@ -146,7 +146,7 @@ def apply_aspect(self, position=None): super().apply_aspect() -@cbook.deprecated("3.4", alternative="parasite_axes_class_factory") +@_api.deprecated("3.4", alternative="parasite_axes_class_factory") @functools.lru_cache(None) def parasite_axes_auxtrans_class_factory(axes_class=None): if axes_class is None: diff --git a/lib/mpl_toolkits/axisartist/angle_helper.py b/lib/mpl_toolkits/axisartist/angle_helper.py index dac3f9f6b9f4..d5e313988cfc 100644 --- a/lib/mpl_toolkits/axisartist/angle_helper.py +++ b/lib/mpl_toolkits/axisartist/angle_helper.py @@ -1,7 +1,7 @@ import numpy as np import math -from matplotlib import cbook +from matplotlib import _api, cbook from mpl_toolkits.axisartist.grid_finder import ExtremeFinderSimple @@ -146,7 +146,7 @@ def __init__(self, nbins, include_last=True): self.nbins = nbins self._include_last = include_last - @cbook.deprecated("3.3", alternative="nbins") + @_api.deprecated("3.3", alternative="nbins") @property def den(self): return self.nbins diff --git a/lib/mpl_toolkits/axisartist/axis_artist.py b/lib/mpl_toolkits/axisartist/axis_artist.py index 127b520d51ee..fa8487e5f7c8 100644 --- a/lib/mpl_toolkits/axisartist/axis_artist.py +++ b/lib/mpl_toolkits/axisartist/axis_artist.py @@ -90,7 +90,7 @@ import numpy as np -from matplotlib import _api, cbook, rcParams +from matplotlib import _api, rcParams import matplotlib.artist as martist import matplotlib.text as mtext @@ -683,7 +683,7 @@ def __init__(self, axes, self._axislabel_add_angle = 0. self.set_axis_direction(axis_direction) - @cbook.deprecated("3.3") + @_api.deprecated("3.3") @property def dpi_transform(self): return Affine2D().scale(1 / 72) + self.axes.figure.dpi_scale_trans diff --git a/lib/mpl_toolkits/axisartist/grid_finder.py b/lib/mpl_toolkits/axisartist/grid_finder.py index eb988b14b289..76d7b7016fc2 100644 --- a/lib/mpl_toolkits/axisartist/grid_finder.py +++ b/lib/mpl_toolkits/axisartist/grid_finder.py @@ -1,6 +1,6 @@ import numpy as np -from matplotlib import cbook, ticker as mticker +from matplotlib import _api, ticker as mticker from matplotlib.transforms import Bbox, Transform from .clip_path import clip_line_to_rect @@ -226,7 +226,7 @@ def __call__(self, v1, v2): locs = super().__call__() return np.array(locs), len(locs), self._factor - @cbook.deprecated("3.3") + @_api.deprecated("3.3") def set_factor(self, f): self._factor = f @@ -241,7 +241,7 @@ def __call__(self, v1, v2): locs = np.array([l for l in self._locs if v1 <= l <= v2]) return locs, len(locs), self._factor - @cbook.deprecated("3.3") + @_api.deprecated("3.3") def set_factor(self, f): self._factor = f