Update the encoding package's search function to use absolute imports when

calling __import__.  This helps make the expected search locations for encoding
modules be more explicit.

One could use an explicit value for __path__ when making the call to __import__
to force the exact location searched for encodings.  This would give the most
strict search path possible if one is worried about malicious code being
imported.  The unfortunate side-effect of that is that if __path__ was modified
on 'encodings' on purpose in a safe way it would not be picked up in future
__import__ calls.
This commit is contained in:
Brett Cannon 2007-02-15 22:54:39 +00:00
parent 9cb37fc5d0
commit 971a012ce1
2 changed files with 7 additions and 2 deletions

View File

@ -93,8 +93,10 @@ def search_function(encoding):
if not modname or '.' in modname:
continue
try:
mod = __import__('encodings.' + modname,
globals(), locals(), _import_tail)
# Import equivalent to `` from .modname import *``.
# '*' is used so that __import__ returns the desired module and not
# 'encodings' itself.
mod = __import__(modname, globals(), locals(), ['*'], 1)
except ImportError:
pass
else:

View File

@ -128,6 +128,9 @@ Core and builtins
Library
-------
- Have the encoding package's search function dynamically import using absolute
import semantics.
- Patch #1647484: Renamed GzipFile's filename attribute to name.
- Patch #1517891: Mode 'a' for ZipFile now creates the file if it