https://github.com/python/cpython/commit/5f1eaff5b54c86be5d247d671645b8f1f0b42433
commit: 5f1eaff5b54c86be5d247d671645b8f1f0b42433
branch: 3.13
author: Tomas R. <[email protected]>
committer: serhiy-storchaka <[email protected]>
date: 2025-04-14T10:21:36+03:00
summary:
[3.13] gh-132435: Test syntax warnings in a finally block (GH-132436)
(GH-132503)
(cherry picked from commit 887eabc5a74316708460120d60d0fa4f8bdf5960)
files:
A Misc/NEWS.d/next/Core and
Builtins/2025-04-13-10-34-27.gh-issue-131927.otp80n.rst
M Lib/test/test_compile.py
diff --git a/Lib/test/test_compile.py b/Lib/test/test_compile.py
index b57adfadb5af5f..e4be26322930e0 100644
--- a/Lib/test/test_compile.py
+++ b/Lib/test/test_compile.py
@@ -1530,6 +1530,26 @@ def test_compile_warnings(self):
self.assertEqual(len(caught), 2)
+ def test_compile_warning_in_finally(self):
+ # Ensure that warnings inside finally blocks are
+ # only emitted once despite the block being
+ # compiled twice (for normal execution and for
+ # exception handling).
+ source = textwrap.dedent("""
+ try:
+ pass
+ finally:
+ 1 is 1
+ """)
+
+ with warnings.catch_warnings(record=True) as caught:
+ warnings.simplefilter("default")
+ compile(source, '<stdin>', 'exec')
+
+ self.assertEqual(len(caught), 1)
+ self.assertEqual(caught[0].category, SyntaxWarning)
+ self.assertIn("\"is\" with 'int' literal", str(caught[0].message))
+
@requires_debug_ranges()
class TestSourcePositions(unittest.TestCase):
# Ensure that compiled code snippets have correct line and column numbers
diff --git a/Misc/NEWS.d/next/Core and
Builtins/2025-04-13-10-34-27.gh-issue-131927.otp80n.rst b/Misc/NEWS.d/next/Core
and Builtins/2025-04-13-10-34-27.gh-issue-131927.otp80n.rst
new file mode 100644
index 00000000000000..9aa940a10daa69
--- /dev/null
+++ b/Misc/NEWS.d/next/Core and
Builtins/2025-04-13-10-34-27.gh-issue-131927.otp80n.rst
@@ -0,0 +1,3 @@
+Compiler warnings originating from the same module and line number are now
+only emitted once, matching the behaviour of warnings emitted from user
+code. This can also be configured with :mod:`warnings` filters.
_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: [email protected]