From: Ɓukasz Langa Date: Wed, 18 Aug 2021 11:19:30 +0000 (+0200) Subject: bpo-44852: Support filtering over warnings without a set message (GH-27793) X-Git-Tag: v3.11.0a1~389 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=8cf07d3db3eed02b43350a5f9dbf68f1c839ea82;p=thirdparty%2FPython%2Fcpython.git 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. --- diff --git a/Lib/test/support/__init__.py b/Lib/test/support/__init__.py index c89901ea8f72..a86bfca4ce96 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: