https://github.com/python/cpython/commit/c2e8298eba3f8d75a58e5b3636f8edc8d60e68da
commit: c2e8298eba3f8d75a58e5b3636f8edc8d60e68da
branch: main
author: Barney Gale <[email protected]>
committer: barneygale <[email protected]>
date: 2024-01-04T20:48:26Z
summary:

GH-113225: Speed up `pathlib.Path.glob()` (#113226)

Use `os.DirEntry.path` as the string representation of child paths, unless
the parent path is empty, in which case we use the entry `name`.

files:
A Misc/NEWS.d/next/Library/2023-12-17-04-43-57.gh-issue-113225.dhxhiZ.rst
M Lib/pathlib/__init__.py

diff --git a/Lib/pathlib/__init__.py b/Lib/pathlib/__init__.py
index 2b4193c400a099..79b8b4917f6cc4 100644
--- a/Lib/pathlib/__init__.py
+++ b/Lib/pathlib/__init__.py
@@ -301,7 +301,13 @@ def _scandir(self):
 
     def _make_child_entry(self, entry):
         # Transform an entry yielded from _scandir() into a path object.
-        return self._make_child_relpath(entry.name)
+        path_str = entry.name if str(self) == '.' else entry.path
+        path = self.with_segments(path_str)
+        path._str = path_str
+        path._drv = self.drive
+        path._root = self.root
+        path._tail_cached = self._tail + [entry.name]
+        return path
 
     def absolute(self):
         """Return an absolute version of this path
diff --git 
a/Misc/NEWS.d/next/Library/2023-12-17-04-43-57.gh-issue-113225.dhxhiZ.rst 
b/Misc/NEWS.d/next/Library/2023-12-17-04-43-57.gh-issue-113225.dhxhiZ.rst
new file mode 100644
index 00000000000000..7160cca2e11366
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2023-12-17-04-43-57.gh-issue-113225.dhxhiZ.rst
@@ -0,0 +1 @@
+Speed up :meth:`pathlib.Path.glob` by using :attr:`os.DirEntry.path` where 
possible.

_______________________________________________
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]

Reply via email to