]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
bpo-44852: Support filtering over warnings without a set message (GH-27793)
authorŁukasz Langa <lukasz@langa.pl>
Wed, 18 Aug 2021 11:19:30 +0000 (13:19 +0200)
committerGitHub <noreply@github.com>
Wed, 18 Aug 2021 11:19:30 +0000 (13:19 +0200)
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

index c89901ea8f7265183c1f2c434994295010580621..a86bfca4ce96bff6a3a8bcdc6a5043c9aafb4a58 100644 (file)
@@ -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: