Skip to content

Drop confusing second * from glob pattern example - #18709

Merged
ntBre merged 1 commit into
mainfrom
brent/fix-per-file-target-version-glob
Jun 16, 2025
Merged

ntBre merged 1 commit into
mainfrom
brent/fix-per-file-target-version-glob

Conversation

@ntBre

@ntBre ntBre commented Jun 16, 2025

Copy link
Copy Markdown
Contributor

Summary

As @AlexWaygood noted on the 0.12 release blog post draft, the existing example is a bit confusing. Either **/*.py or just *.py, as I went with here, makes more sense, although the old version (scripts/**.py) also worked when I tested it. However, this probably shouldn't be relied upon since the globset docs say:

Using ** anywhere else is illegal

where "anywhere else" comes after the listing of the three valid positions:

  1. At the start of a pattern (**/)
  2. At the end of a pattern (/**)
  3. Or directly between two slashes (/**/)

I think the current version is luckily treated the same as a single *, and the default globbing settings allow it to match subdirectories such that the new example pattern will apply to the whole scripts tree in a project like this:

.
├── README.md
├── pyproject.toml
├── scripts
│   ├── matching.py
│   └── sub
│       └── nested.py
└── src
    └── main.py

Test Plan

Local testing of the new pattern, but the specifics of the pattern aren't as important as having a more intuitive-looking/correct example.

Summary
--

As @AlexWaygood noted on the 0.12 release blog post draft, the existing example
is a bit confusing. Either `**/*.py` or just `*.py`, as I went with here, makes
more sense, although the old version (`scripts/**.py`) also worked when I tested
it. However, this probably shouldn't be relied upon since the
[globset](https://docs.rs/globset/latest/globset/#syntax) docs say:

> Using ** anywhere else is illegal

where "anywhere else" comes after the listing of the three valid positions:
1. At the start of a pattern (`**/`)
2. At the end of a pattern (`/**`)
3. Or directly between two slashes (`/**/`)

I think the current version is luckily treated the same as a single `*`, and the
default globbing settings allow it to match subdirectories such that the new
example pattern will apply to the whole `scripts` tree in a project like this:

```
.
├── README.md
├── pyproject.toml
├── scripts
│   ├── matching.py
│   └── sub
│       └── nested.py
└── src
    └── main.py
```

Test Plan
--

Local testing of the new pattern, but the specifics of the pattern aren't as
important as having a more intuitive-looking/correct example.
@ntBre ntBre added the documentation Improvements or additions to public-facing documentation label Jun 16, 2025
@ntBre
ntBre requested a review from MichaReiser June 16, 2025 14:09
@github-actions

Copy link
Copy Markdown
Contributor

ruff-ecosystem results

Linter (stable)

✅ ecosystem check detected no linter changes.

Linter (preview)

✅ ecosystem check detected no linter changes.

@ntBre
ntBre merged commit ee3152d into main Jun 16, 2025
@ntBre
ntBre deleted the brent/fix-per-file-target-version-glob branch June 16, 2025 14:41
dcreager added a commit that referenced this pull request Jun 16, 2025
* main: (38 commits)
  [`pyupgrade`] Suppress `UP008` diagnostic if `super` symbol is not builtin (#18688)
  [pylint] Fix `PLW0128` to check assignment targets in square brackets and after asterisks (#18665)
  [`refurb`] Make the fix for `FURB163` unsafe for `log2`, `log10`, `*args`, and deleted comments (#18645)
  [ty] allow `T: Never` as subtype of `Never` (#18687)
  [ty] Use more parallelism when running corpus tests (#18711)
  [ty] Support `dataclasses.KW_ONLY` (#18677)
  [`ruff`] Check for non-context-manager use of `pytest.raises`, `pytest.warns`, and `pytest.deprecated_call` (`RUF061`) (#17368)
  Add syntax error when conversion flag does not immediately follow exclamation mark (#18706)
  [`flake8-pyi`] Fix `custom-typevar-for-self` with string annotations (`PYI019`) (#18311)
  Drop confusing second `*` from glob pattern example (#18709)
  [ty] Stabilize completions (#18650)
  [ty] Correctly label typeshed-sync PRs (#18702)
  Update Rust crate memchr to v2.7.5 (#18696)
  Update dependency react-resizable-panels to v3.0.3 (#18691)
  Update Rust crate clap to v4.5.40 (#18692)
  Update Rust crate libcst to v1.8.2 (#18695)
  Update Rust crate jiff to v0.2.15 (#18693)
  Update Rust crate libc to v0.2.173 (#18694)
  Update Rust crate syn to v2.0.103 (#18698)
  Update Rust crate toml to v0.8.23 (#18699)
  ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to public-facing documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants