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`.
This commit is contained in:
Barney Gale 2024-01-04 20:48:26 +00:00 committed by GitHub
parent 4681a5271a
commit c2e8298eba
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 8 additions and 1 deletions

View File

@ -301,7 +301,13 @@ class Path(_abc.PathBase, PurePath):
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

View File

@ -0,0 +1 @@
Speed up :meth:`pathlib.Path.glob` by using :attr:`os.DirEntry.path` where possible.