Closed
Description
Bug report
Bug description:
glob.translate(recursive=True)
(new in 3.13) rejects any pattern with a segment that includes **
, unless **
is the entire segment. For example, translate('**a')
is rejected but not translate('**')
Rejecting such segments is longstanding pathlib behaviour, but it has no precedent in the glob module -- glob.glob(recursive=True)
happily accepts such segments.
>>> import glob
>>> glob.glob('**.py', recursive=True)
['blah.py']
>>> glob.translate('**.py', recursive=True)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
glob.translate('**.py', recursive=True)
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/barney/projects/cpython/Lib/glob.py", line 304, in translate
raise ValueError("Invalid pattern: '**' can only be an entire path component")
ValueError: Invalid pattern: '**' can only be an entire path component
translate()
should treat these segments similar to glob()
, and leave the pattern validation stuff to pathlib.
CPython versions tested on:
CPython main branch
Operating systems tested on:
Linux