Skip to content

Commit e5f2f36

Browse files
authored
Bump 0.15.3 (#23585)
1 parent 0e19fc9 commit e5f2f36

14 files changed

Lines changed: 103 additions & 20 deletions

File tree

CHANGELOG.md

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,88 @@
11
# Changelog
22

3+
## 0.15.3
4+
5+
Released on 2026-02-26.
6+
7+
### Preview features
8+
9+
- Drop explicit support for `.qmd` file extension ([#23572](https://github.com/astral-sh/ruff/pull/23572))
10+
11+
This can now be enabled instead by setting the [`extension`](https://docs.astral.sh/ruff/settings/#extension) option:
12+
13+
```toml
14+
# ruff.toml
15+
extension = { qmd = "markdown" }
16+
17+
# pyproject.toml
18+
[tool.ruff]
19+
extension = { qmd = "markdown" }
20+
```
21+
22+
- Include configured extensions in file discovery ([#23400](https://github.com/astral-sh/ruff/pull/23400))
23+
24+
- \[`flake8-bandit`\] Allow suspicious imports in `TYPE_CHECKING` blocks (`S401`-`S415`) ([#23441](https://github.com/astral-sh/ruff/pull/23441))
25+
26+
- \[`flake8-bugbear`\] Allow `B901` in pytest hook wrappers ([#21931](https://github.com/astral-sh/ruff/pull/21931))
27+
28+
- \[`flake8-import-conventions`\] Add missing conventions from upstream (`ICN001`, `ICN002`) ([#21373](https://github.com/astral-sh/ruff/pull/21373))
29+
30+
- \[`pydocstyle`\] Add rule to enforce docstring section ordering (`D420`) ([#23537](https://github.com/astral-sh/ruff/pull/23537))
31+
32+
- \[`pylint`\] Implement `swap-with-temporary-variable` (`PLR1712`) ([#22205](https://github.com/astral-sh/ruff/pull/22205))
33+
34+
- \[`ruff`\] Add `unnecessary-assign-before-yield` (`RUF070`) ([#23300](https://github.com/astral-sh/ruff/pull/23300))
35+
36+
- \[`ruff`\] Support file-level noqa in `RUF102` ([#23535](https://github.com/astral-sh/ruff/pull/23535))
37+
38+
- \[`ruff`\] Suppress diagnostic for invalid f-strings before Python 3.12 (`RUF027`) ([#23480](https://github.com/astral-sh/ruff/pull/23480))
39+
40+
- \[`flake8-bandit`\] Don't flag `BaseLoader`/`CBaseLoader` as unsafe (`S506`) ([#23510](https://github.com/astral-sh/ruff/pull/23510))
41+
42+
### Bug fixes
43+
44+
- Avoid infinite loop between `I002` and `PYI025` ([#23352](https://github.com/astral-sh/ruff/pull/23352))
45+
- \[`pyflakes`\] Fix false positive for `@overload` from `lint.typing-modules` (`F811`) ([#23357](https://github.com/astral-sh/ruff/pull/23357))
46+
- \[`pyupgrade`\] Fix false positive for `TypeVar` default before Python 3.12 (`UP046`) ([#23540](https://github.com/astral-sh/ruff/pull/23540))
47+
- \[`pyupgrade`\] Fix handling of `\N` in raw strings (`UP032`) ([#22149](https://github.com/astral-sh/ruff/pull/22149))
48+
49+
### Rule changes
50+
51+
- Render sub-diagnostics in the GitHub output format ([#23455](https://github.com/astral-sh/ruff/pull/23455))
52+
53+
- \[`flake8-bugbear`\] Tag certain `B007` diagnostics as unnecessary ([#23453](https://github.com/astral-sh/ruff/pull/23453))
54+
55+
- \[`ruff`\] Ignore unknown rule codes in `RUF100` ([#23531](https://github.com/astral-sh/ruff/pull/23531))
56+
57+
These are now flagged by [`RUF102`](https://docs.astral.sh/ruff/rules/invalid-rule-code/) instead.
58+
59+
### Documentation
60+
61+
- Fix missing settings links for several linters ([#23519](https://github.com/astral-sh/ruff/pull/23519))
62+
- Update isort action comments heading ([#23515](https://github.com/astral-sh/ruff/pull/23515))
63+
- \[`pydocstyle`\] Fix double comma in description of `D404` ([#23440](https://github.com/astral-sh/ruff/pull/23440))
64+
65+
### Other changes
66+
67+
- Update the Python module (notably `find_ruff_bin`) for parity with uv ([#23406](https://github.com/astral-sh/ruff/pull/23406))
68+
69+
### Contributors
70+
71+
- [@zanieb](https://github.com/zanieb)
72+
- [@o1x3](https://github.com/o1x3)
73+
- [@assadyousuf](https://github.com/assadyousuf)
74+
- [@kar-ganap](https://github.com/kar-ganap)
75+
- [@denyszhak](https://github.com/denyszhak)
76+
- [@amyreese](https://github.com/amyreese)
77+
- [@carljm](https://github.com/carljm)
78+
- [@anishgirianish](https://github.com/anishgirianish)
79+
- [@Bnyro](https://github.com/Bnyro)
80+
- [@danparizher](https://github.com/danparizher)
81+
- [@ntBre](https://github.com/ntBre)
82+
- [@gcomneno](https://github.com/gcomneno)
83+
- [@jaap3](https://github.com/jaap3)
84+
- [@stakeswky](https://github.com/stakeswky)
85+
386
## 0.15.2
487

588
Released on 2026-02-19.

Cargo.lock

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -152,8 +152,8 @@ curl -LsSf https://astral.sh/ruff/install.sh | sh
152152
powershell -c "irm https://astral.sh/ruff/install.ps1 | iex"
153153

154154
# For a specific version.
155-
curl -LsSf https://astral.sh/ruff/0.15.2/install.sh | sh
156-
powershell -c "irm https://astral.sh/ruff/0.15.2/install.ps1 | iex"
155+
curl -LsSf https://astral.sh/ruff/0.15.3/install.sh | sh
156+
powershell -c "irm https://astral.sh/ruff/0.15.3/install.ps1 | iex"
157157
```
158158

159159
You can also install Ruff via [Homebrew](https://formulae.brew.sh/formula/ruff), [Conda](https://anaconda.org/conda-forge/ruff),
@@ -186,7 +186,7 @@ Ruff can also be used as a [pre-commit](https://pre-commit.com/) hook via [`ruff
186186
```yaml
187187
- repo: https://github.com/astral-sh/ruff-pre-commit
188188
# Ruff version.
189-
rev: v0.15.2
189+
rev: v0.15.3
190190
hooks:
191191
# Run the linter.
192192
- id: ruff-check

crates/ruff/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "ruff"
3-
version = "0.15.2"
3+
version = "0.15.3"
44
publish = true
55
authors = { workspace = true }
66
edition = { workspace = true }

crates/ruff_linter/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "ruff_linter"
3-
version = "0.15.2"
3+
version = "0.15.3"
44
publish = false
55
authors = { workspace = true }
66
edition = { workspace = true }

crates/ruff_linter/src/rules/pydocstyle/rules/sections.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1428,7 +1428,7 @@ impl AlwaysFixableViolation for BlankLinesBetweenHeaderAndContent {
14281428
/// - [NumPy docstring standard](https://numpydoc.readthedocs.io/en/latest/format.html)
14291429
/// - [Google Python Style Guide](https://google.github.io/styleguide/pyguide.html#383-functions-and-methods)
14301430
#[derive(ViolationMetadata)]
1431-
#[violation_metadata(preview_since = "NEXT_RUFF_VERSION")]
1431+
#[violation_metadata(preview_since = "0.15.3")]
14321432
pub(crate) struct IncorrectSectionOrder {
14331433
current: String,
14341434
previous: String,

crates/ruff_linter/src/rules/pylint/rules/swap_with_temporary_variable.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ use crate::checkers::ast::Checker;
3939
/// The rule's fix is marked as safe, unless the replacement range contains comments
4040
/// that would be removed.
4141
#[derive(ViolationMetadata)]
42-
#[violation_metadata(preview_since = "NEXT_RUFF_VERSION")]
42+
#[violation_metadata(preview_since = "0.15.3")]
4343
pub(crate) struct SwapWithTemporaryVariable<'a> {
4444
first: &'a Name,
4545
second: &'a Name,

crates/ruff_linter/src/rules/ruff/rules/unnecessary_assign_before_yield.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ use crate::{AlwaysFixableViolation, Edit, Fix};
4040
/// variable assignment changes the local variable bindings visible to
4141
/// `locals()` and debuggers when the generator is suspended at the `yield`.
4242
#[derive(ViolationMetadata)]
43-
#[violation_metadata(preview_since = "NEXT_RUFF_VERSION")]
43+
#[violation_metadata(preview_since = "0.15.3")]
4444
pub(crate) struct UnnecessaryAssignBeforeYield {
4545
name: String,
4646
is_yield_from: bool,

crates/ruff_wasm/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "ruff_wasm"
3-
version = "0.15.2"
3+
version = "0.15.3"
44
publish = false
55
authors = { workspace = true }
66
edition = { workspace = true }

docs/formatter.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -328,7 +328,7 @@ support needs to be explicitly included by adding it to `types_or`:
328328
```yaml title=".pre-commit-config.yaml"
329329
repos:
330330
- repo: https://github.com/astral-sh/ruff-pre-commit
331-
rev: v0.15.2
331+
rev: v0.15.3
332332
hooks:
333333
- id: ruff-format
334334
types_or: [python, pyi, jupyter, markdown]

0 commit comments

Comments
 (0)