mirror of
https://github.com/python/cpython.git
synced 2025-12-31 04:23:37 +00:00
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:
parent
75103d975c
commit
63b5aed06e
1 changed files with 2 additions and 15 deletions
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue