48 lines
1.4 KiB
Python
48 lines
1.4 KiB
Python
import warnings
|
|
import functools
|
|
|
|
|
|
class ObsoleteException(Exception):
|
|
"""Base class for warnings about obsolete features."""
|
|
|
|
|
|
def obsolete_client(func):
|
|
"""This is a decorator which can be used to mark Client classes as
|
|
obsolete. It will result in an error being emitted when the class is
|
|
instantiated."""
|
|
|
|
@functools.wraps(func)
|
|
def new_func(*args, **kwargs):
|
|
raise ObsoleteException(
|
|
"{} has been removed from this version of the library. "
|
|
"Please refer to current documentation for guidance.".format(func.__name__)
|
|
)
|
|
|
|
return new_func
|
|
|
|
|
|
def deprecated_method(new_func=None):
|
|
"""
|
|
This is a decorator which can be used to mark deprecated methods.
|
|
It will report in a DeprecationWarning being emitted to stderr when the deprecated method is used.
|
|
"""
|
|
|
|
def deprecated_method_wrapper(func):
|
|
@functools.wraps(func)
|
|
def wrapper(*args, **kwargs):
|
|
msg = "Function method .{}() is deprecated".format(func.__name__)
|
|
msg += (
|
|
" in favor of .{}()".format(new_func)
|
|
if isinstance(new_func, str)
|
|
else ""
|
|
)
|
|
warnings.warn(msg, DeprecationWarning)
|
|
return func(*args, **kwargs)
|
|
|
|
return wrapper
|
|
|
|
if callable(new_func):
|
|
return deprecated_method_wrapper(new_func)
|
|
|
|
return deprecated_method_wrapper
|