summaryrefslogtreecommitdiffstats
path: root/Lib/pathlib.py
diff options
context:
space:
mode:
authorEisuke Kawashima <e-kwsm@users.noreply.github.com>2022-04-28 19:45:03 (GMT)
committerGitHub <noreply@github.com>2022-04-28 19:45:03 (GMT)
commitea2f5bcda1a392804487e6883be89fbad38a01a5 (patch)
tree9aa400b03250297948bce5eede3d13075f15fad9 /Lib/pathlib.py
parent0ef8d921f5c6945aa8f386e472c4110b81ac773d (diff)
downloadcpython-ea2f5bcda1a392804487e6883be89fbad38a01a5.zip
cpython-ea2f5bcda1a392804487e6883be89fbad38a01a5.tar.gz
cpython-ea2f5bcda1a392804487e6883be89fbad38a01a5.tar.bz2
bpo-22276: Change pathlib.Path.glob not to ignore trailing path separator (GH-10349)
Now pathlib.Path.glob() **only** matches directories when the pattern ends in a path separator. Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
Diffstat (limited to 'Lib/pathlib.py')
-rw-r--r--Lib/pathlib.py6
1 files changed, 6 insertions, 0 deletions
diff --git a/Lib/pathlib.py b/Lib/pathlib.py
index 4763ab5..1f098fe 100644
--- a/Lib/pathlib.py
+++ b/Lib/pathlib.py
@@ -281,6 +281,8 @@ _posix_flavour = _PosixFlavour()
def _make_selector(pattern_parts, flavour):
pat = pattern_parts[0]
child_parts = pattern_parts[1:]
+ if not pat:
+ return _TerminatingSelector()
if pat == '**':
cls = _RecursiveWildcardSelector
elif '**' in pat:
@@ -943,6 +945,8 @@ class Path(PurePath):
drv, root, pattern_parts = self._flavour.parse_parts((pattern,))
if drv or root:
raise NotImplementedError("Non-relative patterns are unsupported")
+ if pattern[-1] in (self._flavour.sep, self._flavour.altsep):
+ pattern_parts.append('')
selector = _make_selector(tuple(pattern_parts), self._flavour)
for p in selector.select_from(self):
yield p
@@ -956,6 +960,8 @@ class Path(PurePath):
drv, root, pattern_parts = self._flavour.parse_parts((pattern,))
if drv or root:
raise NotImplementedError("Non-relative patterns are unsupported")
+ if pattern[-1] in (self._flavour.sep, self._flavour.altsep):
+ pattern_parts.append('')
selector = _make_selector(("**",) + tuple(pattern_parts), self._flavour)
for p in selector.select_from(self):
yield p