diff options
author | Brett Cannon <brett@python.org> | 2013-07-06 21:56:43 (GMT) |
---|---|---|
committer | Brett Cannon <brett@python.org> | 2013-07-06 21:56:43 (GMT) |
commit | a53cca3fea655e19a9b98d14c514dcc4c2f780fe (patch) | |
tree | 1305cb295dc134ad5e13797c0d7a6203fcb99ca5 /Lib/importlib | |
parent | 2a99d5df63395149ef7393ef5e8a4fb141f64b55 (diff) | |
download | cpython-a53cca3fea655e19a9b98d14c514dcc4c2f780fe.zip cpython-a53cca3fea655e19a9b98d14c514dcc4c2f780fe.tar.gz cpython-a53cca3fea655e19a9b98d14c514dcc4c2f780fe.tar.bz2 |
Issue #18351: Fix various issues with
importlib._bootstrap._get_sourcefile().
Thanks to its only use by the C API, it was never properly tested
until now.
Thanks to Neal Norwitz for discovering the bug and Madison May for the patch.
Diffstat (limited to 'Lib/importlib')
-rw-r--r-- | Lib/importlib/_bootstrap.py | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/Lib/importlib/_bootstrap.py b/Lib/importlib/_bootstrap.py index ed4ec51..ff10308 100644 --- a/Lib/importlib/_bootstrap.py +++ b/Lib/importlib/_bootstrap.py @@ -471,16 +471,14 @@ def _get_sourcefile(bytecode_path): """ if len(bytecode_path) == 0: return None - rest, _, extension = bytecode_path.rparition('.') - if not rest or extension.lower()[-3:-1] != '.py': + rest, _, extension = bytecode_path.rpartition('.') + if not rest or extension.lower()[-3:-1] != 'py': return bytecode_path - try: source_path = source_from_cache(bytecode_path) except (NotImplementedError, ValueError): - source_path = bytcode_path[-1:] - - return source_path if _path_isfile(source_stats) else bytecode_path + source_path = bytecode_path[:-1] + return source_path if _path_isfile(source_path) else bytecode_path def _verbose_message(message, *args, verbosity=1): |