[Python-Dev] Adding a builtins parameter to eval(), exec() and __import__().
Jim J. Jewett
jimjjewett at gmail.com
Thu Mar 8 01:48:28 CET 2012
Brett Cannon posted:
[in reply to Mark Shannon's suggestion of adding a builtins parameter
to match locals and globals]
> It's a mess right now to try to grab the __import__()
> implementation and this would actually help clarify import semantics by
> saying that __import__() for any chained imports comes from __import__()s
> locals, globals, or builtins arguments (in that order) or from the builtins
> module itself (i.e. tstate->builtins).
How does that differ from today?
If you're saying that the locals and (module-level) globals aren't
always checked in order, then that is a semantic change. Probably
a good change, but still a change -- and it can be made indepenently
of Mark's suggestion.
Also note that I would assume this was for sandboxing, and that
missing names should *not* fall back to the "real" globals, although
I would understand if bootstrapping required the import statement to
get special treatment.
(Note that I like Mark's proposed change; I just don't see how it
cleans up import.)
If there are still threading problems with my replies, please
email me with details, so that I can try to resolve them. -jJ
More information about the Python-Dev