numpy.testing.clear_and_catch_warnings#

class numpy.testing.clear_and_catch_warnings(record=False, modules=())[源代码]#

用于重置警告注册表以捕获警告的上下文管理器

警告可能难以捉摸,因为每当触发警告时,Python 都会向调用模块添加一个 __warningregistry__ 成员。这使得在该模块中无法重新触发警告,无论您在警告过滤器中设置什么。此上下文管理器在其构造函数中接受一个 modules 序列作为关键字参数,并在

  • 进入时存储和删除给定 modules 中的任何 __warningregistry__ 条目;

  • 退出时将 __warningregistry__ 重置为其先前状态。

这使得可以在上下文管理器内部重新触发任何警告,而不会干扰上下文之外的警告状态。

为了与 Python 兼容,请将所有参数视为仅限关键字。

参数:
recordbool, optional

指定是否应通过 warnings.showwarning() 的自定义实现来捕获警告,并将其附加到上下文管理器返回的列表中。否则,上下文管理器返回 None。附加到列表中的对象是其属性镜像 showwarning() 参数的参数。

modulessequence, optional

用于在进入时重置警告注册表并在退出时恢复的模块序列。为了正确工作,所有“ignore”过滤器都应按其中一个模块进行过滤。

示例

>>> import warnings
>>> with np.testing.clear_and_catch_warnings(
...         modules=[np._core.fromnumeric]):
...     warnings.simplefilter('always')
...     warnings.filterwarnings('ignore', module='np._core.fromnumeric')
...     # do something that raises a warning but ignore those in
...     # np._core.fromnumeric