diff options
author | Brett Cannon <brett@python.org> | 2012-04-22 15:45:07 (GMT) |
---|---|---|
committer | Brett Cannon <brett@python.org> | 2012-04-22 15:45:07 (GMT) |
commit | 5c903e6ee17a686ec85f8557595cc664bfce5de5 (patch) | |
tree | dcee8e7659d470f281bf06138068290a41c3e66f /Lib/importlib/_bootstrap.py | |
parent | ce9bb9eaa057dbac9950baf3008e9e17c1390468 (diff) | |
download | cpython-5c903e6ee17a686ec85f8557595cc664bfce5de5.zip cpython-5c903e6ee17a686ec85f8557595cc664bfce5de5.tar.gz cpython-5c903e6ee17a686ec85f8557595cc664bfce5de5.tar.bz2 |
Issue #13959: Continue to try to accomodate altsep in importlib by not
ignoring altsep if it already exists on a path when doing a join.
Diffstat (limited to 'Lib/importlib/_bootstrap.py')
-rw-r--r-- | Lib/importlib/_bootstrap.py | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/Lib/importlib/_bootstrap.py b/Lib/importlib/_bootstrap.py index a705bf8..04ceb56 100644 --- a/Lib/importlib/_bootstrap.py +++ b/Lib/importlib/_bootstrap.py @@ -61,12 +61,16 @@ def _r_long(int_bytes): return x -# XXX Optimize for single-separator OSs by having two versions of this function -# and choosing in _setup(). -def _path_join(*args): +def _path_join(*path_parts): """Replacement for os.path.join().""" - return path_sep.join(x[:-len(path_sep)] if x.endswith(path_sep) else x - for x in args if x) + new_parts = [] + for part in path_parts: + if not part: + continue + new_parts.append(part) + if part[-1] not in path_separators: + new_parts.append(path_sep) + return ''.join(new_parts[:-1]) # Drop superfluous path separator. def _path_split(path): @@ -1178,6 +1182,8 @@ def _setup(sys_module, _imp_module): os_details = ('posix', ['/']), ('nt', ['\\', '/']), ('os2', ['\\', '/']) for builtin_os, path_separators in os_details: + # Assumption made in _path_join() + assert all(len(sep) == 1 for sep in path_separators) path_sep = path_separators[0] if builtin_os in sys.modules: os_module = sys.modules[builtin_os] |