[deprecated] On peut fournir la fonction à utiliser en remplacement de celle dépréciée. (ou un random message)
This commit is contained in:
parent
691ce584bc
commit
9221fb8db0
2 changed files with 23 additions and 13 deletions
|
@ -4,18 +4,28 @@
|
|||
import warnings
|
||||
import functools
|
||||
|
||||
def deprecated(func):
|
||||
def deprecated(replace=None):
|
||||
'''This is a decorator which can be used to mark functions
|
||||
as deprecated. It will result in a warning being emitted
|
||||
when the function is used.'''
|
||||
|
||||
@functools.wraps(func)
|
||||
def new_func(*args, **kwargs):
|
||||
warnings.warn_explicit(
|
||||
"Call to deprecated function {}.".format(func.__name__),
|
||||
category=DeprecationWarning,
|
||||
filename=func.func_code.co_filename,
|
||||
lineno=func.func_code.co_firstlineno + 1
|
||||
)
|
||||
return func(*args, **kwargs)
|
||||
return new_func
|
||||
|
||||
if replace == None:
|
||||
instead = ""
|
||||
elif isinstance(replace, str) or isinstance(replace, unicode):
|
||||
instead = " " + replace
|
||||
else:
|
||||
instead = " Use %s instead." % (replace.__name__,)
|
||||
|
||||
def real_decorator(func):
|
||||
"""Nested because a decorator with a parameter has to be coded this way"""
|
||||
@functools.wraps(func)
|
||||
def new_func(*args, **kwargs):
|
||||
warnings.warn_explicit(
|
||||
"Call to deprecated function %s.%s" % (func.__name__, instead),
|
||||
category=DeprecationWarning,
|
||||
filename=func.func_code.co_filename,
|
||||
lineno=func.func_code.co_firstlineno + 1
|
||||
)
|
||||
return func(*args, **kwargs)
|
||||
return new_func
|
||||
return real_decorator
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue