[Python-checkins] gh-105256: What's New note for comprehension over locals() (#106378)

carljm webhook-mailer at python.org
Wed Jul 5 20:12:25 EDT 2023


https://github.com/python/cpython/commit/13aefd175e3c04529251f175c23cb3ed88451fd0
commit: 13aefd175e3c04529251f175c23cb3ed88451fd0
branch: main
author: Carl Meyer <carl at oddbird.net>
committer: carljm <carl at oddbird.net>
date: 2023-07-05T18:12:21-06:00
summary:

gh-105256: What's New note for comprehension over locals() (#106378)

files:
M Doc/whatsnew/3.12.rst

diff --git a/Doc/whatsnew/3.12.rst b/Doc/whatsnew/3.12.rst
index 1af80ea62b392..a892f92dd2628 100644
--- a/Doc/whatsnew/3.12.rst
+++ b/Doc/whatsnew/3.12.rst
@@ -253,6 +253,12 @@ Inlining does result in a few visible behavior changes:
 * Calling :func:`locals` inside a comprehension now includes variables
   from outside the comprehension, and no longer includes the synthetic ``.0``
   variable for the comprehension "argument".
+* A comprehension iterating directly over ``locals()`` (e.g. ``[k for k in
+  locals()]``) may see "RuntimeError: dictionary changed size during iteration"
+  when run under tracing (e.g. code coverage measurement). This is the same
+  behavior already seen in e.g. ``for k in locals():``. To avoid the error, first
+  create a list of keys to iterate over: ``keys = list(locals()); [k for k in
+  keys]``.
 
 Contributed by Carl Meyer and Vladimir Matveev in :pep:`709`.
 



More information about the Python-checkins mailing list