From: Brett Cannon Date: Thu, 15 Feb 2007 22:54:39 +0000 (+0000) Subject: Update the encoding package's search function to use absolute imports when X-Git-Tag: v2.6a1~2168 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=971a012ce178d1b50b272bc035bfcc795e73c781;p=python 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. --- diff --git a/Lib/encodings/__init__.py b/Lib/encodings/__init__.py index 6cf608954c..190b3c4950 100644 --- a/Lib/encodings/__init__.py +++ b/Lib/encodings/__init__.py @@ -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: diff --git a/Misc/NEWS b/Misc/NEWS index 1426799118..dffd5b70ec 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -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