summaryrefslogtreecommitdiff
path: root/logilab/common/deprecation.py
diff options
context:
space:
mode:
Diffstat (limited to 'logilab/common/deprecation.py')
-rw-r--r--logilab/common/deprecation.py16
1 files changed, 13 insertions, 3 deletions
diff --git a/logilab/common/deprecation.py b/logilab/common/deprecation.py
index 4da111b..5b2d28d 100644
--- a/logilab/common/deprecation.py
+++ b/logilab/common/deprecation.py
@@ -279,7 +279,8 @@ class class_deprecated(type):
def __call__(cls, *args, **kwargs):
msg = getattr(cls, "__deprecation_warning__",
"%(cls)s is deprecated") % {'cls': cls.__name__}
- send_warning(msg, stacklevel=4)
+ send_warning(msg, stacklevel=getattr(cls, "__deprecation_warning_stacklevel__", 4),
+ version=getattr(cls, "__deprecation_warning_version__", None))
return type.__call__(cls, *args, **kwargs)
@@ -407,7 +408,7 @@ def renamed(old_name, new_function, version=None):
return wrapped
-def class_renamed(old_name, new_class, message=None):
+def class_renamed(old_name, new_class, message=None, version=None):
"""automatically creates a class which fires a DeprecationWarning
when instantiated.
@@ -417,7 +418,16 @@ def class_renamed(old_name, new_class, message=None):
s = Set()
>>>
"""
- return _defaultdeprecator.class_renamed(None, old_name, new_class, message)
+ class_dict = {}
+ if message is None:
+ message = '%s is deprecated, use %s instead' % (old_name, new_class.__name__)
+
+ class_dict['__deprecation_warning__'] = message
+ class_dict['__deprecation_warning_version__'] = version
+ class_dict['__deprecation_warning_stacklevel__'] = 5
+
+ return class_deprecated(old_name, (new_class,), class_dict)
+
def class_moved(new_class, old_name=None, message=None):
return _defaultdeprecator.class_moved(None, new_class, old_name, message)