Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP

Loading…

new MatplotlibDeprecationWarning class (against master) #1597

Merged
merged 2 commits into from

3 participants

@ivanov
Collaborator

It was tricky to backport this patch against v1.2.x, and since we'll want the functionality in master as well, I decided to just update the patch that I had in #1565 (it seems I can't reopen pull requests). This should be merged after #1596 is merged in v1.2.x.

In light of the fact that Python builtin DeprecationWarnings are ignored
by default as of Python 2.7 (see link below), this class was put in to
allow for the signaling of deprecation, but via UserWarnings which are
not ignored by default.

http://docs.python.org/dev/whatsnew/2.7.html#the-future-for-python-2-x

Prior to this commit:

In [1]: %pylab

Welcome to pylab, a matplotlib-based Python environment [backend: agg].
For more information, type 'help(pylab)'.

In [2]: mlab.liaupunov([1,2], np.diff)
Out[2]: 0.0

After this commit:

In [1]: %pylab

Welcome to pylab, a matplotlib-based Python environment [backend: agg].
For more information, type 'help(pylab)'.

In [2]: mlab.liaupunov([1,2], np.diff)
/home/pi/.local/lib/python2.7/site-packages/matplotlib/mlab.py:1212:
MatplotlibDeprecationWarning: This does not belong in matplotlib and
will be removed
  mDeprecation) # 2009/06/13
Out[2]: 0.0
@dmcdougall
Collaborator

@ivanov You didn't need to create two PRs (sorry if I caused any confusion). Once the PR against v1.2.x is merged, someone will merge v1.2.x into master and push the new master upstream. That's how your changes will propagate into master.

I'll leave this open for a bit to let others chime in, but I think closing this in favour of #1596 is fine.

@ivanov
Collaborator

@dmcdougall yeah, I was just thinking I'd save whoever is doing it some trouble because merging / rebasing these changes from v1.2.x had enough pesky manual conflicts, and I already had most of the changeset handy, that I just decided to submit this PR separately to save however was going to end up merging it from v1.2.x some time

@mdboom
Owner

@ivanov: That makes sense. After #1596 is merged and this is merged, then we would merge 1.2.x into master, accepting all of the changes in master and ignoring all of the ones in 1.2.x. I agree that will probably save some time.

It does look like something has already changed on master and we can't automatically merge this. Can you rebase on current master?

ivanov added some commits
@ivanov ivanov new MatplotlibDeprecationWarning class
In light of the fact that Python builtin DeprecationWarnings are ignored
by default as of Python 2.7 (see link below), this class was put in to
allow for the signaling of deprecation, but via UserWarnings which are
not ignored by default.

http://docs.python.org/dev/whatsnew/2.7.html#the-future-for-python-2-x

Prior to this commit:

```
In [1]: %pylab

Welcome to pylab, a matplotlib-based Python environment [backend: agg].
For more information, type 'help(pylab)'.

In [2]: mlab.liaupunov([1,2], np.diff)
Out[2]: 0.0
```

After this commit:
```
In [1]: %pylab

Welcome to pylab, a matplotlib-based Python environment [backend: agg].
For more information, type 'help(pylab)'.

In [2]: mlab.liaupunov([1,2], np.diff)
/home/pi/.local/lib/python2.7/site-packages/matplotlib/mlab.py:1212:
MatplotlibDeprecationWarning: This does not belong in matplotlib and
will be removed
  mDeprecation) # 2009/06/13
Out[2]: 0.0
```
394b1aa
@ivanov ivanov import new deprecation class as mplDeprecation 657f647
@ivanov
Collaborator

rebased on current master. updated the name as per discussion in #1596

@mdboom
Owner

Travis failure is false positive. Merging.

@mdboom mdboom merged commit b93936f into matplotlib:master

1 check failed

Details default The Travis build failed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Commits on Dec 17, 2012
  1. @ivanov

    new MatplotlibDeprecationWarning class

    ivanov authored
    In light of the fact that Python builtin DeprecationWarnings are ignored
    by default as of Python 2.7 (see link below), this class was put in to
    allow for the signaling of deprecation, but via UserWarnings which are
    not ignored by default.
    
    http://docs.python.org/dev/whatsnew/2.7.html#the-future-for-python-2-x
    
    Prior to this commit:
    
    ```
    In [1]: %pylab
    
    Welcome to pylab, a matplotlib-based Python environment [backend: agg].
    For more information, type 'help(pylab)'.
    
    In [2]: mlab.liaupunov([1,2], np.diff)
    Out[2]: 0.0
    ```
    
    After this commit:
    ```
    In [1]: %pylab
    
    Welcome to pylab, a matplotlib-based Python environment [backend: agg].
    For more information, type 'help(pylab)'.
    
    In [2]: mlab.liaupunov([1,2], np.diff)
    /home/pi/.local/lib/python2.7/site-packages/matplotlib/mlab.py:1212:
    MatplotlibDeprecationWarning: This does not belong in matplotlib and
    will be removed
      mDeprecation) # 2009/06/13
    Out[2]: 0.0
    ```
  2. @ivanov
This page is out of date. Refresh to see the latest.
View
10 CHANGELOG
@@ -1,3 +1,13 @@
+2012-12-05 Added MatplotlibDeprecationWarning class for signaling deprecation.
+ Matplotlib developers can use this class as follows:
+
+ from matplotlib import MatplotlibDeprecationWarning as mplDeprecation
+
+ In light of the fact that Python builtin DeprecationWarnings are
+ ignored by default as of Python 2.7, this class was put in to allow
+ for the signaling of deprecation, but via UserWarnings which are
+ not ignored by default. - PI
+
2012-11-27 Added the *mtext* parameter for supplying matplotlib.text.Text
instances to RendererBase.draw_tex and RendererBase.draw_text.
This allows backends to utilize additional text attributes, like
View
14 lib/matplotlib/__init__.py
@@ -122,6 +122,20 @@
if not hasattr(sys, 'argv'): # for modpython
sys.argv = ['modpython']
+
+class MatplotlibDeprecationWarning(UserWarning):
+ """
+ A class for issuing deprecation warnings for Matplotlib users.
+
+ In light of the fact that Python builtin DeprecationWarnings are ignored
+ by default as of Python 2.7 (see link below), this class was put in to
+ allow for the signaling of deprecation, but via UserWarnings which are not
+ ignored by default.
+
+ http://docs.python.org/dev/whatsnew/2.7.html#the-future-for-python-2-x
+ """
+ pass
+
"""
Manage user customizations through a rc file.
View
38 lib/matplotlib/axes.py
@@ -37,6 +37,7 @@
import matplotlib.ticker as mticker
import matplotlib.transforms as mtransforms
import matplotlib.tri as mtri
+from matplotlib import MatplotlibDeprecationWarning as mplDeprecation
from matplotlib.container import BarContainer, ErrorbarContainer, StemContainer
iterable = cbook.iterable
@@ -154,8 +155,7 @@ def set_default_color_cycle(clist):
"""
rcParams['axes.color_cycle'] = clist
- warnings.warn("Set rcParams['axes.color_cycle'] directly",
- DeprecationWarning)
+ warnings.warn("Set rcParams['axes.color_cycle'] directly", mplDeprecation)
class _process_plot_var_args(object):
@@ -1376,11 +1376,11 @@ def get_child_artists(self):
.. deprecated:: 0.98
"""
- raise DeprecationWarning('Use get_children instead')
+ raise mplDeprecation('Use get_children instead')
def get_frame(self):
"""Return the axes Rectangle frame"""
- warnings.warn('use ax.patch instead', DeprecationWarning)
+ warnings.warn('use ax.patch instead', mplDeprecation)
return self.patch
def get_legend(self):
@@ -3135,13 +3135,13 @@ def connect(self, s, func):
disconnect to disconnect from the axes event
"""
- raise DeprecationWarning('use the callbacks CallbackRegistry instance '
- 'instead')
+ raise mplDeprecation('use the callbacks CallbackRegistry instance '
+ 'instead')
def disconnect(self, cid):
"""disconnect from the Axes event."""
- raise DeprecationWarning('use the callbacks CallbackRegistry instance '
- 'instead')
+ raise mplDeprecation('use the callbacks CallbackRegistry instance '
+ 'instead')
def get_children(self):
"""return a list of child artists"""
@@ -3192,8 +3192,8 @@ def pick(self, *args):
the artist and the artist has picker set
"""
if len(args) > 1:
- raise DeprecationWarning('New pick API implemented -- '
- 'see API_CHANGES in the src distribution')
+ raise mplDeprecation('New pick API implemented -- '
+ 'see API_CHANGES in the src distribution')
martist.Artist.pick(self, args[0])
### Labelling
@@ -3691,9 +3691,9 @@ def hlines(self, y, xmin, xmax, colors='k', linestyles='solid',
.. plot:: mpl_examples/pylab_examples/hline_demo.py
"""
if kwargs.get('fmt') is not None:
- raise DeprecationWarning('hlines now uses a '
- 'collections.LineCollection and not a '
- 'list of Line2D to draw; see API_CHANGES')
+ raise mplDeprecation('hlines now uses a '
+ 'collections.LineCollection and not a '
+ 'list of Line2D to draw; see API_CHANGES')
# We do the conversion first since not all unitized data is uniform
# process the unit information
@@ -3773,9 +3773,9 @@ def vlines(self, x, ymin, ymax, colors='k', linestyles='solid',
"""
if kwargs.get('fmt') is not None:
- raise DeprecationWarning('vlines now uses a '
- 'collections.LineCollection and not a '
- 'list of Line2D to draw; see API_CHANGES')
+ raise mplDeprecation('vlines now uses a '
+ 'collections.LineCollection and not a '
+ 'list of Line2D to draw; see API_CHANGES')
self._process_unit_info(xdata=x, ydata=[ymin, ymax], kwargs=kwargs)
@@ -6074,7 +6074,7 @@ def scatter(self, x, y, s=20, c='b', marker='o', cmap=None, norm=None,
edgecolors = 'none'
warnings.warn(
'''replace "faceted=False" with "edgecolors='none'"''',
- DeprecationWarning) # 2008/04/18
+ mplDeprecation) # 2008/04/18
# to be API compatible
if marker is None and not (verts is None):
@@ -8002,7 +8002,7 @@ def hist(self, x, bins=10, range=None, normed=False, weights=None,
"orientation kwarg %s is not recognized" % orientation)
if kwargs.get('width') is not None:
- raise DeprecationWarning(
+ raise mplDeprecation(
'hist now uses the rwidth to give relative width '
'and not absolute width')
@@ -8735,7 +8735,7 @@ def spy(self, Z, precision=0, marker=None, markersize=None,
"""
if precision is None:
precision = 0
- warnings.DeprecationWarning("Use precision=0 instead of None")
+ warnings.warn("Use precision=0 instead of None", mplDeprecation)
# 2008/10/03
if marker is None and markersize is None and hasattr(Z, 'tocoo'):
marker = 's'
View
3  lib/matplotlib/backend_bases.py
@@ -48,6 +48,7 @@
import matplotlib.tight_bbox as tight_bbox
import matplotlib.textpath as textpath
from matplotlib.path import Path
+from matplotlib import MatplotlibDeprecationWarning as mplDeprecation
try:
from PIL import Image
@@ -2306,7 +2307,7 @@ def start_event_loop_default(self, timeout=0):
"""
str = "Using default event loop until function specific"
str += " to this GUI is implemented"
- warnings.warn(str, DeprecationWarning)
+ warnings.warn(str, mplDeprecation)
if timeout <= 0:
timeout = np.inf
View
4 lib/matplotlib/backends/backend_qt.py
@@ -4,9 +4,11 @@
import sys
import warnings
+from matplotlib import MatplotlibDeprecationWarning as mplDeprecation
+
warnings.warn("QT3-based backends are deprecated and will be removed after"
" the v1.2.x release. Use the equivalent QT4 backend instead.",
- DeprecationWarning)
+ mplDeprecation)
import matplotlib
from matplotlib import verbose
View
15 lib/matplotlib/backends/backend_wx.py
@@ -25,6 +25,7 @@
import numpy as np
+from matplotlib import MatplotlibDeprecationWarning as mplDeprecation
# Debugging settings here...
# Debug level set here. If the debug level is less than 5, information
@@ -788,7 +789,7 @@ def Printer_Init(self):
Deprecated.
"""
- warnings.warn("Printer* methods will be removed", DeprecationWarning)
+ warnings.warn("Printer* methods will be removed", mplDeprecation)
self.printerData = wx.PrintData()
self.printerData.SetPaperId(wx.PAPER_LETTER)
self.printerData.SetPrintMode(wx.PRINT_MODE_PRINTER)
@@ -802,7 +803,7 @@ def Printer_Init(self):
def _get_printerData(self):
if self._printerData is None:
- warnings.warn("Printer* methods will be removed", DeprecationWarning)
+ warnings.warn("Printer* methods will be removed", mplDeprecation)
self._printerData = wx.PrintData()
self._printerData.SetPaperId(wx.PAPER_LETTER)
self._printerData.SetPrintMode(wx.PRINT_MODE_PRINTER)
@@ -811,7 +812,7 @@ def _get_printerData(self):
def _get_printerPageData(self):
if self._printerPageData is None:
- warnings.warn("Printer* methods will be removed", DeprecationWarning)
+ warnings.warn("Printer* methods will be removed", mplDeprecation)
self._printerPageData= wx.PageSetupDialogData()
self._printerPageData.SetMarginBottomRight((25,25))
self._printerPageData.SetMarginTopLeft((25,25))
@@ -830,7 +831,7 @@ def Printer_Setup(self, event=None):
dmsg = """Width of output figure in inches.
The current aspect ratio will be kept."""
- warnings.warn("Printer* methods will be removed", DeprecationWarning)
+ warnings.warn("Printer* methods will be removed", mplDeprecation)
dlg = wx.Dialog(self, -1, 'Page Setup for Printing' , (-1,-1))
df = dlg.GetFont()
df.SetWeight(wx.NORMAL)
@@ -893,7 +894,7 @@ def Printer_Setup2(self, event=None):
Deprecated.
"""
- warnings.warn("Printer* methods will be removed", DeprecationWarning)
+ warnings.warn("Printer* methods will be removed", mplDeprecation)
if hasattr(self, 'printerData'):
data = wx.PageSetupDialogData()
data.SetPrintData(self.printerData)
@@ -917,7 +918,7 @@ def Printer_Preview(self, event=None):
Deprecated.
"""
- warnings.warn("Printer* methods will be removed", DeprecationWarning)
+ warnings.warn("Printer* methods will be removed", mplDeprecation)
po1 = PrintoutWx(self, width=self.printer_width,
margin=self.printer_margin)
po2 = PrintoutWx(self, width=self.printer_width,
@@ -943,7 +944,7 @@ def Printer_Print(self, event=None):
Deprecated.
"""
- warnings.warn("Printer* methods will be removed", DeprecationWarning)
+ warnings.warn("Printer* methods will be removed", mplDeprecation)
pdd = wx.PrintDialogData()
# SetPrintData for 2.4 combatibility
pdd.SetPrintData(self.printerData)
View
15 lib/matplotlib/cbook.py
@@ -22,6 +22,7 @@
from weakref import ref, WeakKeyDictionary
import matplotlib
+from matplotlib import MatplotlibDeprecationWarning as mplDeprecation
import numpy as np
import numpy.ma as ma
@@ -281,7 +282,7 @@ def __init__(self, *args):
warnings.warn(
'CallbackRegistry no longer requires a list of callback types.'
' Ignoring arguments',
- DeprecationWarning)
+ mplDeprecation)
self.callbacks = dict()
self._cid = 0
self._func_cid_map = {}
@@ -1676,7 +1677,7 @@ def less_simple_linear_interpolation(x, y, xi, extrap=False):
# deprecated from cbook in 0.98.4
warnings.warn('less_simple_linear_interpolation has been moved to '
'matplotlib.mlab -- please import it from there',
- DeprecationWarning)
+ mplDeprecation)
import matplotlib.mlab as mlab
return mlab.less_simple_linear_interpolation(x, y, xi, extrap=extrap)
@@ -1688,7 +1689,7 @@ def vector_lengths(X, P=2.0, axis=None):
"""
# deprecated from cbook in 0.98.4
warnings.warn('vector_lengths has been moved to matplotlib.mlab -- '
- 'please import it from there', DeprecationWarning)
+ 'please import it from there', mplDeprecation)
import matplotlib.mlab as mlab
return mlab.vector_lengths(X, P=2.0, axis=axis)
@@ -1700,7 +1701,7 @@ def distances_along_curve(X):
"""
# deprecated from cbook in 0.98.4
warnings.warn('distances_along_curve has been moved to matplotlib.mlab '
- '-- please import it from there', DeprecationWarning)
+ '-- please import it from there', mplDeprecation)
import matplotlib.mlab as mlab
return mlab.distances_along_curve(X)
@@ -1712,7 +1713,7 @@ def path_length(X):
"""
# deprecated from cbook in 0.98.4
warnings.warn('path_length has been moved to matplotlib.mlab '
- '-- please import it from there', DeprecationWarning)
+ '-- please import it from there', mplDeprecation)
import matplotlib.mlab as mlab
return mlab.path_length(X)
@@ -1724,7 +1725,7 @@ def is_closed_polygon(X):
"""
# deprecated from cbook in 0.98.4
warnings.warn('is_closed_polygon has been moved to matplotlib.mlab '
- '-- please import it from there', DeprecationWarning)
+ '-- please import it from there', mplDeprecation)
import matplotlib.mlab as mlab
return mlab.is_closed_polygon(X)
@@ -1736,7 +1737,7 @@ def quad2cubic(q0x, q0y, q1x, q1y, q2x, q2y):
"""
# deprecated from cbook in 0.98.4
warnings.warn('quad2cubic has been moved to matplotlib.mlab -- please '
- 'import it from there', DeprecationWarning)
+ 'import it from there', mplDeprecation)
import matplotlib.mlab as mlab
return mlab.quad2cubic(q0x, q0y, q1x, q1y, q2x, q2y)
View
3  lib/matplotlib/legend.py
@@ -31,6 +31,7 @@
from matplotlib.offsetbox import DraggableOffsetBox
from matplotlib.container import ErrorbarContainer, BarContainer, StemContainer
+from matplotlib import MatplotlibDeprecationWarning as mplDeprecation
import legend_handler
@@ -278,7 +279,7 @@ def __init__(self, parent, handles, labels,
# counter part is None.
if localdict[k] is not None and localdict[v] is None:
warnings.warn("Use '%s' instead of '%s'." % (v, k),
- DeprecationWarning)
+ mplDeprecation)
setattr(self, v, localdict[k] * axessize_fontsize)
continue
View
8 lib/matplotlib/mlab.py
@@ -148,6 +148,7 @@
import numpy as np
ma = np.ma
from matplotlib import verbose
+from matplotlib import MatplotlibDeprecationWarning as mplDeprecation
import matplotlib.cbook as cbook
from matplotlib import docstring
@@ -1207,7 +1208,8 @@ def liaupunov(x, fprime):
It also seems that this function's name is badly misspelled.
"""
- warnings.warn("This does not belong in matplotlib and will be removed", DeprecationWarning) # 2009/06/13
+ warnings.warn("This does not belong in matplotlib and will be removed",
+ mplDeprecation) # 2009/06/13
return np.mean(np.log(np.absolute(fprime(x))))
@@ -1339,7 +1341,7 @@ def save(fname, X, fmt='%.18e',delimiter=' '):
for comma-separated values.
"""
- warnings.warn("use numpy.savetxt", DeprecationWarning) # 2009/06/13
+ warnings.warn("use numpy.savetxt", mplDeprecation) # 2009/06/13
if cbook.is_string_like(fname):
if fname.endswith('.gz'):
@@ -1426,7 +1428,7 @@ def load(fname,comments='#',delimiter=None, converters=None,skiprows=0,
Exercises many of these options.
"""
- warnings.warn("use numpy.loadtxt", DeprecationWarning) # 2009/06/13
+ warnings.warn("use numpy.loadtxt", mplDeprecation) # 2009/06/13
if converters is None: converters = {}
fh = cbook.to_filehandle(fname)
View
5 lib/matplotlib/nxutils.py
@@ -1,6 +1,7 @@
import warnings
from matplotlib import path
+from matplotlib import MatplotlibDeprecationWarning as mplDeprecation
def pnpoly(x, y, xyverts):
"""
@@ -19,7 +20,7 @@ def pnpoly(x, y, xyverts):
warnings.warn(
"nxutils is deprecated. Use matplotlib.path.Path.contains_point"
" instead.",
- DeprecationWarning)
+ mplDeprecation)
p = path.Path(xyverts)
return p.contains_point(x, y)
@@ -44,7 +45,7 @@ def points_inside_poly(xypoints, xyverts):
warnings.warn(
"nxutils is deprecated. Use matplotlib.path.Path.contains_points"
" instead.",
- DeprecationWarning)
+ mplDeprecation)
p = path.Path(xyverts)
return p.contains_points(xypoints)
View
3  lib/matplotlib/patches.py
@@ -12,6 +12,7 @@
from matplotlib import docstring
import matplotlib.transforms as transforms
from matplotlib.path import Path
+from matplotlib import MatplotlibDeprecationWarning as mplDeprecation
# these are not available for the object inspector until after the
# class is built so we define an initial set here for the init
@@ -1274,7 +1275,7 @@ def __init__(self, xy, radius=5, **kwargs):
import warnings
warnings.warn('Circle is now scale free. '
'Use CirclePolygon instead!',
- DeprecationWarning)
+ mplDeprecation)
kwargs.pop('resolution')
self.radius = radius
View
4 lib/matplotlib/widgets.py
@@ -16,7 +16,7 @@
from patches import Circle, Rectangle
from lines import Line2D
from transforms import blended_transform_factory
-
+from matplotlib import MatplotlibDeprecationWarning as mplDeprecation
class LockDraw:
"""
@@ -1183,7 +1183,7 @@ def onmove(self, event):
class HorizontalSpanSelector(SpanSelector):
def __init__(self, ax, onselect, **kwargs):
import warnings
- warnings.warn('Use SpanSelector instead!', DeprecationWarning)
+ warnings.warn('Use SpanSelector instead!', mplDeprecation)
SpanSelector.__init__(self, ax, onselect, 'horizontal', **kwargs)
Something went wrong with that request. Please try again.