Python Glossary English

все Python 3warningsфункция

warnings.warn_explicit()

выдача предупреждений

Низкоуровневый warn(), где файл, строку и модуль предупреждения задают явно — для предупреждений о конфигурации, шаблонах и других не-Python файлах.

Синтаксис

warnings.warn_explicit(message, category, filename, lineno, module=None, registry=None, module_globals=None, source=None)

warn() сам вычисляет место по стеку вызовов, а warn_explicit берёт filename и lineno из аргументов — так загрузчик конфигурации указывает на строку в settings.ini, а не на свой исходный код. Без registry каждое предупреждение считается первым: действия 'default' и 'module' работают как 'always', и повторы в цикле не схлопнутся. Чтобы повторы подавлялись, передавайте один и тот же словарь registry.

Примеры

import warnings
with warnings.catch_warnings(record=True) as caught:
    warnings.simplefilter('default')
    for _ in range(2):
        warnings.warn_explicit('ключ устарел', UserWarning, 'settings.ini', 12)
print(len(caught), caught[0].filename, caught[0].lineno)  # → 2 settings.ini 12
import warnings
registry = {}
with warnings.catch_warnings(record=True) as caught:
    warnings.simplefilter('default')
    for _ in range(2):
        warnings.warn_explicit('ключ устарел', UserWarning, 'settings.ini', 12,
                               registry=registry)
print(len(caught))  # → 1

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности