Сообщить об ошибке.

Декоратор @warnings.deprecated модуля warnings в Python

Предупреждения об устаревании класса, функции или перегрузки

Синтаксис:

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().