diff options
author | Brett Cannon <brett@python.org> | 2012-04-16 02:28:28 (GMT) |
---|---|---|
committer | Brett Cannon <brett@python.org> | 2012-04-16 02:28:28 (GMT) |
commit | 2ee61422ed2d9069e11ce685823bd247b5a2e4e6 (patch) | |
tree | 3d4e1c9ad7964673fddfc9fd23ecbed42de1bdfe /Lib/imp.py | |
parent | 01a76171a0fd890fabcdfe8963d26d218caf08d1 (diff) | |
download | cpython-2ee61422ed2d9069e11ce685823bd247b5a2e4e6.zip cpython-2ee61422ed2d9069e11ce685823bd247b5a2e4e6.tar.gz cpython-2ee61422ed2d9069e11ce685823bd247b5a2e4e6.tar.bz2 |
Issue #13959: Re-implement imp.load_package() in imp.py.
Thanks to Eric Snow for helping with imp.load_module() (previous
commit) which led to the removal of a bunch of C code.
Diffstat (limited to 'Lib/imp.py')
-rw-r--r-- | Lib/imp.py | 19 |
1 files changed, 17 insertions, 2 deletions
@@ -14,14 +14,29 @@ from _imp import (lock_held, acquire_lock, release_lock, reload, from _imp import (get_magic, get_tag, get_suffixes, cache_from_source, source_from_cache) # Should be re-implemented here (and mostly deprecated) -from _imp import (find_module, load_compiled, - load_package, load_source, NullImporter, +from _imp import (find_module, load_compiled, load_source, NullImporter, SEARCH_ERROR, PY_SOURCE, PY_COMPILED, C_EXTENSION, PY_RESOURCE, PKG_DIRECTORY, C_BUILTIN, PY_FROZEN, PY_CODERESOURCE, IMP_HOOK) from importlib._bootstrap import _new_module as new_module +from importlib import _bootstrap +import os + + +def load_package(name, path): + if os.path.isdir(path): + extensions = _bootstrap._suffix_list(PY_SOURCE) + extensions += _bootstrap._suffix_list(PY_COMPILED) + for extension in extensions: + path = os.path.join(path, '__init__'+extension) + if os.path.exists(path): + break + else: + raise ValueError('{!r} is not a package'.format(path)) + return _bootstrap._SourceFileLoader(name, path).load_module(name) + def load_module(name, file, filename, details): """Load a module, given information returned by find_module(). |