Skip to content

Commit

Permalink
DOCS: fix error in exec namespace note
Browse files Browse the repository at this point in the history
When updating the new exec note added in pythongh-119235 as part of the
PEP 667 general docs PR, I suggested a workaround that isn't valid.

Since it's far from the first time I've considered that workaround,
and the fact it doesn't work has surprised me every time, amend the
new note to explicitly state that dict merging is the only option.
  • Loading branch information
ncoghlan committed May 22, 2024
1 parent cd516cd commit 14b86be
Showing 1 changed file with 4 additions and 4 deletions.
8 changes: 4 additions & 4 deletions Doc/library/functions.rst
Original file line number Diff line number Diff line change
Expand Up @@ -623,10 +623,10 @@ are always available. They are listed here in alphabetical order.
means functions and classes defined in the executed code will not be able
to access variables assigned at the top level (as the "top level"
variables are treated as class variables in a class definition).
Passing a :class:`collections.ChainMap` instance as *globals* allows name
lookups to be chained across multiple mappings without triggering this
behaviour. Values assigned to top level names in the executed code can be
retrieved by passing an empty dictionary as the first entry in the chain.
As *globals* is required to be a ``dict`` instance, it isn't possible to
use :class:`collections.ChainMap` to work around this restriction.
Instead, any namespaces to be used for lookups must be merged into a
single ``dict`` before calling ``exec``.

If the *globals* dictionary does not contain a value for the key
``__builtins__``, a reference to the dictionary of the built-in module
Expand Down

0 comments on commit 14b86be

Please sign in to comment.