Astropy: deprecated_renamed_argument не работает для удаленного ключевого слова (не решено: когда оно вызывается как позиционный аргумент)

Созданный на 31 янв. 2020  ·  3Комментарии  ·  Источник: astropy/astropy

ОБНОВЛЕНИЕ: это все еще не решено, когда функция ниже вызывается как myfunc(1, 200) .


deprecated_renamed_argument позволяет отказаться от аргумента удаленного ключевого слова. Однако при этом нельзя установить устаревшее ключевое слово. Ему всегда присваивается значение по умолчанию:

>>> from astropy.utils.decorators import deprecated_renamed_argument

>>> @deprecated_renamed_argument('b', None, '4.1')
>>> def myfunc(a, b=3):
>>>     print(a, b)
>>>     return

>>> myfunc(1, b=200)
1 3
WARNING: AstropyDeprecationWarning: "b" was deprecated in version 4.1 and will be removed in a future version.  [warnings]

Устаревшее значение ключевого слова может быть изменено со значения по умолчанию, если оно используется в качестве позиционного аргумента, но в этом случае предупреждение об устаревании не возникает:

>>> myfunc(1, 200)
1 200
Bug utils

Все 3 Комментарий

о, вау, это беспорядок.

Постараюсь позаботиться об этом на выходных.

Я могу исправить. Пожалуйста, смотрите # 9981.

Интересно, сколько нижестоящих пакетов затронуто. Учитывая, что до сих пор мы не получали отчетов об ошибках, такое использование, вероятно, необычно.

спасибо @pllim. Похоже, что мои выходные ускользают из-за того, что кода написано не так много 😥

Была ли эта страница полезной?
0 / 5 - 0 рейтинги