37
34
DEPRECATED_PARAMETER = "A deprecated parameter marker."
38
35
zero_seven = "%s was deprecated in version 0.7."
39
36
zero_eight = "%s was deprecated in version 0.8."
40
zero_nine = "%s was deprecated in version 0.9."
41
zero_ten = "%s was deprecated in version 0.10."
44
39
def set_warning_method(method):
119
114
def _decorate_docstring(callable, deprecation_version, label,
120
115
decorated_callable):
122
docstring_lines = callable.__doc__.split('\n')
116
docstring_lines = callable.__doc__.split('\n')
125
117
if len(docstring_lines) == 0:
126
118
decorated_callable.__doc__ = deprecation_version % ("This " + label)
127
119
elif len(docstring_lines) == 1:
147
139
decorated_callable)
148
140
decorated_callable.__module__ = callable.__module__
149
141
decorated_callable.__name__ = callable.__name__
150
decorated_callable.is_deprecated = True
153
def deprecated_list(deprecation_version, variable_name,
154
initial_value, extra=None):
155
"""Create a list that warns when modified
157
:param deprecation_version: something like zero_nine
158
:param initial_value: The contents of the list
159
:param variable_name: This allows better warnings to be printed
160
:param extra: Extra info to print when printing a warning
163
subst_text = 'Modifying %s' % (variable_name,)
164
msg = deprecation_version % (subst_text,)
168
class _DeprecatedList(list):
169
__doc__ = list.__doc__ + msg
173
def _warn_deprecated(self, func, *args, **kwargs):
174
warn(msg, DeprecationWarning, stacklevel=3)
175
return func(self, *args, **kwargs)
177
def append(self, obj):
178
"""appending to %s is deprecated""" % (variable_name,)
179
return self._warn_deprecated(list.append, obj)
181
def insert(self, index, obj):
182
"""inserting to %s is deprecated""" % (variable_name,)
183
return self._warn_deprecated(list.insert, index, obj)
185
def extend(self, iterable):
186
"""extending %s is deprecated""" % (variable_name,)
187
return self._warn_deprecated(list.extend, iterable)
189
def remove(self, value):
190
"""removing from %s is deprecated""" % (variable_name,)
191
return self._warn_deprecated(list.remove, value)
193
def pop(self, index=None):
194
"""pop'ing from from %s is deprecated""" % (variable_name,)
196
return self._warn_deprecated(list.pop, index)
199
return self._warn_deprecated(list.pop)
201
return _DeprecatedList(initial_value)