[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 mailing list