diff --git a/BREAKING_CHANGES.md b/BREAKING_CHANGES.md index 491eb59cca4fa..d634cb306db87 100644 --- a/BREAKING_CHANGES.md +++ b/BREAKING_CHANGES.md @@ -1,5 +1,45 @@ # Breaking Changes +## 0.15.0 + +- **2026 formatter style guide** + + Ruff now formats your code according to the 2026 style guide. See the + formatter section in the changelog or blog post for a detailed list of + changes. + +- **Block suppression comments in the linter** + + The linter now supports block suppression comments. For example, to suppress + `N803` for all parameters in this function: + + ```python + # ruff: disable[N803] + def foo( + legacyArg1, + legacyArg2, + legacyArg3, + legacyArg4, + ): ... + # ruff: enable[N803] + ``` + +- **Alpine Docker image** + + The `ruff:alpine` Docker image is now based on Alpine 3.23 (up from 3.21). + +- **Debian Docker image** + + The `ruff:debian` and `ruff:debian-slim` Docker images are now based on Debian 13 "Trixie" instead of Debian 12 "Bookworm." + +- **`ppc64` binaries** + + Binaries for the `ppc64` (64-bit big-endian PowerPC) architecture are no longer included in our releases. It should still be possible to build Ruff manually for this platform, if needed. + +- **Default Python version and `extend`** + + Ruff now resolves all `extend`ed configuration files before falling back on a default Python version. + ## 0.14.0 - **Default to Python 3.10** diff --git a/CHANGELOG.md b/CHANGELOG.md index 566aeffca779e..dccb344c05c0c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,713 +1,146 @@ # Changelog -## 0.14.14 +## 0.15.0 -Released on 2026-01-22. +Released on 2026-02-03. -### Preview features - -- Preserve required parentheses in lambda bodies ([#22747](https://github.com/astral-sh/ruff/pull/22747)) -- Combine range suppression code diagnostics ([#22613](https://github.com/astral-sh/ruff/pull/22613)) -- \[`airflow`\] Second positional argument to `Asset`/`Dataset` should not be a dictionary (`AIR303`) ([#22453](https://github.com/astral-sh/ruff/pull/22453)) -- \[`ruff`\] Detect duplicate entries in `__all__` (`RUF068`) ([#22114](https://github.com/astral-sh/ruff/pull/22114)) - -### Bug fixes - -- \[`pyupgrade`\] Allow shadowing non-builtin bindings (`UP029`) ([#22749](https://github.com/astral-sh/ruff/pull/22749)) -- \[`pyupgrade`\] Apply `UP045` to string arguments of `typing.cast` ([#22320](https://github.com/astral-sh/ruff/pull/22320)) -- \[`flake8-pie`\] Detect duplicated declared class fields in `PIE794` ([#22717](https://github.com/astral-sh/ruff/pull/22717)) - -### Rule changes - -- \[`flake8-pyi`\] Fix inconsistent handling of forward references for `__new__`, `__enter__`, `__aenter__` in `PYI034` ([#22798](https://github.com/astral-sh/ruff/pull/22798)) -- \[`flake8-pytest-style`\] Support `check` parameter in `PT011` ([#22725](https://github.com/astral-sh/ruff/pull/22725)) -- \[`ruff`\] Add exception for `ctypes.Structure._fields_` (`RUF012`) ([#22559](https://github.com/astral-sh/ruff/pull/22559)) -- Many fixes are now marked unsafe if they would remove comments: - - \[`flake8-bugbear`\] [`B009`](https://github.com/astral-sh/ruff/pull/22656), [`B010`](https://github.com/astral-sh/ruff/pull/22657), [`B013`](https://github.com/astral-sh/ruff/pull/22658), [`B014`](https://github.com/astral-sh/ruff/pull/22659), [`B033`](https://github.com/astral-sh/ruff/pull/22632) - - \[`flake8-simplify`\] [`SIM910`](https://github.com/astral-sh/ruff/pull/22662), [`SIM911`](https://github.com/astral-sh/ruff/pull/22661) - - \[`pyupgrade`\] [`UP007`](https://github.com/astral-sh/ruff/pull/22772), [`UP039`](https://github.com/astral-sh/ruff/pull/22774), [`UP041`](https://github.com/astral-sh/ruff/pull/22773), [`UP045`](https://github.com/astral-sh/ruff/pull/22772) - - \[`refurb`\] [`FURB105`](https://github.com/astral-sh/ruff/pull/22767), [`FURB116`](https://github.com/astral-sh/ruff/pull/22681), [`FURB136`](https://github.com/astral-sh/ruff/pull/22680), [`FURB140`](https://github.com/astral-sh/ruff/pull/22679), [`FURB145`](https://github.com/astral-sh/ruff/pull/22670), [`FURB154`](https://github.com/astral-sh/ruff/pull/22669), [`FURB157`](https://github.com/astral-sh/ruff/pull/22668), [`FURB164`](https://github.com/astral-sh/ruff/pull/22667),[`FURB181`](https://github.com/astral-sh/ruff/pull/22666), [`FURB188`](https://github.com/astral-sh/ruff/pull/22665) - - \[`ruff`\] [`RUF019`](https://github.com/astral-sh/ruff/pull/22663), [`RUF020`](https://github.com/astral-sh/ruff/pull/22664) - -### Documentation - -- Add `--exit-non-zero-on-format` to formatter exit codes section ([#22761](https://github.com/astral-sh/ruff/pull/22761)) -- Update contributing guide for adding a new rule ([#22779](https://github.com/astral-sh/ruff/pull/22779)) -- \[`FastAPI`\] Document fix safety for `FAST001` ([#22655](https://github.com/astral-sh/ruff/pull/22655)) -- \[`flake8-async`\] Tweak explanation to focus on latency/efficiency tradeoff (`ASYNC110`) ([#22715](https://github.com/astral-sh/ruff/pull/22715)) -- \[`pandas-vet`\] Make example error out-of-the-box (`PD002`) ([#22561](https://github.com/astral-sh/ruff/pull/22561)) -- \[`refurb`\] Make the example work out of box (`FURB101`) ([#22770](https://github.com/astral-sh/ruff/pull/22770)) -- \[`refurb`\] Make the example work out of box (`FURB103`) ([#22769](https://github.com/astral-sh/ruff/pull/22769)) - -### Contributors - -- [@alejsdev](https://github.com/alejsdev) -- [@ntBre](https://github.com/ntBre) -- [@caiquejjx](https://github.com/caiquejjx) -- [@chirizxc](https://github.com/chirizxc) -- [@denyszhak](https://github.com/denyszhak) -- [@sjyangkevin](https://github.com/sjyangkevin) -- [@MeGaGiGaGon](https://github.com/MeGaGiGaGon) -- [@leandrobbraga](https://github.com/leandrobbraga) -- [@MichaReiser](https://github.com/MichaReiser) -- [@carljm](https://github.com/carljm) -- [@amyreese](https://github.com/amyreese) -- [@zsol](https://github.com/zsol) -- [@harupy](https://github.com/harupy) - -## 0.14.13 - -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 contents of the 0.14.13 release are identical to 0.14.12. - -## 0.14.12 - -Released on 2026-01-15. - -### Preview features - -- \[`flake8-blind-except`\] Allow more logging methods (`BLE001`) ([#22057](https://github.com/astral-sh/ruff/pull/22057)) -- \[`ruff`\] Respect `lint.pydocstyle.property-decorators` in `RUF066` ([#22515](https://github.com/astral-sh/ruff/pull/22515)) - -### Bug fixes - -- Fix configuration path in `--show-settings` ([#22478](https://github.com/astral-sh/ruff/pull/22478)) -- Respect `fmt: skip` for multiple statements on the same logical line ([#22119](https://github.com/astral-sh/ruff/pull/22119)) - -### Rule changes - -- \[`pydocstyle`\] Update Rust crate imperative to v1.0.7 (`D401`) ([#22519](https://github.com/astral-sh/ruff/pull/22519)) -- \[`isort`\] Insert imports in alphabetical order (`I002`) ([#22493](https://github.com/astral-sh/ruff/pull/22493)) - -### Documentation - -- Add llms.txt support for documentation ([#22463](https://github.com/astral-sh/ruff/pull/22463)) -- Use prek in documentation and CI ([#22505](https://github.com/astral-sh/ruff/pull/22505)) -- \[`flake8-pytest-style`\] Add `check` parameter example to `PT017` docs ([#22546](https://github.com/astral-sh/ruff/pull/22546)) -- \[`ruff`\] Make example error out-of-the-box (`RUF103`) ([#22558](https://github.com/astral-sh/ruff/pull/22558)) -- \[`ruff`\] document `RUF100` trailing comment fix behavior ([#22479](https://github.com/astral-sh/ruff/pull/22479)) - -### Other changes - -- wasm: Require explicit logging initialization ([#22587](https://github.com/astral-sh/ruff/pull/22587)) - -### Contributors - -- [@terror](https://github.com/terror) -- [@harupy](https://github.com/harupy) -- [@Jkhall81](https://github.com/Jkhall81) -- [@dhruvmanila](https://github.com/dhruvmanila) -- [@lubaskinc0de](https://github.com/lubaskinc0de) -- [@zanieb](https://github.com/zanieb) -- [@MeGaGiGaGon](https://github.com/MeGaGiGaGon) -- [@charliermarsh](https://github.com/charliermarsh) -- [@renovate](https://github.com/renovate) -- [@dylwil3](https://github.com/dylwil3) -- [@MichaReiser](https://github.com/MichaReiser) -- [@11happy](https://github.com/11happy) - -## 0.14.11 - -Released on 2026-01-08. - -### Preview features - -- Consolidate diagnostics for matched disable/enable suppression comments ([#22099](https://github.com/astral-sh/ruff/pull/22099)) -- Report diagnostics for invalid/unmatched range suppression comments ([#21908](https://github.com/astral-sh/ruff/pull/21908)) -- \[`airflow`\] Passing positional argument into `airflow.lineage.hook.HookLineageCollector.create_asset` is not allowed (`AIR303`) ([#22046](https://github.com/astral-sh/ruff/pull/22046)) -- \[`refurb`\] Mark `FURB192` fix as always unsafe ([#22210](https://github.com/astral-sh/ruff/pull/22210)) -- \[`ruff`\] Add `non-empty-init-module` (`RUF067`) ([#22143](https://github.com/astral-sh/ruff/pull/22143)) - -### Bug fixes - -- Fix GitHub format for multi-line diagnostics ([#22108](https://github.com/astral-sh/ruff/pull/22108)) -- \[`flake8-unused-arguments`\] Mark `**kwargs` in `TypeVar` as used (`ARG001`) ([#22214](https://github.com/astral-sh/ruff/pull/22214)) - -### Rule changes - -- Add `help:` subdiagnostics for several Ruff rules that can sometimes appear to disagree with `ty` ([#22331](https://github.com/astral-sh/ruff/pull/22331)) -- \[`pylint`\] Demote `PLW1510` fix to display-only ([#22318](https://github.com/astral-sh/ruff/pull/22318)) -- \[`pylint`\] Ignore identical members (`PLR1714`) ([#22220](https://github.com/astral-sh/ruff/pull/22220)) -- \[`pylint`\] Improve diagnostic range for `PLC0206` ([#22312](https://github.com/astral-sh/ruff/pull/22312)) -- \[`ruff`\] Improve fix title for `RUF102` invalid rule code ([#22100](https://github.com/astral-sh/ruff/pull/22100)) -- \[`flake8-simplify`\]: Avoid unnecessary builtins import for `SIM105` ([#22358](https://github.com/astral-sh/ruff/pull/22358)) - -### Configuration - -- Allow Python 3.15 as valid `target-version` value in preview ([#22419](https://github.com/astral-sh/ruff/pull/22419)) -- Check `required-version` before parsing rules ([#22410](https://github.com/astral-sh/ruff/pull/22410)) -- Include configured `src` directories when resolving graphs ([#22451](https://github.com/astral-sh/ruff/pull/22451)) - -### Documentation - -- Update `T201` suggestion to not use root logger to satisfy `LOG015` ([#22059](https://github.com/astral-sh/ruff/pull/22059)) -- Fix `iter` example in unsafe fixes doc ([#22118](https://github.com/astral-sh/ruff/pull/22118)) -- \[`flake8_print`\] better suggestion for `basicConfig` in `T201` docs ([#22101](https://github.com/astral-sh/ruff/pull/22101)) -- \[`pylint`\] Restore the fix safety docs for `PLW0133` ([#22211](https://github.com/astral-sh/ruff/pull/22211)) -- Fix Jupyter notebook discovery info for editors ([#22447](https://github.com/astral-sh/ruff/pull/22447)) - -### Contributors - -- [@charliermarsh](https://github.com/charliermarsh) -- [@ntBre](https://github.com/ntBre) -- [@cenviity](https://github.com/cenviity) -- [@njhearp](https://github.com/njhearp) -- [@cbachhuber](https://github.com/cbachhuber) -- [@jelle-openai](https://github.com/jelle-openai) -- [@AlexWaygood](https://github.com/AlexWaygood) -- [@ValdonVitija](https://github.com/ValdonVitija) -- [@BurntSushi](https://github.com/BurntSushi) -- [@Jkhall81](https://github.com/Jkhall81) -- [@PeterJCLaw](https://github.com/PeterJCLaw) -- [@harupy](https://github.com/harupy) -- [@amyreese](https://github.com/amyreese) -- [@sjyangkevin](https://github.com/sjyangkevin) -- [@woodruffw](https://github.com/woodruffw) - -## 0.14.10 - -Released on 2025-12-18. - -### Preview features - -- [formatter] Fluent formatting of method chains ([#21369](https://github.com/astral-sh/ruff/pull/21369)) -- [formatter] Keep lambda parameters on one line and parenthesize the body if it expands ([#21385](https://github.com/astral-sh/ruff/pull/21385)) -- \[`flake8-implicit-str-concat`\] New rule to prevent implicit string concatenation in collections (`ISC004`) ([#21972](https://github.com/astral-sh/ruff/pull/21972)) -- \[`flake8-use-pathlib`\] Make fixes unsafe when types change in compound statements (`PTH104`, `PTH105`, `PTH109`, `PTH115`) ([#22009](https://github.com/astral-sh/ruff/pull/22009)) -- \[`refurb`\] Extend support for `Path.open` (`FURB101`, `FURB103`) ([#21080](https://github.com/astral-sh/ruff/pull/21080)) - -### Bug fixes - -- \[`pyupgrade`\] Fix parsing named Unicode escape sequences (`UP032`) ([#21901](https://github.com/astral-sh/ruff/pull/21901)) - -### Rule changes - -- \[`eradicate`\] Ignore `ruff:disable` and `ruff:enable` comments in `ERA001` ([#22038](https://github.com/astral-sh/ruff/pull/22038)) -- \[`flake8-pytest-style`\] Allow `match` and `check` keyword arguments without an expected exception type (`PT010`) ([#21964](https://github.com/astral-sh/ruff/pull/21964)) -- [syntax-errors] Annotated name cannot be global ([#20868](https://github.com/astral-sh/ruff/pull/20868)) - -### Documentation - -- Add `uv` and `ty` to the Ruff README ([#21996](https://github.com/astral-sh/ruff/pull/21996)) -- Document known lambda formatting deviations from Black ([#21954](https://github.com/astral-sh/ruff/pull/21954)) -- Update `setup.md` ([#22024](https://github.com/astral-sh/ruff/pull/22024)) -- \[`flake8-bandit`\] Fix broken link (`S704`) ([#22039](https://github.com/astral-sh/ruff/pull/22039)) +Check out the [blog post](https://astral.sh/blog/ruff-v0.15.0) for a migration +guide and overview of the changes! -### Other changes - -- Fix playground Share button showing "Copied!" before clipboard copy completes ([#21942](https://github.com/astral-sh/ruff/pull/21942)) - -### Contributors - -- [@dylwil3](https://github.com/dylwil3) -- [@charliecloudberry](https://github.com/charliecloudberry) -- [@charliermarsh](https://github.com/charliermarsh) -- [@chirizxc](https://github.com/chirizxc) -- [@ntBre](https://github.com/ntBre) -- [@zanieb](https://github.com/zanieb) -- [@amyreese](https://github.com/amyreese) -- [@hauntsaninja](https://github.com/hauntsaninja) -- [@11happy](https://github.com/11happy) -- [@mahiro72](https://github.com/mahiro72) -- [@MichaReiser](https://github.com/MichaReiser) -- [@phongddo](https://github.com/phongddo) -- [@PeterJCLaw](https://github.com/PeterJCLaw) - -## 0.14.9 - -Released on 2025-12-11. - -### Preview features - -- \[`ruff`\] New `RUF100` diagnostics for unused range suppressions ([#21783](https://github.com/astral-sh/ruff/pull/21783)) -- \[`pylint`\] Detect subclasses of builtin exceptions (`PLW0133`) ([#21382](https://github.com/astral-sh/ruff/pull/21382)) - -### Bug fixes - -- Fix comment placement in lambda parameters ([#21868](https://github.com/astral-sh/ruff/pull/21868)) -- Skip over trivia tokens after re-lexing ([#21895](https://github.com/astral-sh/ruff/pull/21895)) -- \[`flake8-bandit`\] Fix false positive when using non-standard `CSafeLoader` path (S506). ([#21830](https://github.com/astral-sh/ruff/pull/21830)) -- \[`flake8-bugbear`\] Accept immutable slice default arguments (`B008`) ([#21823](https://github.com/astral-sh/ruff/pull/21823)) - -### Rule changes - -- \[`pydocstyle`\] Suppress `D417` for parameters with `Unpack` annotations ([#21816](https://github.com/astral-sh/ruff/pull/21816)) - -### Performance - -- Use `memchr` for computing line indexes ([#21838](https://github.com/astral-sh/ruff/pull/21838)) - -### Documentation - -- Document `*.pyw` is included by default in preview ([#21885](https://github.com/astral-sh/ruff/pull/21885)) -- Document range suppressions, reorganize suppression docs ([#21884](https://github.com/astral-sh/ruff/pull/21884)) -- Update mkdocs-material to 9.7.0 (Insiders now free) ([#21797](https://github.com/astral-sh/ruff/pull/21797)) - -### Contributors - -- [@Avasam](https://github.com/Avasam) -- [@MichaReiser](https://github.com/MichaReiser) -- [@charliermarsh](https://github.com/charliermarsh) -- [@amyreese](https://github.com/amyreese) -- [@phongddo](https://github.com/phongddo) -- [@prakhar1144](https://github.com/prakhar1144) -- [@mahiro72](https://github.com/mahiro72) -- [@ntBre](https://github.com/ntBre) -- [@LoicRiegel](https://github.com/LoicRiegel) - -## 0.14.8 - -Released on 2025-12-04. - -### Preview features - -- \[`flake8-bugbear`\] Catch `yield` expressions within other statements (`B901`) ([#21200](https://github.com/astral-sh/ruff/pull/21200)) -- \[`flake8-use-pathlib`\] Mark fixes unsafe for return type changes (`PTH104`, `PTH105`, `PTH109`, `PTH115`) ([#21440](https://github.com/astral-sh/ruff/pull/21440)) - -### Bug fixes - -- Fix syntax error false positives for `await` outside functions ([#21763](https://github.com/astral-sh/ruff/pull/21763)) -- \[`flake8-simplify`\] Fix truthiness assumption for non-iterable arguments in tuple/list/set calls (`SIM222`, `SIM223`) ([#21479](https://github.com/astral-sh/ruff/pull/21479)) - -### Documentation - -- Suggest using `--output-file` option in GitLab integration ([#21706](https://github.com/astral-sh/ruff/pull/21706)) - -### Other changes - -- [syntax-error] Default type parameter followed by non-default type parameter ([#21657](https://github.com/astral-sh/ruff/pull/21657)) - -### Contributors - -- [@kieran-ryan](https://github.com/kieran-ryan) -- [@11happy](https://github.com/11happy) -- [@danparizher](https://github.com/danparizher) -- [@ntBre](https://github.com/ntBre) - -## 0.14.7 +### Breaking changes -Released on 2025-11-28. +- Ruff now formats your code according to the 2026 style guide. See the formatter section below or in the blog post for a detailed list of changes. + +- The linter now supports block suppression comments. For example, to suppress `N803` for all parameters in this function: + + ```python + # ruff: disable[N803] + def foo( + legacyArg1, + legacyArg2, + legacyArg3, + legacyArg4, + ): ... + # ruff: enable[N803] + ``` + + See the [documentation](https://docs.astral.sh/ruff/linter/#block-level) for more details. + +- The `ruff:alpine` Docker image is now based on Alpine 3.23 (up from 3.21). + +- The `ruff:debian` and `ruff:debian-slim` Docker images are now based on Debian 13 "Trixie" instead of Debian 12 "Bookworm." + +- Binaries for the `ppc64` (64-bit big-endian PowerPC) architecture are no longer included in our releases. It should still be possible to build Ruff manually for this platform, if needed. + +- Ruff now resolves all `extend`ed configuration files before falling back on a default Python version. + +### Stabilization + +The following rules have been stabilized and are no longer in preview: + +- [`blocking-http-call-httpx-in-async-function`](https://docs.astral.sh/ruff/rules/blocking-http-call-httpx-in-async-function) + (`ASYNC212`) +- [`blocking-path-method-in-async-function`](https://docs.astral.sh/ruff/rules/blocking-path-method-in-async-function) + (`ASYNC240`) +- [`blocking-input-in-async-function`](https://docs.astral.sh/ruff/rules/blocking-input-in-async-function) + (`ASYNC250`) +- [`map-without-explicit-strict`](https://docs.astral.sh/ruff/rules/map-without-explicit-strict) + (`B912`) +- [`if-exp-instead-of-or-operator`](https://docs.astral.sh/ruff/rules/if-exp-instead-of-or-operator) + (`FURB110`) +- [`single-item-membership-test`](https://docs.astral.sh/ruff/rules/single-item-membership-test) + (`FURB171`) +- [`missing-maxsplit-arg`](https://docs.astral.sh/ruff/rules/missing-maxsplit-arg) (`PLC0207`) +- [`unnecessary-lambda`](https://docs.astral.sh/ruff/rules/unnecessary-lambda) (`PLW0108`) +- [`unnecessary-empty-iterable-within-deque-call`](https://docs.astral.sh/ruff/rules/unnecessary-empty-iterable-within-deque-call) + (`RUF037`) +- [`in-empty-collection`](https://docs.astral.sh/ruff/rules/in-empty-collection) (`RUF060`) +- [`legacy-form-pytest-raises`](https://docs.astral.sh/ruff/rules/legacy-form-pytest-raises) + (`RUF061`) +- [`non-octal-permissions`](https://docs.astral.sh/ruff/rules/non-octal-permissions) (`RUF064`) +- [`invalid-rule-code`](https://docs.astral.sh/ruff/rules/invalid-rule-code) (`RUF102`) +- [`invalid-suppression-comment`](https://docs.astral.sh/ruff/rules/invalid-suppression-comment) + (`RUF103`) +- [`unmatched-suppression-comment`](https://docs.astral.sh/ruff/rules/unmatched-suppression-comment) + (`RUF104`) +- [`replace-str-enum`](https://docs.astral.sh/ruff/rules/replace-str-enum) (`UP042`) + +The following behaviors have been stabilized: + +- The `--output-format` flag is now respected when running Ruff in `--watch` mode, and the `full` output format is now used by default, matching the regular CLI output. +- [`builtin-attribute-shadowing`](https://docs.astral.sh/ruff/rules/builtin-attribute-shadowing/) (`A003`) now detects the use of shadowed built-in names in additional contexts like decorators, default arguments, and other attribute definitions. +- [`duplicate-union-member`](https://docs.astral.sh/ruff/rules/duplicate-union-member/) (`PYI016`) now considers `typing.Optional` when searching for duplicate union members. +- [`split-static-string`](https://docs.astral.sh/ruff/rules/split-static-string/) (`SIM905`) now offers an autofix when the `maxsplit` argument is provided, even without a `sep` argument. +- [`dict-get-with-none-default`](https://docs.astral.sh/ruff/rules/dict-get-with-none-default/) (`SIM910`) now applies to more types of key expressions. +- [`super-call-with-parameters`](https://docs.astral.sh/ruff/rules/super-call-with-parameters/) (`UP008`) now has a safe fix when it will not delete comments. +- [`unnecessary-default-type-args`](https://docs.astral.sh/ruff/rules/unnecessary-default-type-args/) (`UP043`) now applies to stub (`.pyi`) files on Python versions before 3.13. + +### Formatter + +This release introduces the new 2026 style guide, with the following changes: + +- Lambda parameters are now kept on the same line and lambda bodies will be parenthesized to let + them break across multiple lines ([#21385](https://github.com/astral-sh/ruff/pull/21385)) +- Parentheses around tuples of exceptions in `except` clauses will now be removed on Python 3.14 and + later ([#20768](https://github.com/astral-sh/ruff/pull/20768)) +- A single empty line is now permitted at the beginning of function bodies ([#21110](https://github.com/astral-sh/ruff/pull/21110)) +- Parentheses are avoided for long `as` captures in `match` statements ([#21176](https://github.com/astral-sh/ruff/pull/21176)) +- Extra spaces between escaped quotes and ending triple quotes can now be omitted ([#17216](https://github.com/astral-sh/ruff/pull/17216)) +- Blank lines are now enforced before classes with decorators in stub files ([#18888](https://github.com/astral-sh/ruff/pull/18888)) ### Preview features -- \[`flake8-bandit`\] Handle string literal bindings in suspicious-url-open-usage (`S310`) ([#21469](https://github.com/astral-sh/ruff/pull/21469)) -- \[`pylint`\] Fix `PLR1708` false positives on nested functions ([#21177](https://github.com/astral-sh/ruff/pull/21177)) -- \[`pylint`\] Fix suppression for empty dict without tuple key annotation (`PLE1141`) ([#21290](https://github.com/astral-sh/ruff/pull/21290)) -- \[`ruff`\] Add rule `RUF066` to detect unnecessary class properties ([#21535](https://github.com/astral-sh/ruff/pull/21535)) -- \[`ruff`\] Catch more dummy variable uses (`RUF052`) ([#19799](https://github.com/astral-sh/ruff/pull/19799)) - -### Bug fixes - -- [server] Set severity for non-rule diagnostics ([#21559](https://github.com/astral-sh/ruff/pull/21559)) -- \[`flake8-implicit-str-concat`\] Avoid invalid fix in (`ISC003`) ([#21517](https://github.com/astral-sh/ruff/pull/21517)) -- \[`parser`\] Fix panic when parsing IPython escape command expressions ([#21480](https://github.com/astral-sh/ruff/pull/21480)) - -### CLI +- Apply formatting to Markdown code blocks ([#22470](https://github.com/astral-sh/ruff/pull/22470), [#22990](https://github.com/astral-sh/ruff/pull/22990), [#22996](https://github.com/astral-sh/ruff/pull/22996)) -- Show partial fixability indicator in statistics output ([#21513](https://github.com/astral-sh/ruff/pull/21513)) - -### Contributors - -- [@mikeleppane](https://github.com/mikeleppane) -- [@senekor](https://github.com/senekor) -- [@ShaharNaveh](https://github.com/ShaharNaveh) -- [@JumboBear](https://github.com/JumboBear) -- [@prakhar1144](https://github.com/prakhar1144) -- [@tsvikas](https://github.com/tsvikas) -- [@danparizher](https://github.com/danparizher) -- [@chirizxc](https://github.com/chirizxc) -- [@AlexWaygood](https://github.com/AlexWaygood) -- [@MichaReiser](https://github.com/MichaReiser) - -## 0.14.6 - -Released on 2025-11-21. - -### Preview features - -- \[`flake8-bandit`\] Support new PySNMP API paths (`S508`, `S509`) ([#21374](https://github.com/astral-sh/ruff/pull/21374)) + See the [documentation](https://docs.astral.sh/ruff/formatter/#markdown-code-formatting) for more details. ### Bug fixes -- Adjust own-line comment placement between branches ([#21185](https://github.com/astral-sh/ruff/pull/21185)) -- Avoid syntax error when formatting attribute expressions with outer parentheses, parenthesized value, and trailing comment on value ([#20418](https://github.com/astral-sh/ruff/pull/20418)) -- Fix panic when formatting comments in unary expressions ([#21501](https://github.com/astral-sh/ruff/pull/21501)) -- Respect `fmt: skip` for compound statements on a single line ([#20633](https://github.com/astral-sh/ruff/pull/20633)) -- \[`refurb`\] Fix `FURB103` autofix ([#21454](https://github.com/astral-sh/ruff/pull/21454)) -- \[`ruff`\] Fix false positive for complex conversion specifiers in `logging-eager-conversion` (`RUF065`) ([#21464](https://github.com/astral-sh/ruff/pull/21464)) +- Fix suppression indentation matching ([#22903](https://github.com/astral-sh/ruff/pull/22903)) ### Rule changes -- \[`ruff`\] Avoid false positive on `ClassVar` reassignment (`RUF012`) ([#21478](https://github.com/astral-sh/ruff/pull/21478)) - -### CLI - -- Render hyperlinks for lint errors ([#21514](https://github.com/astral-sh/ruff/pull/21514)) -- Add a `ruff analyze` option to skip over imports in `TYPE_CHECKING` blocks ([#21472](https://github.com/astral-sh/ruff/pull/21472)) - -### Documentation - -- Limit `eglot-format` hook to eglot-managed Python buffers ([#21459](https://github.com/astral-sh/ruff/pull/21459)) -- Mention `force-exclude` in "Configuration > Python file discovery" ([#21500](https://github.com/astral-sh/ruff/pull/21500)) - -### Contributors - -- [@ntBre](https://github.com/ntBre) -- [@dylwil3](https://github.com/dylwil3) -- [@gauthsvenkat](https://github.com/gauthsvenkat) -- [@MichaReiser](https://github.com/MichaReiser) -- [@thamer](https://github.com/thamer) -- [@Ruchir28](https://github.com/Ruchir28) -- [@thejcannon](https://github.com/thejcannon) -- [@danparizher](https://github.com/danparizher) -- [@chirizxc](https://github.com/chirizxc) - -## 0.14.5 - -Released on 2025-11-13. - -### Preview features - -- \[`flake8-simplify`\] Apply `SIM113` when index variable is of type `int` ([#21395](https://github.com/astral-sh/ruff/pull/21395)) -- \[`pydoclint`\] Fix false positive when Sphinx directives follow a "Raises" section (`DOC502`) ([#20535](https://github.com/astral-sh/ruff/pull/20535)) -- \[`pydoclint`\] Support NumPy-style comma-separated parameters (`DOC102`) ([#20972](https://github.com/astral-sh/ruff/pull/20972)) -- \[`refurb`\] Auto-fix annotated assignments (`FURB101`) ([#21278](https://github.com/astral-sh/ruff/pull/21278)) -- \[`ruff`\] Ignore `str()` when not used for simple conversion (`RUF065`) ([#21330](https://github.com/astral-sh/ruff/pull/21330)) - -### Bug fixes +- Customize where the `fix_title` sub-diagnostic appears ([#23044](https://github.com/astral-sh/ruff/pull/23044)) +- \[`FastAPI`\] Add sub-diagnostic explaining why a fix was unavailable (`FAST002`) ([#22565](https://github.com/astral-sh/ruff/pull/22565)) +- \[`flake8-annotations`\] Don't suggest `NoReturn` for functions raising `NotImplementedError` (`ANN201`, `ANN202`, `ANN205`, `ANN206`) ([#21311](https://github.com/astral-sh/ruff/pull/21311)) +- \[`pyupgrade`\] Make fix unsafe if it deletes comments (`UP017`) ([#22873](https://github.com/astral-sh/ruff/pull/22873)) +- \[`pyupgrade`\] Make fix unsafe if it deletes comments (`UP020`) ([#22872](https://github.com/astral-sh/ruff/pull/22872)) +- \[`pyupgrade`\] Make fix unsafe if it deletes comments (`UP033`) ([#22871](https://github.com/astral-sh/ruff/pull/22871)) +- \[`refurb`\] Do not add `abc.ABC` if already present (`FURB180`) ([#22234](https://github.com/astral-sh/ruff/pull/22234)) +- \[`refurb`\] Make fix unsafe if it deletes comments (`FURB110`) ([#22768](https://github.com/astral-sh/ruff/pull/22768)) +- \[`ruff`\] Add sub-diagnostics with permissions (`RUF064`) ([#22972](https://github.com/astral-sh/ruff/pull/22972)) -- Fix syntax error false positive on alternative `match` patterns ([#21362](https://github.com/astral-sh/ruff/pull/21362)) -- \[`flake8-simplify`\] Fix false positive for iterable initializers with generator arguments (`SIM222`) ([#21187](https://github.com/astral-sh/ruff/pull/21187)) -- \[`pyupgrade`\] Fix false positive on relative imports from local `.builtins` module (`UP029`) ([#21309](https://github.com/astral-sh/ruff/pull/21309)) -- \[`pyupgrade`\] Consistently set the deprecated tag (`UP035`) ([#21396](https://github.com/astral-sh/ruff/pull/21396)) - -### Rule changes +### Server -- \[`refurb`\] Detect empty f-strings (`FURB105`) ([#21348](https://github.com/astral-sh/ruff/pull/21348)) +- Identify notebooks by LSP `didOpen` instead of `.ipynb` file extension ([#22810](https://github.com/astral-sh/ruff/pull/22810)) ### CLI -- Add option to provide a reason to `--add-noqa` ([#21294](https://github.com/astral-sh/ruff/pull/21294)) -- Add upstream linter URL to `ruff linter --output-format=json` ([#21316](https://github.com/astral-sh/ruff/pull/21316)) -- Add color to `--help` ([#21337](https://github.com/astral-sh/ruff/pull/21337)) +- Add `--color` CLI option to force colored output ([#22806](https://github.com/astral-sh/ruff/pull/22806)) ### Documentation -- Add a new "Opening a PR" section to the contribution guide ([#21298](https://github.com/astral-sh/ruff/pull/21298)) -- Added the PyScripter IDE to the list of "Who is using Ruff?" ([#21402](https://github.com/astral-sh/ruff/pull/21402)) -- Update PyCharm setup instructions ([#21409](https://github.com/astral-sh/ruff/pull/21409)) -- \[`flake8-annotations`\] Add link to `allow-star-arg-any` option (`ANN401`) ([#21326](https://github.com/astral-sh/ruff/pull/21326)) +- Document `-` stdin convention in CLI help text ([#22817](https://github.com/astral-sh/ruff/pull/22817)) +- \[`refurb`\] Change example to `re.search` with `^` anchor (`FURB167`) ([#22984](https://github.com/astral-sh/ruff/pull/22984)) +- Fix link to Sphinx code block directives ([#23041](https://github.com/astral-sh/ruff/pull/23041)) +- \[`pydocstyle`\] Clarify which quote styles are allowed (`D300`) ([#22825](https://github.com/astral-sh/ruff/pull/22825)) +- \[`flake8-bugbear`\] Improve docs for `no-explicit-stacklevel` (`B028`) ([#22538](https://github.com/astral-sh/ruff/pull/22538)) ### Other changes -- \[`configuration`\] Improve error message when `line-length` exceeds `u16::MAX` ([#21329](https://github.com/astral-sh/ruff/pull/21329)) +- Update MSRV to 1.91 ([#22874](https://github.com/astral-sh/ruff/pull/22874)) ### Contributors -- [@njhearp](https://github.com/njhearp) -- [@11happy](https://github.com/11happy) -- [@hugovk](https://github.com/hugovk) -- [@Gankra](https://github.com/Gankra) -- [@ntBre](https://github.com/ntBre) -- [@pyscripter](https://github.com/pyscripter) - [@danparizher](https://github.com/danparizher) -- [@MichaReiser](https://github.com/MichaReiser) -- [@henryiii](https://github.com/henryiii) -- [@charliecloudberry](https://github.com/charliecloudberry) - -## 0.14.4 - -Released on 2025-11-06. - -### Preview features - -- [formatter] Allow newlines after function headers without docstrings ([#21110](https://github.com/astral-sh/ruff/pull/21110)) -- [formatter] Avoid extra parentheses for long `match` patterns with `as` captures ([#21176](https://github.com/astral-sh/ruff/pull/21176)) -- \[`refurb`\] Expand fix safety for keyword arguments and `Decimal`s (`FURB164`) ([#21259](https://github.com/astral-sh/ruff/pull/21259)) -- \[`refurb`\] Preserve argument ordering in autofix (`FURB103`) ([#20790](https://github.com/astral-sh/ruff/pull/20790)) - -### Bug fixes - -- [server] Fix missing diagnostics for notebooks ([#21156](https://github.com/astral-sh/ruff/pull/21156)) -- \[`flake8-bugbear`\] Ignore non-NFKC attribute names in `B009` and `B010` ([#21131](https://github.com/astral-sh/ruff/pull/21131)) -- \[`refurb`\] Fix false negative for underscores before sign in `Decimal` constructor (`FURB157`) ([#21190](https://github.com/astral-sh/ruff/pull/21190)) -- \[`ruff`\] Fix false positives on starred arguments (`RUF057`) ([#21256](https://github.com/astral-sh/ruff/pull/21256)) - -### Rule changes - -- \[`airflow`\] extend deprecated argument `concurrency` in `airflow..DAG` (`AIR301`) ([#21220](https://github.com/astral-sh/ruff/pull/21220)) - -### Documentation - -- Improve `extend` docs ([#21135](https://github.com/astral-sh/ruff/pull/21135)) -- \[`flake8-comprehensions`\] Fix typo in `C416` documentation ([#21184](https://github.com/astral-sh/ruff/pull/21184)) -- Revise Ruff setup instructions for Zed editor ([#20935](https://github.com/astral-sh/ruff/pull/20935)) - -### Other changes - -- Make `ruff analyze graph` work with jupyter notebooks ([#21161](https://github.com/astral-sh/ruff/pull/21161)) - -### Contributors - - [@chirizxc](https://github.com/chirizxc) -- [@Lee-W](https://github.com/Lee-W) -- [@musicinmybrain](https://github.com/musicinmybrain) -- [@MichaReiser](https://github.com/MichaReiser) -- [@tjkuson](https://github.com/tjkuson) -- [@danparizher](https://github.com/danparizher) -- [@renovate](https://github.com/renovate) -- [@ntBre](https://github.com/ntBre) -- [@gauthsvenkat](https://github.com/gauthsvenkat) -- [@LoicRiegel](https://github.com/LoicRiegel) - -## 0.14.3 - -Released on 2025-10-30. - -### Preview features - -- Respect `--output-format` with `--watch` ([#21097](https://github.com/astral-sh/ruff/pull/21097)) -- \[`pydoclint`\] Fix false positive on explicit exception re-raising (`DOC501`, `DOC502`) ([#21011](https://github.com/astral-sh/ruff/pull/21011)) -- \[`pyflakes`\] Revert to stable behavior if imports for module lie in alternate branches for `F401` ([#20878](https://github.com/astral-sh/ruff/pull/20878)) -- \[`pylint`\] Implement `stop-iteration-return` (`PLR1708`) ([#20733](https://github.com/astral-sh/ruff/pull/20733)) -- \[`ruff`\] Add support for additional eager conversion patterns (`RUF065`) ([#20657](https://github.com/astral-sh/ruff/pull/20657)) - -### Bug fixes - -- Fix finding keyword range for clause header after statement ending with semicolon ([#21067](https://github.com/astral-sh/ruff/pull/21067)) -- Fix syntax error false positive on nested alternative patterns ([#21104](https://github.com/astral-sh/ruff/pull/21104)) -- \[`ISC001`\] Fix panic when string literals are unclosed ([#21034](https://github.com/astral-sh/ruff/pull/21034)) -- \[`flake8-django`\] Apply `DJ001` to annotated fields ([#20907](https://github.com/astral-sh/ruff/pull/20907)) -- \[`flake8-pyi`\] Fix `PYI034` to not trigger on metaclasses (`PYI034`) ([#20881](https://github.com/astral-sh/ruff/pull/20881)) -- \[`flake8-type-checking`\] Fix `TC003` false positive with `future-annotations` ([#21125](https://github.com/astral-sh/ruff/pull/21125)) -- \[`pyflakes`\] Fix false positive for `__class__` in lambda expressions within class definitions (`F821`) ([#20564](https://github.com/astral-sh/ruff/pull/20564)) -- \[`pyupgrade`\] Fix false positive for `TypeVar` with default on Python \<3.13 (`UP046`,`UP047`) ([#21045](https://github.com/astral-sh/ruff/pull/21045)) - -### Rule changes - -- Add missing docstring sections to the numpy list ([#20931](https://github.com/astral-sh/ruff/pull/20931)) -- \[`airflow`\] Extend `airflow.models..Param` check (`AIR311`) ([#21043](https://github.com/astral-sh/ruff/pull/21043)) -- \[`airflow`\] Warn that `airflow....DAG.create_dagrun` has been removed (`AIR301`) ([#21093](https://github.com/astral-sh/ruff/pull/21093)) -- \[`refurb`\] Preserve digit separators in `Decimal` constructor (`FURB157`) ([#20588](https://github.com/astral-sh/ruff/pull/20588)) - -### Server - -- Avoid sending an unnecessary "clear diagnostics" message for clients supporting pull diagnostics ([#21105](https://github.com/astral-sh/ruff/pull/21105)) - -### Documentation - -- \[`flake8-bandit`\] Fix correct example for `S308` ([#21128](https://github.com/astral-sh/ruff/pull/21128)) - -### Other changes - -- Clearer error message when `line-length` goes beyond threshold ([#21072](https://github.com/astral-sh/ruff/pull/21072)) - -### Contributors - -- [@danparizher](https://github.com/danparizher) -- [@jvacek](https://github.com/jvacek) -- [@ntBre](https://github.com/ntBre) -- [@augustelalande](https://github.com/augustelalande) -- [@prakhar1144](https://github.com/prakhar1144) -- [@TaKO8Ki](https://github.com/TaKO8Ki) -- [@dylwil3](https://github.com/dylwil3) -- [@fatelei](https://github.com/fatelei) -- [@ShaharNaveh](https://github.com/ShaharNaveh) -- [@Lee-W](https://github.com/Lee-W) - -## 0.14.2 - -Released on 2025-10-23. - -### Preview features - -- \[`flake8-gettext`\] Resolve qualified names and built-in bindings (`INT001`, `INT002`, `INT003`) ([#19045](https://github.com/astral-sh/ruff/pull/19045)) - -### Bug fixes - -- Avoid reusing nested, interpolated quotes before Python 3.12 ([#20930](https://github.com/astral-sh/ruff/pull/20930)) -- Catch syntax errors in nested interpolations before Python 3.12 ([#20949](https://github.com/astral-sh/ruff/pull/20949)) -- \[`fastapi`\] Handle ellipsis defaults in `FAST002` autofix ([#20810](https://github.com/astral-sh/ruff/pull/20810)) -- \[`flake8-simplify`\] Skip `SIM911` when unknown arguments are present ([#20697](https://github.com/astral-sh/ruff/pull/20697)) -- \[`pyupgrade`\] Always parenthesize assignment expressions in fix for `f-string` (`UP032`) ([#21003](https://github.com/astral-sh/ruff/pull/21003)) -- \[`pyupgrade`\] Fix `UP032` conversion for decimal ints with underscores ([#21022](https://github.com/astral-sh/ruff/pull/21022)) -- \[`fastapi`\] Skip autofix for keyword and `__debug__` path params (`FAST003`) ([#20960](https://github.com/astral-sh/ruff/pull/20960)) - -### Rule changes - -- \[`flake8-bugbear`\] Skip `B905` and `B912` for fewer than two iterables and no starred arguments ([#20998](https://github.com/astral-sh/ruff/pull/20998)) -- \[`ruff`\] Use `DiagnosticTag` for more `pyflakes` and `pandas` rules ([#20801](https://github.com/astral-sh/ruff/pull/20801)) - -### CLI - -- Improve JSON output from `ruff rule` ([#20168](https://github.com/astral-sh/ruff/pull/20168)) - -### Documentation - -- Add source to testimonial ([#20971](https://github.com/astral-sh/ruff/pull/20971)) -- Document when a rule was added ([#21035](https://github.com/astral-sh/ruff/pull/21035)) - -### Other changes - -- [syntax-errors] Name is parameter and global ([#20426](https://github.com/astral-sh/ruff/pull/20426)) -- [syntax-errors] Alternative `match` patterns bind different names ([#20682](https://github.com/astral-sh/ruff/pull/20682)) - -### Contributors - -- [@hengky-kurniawan-1](https://github.com/hengky-kurniawan-1) -- [@ShalokShalom](https://github.com/ShalokShalom) -- [@robsdedude](https://github.com/robsdedude) -- [@LoicRiegel](https://github.com/LoicRiegel) -- [@TaKO8Ki](https://github.com/TaKO8Ki) -- [@dylwil3](https://github.com/dylwil3) +- [@amyreese](https://github.com/amyreese) +- [@Jkhall81](https://github.com/Jkhall81) +- [@cwkang1998](https://github.com/cwkang1998) +- [@manzt](https://github.com/manzt) - [@11happy](https://github.com/11happy) +- [@hugovk](https://github.com/hugovk) +- [@caiquejjx](https://github.com/caiquejjx) - [@ntBre](https://github.com/ntBre) - -## 0.14.1 - -Released on 2025-10-16. - -### Preview features - -- [formatter] Remove parentheses around multiple exception types on Python 3.14+ ([#20768](https://github.com/astral-sh/ruff/pull/20768)) -- \[`flake8-bugbear`\] Omit annotation in preview fix for `B006` ([#20877](https://github.com/astral-sh/ruff/pull/20877)) -- \[`flake8-logging-format`\] Avoid dropping implicitly concatenated pieces in the `G004` fix ([#20793](https://github.com/astral-sh/ruff/pull/20793)) -- \[`pydoclint`\] Implement `docstring-extraneous-parameter` (`DOC102`) ([#20376](https://github.com/astral-sh/ruff/pull/20376)) -- \[`pyupgrade`\] Extend `UP019` to detect `typing_extensions.Text` (`UP019`) ([#20825](https://github.com/astral-sh/ruff/pull/20825)) -- \[`pyupgrade`\] Fix false negative for `TypeVar` with default argument in `non-pep695-generic-class` (`UP046`) ([#20660](https://github.com/astral-sh/ruff/pull/20660)) - -### Bug fixes - -- Fix false negatives in `Truthiness::from_expr` for lambdas, generators, and f-strings ([#20704](https://github.com/astral-sh/ruff/pull/20704)) -- Fix syntax error false positives for escapes and quotes in f-strings ([#20867](https://github.com/astral-sh/ruff/pull/20867)) -- Fix syntax error false positives on parenthesized context managers ([#20846](https://github.com/astral-sh/ruff/pull/20846)) -- \[`fastapi`\] Fix false positives for path parameters that FastAPI doesn't recognize (`FAST003`) ([#20687](https://github.com/astral-sh/ruff/pull/20687)) -- \[`flake8-pyi`\] Fix operator precedence by adding parentheses when needed (`PYI061`) ([#20508](https://github.com/astral-sh/ruff/pull/20508)) -- \[`ruff`\] Suppress diagnostic for f-string interpolations with debug text (`RUF010`) ([#20525](https://github.com/astral-sh/ruff/pull/20525)) - -### Rule changes - -- \[`airflow`\] Add warning to `airflow.datasets.DatasetEvent` usage (`AIR301`) ([#20551](https://github.com/astral-sh/ruff/pull/20551)) -- \[`flake8-bugbear`\] Mark `B905` and `B912` fixes as unsafe ([#20695](https://github.com/astral-sh/ruff/pull/20695)) -- Use `DiagnosticTag` for more rules - changes display in editors ([#20758](https://github.com/astral-sh/ruff/pull/20758),[#20734](https://github.com/astral-sh/ruff/pull/20734)) - -### Documentation - -- Update Python compatibility from 3.13 to 3.14 in README.md ([#20852](https://github.com/astral-sh/ruff/pull/20852)) -- Update `lint.flake8-type-checking.quoted-annotations` docs ([#20765](https://github.com/astral-sh/ruff/pull/20765)) -- Update setup instructions for Zed 0.208.0+ ([#20902](https://github.com/astral-sh/ruff/pull/20902)) -- \[`flake8-datetimez`\] Clarify docs for several rules ([#20778](https://github.com/astral-sh/ruff/pull/20778)) -- Fix typo in `RUF015` description ([#20873](https://github.com/astral-sh/ruff/pull/20873)) - -### Other changes - -- Reduce binary size ([#20863](https://github.com/astral-sh/ruff/pull/20863)) -- Improved error recovery for unclosed strings (including f- and t-strings) ([#20848](https://github.com/astral-sh/ruff/pull/20848)) - -### Contributors - -- [@ntBre](https://github.com/ntBre) -- [@Paillat-dev](https://github.com/Paillat-dev) -- [@terror](https://github.com/terror) -- [@pieterh-oai](https://github.com/pieterh-oai) -- [@MichaReiser](https://github.com/MichaReiser) -- [@TaKO8Ki](https://github.com/TaKO8Ki) -- [@ageorgou](https://github.com/ageorgou) -- [@danparizher](https://github.com/danparizher) -- [@mgaitan](https://github.com/mgaitan) -- [@augustelalande](https://github.com/augustelalande) -- [@dylwil3](https://github.com/dylwil3) -- [@Lee-W](https://github.com/Lee-W) -- [@injust](https://github.com/injust) -- [@CarrotManMatt](https://github.com/CarrotManMatt) - -## 0.14.0 - -Released on 2025-10-07. - -### Breaking changes - -- Update default and latest Python versions for 3.14 ([#20725](https://github.com/astral-sh/ruff/pull/20725)) - -### Preview features - -- \[`flake8-bugbear`\] Include certain guaranteed-mutable expressions: tuples, generators, and assignment expressions (`B006`) ([#20024](https://github.com/astral-sh/ruff/pull/20024)) -- \[`refurb`\] Add fixes for `FURB101` and `FURB103` ([#20520](https://github.com/astral-sh/ruff/pull/20520)) -- \[`ruff`\] Extend `FA102` with listed PEP 585-compatible APIs ([#20659](https://github.com/astral-sh/ruff/pull/20659)) - -### Bug fixes - -- \[`flake8-annotations`\] Fix return type annotations to handle shadowed builtin symbols (`ANN201`, `ANN202`, `ANN204`, `ANN205`, `ANN206`) ([#20612](https://github.com/astral-sh/ruff/pull/20612)) -- \[`flynt`\] Fix f-string quoting for mixed quote joiners (`FLY002`) ([#20662](https://github.com/astral-sh/ruff/pull/20662)) -- \[`isort`\] Fix inserting required imports before future imports (`I002`) ([#20676](https://github.com/astral-sh/ruff/pull/20676)) -- \[`ruff`\] Handle argfile expansion errors gracefully ([#20691](https://github.com/astral-sh/ruff/pull/20691)) -- \[`ruff`\] Skip `RUF051` if `else`/`elif` block is present ([#20705](https://github.com/astral-sh/ruff/pull/20705)) -- \[`ruff`\] Improve handling of intermixed comments inside from-imports ([#20561](https://github.com/astral-sh/ruff/pull/20561)) - -### Documentation - -- \[`flake8-comprehensions`\] Clarify fix safety documentation (`C413`) ([#20640](https://github.com/astral-sh/ruff/pull/20640)) - -### Contributors - -- [@danparizher](https://github.com/danparizher) -- [@terror](https://github.com/terror) -- [@TaKO8Ki](https://github.com/TaKO8Ki) -- [@ntBre](https://github.com/ntBre) -- [@njhearp](https://github.com/njhearp) -- [@amyreese](https://github.com/amyreese) -- [@IDrokin117](https://github.com/IDrokin117) -- [@chirizxc](https://github.com/chirizxc) - -## 0.13.x - -See [changelogs/0.13.x](./changelogs/0.13.x.md) - -## 0.12.x - -See [changelogs/0.12.x](./changelogs/0.12.x.md) - -## 0.11.x - -See [changelogs/0.11.x](./changelogs/0.11.x.md) - -## 0.10.x - -See [changelogs/0.10.x](./changelogs/0.10.x.md) - -## 0.9.x - -See [changelogs/0.9.x](./changelogs/0.9.x.md) - -## 0.8.x - -See [changelogs/0.8.x](./changelogs/0.8.x.md) - -## 0.7.x - -See [changelogs/0.7.x](./changelogs/0.7.x.md) - -## 0.6.x - -See [changelogs/0.6.x](./changelogs/0.6.x.md) - -## 0.5.x - -See [changelogs/0.5.x](./changelogs/0.5.x.md) - -## 0.4.x - -See [changelogs/0.4.x](./changelogs/0.4.x.md) - -## 0.3.x - -See [changelogs/0.3.x](./changelogs/0.3.x.md) - -## 0.2.x - -See [changelogs/0.2.x](./changelogs/0.2.x.md) - -## 0.1.x - -See [changelogs/0.1.x](./changelogs/0.1.x.md) +- [@akawd](https://github.com/akawd) +- [@konstin](https://github.com/konstin) diff --git a/Cargo.lock b/Cargo.lock index ac0ee1147224c..bb8ef2fba3b17 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2918,7 +2918,7 @@ dependencies = [ [[package]] name = "ruff" -version = "0.14.14" +version = "0.15.0" dependencies = [ "anyhow", "argfile", @@ -3179,7 +3179,7 @@ dependencies = [ [[package]] name = "ruff_linter" -version = "0.14.14" +version = "0.15.0" dependencies = [ "aho-corasick", "anyhow", @@ -3551,7 +3551,7 @@ dependencies = [ [[package]] name = "ruff_wasm" -version = "0.14.14" +version = "0.15.0" dependencies = [ "console_error_panic_hook", "console_log", diff --git a/README.md b/README.md index 3d526dd34d10e..da6200777b64c 100644 --- a/README.md +++ b/README.md @@ -152,8 +152,8 @@ curl -LsSf https://astral.sh/ruff/install.sh | sh powershell -c "irm https://astral.sh/ruff/install.ps1 | iex" # For a specific version. -curl -LsSf https://astral.sh/ruff/0.14.14/install.sh | sh -powershell -c "irm https://astral.sh/ruff/0.14.14/install.ps1 | iex" +curl -LsSf https://astral.sh/ruff/0.15.0/install.sh | sh +powershell -c "irm https://astral.sh/ruff/0.15.0/install.ps1 | iex" ``` 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 ```yaml - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. - rev: v0.14.14 + rev: v0.15.0 hooks: # Run the linter. - id: ruff-check diff --git a/changelogs/0.14.x.md b/changelogs/0.14.x.md new file mode 100644 index 0000000000000..01c7e530f45a9 --- /dev/null +++ b/changelogs/0.14.x.md @@ -0,0 +1,711 @@ +## 0.14.0 + +Released on 2025-10-07. + +### Breaking changes + +- Update default and latest Python versions for 3.14 ([#20725](https://github.com/astral-sh/ruff/pull/20725)) + +### Preview features + +- \[`flake8-bugbear`\] Include certain guaranteed-mutable expressions: tuples, generators, and assignment expressions (`B006`) ([#20024](https://github.com/astral-sh/ruff/pull/20024)) +- \[`refurb`\] Add fixes for `FURB101` and `FURB103` ([#20520](https://github.com/astral-sh/ruff/pull/20520)) +- \[`ruff`\] Extend `FA102` with listed PEP 585-compatible APIs ([#20659](https://github.com/astral-sh/ruff/pull/20659)) + +### Bug fixes + +- \[`flake8-annotations`\] Fix return type annotations to handle shadowed builtin symbols (`ANN201`, `ANN202`, `ANN204`, `ANN205`, `ANN206`) ([#20612](https://github.com/astral-sh/ruff/pull/20612)) +- \[`flynt`\] Fix f-string quoting for mixed quote joiners (`FLY002`) ([#20662](https://github.com/astral-sh/ruff/pull/20662)) +- \[`isort`\] Fix inserting required imports before future imports (`I002`) ([#20676](https://github.com/astral-sh/ruff/pull/20676)) +- \[`ruff`\] Handle argfile expansion errors gracefully ([#20691](https://github.com/astral-sh/ruff/pull/20691)) +- \[`ruff`\] Skip `RUF051` if `else`/`elif` block is present ([#20705](https://github.com/astral-sh/ruff/pull/20705)) +- \[`ruff`\] Improve handling of intermixed comments inside from-imports ([#20561](https://github.com/astral-sh/ruff/pull/20561)) + +### Documentation + +- \[`flake8-comprehensions`\] Clarify fix safety documentation (`C413`) ([#20640](https://github.com/astral-sh/ruff/pull/20640)) + +### Contributors + +- [@danparizher](https://github.com/danparizher) +- [@terror](https://github.com/terror) +- [@TaKO8Ki](https://github.com/TaKO8Ki) +- [@ntBre](https://github.com/ntBre) +- [@njhearp](https://github.com/njhearp) +- [@amyreese](https://github.com/amyreese) +- [@IDrokin117](https://github.com/IDrokin117) +- [@chirizxc](https://github.com/chirizxc) + +## 0.13.x + +See [changelogs/0.13.x](./changelogs/0.13.x.md) + +## 0.12.x + +See [changelogs/0.12.x](./changelogs/0.12.x.md) + +## 0.11.x + +See [changelogs/0.11.x](./changelogs/0.11.x.md) + +## 0.10.x + +See [changelogs/0.10.x](./changelogs/0.10.x.md) + +## 0.9.x + +See [changelogs/0.9.x](./changelogs/0.9.x.md) + +## 0.8.x + +See [changelogs/0.8.x](./changelogs/0.8.x.md) + +## 0.7.x + +See [changelogs/0.7.x](./changelogs/0.7.x.md) + +## 0.6.x + +See [changelogs/0.6.x](./changelogs/0.6.x.md) + +## 0.5.x + +See [changelogs/0.5.x](./changelogs/0.5.x.md) + +## 0.4.x + +See [changelogs/0.4.x](./changelogs/0.4.x.md) + +## 0.3.x + +See [changelogs/0.3.x](./changelogs/0.3.x.md) + +## 0.2.x + +See [changelogs/0.2.x](./changelogs/0.2.x.md) + +## 0.1.x + +See [changelogs/0.1.x](./changelogs/0.1.x.md) + +## 0.14.1 + +Released on 2025-10-16. + +### Preview features + +- [formatter] Remove parentheses around multiple exception types on Python 3.14+ ([#20768](https://github.com/astral-sh/ruff/pull/20768)) +- \[`flake8-bugbear`\] Omit annotation in preview fix for `B006` ([#20877](https://github.com/astral-sh/ruff/pull/20877)) +- \[`flake8-logging-format`\] Avoid dropping implicitly concatenated pieces in the `G004` fix ([#20793](https://github.com/astral-sh/ruff/pull/20793)) +- \[`pydoclint`\] Implement `docstring-extraneous-parameter` (`DOC102`) ([#20376](https://github.com/astral-sh/ruff/pull/20376)) +- \[`pyupgrade`\] Extend `UP019` to detect `typing_extensions.Text` (`UP019`) ([#20825](https://github.com/astral-sh/ruff/pull/20825)) +- \[`pyupgrade`\] Fix false negative for `TypeVar` with default argument in `non-pep695-generic-class` (`UP046`) ([#20660](https://github.com/astral-sh/ruff/pull/20660)) + +### Bug fixes + +- Fix false negatives in `Truthiness::from_expr` for lambdas, generators, and f-strings ([#20704](https://github.com/astral-sh/ruff/pull/20704)) +- Fix syntax error false positives for escapes and quotes in f-strings ([#20867](https://github.com/astral-sh/ruff/pull/20867)) +- Fix syntax error false positives on parenthesized context managers ([#20846](https://github.com/astral-sh/ruff/pull/20846)) +- \[`fastapi`\] Fix false positives for path parameters that FastAPI doesn't recognize (`FAST003`) ([#20687](https://github.com/astral-sh/ruff/pull/20687)) +- \[`flake8-pyi`\] Fix operator precedence by adding parentheses when needed (`PYI061`) ([#20508](https://github.com/astral-sh/ruff/pull/20508)) +- \[`ruff`\] Suppress diagnostic for f-string interpolations with debug text (`RUF010`) ([#20525](https://github.com/astral-sh/ruff/pull/20525)) + +### Rule changes + +- \[`airflow`\] Add warning to `airflow.datasets.DatasetEvent` usage (`AIR301`) ([#20551](https://github.com/astral-sh/ruff/pull/20551)) +- \[`flake8-bugbear`\] Mark `B905` and `B912` fixes as unsafe ([#20695](https://github.com/astral-sh/ruff/pull/20695)) +- Use `DiagnosticTag` for more rules - changes display in editors ([#20758](https://github.com/astral-sh/ruff/pull/20758),[#20734](https://github.com/astral-sh/ruff/pull/20734)) + +### Documentation + +- Update Python compatibility from 3.13 to 3.14 in README.md ([#20852](https://github.com/astral-sh/ruff/pull/20852)) +- Update `lint.flake8-type-checking.quoted-annotations` docs ([#20765](https://github.com/astral-sh/ruff/pull/20765)) +- Update setup instructions for Zed 0.208.0+ ([#20902](https://github.com/astral-sh/ruff/pull/20902)) +- \[`flake8-datetimez`\] Clarify docs for several rules ([#20778](https://github.com/astral-sh/ruff/pull/20778)) +- Fix typo in `RUF015` description ([#20873](https://github.com/astral-sh/ruff/pull/20873)) + +### Other changes + +- Reduce binary size ([#20863](https://github.com/astral-sh/ruff/pull/20863)) +- Improved error recovery for unclosed strings (including f- and t-strings) ([#20848](https://github.com/astral-sh/ruff/pull/20848)) + +### Contributors + +- [@ntBre](https://github.com/ntBre) +- [@Paillat-dev](https://github.com/Paillat-dev) +- [@terror](https://github.com/terror) +- [@pieterh-oai](https://github.com/pieterh-oai) +- [@MichaReiser](https://github.com/MichaReiser) +- [@TaKO8Ki](https://github.com/TaKO8Ki) +- [@ageorgou](https://github.com/ageorgou) +- [@danparizher](https://github.com/danparizher) +- [@mgaitan](https://github.com/mgaitan) +- [@augustelalande](https://github.com/augustelalande) +- [@dylwil3](https://github.com/dylwil3) +- [@Lee-W](https://github.com/Lee-W) +- [@injust](https://github.com/injust) +- [@CarrotManMatt](https://github.com/CarrotManMatt) + +## 0.14.2 + +Released on 2025-10-23. + +### Preview features + +- \[`flake8-gettext`\] Resolve qualified names and built-in bindings (`INT001`, `INT002`, `INT003`) ([#19045](https://github.com/astral-sh/ruff/pull/19045)) + +### Bug fixes + +- Avoid reusing nested, interpolated quotes before Python 3.12 ([#20930](https://github.com/astral-sh/ruff/pull/20930)) +- Catch syntax errors in nested interpolations before Python 3.12 ([#20949](https://github.com/astral-sh/ruff/pull/20949)) +- \[`fastapi`\] Handle ellipsis defaults in `FAST002` autofix ([#20810](https://github.com/astral-sh/ruff/pull/20810)) +- \[`flake8-simplify`\] Skip `SIM911` when unknown arguments are present ([#20697](https://github.com/astral-sh/ruff/pull/20697)) +- \[`pyupgrade`\] Always parenthesize assignment expressions in fix for `f-string` (`UP032`) ([#21003](https://github.com/astral-sh/ruff/pull/21003)) +- \[`pyupgrade`\] Fix `UP032` conversion for decimal ints with underscores ([#21022](https://github.com/astral-sh/ruff/pull/21022)) +- \[`fastapi`\] Skip autofix for keyword and `__debug__` path params (`FAST003`) ([#20960](https://github.com/astral-sh/ruff/pull/20960)) + +### Rule changes + +- \[`flake8-bugbear`\] Skip `B905` and `B912` for fewer than two iterables and no starred arguments ([#20998](https://github.com/astral-sh/ruff/pull/20998)) +- \[`ruff`\] Use `DiagnosticTag` for more `pyflakes` and `pandas` rules ([#20801](https://github.com/astral-sh/ruff/pull/20801)) + +### CLI + +- Improve JSON output from `ruff rule` ([#20168](https://github.com/astral-sh/ruff/pull/20168)) + +### Documentation + +- Add source to testimonial ([#20971](https://github.com/astral-sh/ruff/pull/20971)) +- Document when a rule was added ([#21035](https://github.com/astral-sh/ruff/pull/21035)) + +### Other changes + +- [syntax-errors] Name is parameter and global ([#20426](https://github.com/astral-sh/ruff/pull/20426)) +- [syntax-errors] Alternative `match` patterns bind different names ([#20682](https://github.com/astral-sh/ruff/pull/20682)) + +### Contributors + +- [@hengky-kurniawan-1](https://github.com/hengky-kurniawan-1) +- [@ShalokShalom](https://github.com/ShalokShalom) +- [@robsdedude](https://github.com/robsdedude) +- [@LoicRiegel](https://github.com/LoicRiegel) +- [@TaKO8Ki](https://github.com/TaKO8Ki) +- [@dylwil3](https://github.com/dylwil3) +- [@11happy](https://github.com/11happy) +- [@ntBre](https://github.com/ntBre) + +## 0.14.3 + +Released on 2025-10-30. + +### Preview features + +- Respect `--output-format` with `--watch` ([#21097](https://github.com/astral-sh/ruff/pull/21097)) +- \[`pydoclint`\] Fix false positive on explicit exception re-raising (`DOC501`, `DOC502`) ([#21011](https://github.com/astral-sh/ruff/pull/21011)) +- \[`pyflakes`\] Revert to stable behavior if imports for module lie in alternate branches for `F401` ([#20878](https://github.com/astral-sh/ruff/pull/20878)) +- \[`pylint`\] Implement `stop-iteration-return` (`PLR1708`) ([#20733](https://github.com/astral-sh/ruff/pull/20733)) +- \[`ruff`\] Add support for additional eager conversion patterns (`RUF065`) ([#20657](https://github.com/astral-sh/ruff/pull/20657)) + +### Bug fixes + +- Fix finding keyword range for clause header after statement ending with semicolon ([#21067](https://github.com/astral-sh/ruff/pull/21067)) +- Fix syntax error false positive on nested alternative patterns ([#21104](https://github.com/astral-sh/ruff/pull/21104)) +- \[`ISC001`\] Fix panic when string literals are unclosed ([#21034](https://github.com/astral-sh/ruff/pull/21034)) +- \[`flake8-django`\] Apply `DJ001` to annotated fields ([#20907](https://github.com/astral-sh/ruff/pull/20907)) +- \[`flake8-pyi`\] Fix `PYI034` to not trigger on metaclasses (`PYI034`) ([#20881](https://github.com/astral-sh/ruff/pull/20881)) +- \[`flake8-type-checking`\] Fix `TC003` false positive with `future-annotations` ([#21125](https://github.com/astral-sh/ruff/pull/21125)) +- \[`pyflakes`\] Fix false positive for `__class__` in lambda expressions within class definitions (`F821`) ([#20564](https://github.com/astral-sh/ruff/pull/20564)) +- \[`pyupgrade`\] Fix false positive for `TypeVar` with default on Python \<3.13 (`UP046`,`UP047`) ([#21045](https://github.com/astral-sh/ruff/pull/21045)) + +### Rule changes + +- Add missing docstring sections to the numpy list ([#20931](https://github.com/astral-sh/ruff/pull/20931)) +- \[`airflow`\] Extend `airflow.models..Param` check (`AIR311`) ([#21043](https://github.com/astral-sh/ruff/pull/21043)) +- \[`airflow`\] Warn that `airflow....DAG.create_dagrun` has been removed (`AIR301`) ([#21093](https://github.com/astral-sh/ruff/pull/21093)) +- \[`refurb`\] Preserve digit separators in `Decimal` constructor (`FURB157`) ([#20588](https://github.com/astral-sh/ruff/pull/20588)) + +### Server + +- Avoid sending an unnecessary "clear diagnostics" message for clients supporting pull diagnostics ([#21105](https://github.com/astral-sh/ruff/pull/21105)) + +### Documentation + +- \[`flake8-bandit`\] Fix correct example for `S308` ([#21128](https://github.com/astral-sh/ruff/pull/21128)) + +### Other changes + +- Clearer error message when `line-length` goes beyond threshold ([#21072](https://github.com/astral-sh/ruff/pull/21072)) + +### Contributors + +- [@danparizher](https://github.com/danparizher) +- [@jvacek](https://github.com/jvacek) +- [@ntBre](https://github.com/ntBre) +- [@augustelalande](https://github.com/augustelalande) +- [@prakhar1144](https://github.com/prakhar1144) +- [@TaKO8Ki](https://github.com/TaKO8Ki) +- [@dylwil3](https://github.com/dylwil3) +- [@fatelei](https://github.com/fatelei) +- [@ShaharNaveh](https://github.com/ShaharNaveh) +- [@Lee-W](https://github.com/Lee-W) + +## 0.14.4 + +Released on 2025-11-06. + +### Preview features + +- [formatter] Allow newlines after function headers without docstrings ([#21110](https://github.com/astral-sh/ruff/pull/21110)) +- [formatter] Avoid extra parentheses for long `match` patterns with `as` captures ([#21176](https://github.com/astral-sh/ruff/pull/21176)) +- \[`refurb`\] Expand fix safety for keyword arguments and `Decimal`s (`FURB164`) ([#21259](https://github.com/astral-sh/ruff/pull/21259)) +- \[`refurb`\] Preserve argument ordering in autofix (`FURB103`) ([#20790](https://github.com/astral-sh/ruff/pull/20790)) + +### Bug fixes + +- [server] Fix missing diagnostics for notebooks ([#21156](https://github.com/astral-sh/ruff/pull/21156)) +- \[`flake8-bugbear`\] Ignore non-NFKC attribute names in `B009` and `B010` ([#21131](https://github.com/astral-sh/ruff/pull/21131)) +- \[`refurb`\] Fix false negative for underscores before sign in `Decimal` constructor (`FURB157`) ([#21190](https://github.com/astral-sh/ruff/pull/21190)) +- \[`ruff`\] Fix false positives on starred arguments (`RUF057`) ([#21256](https://github.com/astral-sh/ruff/pull/21256)) + +### Rule changes + +- \[`airflow`\] extend deprecated argument `concurrency` in `airflow..DAG` (`AIR301`) ([#21220](https://github.com/astral-sh/ruff/pull/21220)) + +### Documentation + +- Improve `extend` docs ([#21135](https://github.com/astral-sh/ruff/pull/21135)) +- \[`flake8-comprehensions`\] Fix typo in `C416` documentation ([#21184](https://github.com/astral-sh/ruff/pull/21184)) +- Revise Ruff setup instructions for Zed editor ([#20935](https://github.com/astral-sh/ruff/pull/20935)) + +### Other changes + +- Make `ruff analyze graph` work with jupyter notebooks ([#21161](https://github.com/astral-sh/ruff/pull/21161)) + +### Contributors + +- [@chirizxc](https://github.com/chirizxc) +- [@Lee-W](https://github.com/Lee-W) +- [@musicinmybrain](https://github.com/musicinmybrain) +- [@MichaReiser](https://github.com/MichaReiser) +- [@tjkuson](https://github.com/tjkuson) +- [@danparizher](https://github.com/danparizher) +- [@renovate](https://github.com/renovate) +- [@ntBre](https://github.com/ntBre) +- [@gauthsvenkat](https://github.com/gauthsvenkat) +- [@LoicRiegel](https://github.com/LoicRiegel) + +## 0.14.5 + +Released on 2025-11-13. + +### Preview features + +- \[`flake8-simplify`\] Apply `SIM113` when index variable is of type `int` ([#21395](https://github.com/astral-sh/ruff/pull/21395)) +- \[`pydoclint`\] Fix false positive when Sphinx directives follow a "Raises" section (`DOC502`) ([#20535](https://github.com/astral-sh/ruff/pull/20535)) +- \[`pydoclint`\] Support NumPy-style comma-separated parameters (`DOC102`) ([#20972](https://github.com/astral-sh/ruff/pull/20972)) +- \[`refurb`\] Auto-fix annotated assignments (`FURB101`) ([#21278](https://github.com/astral-sh/ruff/pull/21278)) +- \[`ruff`\] Ignore `str()` when not used for simple conversion (`RUF065`) ([#21330](https://github.com/astral-sh/ruff/pull/21330)) + +### Bug fixes + +- Fix syntax error false positive on alternative `match` patterns ([#21362](https://github.com/astral-sh/ruff/pull/21362)) +- \[`flake8-simplify`\] Fix false positive for iterable initializers with generator arguments (`SIM222`) ([#21187](https://github.com/astral-sh/ruff/pull/21187)) +- \[`pyupgrade`\] Fix false positive on relative imports from local `.builtins` module (`UP029`) ([#21309](https://github.com/astral-sh/ruff/pull/21309)) +- \[`pyupgrade`\] Consistently set the deprecated tag (`UP035`) ([#21396](https://github.com/astral-sh/ruff/pull/21396)) + +### Rule changes + +- \[`refurb`\] Detect empty f-strings (`FURB105`) ([#21348](https://github.com/astral-sh/ruff/pull/21348)) + +### CLI + +- Add option to provide a reason to `--add-noqa` ([#21294](https://github.com/astral-sh/ruff/pull/21294)) +- Add upstream linter URL to `ruff linter --output-format=json` ([#21316](https://github.com/astral-sh/ruff/pull/21316)) +- Add color to `--help` ([#21337](https://github.com/astral-sh/ruff/pull/21337)) + +### Documentation + +- Add a new "Opening a PR" section to the contribution guide ([#21298](https://github.com/astral-sh/ruff/pull/21298)) +- Added the PyScripter IDE to the list of "Who is using Ruff?" ([#21402](https://github.com/astral-sh/ruff/pull/21402)) +- Update PyCharm setup instructions ([#21409](https://github.com/astral-sh/ruff/pull/21409)) +- \[`flake8-annotations`\] Add link to `allow-star-arg-any` option (`ANN401`) ([#21326](https://github.com/astral-sh/ruff/pull/21326)) + +### Other changes + +- \[`configuration`\] Improve error message when `line-length` exceeds `u16::MAX` ([#21329](https://github.com/astral-sh/ruff/pull/21329)) + +### Contributors + +- [@njhearp](https://github.com/njhearp) +- [@11happy](https://github.com/11happy) +- [@hugovk](https://github.com/hugovk) +- [@Gankra](https://github.com/Gankra) +- [@ntBre](https://github.com/ntBre) +- [@pyscripter](https://github.com/pyscripter) +- [@danparizher](https://github.com/danparizher) +- [@MichaReiser](https://github.com/MichaReiser) +- [@henryiii](https://github.com/henryiii) +- [@charliecloudberry](https://github.com/charliecloudberry) + +## 0.14.6 + +Released on 2025-11-21. + +### Preview features + +- \[`flake8-bandit`\] Support new PySNMP API paths (`S508`, `S509`) ([#21374](https://github.com/astral-sh/ruff/pull/21374)) + +### Bug fixes + +- Adjust own-line comment placement between branches ([#21185](https://github.com/astral-sh/ruff/pull/21185)) +- Avoid syntax error when formatting attribute expressions with outer parentheses, parenthesized value, and trailing comment on value ([#20418](https://github.com/astral-sh/ruff/pull/20418)) +- Fix panic when formatting comments in unary expressions ([#21501](https://github.com/astral-sh/ruff/pull/21501)) +- Respect `fmt: skip` for compound statements on a single line ([#20633](https://github.com/astral-sh/ruff/pull/20633)) +- \[`refurb`\] Fix `FURB103` autofix ([#21454](https://github.com/astral-sh/ruff/pull/21454)) +- \[`ruff`\] Fix false positive for complex conversion specifiers in `logging-eager-conversion` (`RUF065`) ([#21464](https://github.com/astral-sh/ruff/pull/21464)) + +### Rule changes + +- \[`ruff`\] Avoid false positive on `ClassVar` reassignment (`RUF012`) ([#21478](https://github.com/astral-sh/ruff/pull/21478)) + +### CLI + +- Render hyperlinks for lint errors ([#21514](https://github.com/astral-sh/ruff/pull/21514)) +- Add a `ruff analyze` option to skip over imports in `TYPE_CHECKING` blocks ([#21472](https://github.com/astral-sh/ruff/pull/21472)) + +### Documentation + +- Limit `eglot-format` hook to eglot-managed Python buffers ([#21459](https://github.com/astral-sh/ruff/pull/21459)) +- Mention `force-exclude` in "Configuration > Python file discovery" ([#21500](https://github.com/astral-sh/ruff/pull/21500)) + +### Contributors + +- [@ntBre](https://github.com/ntBre) +- [@dylwil3](https://github.com/dylwil3) +- [@gauthsvenkat](https://github.com/gauthsvenkat) +- [@MichaReiser](https://github.com/MichaReiser) +- [@thamer](https://github.com/thamer) +- [@Ruchir28](https://github.com/Ruchir28) +- [@thejcannon](https://github.com/thejcannon) +- [@danparizher](https://github.com/danparizher) +- [@chirizxc](https://github.com/chirizxc) + +## 0.14.7 + +Released on 2025-11-28. + +### Preview features + +- \[`flake8-bandit`\] Handle string literal bindings in suspicious-url-open-usage (`S310`) ([#21469](https://github.com/astral-sh/ruff/pull/21469)) +- \[`pylint`\] Fix `PLR1708` false positives on nested functions ([#21177](https://github.com/astral-sh/ruff/pull/21177)) +- \[`pylint`\] Fix suppression for empty dict without tuple key annotation (`PLE1141`) ([#21290](https://github.com/astral-sh/ruff/pull/21290)) +- \[`ruff`\] Add rule `RUF066` to detect unnecessary class properties ([#21535](https://github.com/astral-sh/ruff/pull/21535)) +- \[`ruff`\] Catch more dummy variable uses (`RUF052`) ([#19799](https://github.com/astral-sh/ruff/pull/19799)) + +### Bug fixes + +- [server] Set severity for non-rule diagnostics ([#21559](https://github.com/astral-sh/ruff/pull/21559)) +- \[`flake8-implicit-str-concat`\] Avoid invalid fix in (`ISC003`) ([#21517](https://github.com/astral-sh/ruff/pull/21517)) +- \[`parser`\] Fix panic when parsing IPython escape command expressions ([#21480](https://github.com/astral-sh/ruff/pull/21480)) + +### CLI + +- Show partial fixability indicator in statistics output ([#21513](https://github.com/astral-sh/ruff/pull/21513)) + +### Contributors + +- [@mikeleppane](https://github.com/mikeleppane) +- [@senekor](https://github.com/senekor) +- [@ShaharNaveh](https://github.com/ShaharNaveh) +- [@JumboBear](https://github.com/JumboBear) +- [@prakhar1144](https://github.com/prakhar1144) +- [@tsvikas](https://github.com/tsvikas) +- [@danparizher](https://github.com/danparizher) +- [@chirizxc](https://github.com/chirizxc) +- [@AlexWaygood](https://github.com/AlexWaygood) +- [@MichaReiser](https://github.com/MichaReiser) + +## 0.14.8 + +Released on 2025-12-04. + +### Preview features + +- \[`flake8-bugbear`\] Catch `yield` expressions within other statements (`B901`) ([#21200](https://github.com/astral-sh/ruff/pull/21200)) +- \[`flake8-use-pathlib`\] Mark fixes unsafe for return type changes (`PTH104`, `PTH105`, `PTH109`, `PTH115`) ([#21440](https://github.com/astral-sh/ruff/pull/21440)) + +### Bug fixes + +- Fix syntax error false positives for `await` outside functions ([#21763](https://github.com/astral-sh/ruff/pull/21763)) +- \[`flake8-simplify`\] Fix truthiness assumption for non-iterable arguments in tuple/list/set calls (`SIM222`, `SIM223`) ([#21479](https://github.com/astral-sh/ruff/pull/21479)) + +### Documentation + +- Suggest using `--output-file` option in GitLab integration ([#21706](https://github.com/astral-sh/ruff/pull/21706)) + +### Other changes + +- [syntax-error] Default type parameter followed by non-default type parameter ([#21657](https://github.com/astral-sh/ruff/pull/21657)) + +### Contributors + +- [@kieran-ryan](https://github.com/kieran-ryan) +- [@11happy](https://github.com/11happy) +- [@danparizher](https://github.com/danparizher) +- [@ntBre](https://github.com/ntBre) + +## 0.14.9 + +Released on 2025-12-11. + +### Preview features + +- \[`ruff`\] New `RUF100` diagnostics for unused range suppressions ([#21783](https://github.com/astral-sh/ruff/pull/21783)) +- \[`pylint`\] Detect subclasses of builtin exceptions (`PLW0133`) ([#21382](https://github.com/astral-sh/ruff/pull/21382)) + +### Bug fixes + +- Fix comment placement in lambda parameters ([#21868](https://github.com/astral-sh/ruff/pull/21868)) +- Skip over trivia tokens after re-lexing ([#21895](https://github.com/astral-sh/ruff/pull/21895)) +- \[`flake8-bandit`\] Fix false positive when using non-standard `CSafeLoader` path (S506). ([#21830](https://github.com/astral-sh/ruff/pull/21830)) +- \[`flake8-bugbear`\] Accept immutable slice default arguments (`B008`) ([#21823](https://github.com/astral-sh/ruff/pull/21823)) + +### Rule changes + +- \[`pydocstyle`\] Suppress `D417` for parameters with `Unpack` annotations ([#21816](https://github.com/astral-sh/ruff/pull/21816)) + +### Performance + +- Use `memchr` for computing line indexes ([#21838](https://github.com/astral-sh/ruff/pull/21838)) + +### Documentation + +- Document `*.pyw` is included by default in preview ([#21885](https://github.com/astral-sh/ruff/pull/21885)) +- Document range suppressions, reorganize suppression docs ([#21884](https://github.com/astral-sh/ruff/pull/21884)) +- Update mkdocs-material to 9.7.0 (Insiders now free) ([#21797](https://github.com/astral-sh/ruff/pull/21797)) + +### Contributors + +- [@Avasam](https://github.com/Avasam) +- [@MichaReiser](https://github.com/MichaReiser) +- [@charliermarsh](https://github.com/charliermarsh) +- [@amyreese](https://github.com/amyreese) +- [@phongddo](https://github.com/phongddo) +- [@prakhar1144](https://github.com/prakhar1144) +- [@mahiro72](https://github.com/mahiro72) +- [@ntBre](https://github.com/ntBre) +- [@LoicRiegel](https://github.com/LoicRiegel) + +## 0.14.10 + +Released on 2025-12-18. + +### Preview features + +- [formatter] Fluent formatting of method chains ([#21369](https://github.com/astral-sh/ruff/pull/21369)) +- [formatter] Keep lambda parameters on one line and parenthesize the body if it expands ([#21385](https://github.com/astral-sh/ruff/pull/21385)) +- \[`flake8-implicit-str-concat`\] New rule to prevent implicit string concatenation in collections (`ISC004`) ([#21972](https://github.com/astral-sh/ruff/pull/21972)) +- \[`flake8-use-pathlib`\] Make fixes unsafe when types change in compound statements (`PTH104`, `PTH105`, `PTH109`, `PTH115`) ([#22009](https://github.com/astral-sh/ruff/pull/22009)) +- \[`refurb`\] Extend support for `Path.open` (`FURB101`, `FURB103`) ([#21080](https://github.com/astral-sh/ruff/pull/21080)) + +### Bug fixes + +- \[`pyupgrade`\] Fix parsing named Unicode escape sequences (`UP032`) ([#21901](https://github.com/astral-sh/ruff/pull/21901)) + +### Rule changes + +- \[`eradicate`\] Ignore `ruff:disable` and `ruff:enable` comments in `ERA001` ([#22038](https://github.com/astral-sh/ruff/pull/22038)) +- \[`flake8-pytest-style`\] Allow `match` and `check` keyword arguments without an expected exception type (`PT010`) ([#21964](https://github.com/astral-sh/ruff/pull/21964)) +- [syntax-errors] Annotated name cannot be global ([#20868](https://github.com/astral-sh/ruff/pull/20868)) + +### Documentation + +- Add `uv` and `ty` to the Ruff README ([#21996](https://github.com/astral-sh/ruff/pull/21996)) +- Document known lambda formatting deviations from Black ([#21954](https://github.com/astral-sh/ruff/pull/21954)) +- Update `setup.md` ([#22024](https://github.com/astral-sh/ruff/pull/22024)) +- \[`flake8-bandit`\] Fix broken link (`S704`) ([#22039](https://github.com/astral-sh/ruff/pull/22039)) + +### Other changes + +- Fix playground Share button showing "Copied!" before clipboard copy completes ([#21942](https://github.com/astral-sh/ruff/pull/21942)) + +### Contributors + +- [@dylwil3](https://github.com/dylwil3) +- [@charliecloudberry](https://github.com/charliecloudberry) +- [@charliermarsh](https://github.com/charliermarsh) +- [@chirizxc](https://github.com/chirizxc) +- [@ntBre](https://github.com/ntBre) +- [@zanieb](https://github.com/zanieb) +- [@amyreese](https://github.com/amyreese) +- [@hauntsaninja](https://github.com/hauntsaninja) +- [@11happy](https://github.com/11happy) +- [@mahiro72](https://github.com/mahiro72) +- [@MichaReiser](https://github.com/MichaReiser) +- [@phongddo](https://github.com/phongddo) +- [@PeterJCLaw](https://github.com/PeterJCLaw) + +## 0.14.11 + +Released on 2026-01-08. + +### Preview features + +- Consolidate diagnostics for matched disable/enable suppression comments ([#22099](https://github.com/astral-sh/ruff/pull/22099)) +- Report diagnostics for invalid/unmatched range suppression comments ([#21908](https://github.com/astral-sh/ruff/pull/21908)) +- \[`airflow`\] Passing positional argument into `airflow.lineage.hook.HookLineageCollector.create_asset` is not allowed (`AIR303`) ([#22046](https://github.com/astral-sh/ruff/pull/22046)) +- \[`refurb`\] Mark `FURB192` fix as always unsafe ([#22210](https://github.com/astral-sh/ruff/pull/22210)) +- \[`ruff`\] Add `non-empty-init-module` (`RUF067`) ([#22143](https://github.com/astral-sh/ruff/pull/22143)) + +### Bug fixes + +- Fix GitHub format for multi-line diagnostics ([#22108](https://github.com/astral-sh/ruff/pull/22108)) +- \[`flake8-unused-arguments`\] Mark `**kwargs` in `TypeVar` as used (`ARG001`) ([#22214](https://github.com/astral-sh/ruff/pull/22214)) + +### Rule changes + +- Add `help:` subdiagnostics for several Ruff rules that can sometimes appear to disagree with `ty` ([#22331](https://github.com/astral-sh/ruff/pull/22331)) +- \[`pylint`\] Demote `PLW1510` fix to display-only ([#22318](https://github.com/astral-sh/ruff/pull/22318)) +- \[`pylint`\] Ignore identical members (`PLR1714`) ([#22220](https://github.com/astral-sh/ruff/pull/22220)) +- \[`pylint`\] Improve diagnostic range for `PLC0206` ([#22312](https://github.com/astral-sh/ruff/pull/22312)) +- \[`ruff`\] Improve fix title for `RUF102` invalid rule code ([#22100](https://github.com/astral-sh/ruff/pull/22100)) +- \[`flake8-simplify`\]: Avoid unnecessary builtins import for `SIM105` ([#22358](https://github.com/astral-sh/ruff/pull/22358)) + +### Configuration + +- Allow Python 3.15 as valid `target-version` value in preview ([#22419](https://github.com/astral-sh/ruff/pull/22419)) +- Check `required-version` before parsing rules ([#22410](https://github.com/astral-sh/ruff/pull/22410)) +- Include configured `src` directories when resolving graphs ([#22451](https://github.com/astral-sh/ruff/pull/22451)) + +### Documentation + +- Update `T201` suggestion to not use root logger to satisfy `LOG015` ([#22059](https://github.com/astral-sh/ruff/pull/22059)) +- Fix `iter` example in unsafe fixes doc ([#22118](https://github.com/astral-sh/ruff/pull/22118)) +- \[`flake8_print`\] better suggestion for `basicConfig` in `T201` docs ([#22101](https://github.com/astral-sh/ruff/pull/22101)) +- \[`pylint`\] Restore the fix safety docs for `PLW0133` ([#22211](https://github.com/astral-sh/ruff/pull/22211)) +- Fix Jupyter notebook discovery info for editors ([#22447](https://github.com/astral-sh/ruff/pull/22447)) + +### Contributors + +- [@charliermarsh](https://github.com/charliermarsh) +- [@ntBre](https://github.com/ntBre) +- [@cenviity](https://github.com/cenviity) +- [@njhearp](https://github.com/njhearp) +- [@cbachhuber](https://github.com/cbachhuber) +- [@jelle-openai](https://github.com/jelle-openai) +- [@AlexWaygood](https://github.com/AlexWaygood) +- [@ValdonVitija](https://github.com/ValdonVitija) +- [@BurntSushi](https://github.com/BurntSushi) +- [@Jkhall81](https://github.com/Jkhall81) +- [@PeterJCLaw](https://github.com/PeterJCLaw) +- [@harupy](https://github.com/harupy) +- [@amyreese](https://github.com/amyreese) +- [@sjyangkevin](https://github.com/sjyangkevin) +- [@woodruffw](https://github.com/woodruffw) + +## 0.14.12 + +Released on 2026-01-15. + +### Preview features + +- \[`flake8-blind-except`\] Allow more logging methods (`BLE001`) ([#22057](https://github.com/astral-sh/ruff/pull/22057)) +- \[`ruff`\] Respect `lint.pydocstyle.property-decorators` in `RUF066` ([#22515](https://github.com/astral-sh/ruff/pull/22515)) + +### Bug fixes + +- Fix configuration path in `--show-settings` ([#22478](https://github.com/astral-sh/ruff/pull/22478)) +- Respect `fmt: skip` for multiple statements on the same logical line ([#22119](https://github.com/astral-sh/ruff/pull/22119)) + +### Rule changes + +- \[`pydocstyle`\] Update Rust crate imperative to v1.0.7 (`D401`) ([#22519](https://github.com/astral-sh/ruff/pull/22519)) +- \[`isort`\] Insert imports in alphabetical order (`I002`) ([#22493](https://github.com/astral-sh/ruff/pull/22493)) + +### Documentation + +- Add llms.txt support for documentation ([#22463](https://github.com/astral-sh/ruff/pull/22463)) +- Use prek in documentation and CI ([#22505](https://github.com/astral-sh/ruff/pull/22505)) +- \[`flake8-pytest-style`\] Add `check` parameter example to `PT017` docs ([#22546](https://github.com/astral-sh/ruff/pull/22546)) +- \[`ruff`\] Make example error out-of-the-box (`RUF103`) ([#22558](https://github.com/astral-sh/ruff/pull/22558)) +- \[`ruff`\] document `RUF100` trailing comment fix behavior ([#22479](https://github.com/astral-sh/ruff/pull/22479)) + +### Other changes + +- wasm: Require explicit logging initialization ([#22587](https://github.com/astral-sh/ruff/pull/22587)) + +### Contributors + +- [@terror](https://github.com/terror) +- [@harupy](https://github.com/harupy) +- [@Jkhall81](https://github.com/Jkhall81) +- [@dhruvmanila](https://github.com/dhruvmanila) +- [@lubaskinc0de](https://github.com/lubaskinc0de) +- [@zanieb](https://github.com/zanieb) +- [@MeGaGiGaGon](https://github.com/MeGaGiGaGon) +- [@charliermarsh](https://github.com/charliermarsh) +- [@renovate](https://github.com/renovate) +- [@dylwil3](https://github.com/dylwil3) +- [@MichaReiser](https://github.com/MichaReiser) +- [@11happy](https://github.com/11happy) + +## 0.14.13 + +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 contents of the 0.14.13 release are identical to 0.14.12. + +## 0.14.14 + +Released on 2026-01-22. + +### Preview features + +- Preserve required parentheses in lambda bodies ([#22747](https://github.com/astral-sh/ruff/pull/22747)) +- Combine range suppression code diagnostics ([#22613](https://github.com/astral-sh/ruff/pull/22613)) +- \[`airflow`\] Second positional argument to `Asset`/`Dataset` should not be a dictionary (`AIR303`) ([#22453](https://github.com/astral-sh/ruff/pull/22453)) +- \[`ruff`\] Detect duplicate entries in `__all__` (`RUF068`) ([#22114](https://github.com/astral-sh/ruff/pull/22114)) + +### Bug fixes + +- \[`pyupgrade`\] Allow shadowing non-builtin bindings (`UP029`) ([#22749](https://github.com/astral-sh/ruff/pull/22749)) +- \[`pyupgrade`\] Apply `UP045` to string arguments of `typing.cast` ([#22320](https://github.com/astral-sh/ruff/pull/22320)) +- \[`flake8-pie`\] Detect duplicated declared class fields in `PIE794` ([#22717](https://github.com/astral-sh/ruff/pull/22717)) + +### Rule changes + +- \[`flake8-pyi`\] Fix inconsistent handling of forward references for `__new__`, `__enter__`, `__aenter__` in `PYI034` ([#22798](https://github.com/astral-sh/ruff/pull/22798)) +- \[`flake8-pytest-style`\] Support `check` parameter in `PT011` ([#22725](https://github.com/astral-sh/ruff/pull/22725)) +- \[`ruff`\] Add exception for `ctypes.Structure._fields_` (`RUF012`) ([#22559](https://github.com/astral-sh/ruff/pull/22559)) +- Many fixes are now marked unsafe if they would remove comments: + - \[`flake8-bugbear`\] [`B009`](https://github.com/astral-sh/ruff/pull/22656), [`B010`](https://github.com/astral-sh/ruff/pull/22657), [`B013`](https://github.com/astral-sh/ruff/pull/22658), [`B014`](https://github.com/astral-sh/ruff/pull/22659), [`B033`](https://github.com/astral-sh/ruff/pull/22632) + - \[`flake8-simplify`\] [`SIM910`](https://github.com/astral-sh/ruff/pull/22662), [`SIM911`](https://github.com/astral-sh/ruff/pull/22661) + - \[`pyupgrade`\] [`UP007`](https://github.com/astral-sh/ruff/pull/22772), [`UP039`](https://github.com/astral-sh/ruff/pull/22774), [`UP041`](https://github.com/astral-sh/ruff/pull/22773), [`UP045`](https://github.com/astral-sh/ruff/pull/22772) + - \[`refurb`\] [`FURB105`](https://github.com/astral-sh/ruff/pull/22767), [`FURB116`](https://github.com/astral-sh/ruff/pull/22681), [`FURB136`](https://github.com/astral-sh/ruff/pull/22680), [`FURB140`](https://github.com/astral-sh/ruff/pull/22679), [`FURB145`](https://github.com/astral-sh/ruff/pull/22670), [`FURB154`](https://github.com/astral-sh/ruff/pull/22669), [`FURB157`](https://github.com/astral-sh/ruff/pull/22668), [`FURB164`](https://github.com/astral-sh/ruff/pull/22667),[`FURB181`](https://github.com/astral-sh/ruff/pull/22666), [`FURB188`](https://github.com/astral-sh/ruff/pull/22665) + - \[`ruff`\] [`RUF019`](https://github.com/astral-sh/ruff/pull/22663), [`RUF020`](https://github.com/astral-sh/ruff/pull/22664) + +### Documentation + +- Add `--exit-non-zero-on-format` to formatter exit codes section ([#22761](https://github.com/astral-sh/ruff/pull/22761)) +- Update contributing guide for adding a new rule ([#22779](https://github.com/astral-sh/ruff/pull/22779)) +- \[`FastAPI`\] Document fix safety for `FAST001` ([#22655](https://github.com/astral-sh/ruff/pull/22655)) +- \[`flake8-async`\] Tweak explanation to focus on latency/efficiency tradeoff (`ASYNC110`) ([#22715](https://github.com/astral-sh/ruff/pull/22715)) +- \[`pandas-vet`\] Make example error out-of-the-box (`PD002`) ([#22561](https://github.com/astral-sh/ruff/pull/22561)) +- \[`refurb`\] Make the example work out of box (`FURB101`) ([#22770](https://github.com/astral-sh/ruff/pull/22770)) +- \[`refurb`\] Make the example work out of box (`FURB103`) ([#22769](https://github.com/astral-sh/ruff/pull/22769)) + +### Contributors + +- [@alejsdev](https://github.com/alejsdev) +- [@ntBre](https://github.com/ntBre) +- [@caiquejjx](https://github.com/caiquejjx) +- [@chirizxc](https://github.com/chirizxc) +- [@denyszhak](https://github.com/denyszhak) +- [@sjyangkevin](https://github.com/sjyangkevin) +- [@MeGaGiGaGon](https://github.com/MeGaGiGaGon) +- [@leandrobbraga](https://github.com/leandrobbraga) +- [@MichaReiser](https://github.com/MichaReiser) +- [@carljm](https://github.com/carljm) +- [@amyreese](https://github.com/amyreese) +- [@zsol](https://github.com/zsol) +- [@harupy](https://github.com/harupy) diff --git a/crates/ruff/Cargo.toml b/crates/ruff/Cargo.toml index 569c3629b01f9..ae16cd8ce70c9 100644 --- a/crates/ruff/Cargo.toml +++ b/crates/ruff/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ruff" -version = "0.14.14" +version = "0.15.0" publish = true authors = { workspace = true } edition = { workspace = true } diff --git a/crates/ruff_linter/Cargo.toml b/crates/ruff_linter/Cargo.toml index 4ed1eac7cb1b8..91880d6e4e418 100644 --- a/crates/ruff_linter/Cargo.toml +++ b/crates/ruff_linter/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ruff_linter" -version = "0.14.14" +version = "0.15.0" publish = false authors = { workspace = true } edition = { workspace = true } diff --git a/crates/ruff_wasm/Cargo.toml b/crates/ruff_wasm/Cargo.toml index d6abcd1a71796..6d51bcb5ecba8 100644 --- a/crates/ruff_wasm/Cargo.toml +++ b/crates/ruff_wasm/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ruff_wasm" -version = "0.14.14" +version = "0.15.0" publish = false authors = { workspace = true } edition = { workspace = true } diff --git a/docs/integrations.md b/docs/integrations.md index df806f798c888..e67eb10daab3c 100644 --- a/docs/integrations.md +++ b/docs/integrations.md @@ -80,7 +80,7 @@ You can add the following configuration to `.gitlab-ci.yml` to run a `ruff forma stage: build interruptible: true image: - name: ghcr.io/astral-sh/ruff:0.14.14-alpine + name: ghcr.io/astral-sh/ruff:0.15.0-alpine before_script: - cd $CI_PROJECT_DIR - ruff --version @@ -106,7 +106,7 @@ Ruff can be used as a [pre-commit](https://pre-commit.com) hook via [`ruff-pre-c ```yaml - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. - rev: v0.14.14 + rev: v0.15.0 hooks: # Run the linter. - id: ruff-check @@ -119,7 +119,7 @@ To enable lint fixes, add the `--fix` argument to the lint hook: ```yaml - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. - rev: v0.14.14 + rev: v0.15.0 hooks: # Run the linter. - id: ruff-check @@ -133,7 +133,7 @@ To avoid running on Jupyter Notebooks, remove `jupyter` from the list of allowed ```yaml - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. - rev: v0.14.14 + rev: v0.15.0 hooks: # Run the linter. - id: ruff-check diff --git a/docs/tutorial.md b/docs/tutorial.md index 2f25bc0eac6c9..92c7ef2b8a274 100644 --- a/docs/tutorial.md +++ b/docs/tutorial.md @@ -369,7 +369,7 @@ This tutorial has focused on Ruff's command-line interface, but Ruff can also be ```yaml - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. - rev: v0.14.14 + rev: v0.15.0 hooks: # Run the linter. - id: ruff-check diff --git a/pyproject.toml b/pyproject.toml index 65f21583fef83..dd832cc305aae 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "maturin" [project] name = "ruff" -version = "0.14.14" +version = "0.15.0" description = "An extremely fast Python linter and code formatter, written in Rust." authors = [{ name = "Astral Software Inc.", email = "hey@astral.sh" }] readme = "README.md" diff --git a/scripts/benchmarks/pyproject.toml b/scripts/benchmarks/pyproject.toml index 616407483799e..0d0a2b6a4750e 100644 --- a/scripts/benchmarks/pyproject.toml +++ b/scripts/benchmarks/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "scripts" -version = "0.14.14" +version = "0.15.0" description = "" authors = ["Charles Marsh "]