71
71
"""Generate an automatic deprecation string for a_callable.
73
73
:param a_callable: The callable to substitute into deprecation_version.
74
:param deprecation_version: A deprecation format warning string. This
75
should have a single %s operator in it. a_callable will be turned into
76
a nice python symbol and then substituted into deprecation_version.
74
:param deprecation_version: A deprecation format warning string. This should
75
have a single %s operator in it. a_callable will be turned into a nice
76
python symbol and then substituted into deprecation_version.
78
if getattr(a_callable, '__self__', None) is not None:
78
# We also want to handle old-style classes, in particular exception, and
79
# they don't have an im_class attribute.
80
if getattr(a_callable, 'im_class', None) is None:
81
symbol = "%s.%s" % (a_callable.__module__,
79
84
symbol = "%s.%s.%s" % (a_callable.__self__.__class__.__module__,
80
85
a_callable.__self__.__class__.__name__,
82
elif getattr(a_callable, '__qualname__', None) is not None and '<' not in a_callable.__qualname__:
83
symbol = "%s.%s" % (a_callable.__module__,
84
a_callable.__qualname__)
86
symbol = "%s.%s" % (a_callable.__module__,
88
88
return deprecation_version % symbol
99
99
from . import trace
100
100
trace.mutter_callsite(4, "Deprecated function called")
101
101
warn(deprecation_string(callable, deprecation_version),
102
DeprecationWarning, stacklevel=2)
102
DeprecationWarning, stacklevel=2)
103
103
return callable(*args, **kwargs)
104
104
_populate_decorated(callable, deprecation_version, "function",
105
105
decorated_function)
135
135
callable.__name__
137
137
trace.mutter_callsite(4, "Deprecated method called")
138
warn(deprecation_version %
139
symbol, DeprecationWarning, stacklevel=2)
138
warn(deprecation_version % symbol, DeprecationWarning, stacklevel=2)
140
139
return callable(self, *args, **kwargs)
141
140
_populate_decorated(callable, deprecation_version, "method",
142
141
decorated_method)
160
159
# def __init__(self, bad, other)
161
160
# def __init__(self, **kwargs)
163
return parameter_value is not DEPRECATED_PARAMETER
162
return not parameter_value is DEPRECATED_PARAMETER
166
165
def _decorate_docstring(callable, deprecation_version, label,
172
171
if len(docstring_lines) == 0:
173
172
decorated_callable.__doc__ = deprecation_version % ("This " + label)
174
173
elif len(docstring_lines) == 1:
175
decorated_callable.__doc__ = (
176
callable.__doc__ + "\n" + "\n" +
177
deprecation_version % ("This " + label) + "\n")
174
decorated_callable.__doc__ = (callable.__doc__
177
+ deprecation_version % ("This " + label)
179
180
spaces = len(docstring_lines[-1])
180
181
new_doc = callable.__doc__