winget install --id astral-sh.ruff
About Ruff
An extremely fast Python linter, written in Rust.
What's new in 0.15.13
Released on 2026-05-14. Preview features - Add a rule to flag lazy imports that are eagerly evaluated (#25016) - [pylint] Standardize diagnostic message (PLR0914, PLR0917) (#24996) Bug fixes - Fix F811 false positive for class methods (#24933) - Fix setting selection for multi-folder workspace (#24819) - [eradicate] Fix false positive for lines with leading whitespace (ERA001) (#25122) - [flake8-pyi] Fix false positive for f-string debug specifier (PYI016) (#24098) Rule changes - Always include panic payload in panic diagnostic message (#24873) - Restrict PYI034 for in-place operations to enclosing class (#24511) - Improve error message for parameters that are declared `global` (#24902) - Update known stdlib (#25103) Performance - [isort] Avoid constructing `glob::Pattern`s for literal known modules (#25123) CLI - Add TOML examples to `--config` help text (#25013) - Colorize ruff check 'All checks passed' (#25085) Configuration - Increase max allowed value of `line-length` setting (#24962) Documentation - Add D203 to rules that conflict with the formatter (#25044) - Clarify COM819 and formatter interaction (#25045) - Clarify that `NotImplemented` is a value, not an exception (F901) (#25054) - Update number of lint rules supported (#24942) Other changes - Simplify the playground's markdown template (#24924)
Version history
| Version | Updated | Notes |
|---|---|---|
| 0.15.13 | Unknown | Released on 2026-05-14. Preview features - Add a rule to flag lazy imports that are eagerly evaluated (#25016) - [pylint] Standardize diagnostic message (PLR0914, PLR0917) (#24996) Bug fixes - Fix F811 false positive for... |
| 0.15.12 | Unknown | Released on 2026-04-24. Preview features - Implement `#ruff:file-ignore` file-level suppressions (#23599) - Implement `#ruff:ignore` logical-line suppressions (#23404) - Revert preview changes to displayed diagnostic sev... |
| 0.15.11 | Unknown | Released on 2026-04-16. Preview features - [ruff] Ignore RUF029 when function is decorated with `asynccontextmanager` (#24642) - [airflow] Implement `airflow-xcom-pull-in-template-string` (AIR201) (#23583) - [flake8-band... |
| 0.15.10 | Unknown | Released on 2026-04-09. Preview features - [flake8-logging] Allow closures in except handlers (LOG004) (#24464) - [flake8-self] Make `SLF` diagnostics robust to non-self-named variables (#24281) - [flake8-simplify] Make... |
| 0.15.9 | Unknown | Released on 2026-04-02. Preview features - [pyflakes] Flag annotated variable redeclarations as F811 in preview mode (#24244) - [ruff] Allow dunder-named assignments in non-strict mode for RUF067 (#24089) Bug fixes - [fl... |
| 0.15.8 | Unknown | Released on 2026-03-26. Preview features - [ruff] New rule `unnecessary-if` (RUF050) (#24114) - [ruff] New rule `useless-finally` (RUF072) (#24165) - [ruff] New rule `f-string-percent-format` (RUF073): warn when using `%... |
| 0.15.7 | Unknown | Released on 2026-03-19. Preview features - Display output severity in preview (#23845) - Don't show `noqa` hover for non-Python documents (#24040) Rule changes - [pycodestyle] Recognize `pyrefly:` as a pragma comment (E5... |
| 0.15.6 | Unknown | Released on 2026-03-12. Preview features - Add support for `lazy` import parsing (#23755) - Add support for star-unpacking of comprehensions (PEP 798) (#23788) - Reject semantic syntax errors for lazy imports (#23757) -... |
| 0.15.5 | Unknown | Released on 2026-03-05. Preview features - Discover Markdown files by default in preview mode (#23434) - [perflint] Extend PERF102 to comprehensions and generators (#23473) - [refurb] Fix FURB101 and FURB103 false positi... |
| 0.15.4 | Unknown | Released on 2026-02-26. This is a follow-up release to 0.15.3 that resolves a panic when the new rule PLR1712 was enabled with any rule that analyzes definitions, such as many of the `ANN` or `D` rules. Bug fixes - Fix p... |
| 0.15.3 | Unknown | Released on 2026-02-26. Preview features - Drop explicit support for `.qmd` file extension (#23572) This can now be enabled instead by setting the `extension` option: ```toml # ruff.toml extension = { qmd = "markdown" }... |
| 0.15.2 | Unknown | 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 rul... |
| 0.15.1 | Unknown | Released on 2026-02-12. Preview features - [airflow] Add ruff rules to catch deprecated Airflow imports for Airflow 3.1 (AIR321) (#22376) - [airflow] Third positional parameter not named `ti_key` should be flagged for `B... |
| 0.15.0 | Unknown | Released on 2026-02-03. Check out the blog post for a migration guide and overview of the changes! Breaking changes - Ruff now formats your code according to the 2026 style guide. See the formatter section below or in th... |
| 0.14.14 | Unknown | Released on 2026-01-22. Preview features - Preserve required parentheses in lambda bodies (#22747) - Combine range suppression code diagnostics (#22613) - [airflow] Second positional argument to `Asset`/`Dataset` should... |
| 0.14.13 | Unknown | Released on 2026-01-15. This is a follow-up release to 0.14.12. Because of an issue publishing the WASM packages, there is no GitHub release or Git tag for 0.14.12, although the package was published to PyPI. The content... |
| 0.14.11 | Unknown | Released on 2026-01-08. Preview features - Consolidate diagnostics for matched disable/enable suppression comments (#22099) - Report diagnostics for invalid/unmatched range suppression comments (#21908) - [airflow] Passi... |
| 0.14.10 | Unknown | Released on 2025-12-18. Preview features - [formatter] Fluent formatting of method chains (#21369) - [formatter] Keep lambda parameters on one line and parenthesize the body if it expands (#21385) - [flake8-implicit-str-... |
| 0.14.9 | Unknown | Released on 2025-12-11. Preview features - [ruff] New RUF100 diagnostics for unused range suppressions (#21783) - [pylint] Detect subclasses of builtin exceptions (PLW0133) (#21382) Bug fixes - Fix comment placement in l... |
| 0.14.8 | Unknown | Released on 2025-12-04. Preview features - [flake8-bugbear] Catch `yield` expressions within other statements (B901) (#21200) - [flake8-use-pathlib] Mark fixes unsafe for return type changes (PTH104, PTH105, PTH109, PTH1... |