mirror of
https://github.com/python/cpython.git
synced 2025-08-22 17:55:18 +00:00
bpo-30177: pathlib: include the full path in resolve(strict=False) (#1893)
This commit is contained in:
parent
ff48739ed0
commit
add98eb4fe
3 changed files with 21 additions and 20 deletions
|
@ -183,19 +183,18 @@ class _WindowsFlavour(_Flavour):
|
|||
if strict:
|
||||
return self._ext_to_normal(_getfinalpathname(s))
|
||||
else:
|
||||
tail_parts = [] # End of the path after the first one not found
|
||||
while True:
|
||||
try:
|
||||
s = self._ext_to_normal(_getfinalpathname(s))
|
||||
except FileNotFoundError:
|
||||
previous_s = s
|
||||
s = os.path.dirname(s)
|
||||
s, tail = os.path.split(s)
|
||||
tail_parts.append(tail)
|
||||
if previous_s == s:
|
||||
return path
|
||||
else:
|
||||
if previous_s is None:
|
||||
return s
|
||||
else:
|
||||
return s + os.path.sep + os.path.basename(previous_s)
|
||||
return os.path.join(s, *reversed(tail_parts))
|
||||
# Means fallback on absolute
|
||||
return None
|
||||
|
||||
|
@ -326,12 +325,10 @@ class _PosixFlavour(_Flavour):
|
|||
try:
|
||||
target = accessor.readlink(newpath)
|
||||
except OSError as e:
|
||||
if e.errno != EINVAL:
|
||||
if strict:
|
||||
raise
|
||||
else:
|
||||
return newpath
|
||||
# Not a symlink
|
||||
if e.errno != EINVAL and strict:
|
||||
raise
|
||||
# Not a symlink, or non-strict mode. We just leave the path
|
||||
# untouched.
|
||||
path = newpath
|
||||
else:
|
||||
seen[newpath] = None # not resolved symlink
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue