diff options
author | Laurent Peuch <cortex@worlddomination.be> | 2020-04-30 16:06:23 +0200 |
---|---|---|
committer | Laurent Peuch <cortex@worlddomination.be> | 2020-04-30 16:06:23 +0200 |
commit | e4e0dfe5630342b8983836fa2f038207ceeefd7c (patch) | |
tree | be8d36b1572933beb2fb0a43e1b0fc17ce8ddebf /logilab | |
parent | 030b4e354371efe9acf15372636866619ec28c9c (diff) | |
download | logilab-common-e4e0dfe5630342b8983836fa2f038207ceeefd7c.tar.gz |
[deprecation] 'deprecated' function renamed 'callable_deprecated'
Diffstat (limited to 'logilab')
-rw-r--r-- | logilab/common/deprecation.py | 55 |
1 files changed, 29 insertions, 26 deletions
diff --git a/logilab/common/deprecation.py b/logilab/common/deprecation.py index ba34445..48f3202 100644 --- a/logilab/common/deprecation.py +++ b/logilab/common/deprecation.py @@ -88,6 +88,31 @@ def send_warning(reason, version=None, stacklevel=2): warn(reason, DeprecationWarning, stacklevel=stacklevel) +def callable_renamed(old_name, new_function, version=None): + """use to tell that a callable has been renamed. + + It returns a callable wrapper, so that when its called a warning is printed + telling what is the object new name. + + >>> old_function = renamed('old_function', new_function) + >>> old_function() + sample.py:57: DeprecationWarning: old_function has been renamed and is deprecated, uses new_function instead + old_function() + >>> + """ + @wraps(new_function) + def wrapped(*args, **kwargs): + send_warning(( + f"{old_name} has been renamed and is deprecated, uses {new_function.__name__} " + f"instead" + ), stacklevel=3, version=version) + return new_function(*args, **kwargs) + return wrapped + + +renamed = callable_renamed(old_name="renamed", new_function=callable_renamed) + + def argument_removed(old_argument_name, version=None): """ callable decorator to allow getting backward compatibility for renamed keyword arguments. @@ -117,7 +142,7 @@ def argument_removed(old_argument_name, version=None): @argument_removed("name") @argument_removed("doc") -def deprecated(reason=None, version=None, stacklevel=2): +def callable_deprecated(reason=None, version=None, stacklevel=2): """Display a deprecation message only if the version is older than the compatible version. """ @@ -135,6 +160,9 @@ def deprecated(reason=None, version=None, stacklevel=2): return decorator +deprecated = callable_renamed(old_name="deprecated", new_function=callable_deprecated) + + class class_deprecated(type): """metaclass to print a warning on instantiation of a deprecated class""" @@ -251,31 +279,6 @@ def moved(module_name, object_name, version=None, stacklevel=2): return callnew -def callable_renamed(old_name, new_function, version=None): - """use to tell that a callable has been renamed. - - It returns a callable wrapper, so that when its called a warning is printed - telling what is the object new name. - - >>> old_function = renamed('old_function', new_function) - >>> old_function() - sample.py:57: DeprecationWarning: old_function has been renamed and is deprecated, uses new_function instead - old_function() - >>> - """ - @wraps(new_function) - def wrapped(*args, **kwargs): - send_warning(( - f"{old_name} has been renamed and is deprecated, uses {new_function.__name__} " - f"instead" - ), stacklevel=3, version=version) - return new_function(*args, **kwargs) - return wrapped - - -renamed = callable_renamed(old_name="renamed", new_function=callable_renamed) - - def class_renamed(old_name, new_class, message=None, version=None): """automatically creates a class which fires a DeprecationWarning when instantiated. |