From 8cf07d3db3eed02b43350a5f9dbf68f1c839ea82 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Langa?= Date: Wed, 18 Aug 2021 13:19:30 +0200 Subject: bpo-44852: Support filtering over warnings without a set message (GH-27793) Additional improvements: - messages which were compiled regular expressions aren't unpacked back into strings for unmatched warnings; - removed unnecessary "if tokens:" check (there's one before the for loop); - took `endswith` calculation out of the for loop. --- Lib/test/support/__init__.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/Lib/test/support/__init__.py b/Lib/test/support/__init__.py index c89901e..a86bfca 100644 --- a/Lib/test/support/__init__.py +++ b/Lib/test/support/__init__.py @@ -2070,13 +2070,14 @@ def clear_ignored_deprecations(*tokens: object) -> None: raise ValueError("Provide token or tokens returned by ignore_deprecations_from") new_filters = [] + endswith = tuple(rf"(?#support{id(token)})" for token in tokens) for action, message, category, module, lineno in warnings.filters: if action == "ignore" and category is DeprecationWarning: if isinstance(message, re.Pattern): - message = message.pattern - if tokens: - endswith = tuple(rf"(?#support{id(token)})" for token in tokens) - if message.endswith(endswith): + msg = message.pattern + else: + msg = message or "" + if msg.endswith(endswith): continue new_filters.append((action, message, category, module, lineno)) if warnings.filters != new_filters: -- cgit v0.12