8000 DOCS: fix error in exec namespace note by ncoghlan · Pull Request #119378 · python/cpython · GitHub
[go: up one dir, main page]

Skip to content

DOCS: fix error in exec namespace note #119378

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
May 22, 2024
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
DOCS: fix error in exec namespace note
When updating the new exec note added in gh-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
commit 14b86be314fd2d4e900729cac16e39060d01a252
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