https://github.com/python/cpython/commit/10a925c86db4cbcb9324c7269f69f813d3e7ed79
commit: 10a925c86db4cbcb9324c7269f69f813d3e7ed79
branch: main
author: Barney Gale <[email protected]>
committer: barneygale <[email protected]>
date: 2025-07-27T11:44:41Z
summary:
GH-137059: `url2pathname()`: fix support for drive letter in netloc (#137060)
Support file URLs like `file://c:/foo` in `urllib.request.url2pathname()`
on Windows. This restores behaviour from 3.13.
files:
A Misc/NEWS.d/next/Library/2025-07-24-00-38-07.gh-issue-137059.fr64oW.rst
M Lib/test/test_urllib.py
M Lib/urllib/request.py
diff --git a/Lib/test/test_urllib.py b/Lib/test/test_urllib.py
index c30fb5e27eea8a..ae524c5ffba6b1 100644
--- a/Lib/test/test_urllib.py
+++ b/Lib/test/test_urllib.py
@@ -1590,6 +1590,10 @@ def test_url2pathname_resolve_host(self):
def test_url2pathname_win(self):
fn = urllib.request.url2pathname
self.assertEqual(fn('/C:/'), 'C:\\')
+ self.assertEqual(fn('//C:'), 'C:')
+ self.assertEqual(fn('//C:/'), 'C:\\')
+ self.assertEqual(fn('//C:\\'), 'C:\\')
+ self.assertEqual(fn('//C:80/'), 'C:80\\')
self.assertEqual(fn("///C|"), 'C:')
self.assertEqual(fn("///C:"), 'C:')
self.assertEqual(fn('///C:/'), 'C:\\')
diff --git a/Lib/urllib/request.py b/Lib/urllib/request.py
index c1c373d08815c1..af93d4cd75dbef 100644
--- a/Lib/urllib/request.py
+++ b/Lib/urllib/request.py
@@ -1660,7 +1660,10 @@ def url2pathname(url, *, require_scheme=False,
resolve_host=False):
if scheme != 'file':
raise URLError("URL is missing a 'file:' scheme")
if os.name == 'nt':
- if not _is_local_authority(authority, resolve_host):
+ if authority[1:2] == ':':
+ # e.g. file://c:/file.txt
+ url = authority + url
+ elif not _is_local_authority(authority, resolve_host):
# e.g. file://server/share/file.txt
url = '//' + authority + url
elif url[:3] == '///':
diff --git
a/Misc/NEWS.d/next/Library/2025-07-24-00-38-07.gh-issue-137059.fr64oW.rst
b/Misc/NEWS.d/next/Library/2025-07-24-00-38-07.gh-issue-137059.fr64oW.rst
new file mode 100644
index 00000000000000..8c63c1f1af8bf5
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2025-07-24-00-38-07.gh-issue-137059.fr64oW.rst
@@ -0,0 +1,3 @@
+Fix handling of file URLs with a Windows drive letter in the URL authority
+by :func:`urllib.request.url2pathname`. This fixes a regression in earlier
+pre-releases of Python 3.14.
_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3//lists/python-checkins.python.org
Member address: [email protected]