#15180: Clarify posixpath.join() error message when mixing str & bytes

This commit is contained in:
Hynek Schlawack 2012-07-15 16:21:30 +02:00
parent a3d1cac4b2
commit 4774946c3b
3 changed files with 24 additions and 8 deletions

View file

@ -74,13 +74,20 @@ def join(a, *p):
will be discarded."""
sep = _get_sep(a)
path = a
for b in p:
if b.startswith(sep):
path = b
elif not path or path.endswith(sep):
path += b
try:
for b in p:
if b.startswith(sep):
path = b
elif not path or path.endswith(sep):
path += b
else:
path += sep + b
except TypeError:
strs = [isinstance(s, str) for s in (a, ) + p]
if any(strs) and not all(strs):
raise TypeError("Can't mix strings and bytes in path components.")
else:
path += sep + b
raise
return path