https://github.com/python/cpython/commit/9ee94d139197c0df8f4e096957576d124ad31c8e
commit: 9ee94d139197c0df8f4e096957576d124ad31c8e
branch: main
author: Nice Zombies <[email protected]>
committer: hauntsaninja <[email protected]>
date: 2024-04-14T14:04:14-07:00
summary:
gh-117636: Remove redundant type check in `os.path.join()` (#117638)
files:
A Misc/NEWS.d/next/Core and
Builtins/2024-04-08-14-33-38.gh-issue-117636.exnRKd.rst
M Lib/ntpath.py
M Lib/posixpath.py
M Lib/test/test_posixpath.py
diff --git a/Lib/ntpath.py b/Lib/ntpath.py
index f5d1a2195dd633..aba18bfe407abf 100644
--- a/Lib/ntpath.py
+++ b/Lib/ntpath.py
@@ -108,8 +108,6 @@ def join(path, *paths):
seps = '\\/'
colon_seps = ':\\/'
try:
- if not paths:
- path[:0] + sep #23780: Ensure compatible data type even if p is
null.
result_drive, result_root, result_path = splitroot(path)
for p in paths:
p_drive, p_root, p_path = splitroot(p)
diff --git a/Lib/posixpath.py b/Lib/posixpath.py
index 8fd49cdc358908..dd29fbb1614aa8 100644
--- a/Lib/posixpath.py
+++ b/Lib/posixpath.py
@@ -77,13 +77,11 @@ def join(a, *p):
sep = _get_sep(a)
path = a
try:
- if not p:
- path[:0] + sep #23780: Ensure compatible data type even if p is
null.
for b in p:
b = os.fspath(b)
- if b.startswith(sep):
+ if b.startswith(sep) or not path:
path = b
- elif not path or path.endswith(sep):
+ elif path.endswith(sep):
path += b
else:
path += sep + b
diff --git a/Lib/test/test_posixpath.py b/Lib/test/test_posixpath.py
index 248fe2cc5d5ca8..7c122e6204b100 100644
--- a/Lib/test/test_posixpath.py
+++ b/Lib/test/test_posixpath.py
@@ -56,6 +56,8 @@ def test_join(self):
self.assertEqual(fn(b"/foo", b"bar", b"baz"), b"/foo/bar/baz")
self.assertEqual(fn(b"/foo/", b"bar/", b"baz/"),
b"/foo/bar/baz/")
+ self.assertEqual(fn("a", ""), "a/")
+ self.assertEqual(fn("a", "", ""), "a/")
self.assertEqual(fn("a", "b"), "a/b")
self.assertEqual(fn("a", "b/"), "a/b/")
self.assertEqual(fn("a/", "b"), "a/b")
diff --git a/Misc/NEWS.d/next/Core and
Builtins/2024-04-08-14-33-38.gh-issue-117636.exnRKd.rst b/Misc/NEWS.d/next/Core
and Builtins/2024-04-08-14-33-38.gh-issue-117636.exnRKd.rst
new file mode 100644
index 00000000000000..7d7cb506352193
--- /dev/null
+++ b/Misc/NEWS.d/next/Core and
Builtins/2024-04-08-14-33-38.gh-issue-117636.exnRKd.rst
@@ -0,0 +1 @@
+Speedup :func:`os.path.join`.
_______________________________________________
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]