diff options
| author | Barney Gale <barney.gale@gmail.com> | 2024-04-13 23:08:03 (GMT) |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-04-13 23:08:03 (GMT) |
| commit | a74f117dab369e6c54156c7b2256769fed0c23d0 (patch) | |
| tree | 6db14d7a5be43aadca9df39cb304141f5322dcf8 /Lib/pathlib/_abc.py | |
| parent | 3095d026424f11714f0b7a828c61dc741d4e716b (diff) | |
| download | cpython-a74f117dab369e6c54156c7b2256769fed0c23d0.zip cpython-a74f117dab369e6c54156c7b2256769fed0c23d0.tar.gz cpython-a74f117dab369e6c54156c7b2256769fed0c23d0.tar.bz2 | |
GH-115060: Speed up `pathlib.Path.glob()` by omitting initial `stat()` (#117831)
Since 6258844c, paths that might not exist can be fed into pathlib's
globbing implementation, which will call `os.scandir()` / `os.lstat()` only
when strictly necessary. This allows us to drop an initial `self.is_dir()`
call, which saves a `stat()`.
Co-authored-by: Shantanu <12621235+hauntsaninja@users.noreply.github.com>
Diffstat (limited to 'Lib/pathlib/_abc.py')
| -rw-r--r-- | Lib/pathlib/_abc.py | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/Lib/pathlib/_abc.py b/Lib/pathlib/_abc.py index b51ad6f..05698d5 100644 --- a/Lib/pathlib/_abc.py +++ b/Lib/pathlib/_abc.py @@ -705,10 +705,8 @@ class PathBase(PurePathBase): anchor, parts = pattern._stack if anchor: raise NotImplementedError("Non-relative patterns are unsupported") - if not self.is_dir(): - return iter([]) select = self._glob_selector(parts, case_sensitive, recurse_symlinks) - return select(self, exists=True) + return select(self) def rglob(self, pattern, *, case_sensitive=None, recurse_symlinks=True): """Recursively yield all existing files (of any kind, including |
