deprecated_renamed_argument#

astropy.utils.decorators.deprecated_renamed_argument(old_name, new_name, since, arg_in_kwargs=False, relax=False, pending=False, warning_type=<class 'astropy.utils.exceptions.AstropyDeprecationWarning'>, alternative='', message='')[源代码]#

弃用a _renamed_ 或 _removed_ 函数参数。

修饰符假定 old_name 从函数签名和 new_name相同的位置 在签名中。如果 old_name 参数是在调用修饰函数时给定的,修饰符将捕捉它并发出一个弃用警告并将其作为 new_name 争论。

参数:
old_name : strsequencestrPYTHON:STR或PYTHON:PYTHON的序列:STR

参数的旧名称。

new_name : strsequencestrNonePYTHON:字符串或PYTHON:PYTHON的序列:STR或PYTHON:无

参数的新名称。将此设置为 None 删除论点 old_name 而不是重命名它。

since : strnumbersequencestrnumberPYTHON:STR或NUMBER或PYTHON:PYTHING:STR或NAME

旧参数被弃用的版本。

arg_in_kwargs : boolsequencebool ,可选Bool或python:bool序列,可选

如果参数不是命名参数(例如,它是要由 **kwargs )将此设置为 True . 否则,如果 new_name 在修饰函数的签名中找不到。默认为 False .

relax : boolsequencebool ,可选Bool或python:bool序列,可选

如果 FalseTypeError 如果两者都有 new_nameold_name 都给了。如果 True 的值 new_name 使用并发出警告。默认为 False .

pending : boolsequencebool ,可选Bool或python:bool序列,可选

如果 True 这将隐藏弃用警告并忽略相应的 relax 参数值。默认为 False .

warning_type : Warning警告

发出警告。默认为 AstropyDeprecationWarning .

alternative : str ,可选Python:字符串,可选

在下列情况下,用户可以使用替代函数或类名来代替不推荐使用的对象: new_name 没有。如果提供了此替代方案,则不推荐警告将告诉用户。

message : str ,可选Python:字符串,可选

自定义警告消息。如果提供的话,那么 sincealternative 选项将不起作用。

加薪:
TypeError

如果在函数签名中找不到新的参数名称,并且u kwargs中的arg_为False,或者如果它用于否决 *args -, **kwargs -就像争论。在运行时,如果在调用函数时同时指定了新名称和旧名称,并且“relax=False”,则会引发此类错误。

笔记

decorator应该应用于 name 一个参数被改变了,但它应用了相同的逻辑。

警告

如果 old_name 列表或元组是 new_namesince 还必须是具有相同条目的列表或元组。 relaxarg_in_kwarg 可以是单个bool(应用于all),也可以是具有相同条目的列表/元组,例如 new_name 等。

实例

以下示例中未显示弃用警告。

否决位置参数或关键字参数:

>>> from astropy.utils.decorators import deprecated_renamed_argument
>>> @deprecated_renamed_argument('sig', 'sigma', '1.0')
... def test(sigma):
...     return sigma

>>> test(2)
2
>>> test(sigma=2)
2
>>> test(sig=2)  
2

驳斥在 **kwargs 这个 arg_in_kwargs 必须设置:

>>> @deprecated_renamed_argument('sig', 'sigma', '1.0',
...                             arg_in_kwargs=True)
... def test(**kwargs):
...     return kwargs['sigma']

>>> test(sigma=2)
2
>>> test(sig=2)  
2

默认情况下,提供new和old关键字将导致异常。如果需要警告,则设置 relax 论点:

>>> @deprecated_renamed_argument('sig', 'sigma', '1.0', relax=True)
... def test(sigma):
...     return sigma

>>> test(sig=2)  
2

也可以替换多个参数。这个 old_namenew_namesince 必须是 tuplelist 并包含相同数量的条目:

>>> @deprecated_renamed_argument(['a', 'b'], ['alpha', 'beta'],
...                              ['1.0', 1.2])
... def test(alpha, beta):
...     return alpha, beta

>>> test(a=2, b=3)  
(2, 3)

在这种情况下 arg_in_kwargsrelax 可以是单个值(应用于所有重命名的参数),也可以是 tuplelist 每个参数都有值。