diff options
author | Brett Cannon <brett@python.org> | 2013-06-11 21:09:36 (GMT) |
---|---|---|
committer | Brett Cannon <brett@python.org> | 2013-06-11 21:09:36 (GMT) |
commit | d5e6f2e200a9b56fdc9c6201011937b9671f637b (patch) | |
tree | 3a575200fdc7f928ebbc90a0edeb7082a1d80a53 | |
parent | 30b4131b41170b062e395c7b3acc161631ae3297 (diff) | |
download | cpython-d5e6f2e200a9b56fdc9c6201011937b9671f637b.zip cpython-d5e6f2e200a9b56fdc9c6201011937b9671f637b.tar.gz cpython-d5e6f2e200a9b56fdc9c6201011937b9671f637b.tar.bz2 |
Issue #18157: stop using imp.load_module() in imp.
-rwxr-xr-x | Lib/pydoc.py | 24 | ||||
-rw-r--r-- | Misc/NEWS | 2 |
2 files changed, 14 insertions, 12 deletions
diff --git a/Lib/pydoc.py b/Lib/pydoc.py index 7505ccd..3f6fdf0 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. @@ -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. |