GH-123599: Remove duplicate url2pathname() implementation (#127237)

Call `urllib.request.url2pathname()` from `pathlib.Path.from_uri()` rather
than re-implementing it. This paves the way for solving the main issue
(ignoring local authorities and rejecting non-local ones) in urllib, not
pathlib.
This commit is contained in:
Barney Gale 2025-03-19 21:08:32 +00:00 committed by GitHub
parent 75103d975c
commit 63b5aed06e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -1271,21 +1271,8 @@ def from_uri(cls, uri):
"""Return a new path from the given 'file' URI."""
if not uri.startswith('file:'):
raise ValueError(f"URI does not start with 'file:': {uri!r}")
path = uri[5:]
if path[:3] == '///':
# Remove empty authority
path = path[2:]
elif path[:12] == '//localhost/':
# Remove 'localhost' authority
path = path[11:]
if path[:3] == '///' or (path[:1] == '/' and path[2:3] in ':|'):
# Remove slash before DOS device/UNC path
path = path[1:]
if path[1:2] == '|':
# Replace bar with colon in DOS drive
path = path[:1] + ':' + path[2:]
from urllib.parse import unquote_to_bytes
path = cls(os.fsdecode(unquote_to_bytes(path)))
from urllib.request import url2pathname
path = cls(url2pathname(uri.removeprefix('file:')))
if not path.is_absolute():
raise ValueError(f"URI is not absolute: {uri!r}")
return path