Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit d5aff34

Browse files
authored
Merge pull request #12247 from anntzer/property-deprecation
Machinery for deprecating properties.
2 parents 39c23a8 + 479c84e commit d5aff34

12 files changed

+52
-31
lines changed

lib/matplotlib/__init__.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -781,30 +781,30 @@ class RcParams(MutableMapping, dict):
781781
for key, (default, converter) in defaultParams.items()
782782
if key not in _all_deprecated}
783783

784-
@property
785784
@cbook.deprecated("3.0")
785+
@property
786786
def msg_depr(self):
787787
return "%s is deprecated and replaced with %s; please use the latter."
788788

789-
@property
790789
@cbook.deprecated("3.0")
790+
@property
791791
def msg_depr_ignore(self):
792792
return "%s is deprecated and ignored. Use %s instead."
793793

794-
@property
795794
@cbook.deprecated("3.0")
795+
@property
796796
def msg_depr_set(self):
797797
return ("%s is deprecated. Please remove it from your matplotlibrc "
798798
"and/or style files.")
799799

800-
@property
801800
@cbook.deprecated("3.0")
801+
@property
802802
def msg_obsolete(self):
803803
return ("%s is obsolete. Please remove it from your matplotlibrc "
804804
"and/or style files.")
805805

806-
@property
807806
@cbook.deprecated("3.0")
807+
@property
808808
def msg_backend_obsolete(self):
809809
return ("The {} rcParam was deprecated in version 2.2. In order to "
810810
"force the use of a specific Qt binding, either import that "

lib/matplotlib/artist.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,8 @@ class Artist(object):
5656
5757
Typically, all visible elements in a figure are subclasses of Artist.
5858
"""
59-
@property
6059
@cbook.deprecated("3.1")
60+
@property
6161
def aname(self):
6262
return 'Artist'
6363

lib/matplotlib/axes/_axes.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,8 +128,8 @@ class Axes(_AxesBase):
128128
"""
129129
### Labelling, legend and texts
130130

131-
@property
132131
@cbook.deprecated("3.1")
132+
@property
133133
def aname(self):
134134
return 'Axes'
135135

lib/matplotlib/axes/_base.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1098,8 +1098,8 @@ def cla(self):
10981098

10991099
self.stale = True
11001100

1101-
@property
11021101
@cbook.deprecated("3.0")
1102+
@property
11031103
def mouseover_set(self):
11041104
return frozenset(self._mouseover_set)
11051105

lib/matplotlib/axis.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -774,13 +774,12 @@ def _set_scale(self, value, **kwargs):
774774
def limit_range_for_scale(self, vmin, vmax):
775775
return self._scale.limit_range_for_scale(vmin, vmax, self.get_minpos())
776776

777-
@property
778777
@cbook.deprecated("2.2.0")
778+
@property
779779
def unit_data(self):
780780
return self.units
781781

782782
@unit_data.setter
783-
@cbook.deprecated("2.2.0")
784783
def unit_data(self, unit_data):
785784
self.set_units(unit_data)
786785

lib/matplotlib/backends/backend_pdf.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -653,8 +653,8 @@ def fontName(self, fontprop):
653653

654654
return Fx
655655

656-
@property
657656
@cbook.deprecated("3.0")
657+
@property
658658
def texFontMap(self):
659659
# lazy-load texFontMap, it takes a while to parse
660660
# and usetex is a relatively rare use case

lib/matplotlib/backends/backend_ps.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,8 @@ class PsBackendHelper(object):
4646
def __init__(self):
4747
self._cached = {}
4848

49-
@property
5049
@cbook.deprecated("3.1")
50+
@property
5151
def gs_exe(self):
5252
"""
5353
executable name of ghostscript.
@@ -64,8 +64,8 @@ def gs_exe(self):
6464
self._cached["gs_exe"] = str(gs_exe)
6565
return str(gs_exe)
6666

67-
@property
6867
@cbook.deprecated("3.1")
68+
@property
6969
def gs_version(self):
7070
"""
7171
version of ghostscript.
@@ -87,8 +87,8 @@ def gs_version(self):
8787
self._cached["gs_version"] = gs_version
8888
return gs_version
8989

90-
@property
9190
@cbook.deprecated("3.1")
91+
@property
9292
def supports_ps2write(self):
9393
"""
9494
True if the installed ghostscript supports ps2write device.

lib/matplotlib/backends/backend_qt5.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -377,18 +377,15 @@ def keyReleaseEvent(self, event):
377377
if key is not None:
378378
FigureCanvasBase.key_release_event(self, key, guiEvent=event)
379379

380+
@cbook.deprecated("3.0", alternative="event.guiEvent.isAutoRepeat")
380381
@property
381-
@cbook.deprecated("3.0", "Manually check `event.guiEvent.isAutoRepeat()` "
382-
"in the event handler.")
383382
def keyAutoRepeat(self):
384383
"""
385384
If True, enable auto-repeat for key events.
386385
"""
387386
return self._keyautorepeat
388387

389388
@keyAutoRepeat.setter
390-
@cbook.deprecated("3.0", "Manually check `event.guiEvent.isAutoRepeat()` "
391-
"in the event handler.")
392389
def keyAutoRepeat(self, val):
393390
self._keyautorepeat = bool(val)
394391

lib/matplotlib/cbook/deprecation.py

Lines changed: 31 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ def warn_deprecated(
116116
def deprecated(since, message='', name='', alternative='', pending=False,
117117
obj_type=None, addendum='', *, removal=''):
118118
"""
119-
Decorator to mark a function or a class as deprecated.
119+
Decorator to mark a function, a class, or a property as deprecated.
120120
121121
When deprecating a classmethod, a staticmethod, or a property, the
122122
``@deprecated`` decorator should go *under* the ``@classmethod``, etc.
@@ -145,7 +145,7 @@ def deprecated(since, message='', name='', alternative='', pending=False,
145145
146146
def new_function():
147147
...
148-
oldFunction = new_function
148+
old_function = new_function
149149
150150
alternative : str, optional
151151
An alternative API that the user may use in place of the deprecated
@@ -183,22 +183,47 @@ def the_function_to_deprecate():
183183

184184
def deprecate(obj, message=message, name=name, alternative=alternative,
185185
pending=pending, addendum=addendum):
186-
187-
if not name:
188-
name = obj.__name__
189-
190186
if isinstance(obj, type):
191187
obj_type = "class"
192188
func = obj.__init__
189+
name = name or obj.__name__
193190
old_doc = obj.__doc__
194191

195192
def finalize(wrapper, new_doc):
196193
obj.__doc__ = new_doc
197194
obj.__init__ = wrapper
198195
return obj
196+
197+
elif isinstance(obj, property):
198+
obj_type = "attribute"
199+
func = None
200+
name = name or obj.fget.__name__
201+
old_doc = obj.__doc__
202+
203+
class _deprecated_property(property):
204+
def __get__(self, instance, owner):
205+
from . import _warn_external
206+
_warn_external(message, category)
207+
return super().__get__(instance, owner)
208+
209+
def __set__(self, instance, value):
210+
from . import _warn_external
211+
_warn_external(message, category)
212+
return super().__set__(instance, value)
213+
214+
def __delete__(self, instance):
215+
from . import _warn_external
216+
_warn_external(message, category)
217+
return super().__delete__(instance)
218+
219+
def finalize(_, new_doc):
220+
return _deprecated_property(
221+
fget=obj.fget, fset=obj.fset, fdel=obj.fdel, doc=new_doc)
222+
199223
else:
200224
obj_type = "function"
201225
func = obj
226+
name = name or obj.__name__
202227
old_doc = func.__doc__
203228

204229
def finalize(wrapper, new_doc):

lib/matplotlib/contour.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -216,11 +216,11 @@ def clabel(self, *args,
216216
self.labelTextsList = cbook.silent_list('text.Text', self.labelTexts)
217217
return self.labelTextsList
218218

219-
cl = property(cbook.deprecated("3.0", alternative="labelTexts")(
219+
cl = cbook.deprecated("3.0", alternative="labelTexts")(property(
220220
lambda self: self.labelTexts))
221-
cl_xy = property(cbook.deprecated("3.0", alternative="labelXYs")(
221+
cl_xy = cbook.deprecated("3.0", alternative="labelXYs")(property(
222222
lambda self: self.labelXYs))
223-
cl_cvalues = property(cbook.deprecated("3.0", alternative="labelCValues")(
223+
cl_cvalues = cbook.deprecated("3.0", alternative="labelCValues")(property(
224224
lambda self: self.labelCValues))
225225

226226
def print_label(self, linecontour, labelwidth):

lib/matplotlib/font_manager.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -984,13 +984,13 @@ def __init__(self, size=None, weight='normal'):
984984
self.afmlist = createFontList(afmfiles, fontext='afm')
985985
self.defaultFont['afm'] = afmfiles[0] if afmfiles else None
986986

987-
@property
988987
@cbook.deprecated("3.0")
988+
@property
989989
def ttffiles(self):
990990
return [font.fname for font in self.ttflist]
991991

992-
@property
993992
@cbook.deprecated("3.0")
993+
@property
994994
def afmfiles(self):
995995
return [font.fname for font in self.afmlist]
996996

lib/matplotlib/texmanager.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,8 @@ class TexManager(object):
6262
# Caches.
6363
rgba_arrayd = {}
6464
grey_arrayd = {}
65-
postscriptd = property(mpl.cbook.deprecated("2.2")(lambda self: {}))
66-
pscnt = property(mpl.cbook.deprecated("2.2")(lambda self: 0))
65+
postscriptd = mpl.cbook.deprecated("2.2")(property(lambda self: {}))
66+
pscnt = mpl.cbook.deprecated("2.2")(property(lambda self: 0))
6767

6868
serif = ('cmr', '')
6969
sans_serif = ('cmss', '')

0 commit comments

Comments
 (0)