bpo-22276: Fix pathlib.Path.glob not to ignore trailing path separator by e-kwsm · Pull Request #10349 · python/cpython

I propose simpler patch:

diff --git a/Lib/pathlib.py b/Lib/pathlib.py
index 4763ab54f6..a759db1684 100644
--- a/Lib/pathlib.py
+++ b/Lib/pathlib.py
@@ -281,7 +281,9 @@ def make_uri(self, path):
 def _make_selector(pattern_parts, flavour):
     pat = pattern_parts[0]
     child_parts = pattern_parts[1:]
-    if pat == '**':
+    if not pat:
+        return _TerminatingSelector()
+    elif pat == '**':
         cls = _RecursiveWildcardSelector
     elif '**' in pat:
         raise ValueError("Invalid pattern: '**' can only be an entire path component")
@@ -943,6 +945,8 @@ def glob(self, pattern):
         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 @@ def rglob(self, pattern):
         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