diff --git a/Lib/pathlib/__init__.py b/Lib/pathlib/__init__.py index c272ac4dddd40d..f44283a53e5704 100644 --- a/Lib/pathlib/__init__.py +++ b/Lib/pathlib/__init__.py @@ -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