From: Brett Cannon Date: Tue, 11 Jun 2013 21:09:36 +0000 (-0400) Subject: Issue #18157: stop using imp.load_module() in imp. X-Git-Tag: v3.4.0a1~534 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d5e6f2e200a9b56fdc9c6201011937b9671f637b;p=python Issue #18157: stop using imp.load_module() in imp. --- diff --git a/Lib/pydoc.py b/Lib/pydoc.py index 7505ccd297..3f6fdf0b94 100755 --- a/Lib/pydoc.py +++ b/Lib/pydoc.py @@ -53,6 +53,7 @@ Richard Chamberlain, for the first implementation of textdoc. import builtins import imp +import importlib._bootstrap import importlib.machinery import inspect import io @@ -269,18 +270,17 @@ def importfile(path): """Import a Python source file or compiled file given its path.""" magic = imp.get_magic() with open(path, 'rb') as file: - if file.read(len(magic)) == magic: - kind = imp.PY_COMPILED - else: - kind = imp.PY_SOURCE - file.seek(0) - filename = os.path.basename(path) - name, ext = os.path.splitext(filename) - try: - module = imp.load_module(name, file, path, (ext, 'r', kind)) - except: - raise ErrorDuringImport(path, sys.exc_info()) - return module + is_bytecode = magic == file.read(len(magic)) + filename = os.path.basename(path) + name, ext = os.path.splitext(filename) + if is_bytecode: + loader = importlib._bootstrap.SourcelessFileLoader(name, path) + else: + loader = importlib._bootstrap.SourceFileLoader(name, path) + try: + return loader.load_module(name) + except: + raise ErrorDuringImport(path, sys.exc_info()) def safeimport(path, forceload=0, cache={}): """Import a module; handle errors; return None if the module isn't found. diff --git a/Misc/NEWS b/Misc/NEWS index aa99407fe3..ff88878783 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -120,6 +120,8 @@ Core and Builtins Library ------- +- Issue #18157: Stop using imp.load_module() in pydoc. + - Issue #16102: Make uuid._netbios_getnode() work again on Python 3. - Issue #17134: Add ssl.enum_cert_store() as interface to Windows' cert store.