python / python/cpython

`/a/**` is understood by `Path.full_match` as `/a` followed by multiple segments, at least one

Open
#139,580 8 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

docs topic-pathlib
Dominant language
Python
Stars
77.2k
Forks
35.9k
PR merge metrics
PR metrics pending

Description

Bug report

Bug description:

/a/** is understood by Path.full_match as "/a followed by multiple segments, at least one", instead of "/a followed by multiple segments, including zero".

From https://docs.python.org/3/library/pathlib.html#pathlib-pattern-language

** (entire segment)
Matches any number of file or directory segments, including zero.
# one segment per **
Path('/a/b').full_match('/a/**') # True
# zero segments per **
Path('/a').full_match('/a/**') # False - expected True
# interestingly
Path('/').full_match('/**') # True
CPython versions tested on:

3.13

Operating systems tested on:

Linux

Linked PRs
  • gh-151479

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the pathlib Path.full_match entry point and compare its behavior with the documented pattern language for . Reproduce the /a/ and /** examples, then add regression coverage showing that ** matches zero segments; the linked PR gh-151479 indicates work is already underway.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
operating-systems
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Clearly specified
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.