Victor Hugo Gomes
136443b71b
[flake8-async
] Mark autofix for ASYNC115
as unsafe if the call expression contains comments ( #18753 )
...
Co-authored-by: Micha Reiser <micha@reiser.io>
2025-06-19 13:01:33 +02:00
Victor Hugo Gomes
f7a741a99e
[flake8-bugbear
] Mark autofix for B004
as unsafe if the hasattr
call expr contains comments ( #18755 )
2025-06-19 10:46:53 +00:00
Charlie Marsh
4c8d612120
Enforce pytest
import for decorators ( #18779 )
2025-06-19 09:49:34 +00:00
Victor Hugo Gomes
65b288b45b
[flake8-comprehension
] Mark autofix for C420
as unsafe if there's comments inside the dict comprehension ( #18768 )
2025-06-19 09:43:05 +00:00
chiri
06da2c808f
[flake8-async] fix detection for large integer sleep durations in ASYNC116
rule ( #18767 )
...
Co-authored-by: Micha Reiser <micha@reiser.io>
2025-06-19 09:37:20 +00:00
renovate[bot]
55a2ff91c7
Update dependency ruff to v0.12.0 ( #18790 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-19 09:32:47 +00:00
renovate[bot]
d6705f4700
Update taiki-e/install-action action to v2.53.2 ( #18789 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-19 09:31:46 +00:00
Frazer McLean
f67ff33177
Add lint rule for calling chmod with non-octal integers ( #18541 )
...
Co-authored-by: Micha Reiser <micha@reiser.io>
2025-06-19 11:30:29 +02:00
Nikolas Hearp
dcf0a8d4d7
Mark RET501
fix unsafe if comments are inside ( #18780 )
...
Co-authored-by: Charlie Marsh <crmarsh416@gmail.com>
2025-06-19 11:12:12 +02:00
Brent Westbrook
e352a50b74
Use LintContext::report_diagnostic_if_enabled
in check_tokens
( #18769 )
...
CI / Determine changes (push) Waiting to run
CI / cargo fmt (push) Waiting to run
CI / cargo clippy (push) Blocked by required conditions
CI / cargo test (linux) (push) Blocked by required conditions
CI / cargo test (linux, release) (push) Blocked by required conditions
CI / cargo test (windows) (push) Blocked by required conditions
CI / cargo test (wasm) (push) Blocked by required conditions
CI / cargo build (release) (push) Waiting to run
CI / cargo build (msrv) (push) Blocked by required conditions
CI / cargo fuzz build (push) Blocked by required conditions
CI / fuzz parser (push) Blocked by required conditions
CI / test scripts (push) Blocked by required conditions
CI / ecosystem (push) Blocked by required conditions
CI / Fuzz for new ty panics (push) Blocked by required conditions
CI / cargo shear (push) Blocked by required conditions
CI / python package (push) Waiting to run
CI / pre-commit (push) Waiting to run
CI / mkdocs (push) Waiting to run
CI / formatter instabilities and black similarity (push) Blocked by required conditions
CI / test ruff-lsp (push) Blocked by required conditions
CI / check playground (push) Blocked by required conditions
CI / benchmarks-instrumented (push) Blocked by required conditions
CI / benchmarks-walltime (push) Blocked by required conditions
## Summary
This PR avoids the `Vec::retain` call in `check_tokens` by checking if
rules are enabled as their diagnostics are constructed.
2a425e43fd/crates/ruff_linter/src/checkers/tokens.rs (L174-L176)
Since `LintContext::report_diagnostic_if_enabled` required a
`LinterSettings`, I added a `settings` field to the context itself
instead of trying to pass it everywhere. This also turned
`LogicalLinesContext` into a trivial wrapper around `LintContext`, so I
just removed it in favor of using `LintContext` directly too.
The diff is a bit smaller with whitespace hidden since many blocks got
moved into something like this:
```rust
if let Some(mut diagnostic) = context.report_diagnostic.enabled(...) {
// old code
}
```
## Test Plan
Existing tests
2025-06-18 17:05:36 -04:00
sobolevn
2a425e43fd
[UP008]: use super()
, not __super__
in error messages ( #18743 )
...
CI / Determine changes (push) Waiting to run
CI / cargo fmt (push) Waiting to run
CI / cargo clippy (push) Blocked by required conditions
CI / cargo test (linux) (push) Blocked by required conditions
CI / cargo test (linux, release) (push) Blocked by required conditions
CI / cargo test (windows) (push) Blocked by required conditions
CI / cargo test (wasm) (push) Blocked by required conditions
CI / cargo build (release) (push) Waiting to run
CI / cargo build (msrv) (push) Blocked by required conditions
CI / cargo fuzz build (push) Blocked by required conditions
CI / fuzz parser (push) Blocked by required conditions
CI / test scripts (push) Blocked by required conditions
CI / ecosystem (push) Blocked by required conditions
CI / Fuzz for new ty panics (push) Blocked by required conditions
CI / cargo shear (push) Blocked by required conditions
CI / python package (push) Waiting to run
CI / pre-commit (push) Waiting to run
CI / mkdocs (push) Waiting to run
CI / formatter instabilities and black similarity (push) Blocked by required conditions
CI / test ruff-lsp (push) Blocked by required conditions
CI / check playground (push) Blocked by required conditions
CI / benchmarks-instrumented (push) Blocked by required conditions
CI / benchmarks-walltime (push) Blocked by required conditions
[ty Playground] Release / publish (push) Has been cancelled
When I try to grep CPython with `__super__` I get 0 results:
```
(.venv) ~/Desktop/cpython main ✔
» ag __super__ .
```
That's how we can understand that the naming is not the best.
2025-06-18 13:57:57 -04:00
Zanie Blue
cb512ba80b
Use Depot Windows runners for cargo test
( #18754 )
...
From 6m 15s -> 3m 54s (total runtime)
See also https://github.com/astral-sh/uv/pull/14122
We don't use a Dev Drive here so this is trivial (ref #15664 )
2025-06-18 10:52:24 -05:00
Micha Reiser
97af091d5d
Run ty benchmarks when ruff_benchmark
changes ( #18758 )
2025-06-18 17:43:19 +02:00
Micha Reiser
1188ffccc4
Disallow newlines in format specifiers of single quoted f- or t-strings ( #18708 )
2025-06-18 14:56:15 +02:00
Micha Reiser
23261a38a0
[ty] Add more benchmarks ( #18714 )
CI / benchmarks-instrumented (push) Blocked by required conditions
CI / benchmarks-walltime (push) Blocked by required conditions
CI / Determine changes (push) Waiting to run
CI / cargo fmt (push) Waiting to run
CI / cargo clippy (push) Blocked by required conditions
CI / cargo test (linux) (push) Blocked by required conditions
CI / cargo test (linux, release) (push) Blocked by required conditions
CI / cargo test (windows) (push) Blocked by required conditions
CI / cargo test (wasm) (push) Blocked by required conditions
CI / cargo build (release) (push) Waiting to run
CI / cargo build (msrv) (push) Blocked by required conditions
CI / cargo fuzz build (push) Blocked by required conditions
CI / fuzz parser (push) Blocked by required conditions
CI / test scripts (push) Blocked by required conditions
CI / ecosystem (push) Blocked by required conditions
CI / Fuzz for new ty panics (push) Blocked by required conditions
CI / cargo shear (push) Blocked by required conditions
CI / python package (push) Waiting to run
CI / pre-commit (push) Waiting to run
CI / mkdocs (push) Waiting to run
CI / formatter instabilities and black similarity (push) Blocked by required conditions
CI / test ruff-lsp (push) Blocked by required conditions
CI / check playground (push) Blocked by required conditions
[ty Playground] Release / publish (push) Waiting to run
2025-06-18 13:41:38 +02:00
Micha Reiser
37fdece72f
[ty] Anchor all exclude patterns ( #18685 )
...
Co-authored-by: Andrew Gallant <andrew@astral.sh>
2025-06-18 08:57:36 +00:00
Dhruv Manilawala
8184dae287
Include changelog reference for other major versions ( #18745 )
...
Add references to changelog files for other major versions in the main
CHANGELOG.md file.
[Rendered](https://github.com/astral-sh/ruff/blob/dhruv/other-changelog/CHANGELOG.md )
2025-06-18 07:05:43 +00:00
Matthias Hörtenhuber
a2cd6df429
Use updated pre-commit id ( #18718 )
...
CI / Determine changes (push) Waiting to run
CI / cargo fmt (push) Waiting to run
CI / cargo clippy (push) Blocked by required conditions
CI / cargo test (linux) (push) Blocked by required conditions
CI / cargo test (linux, release) (push) Blocked by required conditions
CI / cargo test (windows) (push) Blocked by required conditions
CI / cargo test (wasm) (push) Blocked by required conditions
CI / cargo build (release) (push) Waiting to run
CI / cargo build (msrv) (push) Blocked by required conditions
CI / cargo fuzz build (push) Blocked by required conditions
CI / fuzz parser (push) Blocked by required conditions
CI / test scripts (push) Blocked by required conditions
CI / ecosystem (push) Blocked by required conditions
CI / Fuzz for new ty panics (push) Blocked by required conditions
CI / cargo shear (push) Blocked by required conditions
CI / python package (push) Waiting to run
CI / pre-commit (push) Waiting to run
CI / mkdocs (push) Waiting to run
CI / formatter instabilities and black similarity (push) Blocked by required conditions
CI / test ruff-lsp (push) Blocked by required conditions
CI / check playground (push) Blocked by required conditions
CI / benchmarks (push) Blocked by required conditions
[ty Playground] Release / publish (push) Waiting to run
## Summary
Update pre-commit hook id according to
https://github.com/astral-sh/ruff-pre-commit/pull/124
2025-06-17 14:12:11 -04:00
Brent Westbrook
9220addf52
Split the changelog into separate files ( #18725 )
...
Summary
--
During the release today, I noticed that the changelog is finally too
long to
render at all on GitHub. This PR follows the same splitting procedure as
in
uv (astral-sh/uv#11510 , astral-sh/uv#12099 ): first splitting the file
into one
per minor version, and then reversing the contents of each file to start
with
the breaking release (`changelogs/0.11.x.md` starts with 0.11.0 instead
of
0.11.13 as in the old changelog).
For the second part, I used
[`reverse-changelog.py`](https://github.com/astral-sh/uv/blob/main/scripts/reverse-changelog.py )
from the uv repo, so hopefully everything is correct. I spot-checked
0.7.0 at least.
2025-06-17 13:27:36 -04:00
Alperen Keleş
932f941d15
[ty] fix binary expression inference between boolean literals and bool
instances ( #18663 )
2025-06-17 18:02:40 +01:00
Brent Westbrook
87f0feb21a
Bump 0.12.0 ( #18724 )
...
- [x] Updated changelog
- [x] Updated breaking changes
2025-06-17 11:05:59 -04:00
Alex Waygood
685eac10e5
Revert "[ty] Offer "Did you mean...?" suggestions for unresolved from
imports and unresolved attributes ( #18705 )" ( #18721 )
2025-06-17 15:48:09 +01:00
Dylan
a93992fa30
[flake8-return
] Stabilize only add return None
at the end when fixing implicit-return
(RET503
) ( #18516 )
...
This involved slightly more code changes than usual for a stabilization
- so maybe worth double-checking the logic!
I did verify by hand that the new stable behavior on the test fixture
matches the old preview behavior, even after the internal refactor.
2025-06-17 09:58:12 -04:00
Brent Westbrook
50f84808bc
[pyupgrade
] Stabilize non-pep695-generic-function
(UP047
) ( #18524 )
...
## Summary
- Stabilizes UP047 (non-pep695-generic-function) rule by changing it
from Preview to Stable
## Test plan
- ✅ Rule is already tested in main test function, no migration needed
- ✅ `make check` passes
- ✅ `make test` passes
## Rule Documentation
- [Test
file](https://github.com/astral-sh/ruff/blob/main/crates/ruff_linter/src/rules/pyupgrade/mod.rs#L111 )
- [Rule
documentation](https://docs.astral.sh/ruff/rules/non-pep695-generic-function/ )
2025-06-17 09:58:12 -04:00
Brent Westbrook
6754e94abc
[pyupgrade
] Stabilize non-pep695-generic-class
(UP046
) ( #18519 )
...
## Summary
- Stabilizes UP046 (non-pep695-generic-class) rule by changing it from
Preview to Stable
## Test plan
- ✅ Rule is already tested in main test function, no migration needed
- ✅ `make check` passes
- ✅ `make test` passes
## Rule Documentation
- [Test
file](https://github.com/astral-sh/ruff/blob/main/crates/ruff_linter/src/rules/pyupgrade/mod.rs#L109-L110 )
- [Rule
documentation](https://docs.astral.sh/ruff/rules/non-pep695-generic-class/ )
2025-06-17 09:58:12 -04:00
Brent Westbrook
33c8c7569d
[pandas-vet
] Deprecate pandas-df-variable-name
(PD901
) ( #18618 )
...
Summary
--
Deprecates PD901 as part of #7710 . I don't feel particularly strongly
about this one, though I have certainly used `df` as a dataframe name in
the past, just going through the open issues in the 0.12 milestone.
Test Plan
--
N/a
2025-06-17 09:58:12 -04:00
Brent Westbrook
34dc8e0531
[flake8-bandit
] Remove suspicious-xmle-tree-usage
(S320
) ( #18617 )
...
Summary
--
Closes #13707 . The rule was deprecated in 0.10 (#16680 ) and slated for
removal in either this or the next release.
Test Plan
--
N/a
2025-06-17 09:58:12 -04:00
Dylan
b01195b166
Stabilize dataclass-enum
(RUF049
) ( #18570 )
...
Co-authored-by: Brent Westbrook <brentrwestbrook@gmail.com>
2025-06-17 09:58:12 -04:00
Dylan
ce176b1acf
Stabilize unnecessary-dict-index-lookup
(PLR1733
) ( #18571 )
...
Co-authored-by: Brent Westbrook <brentrwestbrook@gmail.com>
2025-06-17 09:58:12 -04:00
Micha Reiser
7072cf69b4
Remove rust-toolchain.toml from sdist ( #17925 )
...
Closes https://github.com/astral-sh/ruff/issues/17909
2025-06-17 09:58:12 -04:00
Brent Westbrook
72c8dc006f
Stabilize starmap-zip
(RUF058
) ( #18525 )
...
## Summary
- Stabilizes RUF058 (starmap-zip) rule by changing it from Preview to
Stable
- Migrates test cases from preview_rules to main rules function
- Updates snapshots accordingly and removes old preview snapshots
## Test plan
- ✅ Migrated tests from preview to main test function
- ✅ `make check` passes
- ✅ `make test` passes
- ✅ `make citest` passes (no leftover snapshots)
## Rule Documentation
- [Test
file](https://github.com/astral-sh/ruff/blob/main/crates/ruff_linter/src/rules/ruff/mod.rs#L103-L104 )
- [Rule documentation](https://docs.astral.sh/ruff/rules/starmap-zip/ )
2025-06-17 09:58:12 -04:00
Brent Westbrook
ad9ae4e2b6
[flake8-logging
] Stabilize exc-info-outside-except-handler
(LOG014
) ( #18517 )
...
## Summary
- Stabilizes LOG014 (exc-info-outside-except-handler) rule by changing
it from Preview to Stable
## Test plan
- ✅ Rule is already tested in main test function, no migration needed
- ✅ `make check` passes
- ✅ `make test` passes
## Rule Documentation
- [Test
file](https://github.com/astral-sh/ruff/blob/main/crates/ruff_linter/src/rules/flake8_logging/mod.rs#L22-L23 )
- [Rule
documentation](https://docs.astral.sh/ruff/rules/exc-info-outside-except-handler/ )
2025-06-17 09:58:12 -04:00
Dylan
de4fc5b171
[pyupgrade
] Stabilize non-pep604-annotation-optional
(UP045
) and preview behavior for non-pep604-annotation-union
(UP007
) ( #18505 )
2025-06-17 09:58:12 -04:00
Dylan
56f2aaaebc
Stabilize pytest-warns-too-broad
(PT030
) ( #18568 )
2025-06-17 09:58:12 -04:00
Dylan
ebd2a27559
Stabilize for-loop-writes
(FURB122
) ( #18565 )
2025-06-17 09:58:12 -04:00
Dylan
1278e3442a
Stabilize pytest-warns-with-multiple-statements
(PT031
) ( #18569 )
2025-06-17 09:58:12 -04:00
Dylan
7efbf469dd
Stabilize pytest-parameter-with-default-argument
(PT028
) ( #18566 )
2025-06-17 09:58:12 -04:00
Dylan
2a1fed9327
Stabilize nan-comparison
(PLW0177
) ( #18559 )
2025-06-17 09:58:12 -04:00
Dylan
7de8a0b429
Stabilize check-and-remove-from-set
(FURB132
) ( #18560 )
2025-06-17 09:58:12 -04:00
Dylan
0a1c6cb70b
Stabilize unnecessary-round
(RUF057
) ( #18563 )
2025-06-17 09:58:12 -04:00
Dylan
2dafc5a8bd
Stabilize eq-without-hash
(PLW1641
) ( #18561 )
2025-06-17 09:58:12 -04:00
Dylan
72a4c3ed83
Stabilize int-on-sliced-str
(FURB166
) ( #18558 )
2025-06-17 09:58:12 -04:00
Dylan
e559e21e93
[pylint
] Stabilize import-outside-top-level
(PLC0415
) ( #18554 )
2025-06-17 09:58:12 -04:00
Dylan
c948be495a
[ruff
] Stabilize invalid-formatter-suppression-comment
(RUF028
) ( #18555 )
2025-06-17 09:58:12 -04:00
Dylan
cd245d292e
Stabilize verbose-decimal-constructor
(FURB157
) ( #18556 )
2025-06-17 09:58:12 -04:00
Brent Westbrook
620b84443b
[pyupgrade] Stabilize private-type-parameter (UP049) ( #18515 )
...
## Summary
Stabilizes the UP049 rule (private-type-parameter) by moving it from
Preview to Stable.
UP049 detects and fixes the use of private type parameters (those with
leading underscores) in PEP 695 generic classes and functions.
## Test plan
- Verified that UP049 tests pass:
`crates/ruff_linter/src/rules/pyupgrade/mod.rs`
- Ran full test suite with `make test`
- Confirmed that no test migration was needed as UP049 was already in
the main `rules` test function
## Rule documentation
https://docs.astral.sh/ruff/rules/private-type-parameter/
2025-06-17 09:58:12 -04:00
Dylan
1f70ceba0c
[flake8-boolean-trap
] Stabilize lint bool
suprtypes in boolean-type-hint-positional-argument
(FBT001
) ( #18520 )
...
Feel free to complain about the rephrasing in the docs!
2025-06-17 09:58:12 -04:00
Dylan
00e9de8db9
[flake8-bandit
] Stabilize more trusted inputs in subprocess-without-shell-equals-true
(S603
) ( #18521 )
2025-06-17 09:58:12 -04:00
Dylan
7211660f8b
[flake8-pyi
] Stabilize autofix for future-annotations-in-stub
(PYI044
) ( #18518 )
2025-06-17 09:58:12 -04:00
Dylan
c1610e2eaf
[semantic errors] Stabilize semantic errors ( #18523 )
2025-06-17 09:58:12 -04:00