bpo-33660: Fix corner-case in PosixPath.resolve resulting in "//path"
#21971
+20
−1
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR is provisional, a bpo doesn't exist yet.
On POSIX, when
Path.cwd() == Path("/")
, thenPath("path").resolve() == Path("//var")
This is because the normal case is that
sep
must be added between the base path and the relative path, as the prefix/base does not usually end withsep
itself. In this respect, the root directoryPath("/")
is a corner-case that I believe was previously missed.A consequence of this can be that the
relative_to
method raises an error, even though the intent was to just normalize different both absolute and relative paths to relative paths:https://bugs.python.org/issue33660