Spec-Zone.ru › NumPy 1.19

numpy.testing.suppress_warnings

class numpy.testing.suppress_warnings(forwarding_rule='always') [source]

Менеджер контекста и декоратор, выполняющий примерно те же действия, что и warnings.catch_warnings.

Однако он также предоставляет механизм фильтрации для решения проблемы https://bugs.python.org/issue4180.

Эта ошибка приводит к тому, что Python версии ниже 3.4 не гарантирует повторное отображение предупреждений после их игнорирования (даже в рамках catch_warnings). Это означает, что легко использовать фильтр «ignore», так как последующие тесты могут потребовать увидеть предупреждение. Кроме того, это позволяет легче тестировать предупреждения и может использоваться вложенно.

Параметры
forwarding_rulestr, optional

Одно из значений: «всегда», «один раз», «модуль» или «местоположение». Аналогично обычному режиму фильтра модуля warnings, это полезно для уменьшения шума в основном на внешнем уровне. Неподавляемые и незафиксированные предупреждения будут перенаправлены в соответствии с этим правилом. По умолчанию «всегда». «местоположение» эквивалентно предупреждению warnings «по умолчанию», совпадая по точному местоположению, откуда исходит предупреждение.

Примечания

Фильтры, добавленные внутри менеджера контекста, будут удалены при выходе из него. При входе все фильтры, определенные вне контекста, будут автоматически применены.

Когда добавляется фильтр записи, соответствующие предупреждения хранятся в атрибуте log , а также в списке, возвращаемом record.

Если фильтры добавлены и ключевое слово module задано, регистр предупреждений этого модуля дополнительно будет очищен при его применении, входе в контекст или выходе из него. Это может привести к повторному появлению предупреждений после выхода из контекста, если они были настроены на отображение один раз (по умолчанию) и уже были отображены до входа в контекст.

Вложенность этого менеджера контекста будет работать как ожидается, когда правило переадресации — «всегда» (по умолчанию). Неотфильтрованные и незафиксированные предупреждения будут переданы наружу и будут соответствовать внешнему уровню. На внешнем уровне они будут отображены (или перехвачены другим контекстом предупреждений). Аргумент правила переадресации может изменить это поведение.

Как и catch_warnings, этот менеджер контекста не потокобезопасен.

Примеры

С менеджером контекста:

with np.testing.suppress_warnings() as sup:
    sup.filter(DeprecationWarning, "Some text")
    sup.filter(module=np.ma.core)
    log = sup.record(FutureWarning, "Does this occur?")
    command_giving_warnings()
    # The FutureWarning was given once, the filtered warnings were
    # ignored. All other warnings abide outside settings (may be
    # printed/error)
    assert_(len(log) == 1)
    assert_(len(sup.log) == 1)  # also stored in log attribute

Или как декоратор:

sup = np.testing.suppress_warnings()
sup.filter(module=np.ma.core)  # module must match exactly
@sup
def some_function():
    # do something which causes a warning in np.ma.core
    pass

Методы

__call__(self, func)

Декоратор функции для применения определенных подавлений ко всей функции.

filter(self[, category, message, module])

Добавить новый фильтр подавления или применить его, если состояние введено.

record(self[, category, message, module])

Добавить новый фильтр записи или применить его, если состояние введено.

© 2005–2020 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.19/reference/generated/numpy.testing.suppress_warnings.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API