From: Serhiy Storchaka Date: Wed, 11 May 2022 04:43:04 +0000 (+0300) Subject: gh-92550: Fix pathlib.Path.rglob() for empty pattern (GH-92604) X-Git-Tag: v3.12.0a1~1588 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=87f849c775ca54f56ad60ebf96822b93bbd0029a;p=thirdparty%2FPython%2Fcpython.git gh-92550: Fix pathlib.Path.rglob() for empty pattern (GH-92604) --- diff --git a/Lib/pathlib.py b/Lib/pathlib.py index 67b744604c18..c608ba0954f3 100644 --- a/Lib/pathlib.py +++ b/Lib/pathlib.py @@ -960,7 +960,7 @@ 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): + if pattern and 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): diff --git a/Lib/test/test_pathlib.py b/Lib/test/test_pathlib.py index 0d0c2f1eccb8..964cc85d5315 100644 --- a/Lib/test/test_pathlib.py +++ b/Lib/test/test_pathlib.py @@ -1693,10 +1693,15 @@ class _BasePathTest(object): "dirA", "dirA/linkC", "dirB", "dirB/linkD", "dirC", "dirC/dirD", "dirE", "linkB", ]) + _check(p.rglob(""), ["", "dirA", "dirB", "dirC", "dirE", "dirC/dirD"]) p = P(BASE, "dirC") + _check(p.rglob("*"), ["dirC/fileC", "dirC/novel.txt", + "dirC/dirD", "dirC/dirD/fileD"]) _check(p.rglob("file*"), ["dirC/fileC", "dirC/dirD/fileD"]) _check(p.rglob("*/*"), ["dirC/dirD/fileD"]) + _check(p.rglob("*/"), ["dirC/dirD"]) + _check(p.rglob(""), ["dirC", "dirC/dirD"]) # gh-91616, a re module regression _check(p.rglob("*.txt"), ["dirC/novel.txt"]) _check(p.rglob("*.*"), ["dirC/novel.txt"]) diff --git a/Misc/NEWS.d/next/Library/2022-05-10-07-57-27.gh-issue-92550.Rk_UzM.rst b/Misc/NEWS.d/next/Library/2022-05-10-07-57-27.gh-issue-92550.Rk_UzM.rst new file mode 100644 index 000000000000..1f0fde31108a --- /dev/null +++ b/Misc/NEWS.d/next/Library/2022-05-10-07-57-27.gh-issue-92550.Rk_UzM.rst @@ -0,0 +1 @@ +Fix :meth:`pathlib.Path.rglob` for empty pattern.