From 87f849c775ca54f56ad60ebf96822b93bbd0029a Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Wed, 11 May 2022 07:43:04 +0300 Subject: gh-92550: Fix pathlib.Path.rglob() for empty pattern (GH-92604) --- Lib/pathlib.py | 2 +- Lib/test/test_pathlib.py | 5 +++++ .../next/Library/2022-05-10-07-57-27.gh-issue-92550.Rk_UzM.rst | 1 + 3 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 Misc/NEWS.d/next/Library/2022-05-10-07-57-27.gh-issue-92550.Rk_UzM.rst diff --git a/Lib/pathlib.py b/Lib/pathlib.py index 67b7446..c608ba0 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 0d0c2f1..964cc85 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 0000000..1f0fde3 --- /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. -- cgit v0.12