https://github.com/python/cpython/commit/fbfb0e1f6efae7055f7420c999ad6256e10d6b62
commit: fbfb0e1f6efae7055f7420c999ad6256e10d6b62
branch: main
author: Barney Gale <barney.g...@gmail.com>
committer: barneygale <barney.g...@gmail.com>
date: 2025-03-24T15:12:29Z
summary:

GH-128520: pathlib ABCs: reject empty pattern in `ReadablePath.glob()` (#127343)

For compatibility with `Path.glob()`, raise `ValueError` if an empty
pattern is given to `ReadablePath.glob()`.

files:
M Lib/pathlib/types.py
M Lib/test/test_pathlib/test_read.py

diff --git a/Lib/pathlib/types.py b/Lib/pathlib/types.py
index 85dd9e5b2d6b9a..cd8b2a983379d0 100644
--- a/Lib/pathlib/types.py
+++ b/Lib/pathlib/types.py
@@ -287,6 +287,8 @@ def glob(self, pattern, *, recurse_symlinks=True):
         anchor, parts = _explode_path(pattern)
         if anchor:
             raise NotImplementedError("Non-relative patterns are unsupported")
+        elif not parts:
+            raise ValueError(f"Unacceptable pattern: {pattern!r}")
         elif not recurse_symlinks:
             raise NotImplementedError("recurse_symlinks=False is unsupported")
         case_sensitive = self.parser.normcase('Aa') == 'Aa'
diff --git a/Lib/test/test_pathlib/test_read.py 
b/Lib/test/test_pathlib/test_read.py
index 938d3a1e987128..1a14649fafee80 100644
--- a/Lib/test/test_pathlib/test_read.py
+++ b/Lib/test/test_pathlib/test_read.py
@@ -127,6 +127,8 @@ def check(pattern, expected):
         check("**/file*",
               ["fileA", "dirA/linkC/fileB", "dirB/fileB", "dirC/fileC", 
"dirC/dirD/fileD",
                "linkB/fileB"])
+        with self.assertRaisesRegex(ValueError, 'Unacceptable pattern'):
+            list(p.glob(''))
 
     def test_walk_top_down(self):
         it = self.root.walk()

_______________________________________________
Python-checkins mailing list -- python-checkins@python.org
To unsubscribe send an email to python-checkins-le...@python.org
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: arch...@mail-archive.com

Reply via email to