diff options
author | Brett Cannon <brett@python.org> | 2012-07-13 17:57:03 (GMT) |
---|---|---|
committer | Brett Cannon <brett@python.org> | 2012-07-13 17:57:03 (GMT) |
commit | a6473f9cfd13358b003b8353cd722ca19352817c (patch) | |
tree | 3533968bc996698be3bd30eb80ecb5b6dea05f85 /Lib/imp.py | |
parent | d104eef118bda30725ac087e06252a5a3525e2df (diff) | |
download | cpython-a6473f9cfd13358b003b8353cd722ca19352817c.zip cpython-a6473f9cfd13358b003b8353cd722ca19352817c.tar.gz cpython-a6473f9cfd13358b003b8353cd722ca19352817c.tar.bz2 |
Issues #15169, #14599: Make PyImport_ExecCodeModuleWithPathnames() use
Lib/imp.py for imp.source_from_cache() instead of its own C version.
Also change PyImport_ExecCodeModuleObject() to not infer the source
path from the bytecode path like
PyImport_ExecCodeModuleWithPathnames() does. This makes the function
less magical.
This also has the side-effect of removing all uses of MAXPATHLEN in
Python/import.c which can cause failures on really long filenames.
Diffstat (limited to 'Lib/imp.py')
-rw-r--r-- | Lib/imp.py | 25 |
1 files changed, 1 insertions, 24 deletions
@@ -13,7 +13,7 @@ from _imp import (lock_held, acquire_lock, release_lock, # Directly exposed by this module from importlib._bootstrap import new_module -from importlib._bootstrap import cache_from_source +from importlib._bootstrap import cache_from_source, source_from_cache from importlib import _bootstrap @@ -58,29 +58,6 @@ def get_suffixes(): return extensions + source + bytecode -def source_from_cache(path): - """Given the path to a .pyc./.pyo file, return the path to its .py file. - - The .pyc/.pyo file does not need to exist; this simply returns the path to - the .py file calculated to correspond to the .pyc/.pyo file. If path does - not conform to PEP 3147 format, ValueError will be raised. If - sys.implementation.cache_tag is None then NotImplementedError is raised. - - """ - if sys.implementation.cache_tag is None: - raise NotImplementedError('sys.implementation.cache_tag is None') - head, pycache_filename = os.path.split(path) - head, pycache = os.path.split(head) - if pycache != _bootstrap._PYCACHE: - raise ValueError('{} not bottom-level directory in ' - '{!r}'.format(_bootstrap._PYCACHE, path)) - if pycache_filename.count('.') != 2: - raise ValueError('expected only 2 dots in ' - '{!r}'.format(pycache_filename)) - base_filename = pycache_filename.partition('.')[0] - return os.path.join(head, base_filename + machinery.SOURCE_SUFFIXES[0]) - - class NullImporter: """Null import object.""" |