from warnings import deprecated > Добавлен в Python 3.13 @warnings.deprecated(msg, *, category=DeprecationWarning, stacklevel=1) class A: pass
msg - сообщение, которое необходимо выдавать пользователю;category=DeprecationWarning - класс предупреждения;stacklevel=1 - уровень стека на котором показывается сообщение.warnings.deprecated():Добавлено в Python 3.13
Декоратор @warnings.deprecated() модуля warnings который указывает, что класс, функция или перегрузка устарели.
Когда этот декоратор применяется к объекту, то предупреждения об устаревании могут выдаваться во время выполнения при использовании объекта. Проверка статического типа также сгенерирует диагностику использования устаревшего объекта.
Использование:
from warnings import deprecated from typing import overload @deprecated("Use B instead") class A: pass @deprecated("Use g instead") def f(): pass @overload @deprecated("int support is deprecated") def g(x: int) -> int: ... @overload def g(x: str) -> int: ...
Класс предупреждения, указанный в category, будет выдаваться во время выполнения при использовании устаревших объектов. Для функций это происходит при вызовах, для классов - при создании экземпляра и подклассов. Если категория category=None, то во время выполнения предупреждение не выдается. Уровень стека stacklevel определяет, где выдается предупреждение. Если оно равно 1 (по умолчанию), то предупреждение выдается непосредственному вызывающему объекту устаревшего объекта; если оно выше, то оно выдается дальше по стеку. Аргументы category и stacklevel не влияют на поведение статической проверки типов.
Сообщение об устаревании, передаваемое декоратору, сохраняется в атрибуте __deprecated__ декорируемого объекта. Если применяется к перегрузке, то декоратор должен быть после декоратора @typing.overload, чтобы атрибут существовал при перегрузке, возвращаемый при typing.get_overloads().