Release Notes
Released on 2026-02-26.
Preview features
-
Drop explicit support for
.qmdfile extension (#23572)This can now be enabled instead by setting the
extensionoption:# ruff.toml extension = { qmd = "markdown" } # pyproject.toml [tool.ruff] extension = { qmd = "markdown" }
-
Include configured extensions in file discovery (#23400)
-
[
flake8-bandit] Allow suspicious imports inTYPE_CHECKINGblocks (S401-S415) (#23441) -
[
flake8-bugbear] AllowB901in pytest hook wrappers (#21931) -
[
flake8-import-conventions] Add missing conventions from upstream (ICN001,ICN002) (#21373) -
[
pydocstyle] Add rule to enforce docstring section ordering (D420) (#23537) -
[
pylint] Implementswap-with-temporary-variable(PLR1712) (#22205) -
[
ruff] Addunnecessary-assign-before-yield(RUF070) (#23300) -
[
ruff] Support file-level noqa inRUF102(#23535) -
[
ruff] Suppress diagnostic for invalid f-strings before Python 3.12 (RUF027) (#23480) -
[
flake8-bandit] Don't flagBaseLoader/CBaseLoaderas unsafe (S506) (#23510)
Bug fixes
- Avoid infinite loop between
I002andPYI025(#23352) - [
pyflakes] Fix false positive for@overloadfromlint.typing-modules(F811) (#23357) - [
pyupgrade] Fix false positive forTypeVardefault before Python 3.12 (UP046) (#23540) - [
pyupgrade] Fix handling of\Nin raw strings (UP032) (#22149)
Rule changes
-
Render sub-diagnostics in the GitHub output format (#23455)
-
[
flake8-bugbear] Tag certainB007diagnostics as unnecessary (#23453) -
[
ruff] Ignore unknown rule codes inRUF100(#23531)These are now flagged by
RUF102instead.
Documentation
- Fix missing settings links for several linters (#23519)
- Update isort action comments heading (#23515)
- [
pydocstyle] Fix double comma in description ofD404(#23440)
Other changes
- Update the Python module (notably
find_ruff_bin) for parity with uv (#23406)
Contributors
- @zanieb
- @o1x3
- @assadyousuf
- @kar-ganap
- @denyszhak
- @amyreese
- @carljm
- @anishgirianish
- @Bnyro
- @danparizher
- @ntBre
- @gcomneno
- @jaap3
- @stakeswky
Install ruff 0.15.3
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/ruff/releases/download/0.15.3/ruff-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/ruff/releases/download/0.15.3/ruff-installer.ps1 | iex"Download ruff 0.15.3
Verifying GitHub Artifact Attestations
The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:
gh attestation verify <file-path of downloaded artifact> --repo astral-sh/ruffYou can also download the attestation from GitHub and verify against that directly:
gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation>