Release Notes
Released on 2026-02-19.
Preview features
-
Expand the default rule set (#23385)
In preview, Ruff now enables a significantly expanded default rule set of 412 rules, up from the stable default set of 59 rules. The new rules are mostly a superset of the stable defaults, with the exception of these rules, which are removed from the preview defaults:
multiple-imports-on-one-line(E401)module-import-not-at-top-of-file(E402)module-import-not-at-top-of-file(E701)multiple-statements-on-one-line-semicolon(E702)useless-semicolon(E703)none-comparison(E711)true-false-comparison(E712)not-in-test(E713)not-is-test(E714)type-comparison(E721)lambda-assignment(E731)ambiguous-variable-name(E741)ambiguous-class-name(E742)ambiguous-function-name(E743)undefined-local-with-import-star(F403)undefined-local-with-import-star-usage(F405)undefined-local-with-nested-import-star-usage(F406)forward-annotation-syntax-error(F722)
If you use preview and prefer the old defaults, you can restore them with configuration like:
# ruff.toml [lint] select = ["E4", "E7", "E9", "F"] # pyproject.toml [tool.ruff.lint] select = ["E4", "E7", "E9", "F"]
If you do give them a try, feel free to share your feedback in the GitHub discussion!
-
[
flake8-pyi] Also check string annotations (PYI041) (#19023)
Bug fixes
- [
flake8-async] Fixin_async_contextlogic (#23426) - [
ruff] Fix forRUF102should delete entire comment (#23380) - [
ruff] Suppress diagnostic for strings with backslashes in interpolations before Python 3.12 (RUF027) (#21069) - [
flake8-bugbear] FixB023false positive for immediately-invoked lambdas (#23294) - [parser] Fix false syntax error for match-like annotated assignments (#23297)
- [parser] Fix indentation tracking after line continuations (#23417)
Rule changes
- [
flake8-executable] Allow global flags in uv shebangs (EXE003) (#22582) - [
pyupgrade] Fix handling oftyping.{io,re}(UP035) (#23131) - [
ruff] DetectPLC0207on chainedstr.split()calls (#23275)
CLI
- Remove invalid inline
noqawarning (#23270)
Configuration
- Add extension mapping to configuration file options (#23384)
Documentation
- Add
Q004to the list of conflicting rules (#23340) - [
ruff] Expandlint.externaldocs and add sub-diagnostic (RUF100,RUF102) (#23268)
Contributors
- @dylwil3
- @Jkhall81
- @danparizher
- @dhruvmanila
- @harupy
- @ngnpope
- @amyreese
- @kar-ganap
- @robsdedude
- @shaanmajid
- @ntBre
- @toslunar
Install ruff 0.15.2
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/ruff/releases/download/0.15.2/ruff-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/ruff/releases/download/0.15.2/ruff-installer.ps1 | iex"Download ruff 0.15.2
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>