mirror of
https://github.com/python/cpython.git
synced 2025-07-24 11:44:31 +00:00
GH-113568: Stop raising auditing events from pathlib ABCs (#113571)
Raise auditing events in `pathlib.Path.glob()`, `rglob()` and `walk()`, but not in `pathlib._abc.PathBase` methods. Also move generation of a deprecation warning into `pathlib.Path` so it gets the right stack level.
This commit is contained in:
parent
99854ce170
commit
3c4e972d6d
5 changed files with 64 additions and 35 deletions
|
@ -811,18 +811,6 @@ class PathBase(PurePathBase):
|
|||
"""Iterate over this subtree and yield all existing files (of any
|
||||
kind, including directories) matching the given relative pattern.
|
||||
"""
|
||||
sys.audit("pathlib.Path.glob", self, pattern)
|
||||
return self._glob(pattern, case_sensitive, follow_symlinks)
|
||||
|
||||
def rglob(self, pattern, *, case_sensitive=None, follow_symlinks=None):
|
||||
"""Recursively yield all existing files (of any kind, including
|
||||
directories) matching the given relative pattern, anywhere in
|
||||
this subtree.
|
||||
"""
|
||||
sys.audit("pathlib.Path.rglob", self, pattern)
|
||||
return self._glob(f'**/{pattern}', case_sensitive, follow_symlinks)
|
||||
|
||||
def _glob(self, pattern, case_sensitive, follow_symlinks):
|
||||
path_pattern = self.with_segments(pattern)
|
||||
if path_pattern.drive or path_pattern.root:
|
||||
raise NotImplementedError("Non-relative patterns are unsupported")
|
||||
|
@ -833,14 +821,6 @@ class PathBase(PurePathBase):
|
|||
if pattern[-1] in (self.pathmod.sep, self.pathmod.altsep):
|
||||
# GH-65238: pathlib doesn't preserve trailing slash. Add it back.
|
||||
pattern_parts.append('')
|
||||
if pattern_parts[-1] == '**':
|
||||
# GH-70303: '**' only matches directories. Add trailing slash.
|
||||
warnings.warn(
|
||||
"Pattern ending '**' will match files and directories in a "
|
||||
"future Python release. Add a trailing slash to match only "
|
||||
"directories and remove this warning.",
|
||||
FutureWarning, 3)
|
||||
pattern_parts.append('')
|
||||
|
||||
if case_sensitive is None:
|
||||
# TODO: evaluate case-sensitivity of each directory in _select_children().
|
||||
|
@ -895,9 +875,16 @@ class PathBase(PurePathBase):
|
|||
paths = _select_children(paths, dir_only, follow_symlinks, match)
|
||||
return paths
|
||||
|
||||
def rglob(self, pattern, *, case_sensitive=None, follow_symlinks=None):
|
||||
"""Recursively yield all existing files (of any kind, including
|
||||
directories) matching the given relative pattern, anywhere in
|
||||
this subtree.
|
||||
"""
|
||||
return self.glob(
|
||||
f'**/{pattern}', case_sensitive=case_sensitive, follow_symlinks=follow_symlinks)
|
||||
|
||||
def walk(self, top_down=True, on_error=None, follow_symlinks=False):
|
||||
"""Walk the directory tree from this directory, similar to os.walk()."""
|
||||
sys.audit("pathlib.Path.walk", self, on_error, follow_symlinks)
|
||||
paths = [self]
|
||||
|
||||
while paths:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue