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

Переопределение фильтров предупреждений warnings

По умолчанию Python устанавливает несколько фильтров предупреждений, которые можно переопределить с помощью параметра командной строки -W, переменной среды PYTHONWARNINGS и вызовов функции warnings.filterwarnings().

Фильтр предупреждений по умолчанию содержит следующие записи (в порядке приоритета):

default::DeprecationWarning:__main__
ignore::DeprecationWarning
ignore::PendingDeprecationWarning
ignore::ImportWarning
ignore::ResourceWarning

Разработчики приложений, написанных на Python, могут захотеть скрыть все предупреждения уровня Python от своих пользователей по умолчанию и отображать их только при выполнении тестов или другой работе с приложением. Атрибут sys.warnoptions, используемый для передачи конфигураций фильтра интерпретатору, можно использовать в качестве маркера, чтобы указать, следует ли отключать предупреждения:

import sys

if not sys.warnoptions:
    import warnings
    warnings.simplefilter("ignore")

Для тестируемого кода Python рекомендуется обеспечить отображение всех предупреждений по умолчанию, для этого используя такой код:

import sys

if not sys.warnoptions:
    import os, warnings
    # Изменить фильтр в этом процессе
    warnings.simplefilter("default")
    # Также влияет на подпроцессы
    os.environ["PYTHONWARNINGS"] = "default"

Наконец, разработчикам интерактивных оболочек, которые запускают пользовательский код в пространстве имен, отличном от __main__, рекомендуется обеспечить отображение сообщений DeprecationWarning по умолчанию, используя следующий код, где user_ns - это модуль, используемый для выполнения кода, введенного в интерактивном режиме:

import warnings
warnings.filterwarnings("default", category=DeprecationWarning,
                                   module=user_ns.get("__name__"))