← Back to issue list

chore(deps): update dependency ruff to v0.1.15

View original Github issue

Metadata

Project
starbase
Number
#177
Type
pull request
State
merged
Author
renovate[bot]
Labels
Created
Updated
Closed

Current evaluation

Successfully merged automated dependency update upgrading ruff from 0.0.267 to 0.1.15. The change passed CI checks, maintained 100% test coverage, and updated the project's linting tool to the latest release.

Suggested action:

No scores available.

Issue body

[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [ruff](https://docs.astral.sh/ruff) ([source](https://togithub.com/astral-sh/ruff), [changelog](https://togithub.com/astral-sh/ruff/blob/main/CHANGELOG.md)) | `0.0.267` -> `0.1.15` | [![age](https://developer.mend.io/api/mc/badges/age/pypi/ruff/0.1.15?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/ruff/0.1.15?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/ruff/0.0.267/0.1.15?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/ruff/0.0.267/0.1.15?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>astral-sh/ruff (ruff)</summary> ### [`v0.1.15`](https://togithub.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#0115) [Compare Source](https://togithub.com/astral-sh/ruff/compare/v0.1.14...v0.1.15) ##### Preview features - Error when `NURSERY` selector is used with `--preview` ([#&#8203;9682](https://togithub.com/astral-sh/ruff/pull/9682)) - Preserve indentation around multiline strings in formatter ([#&#8203;9637](https://togithub.com/astral-sh/ruff/pull/9637)) - \[`flake8-return`] Add fixes for all rules (`RET505`, `RET506`, `RET507`, `RET508`) ([#&#8203;9595](https://togithub.com/astral-sh/ruff/pull/9595)) - \[`flake8-simplify`] Add fix for `if-with-same-arms` (`SIM114`) ([#&#8203;9591](https://togithub.com/astral-sh/ruff/pull/9591)) - \[`pycodestyle`] Add fix for `multiple-imports-on-one-line` (`E401`) ([#&#8203;9518](https://togithub.com/astral-sh/ruff/pull/9518)) - \[`pylint`] Add fix for `collapsible-else-if` (`PLR5501`) ([#&#8203;9594](https://togithub.com/astral-sh/ruff/pull/9594)) - \[`pylint`] Add fix for `useless-else-on-loop` (`PLW0120`) ([#&#8203;9590](https://togithub.com/astral-sh/ruff/pull/9590)) - \[`pylint`] Implement `assigning-non-slot` (`E0237`) ([#&#8203;9623](https://togithub.com/astral-sh/ruff/pull/9623)) - \[`pylint`] Implement `potential-index-error` (`PLE0643`) ([#&#8203;9545](https://togithub.com/astral-sh/ruff/pull/9545)) - \[`pylint`] Implement `too-many-nested-blocks` (`PLR1702`) ([#&#8203;9172](https://togithub.com/astral-sh/ruff/pull/9172)) - \[`ruff`] Add rule to sort `__slots__` and `__match_args__` ([#&#8203;9564](https://togithub.com/astral-sh/ruff/pull/9564)) - \[`ruff`] Detect unnecessary `dict` comprehensions for iterables (`RUF025`) ([#&#8203;9613](https://togithub.com/astral-sh/ruff/pull/9613)) - \[`ruff`] Guard against use of `default_factory` as a keyword argument (`RUF026`) ([#&#8203;9651](https://togithub.com/astral-sh/ruff/pull/9651)) - \[`ruff`] Implement `mutable-fromkeys-value` (`RUF024`) ([#&#8203;9597](https://togithub.com/astral-sh/ruff/pull/9597)) ##### CLI - Enable auto-wrapping of `--help` output ([#&#8203;9633](https://togithub.com/astral-sh/ruff/pull/9633)) ##### Bug fixes - Avoid rendering display-only rules as fixable ([#&#8203;9649](https://togithub.com/astral-sh/ruff/pull/9649)) - Detect automagic-like assignments in notebooks ([#&#8203;9653](https://togithub.com/astral-sh/ruff/pull/9653)) - Generate custom JSON schema for dynamic setting ([#&#8203;9632](https://togithub.com/astral-sh/ruff/pull/9632)) - \[`flake8-no-pep420`] Include global `--config` when determining namespace packages ([#&#8203;9603](https://togithub.com/astral-sh/ruff/pull/9603)) - \[`flake8-pie`] Omit bound tuples passed to `.startswith` or `.endswith` ([#&#8203;9661](https://togithub.com/astral-sh/ruff/pull/9661)) - \[`flake8-return`] Avoid panic when fixing inlined else blocks ([#&#8203;9657](https://togithub.com/astral-sh/ruff/pull/9657)) - \[`flake8-return`] Consider exception suppression in unnecessary assignment ([#&#8203;9673](https://togithub.com/astral-sh/ruff/pull/9673)) - \[`flake8-return`] Take `NoReturn` annotation into account when analyzing implicit returns ([#&#8203;9636](https://togithub.com/astral-sh/ruff/pull/9636)) - \[`flake8-simplify`] Support inverted returns in `needless-bool` (`SIM103`) ([#&#8203;9619](https://togithub.com/astral-sh/ruff/pull/9619)) - \[`flake8-type-checking`] Add Pydantic's `BaseConfig` to default-copy list ([#&#8203;9650](https://togithub.com/astral-sh/ruff/pull/9650)) - \[`flake8-type-checking`] Avoid marking `InitVar` as a typing-only annotation ([#&#8203;9688](https://togithub.com/astral-sh/ruff/pull/9688)) - \[`pycodestyle`] Allow `dtype` comparisons in `type-comparison` ([#&#8203;9676](https://togithub.com/astral-sh/ruff/pull/9676)) - \[`pydocstyle`] Re-implement `last-line-after-section` (`D413`) ([#&#8203;9654](https://togithub.com/astral-sh/ruff/pull/9654)) ##### Documentation - \[`flake8-pytest-style`] Add fix safety documentation for `duplicate-parameterize-test-cases` ([#&#8203;9678](https://togithub.com/astral-sh/ruff/pull/9678)) - \[`pylint`] Document `literal-membership` fix safety conditions ([#&#8203;9677](https://togithub.com/astral-sh/ruff/pull/9677)) - \[`isort`] Fix reference to `isort` rule code ([#&#8203;9598](https://togithub.com/astral-sh/ruff/pull/9598)) ##### Other changes ### [`v0.1.14`](https://togithub.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#0114) [Compare Source](https://togithub.com/astral-sh/ruff/compare/v0.1.13...v0.1.14) ##### Preview features - \[`flake8-bugbear`] Add fix for `duplicate-value` (`B033`) ([#&#8203;9510](https://togithub.com/astral-sh/ruff/pull/9510)) - \[`flake8-simplify`] Implement `enumerate-for-loop` (`SIM113`) ([#&#8203;7777](https://togithub.com/astral-sh/ruff/pull/7777)) - \[`pygrep_hooks`] Add fix for `deprecated-log-warn` (`PGH002`) ([#&#8203;9519](https://togithub.com/astral-sh/ruff/pull/9519)) - \[`pylint`] Implement `import-private-name` (`C2701`) ([#&#8203;5920](https://togithub.com/astral-sh/ruff/pull/5920)) - \[`refurb`] Implement `regex-flag-alias` with fix (`FURB167`) ([#&#8203;9516](https://togithub.com/astral-sh/ruff/pull/9516)) - \[`ruff`] Add rule and fix to sort contents of `__all__` (`RUF022`) ([#&#8203;9474](https://togithub.com/astral-sh/ruff/pull/9474)) - \[`tryceratops`] Add fix for `error-instead-of-exception` (`TRY400`) ([#&#8203;9520](https://togithub.com/astral-sh/ruff/pull/9520)) ##### Rule changes - \[`flake8-pyi`] Fix `PYI047` false negatives on PEP-695 type aliases ([#&#8203;9566](https://togithub.com/astral-sh/ruff/pull/9566)) - \[`flake8-pyi`] Fix `PYI049` false negatives on call-based `TypedDict`s ([#&#8203;9567](https://togithub.com/astral-sh/ruff/pull/9567)) - \[`pylint`] Exclude `self` and `cls` when counting method arguments (`PLR0917`) ([#&#8203;9563](https://togithub.com/astral-sh/ruff/pull/9563)) ##### CLI - `--show-settings` displays active settings in a far more readable format ([#&#8203;9464](https://togithub.com/astral-sh/ruff/pull/9464)) - Add `--extension` support to the formatter ([#&#8203;9483](https://togithub.com/astral-sh/ruff/pull/9483)) ##### Configuration - Ignore preview status for fixable and unfixable selectors ([#&#8203;9538](https://togithub.com/astral-sh/ruff/pull/9538)) - \[`pycodestyle`] Use the configured tab size when expanding indents ([#&#8203;9506](https://togithub.com/astral-sh/ruff/pull/9506)) ##### Bug fixes - Recursively visit deferred AST nodes ([#&#8203;9541](https://togithub.com/astral-sh/ruff/pull/9541)) - Visit deferred lambdas before type definitions ([#&#8203;9540](https://togithub.com/astral-sh/ruff/pull/9540)) - \[`flake8-simplify`] Avoid some more `enumerate-for-loop` false positives (`SIM113`) ([#&#8203;9515](https://togithub.com/astral-sh/ruff/pull/9515)) - \[`pandas-vet`] Limit inplace diagnostics to methods that accept inplace ([#&#8203;9495](https://togithub.com/astral-sh/ruff/pull/9495)) - \[`pylint`] Add the `__prepare__` method to the list of recognized dunder method ([#&#8203;9529](https://togithub.com/astral-sh/ruff/pull/9529)) - \[`pylint`] Ignore unnecessary dunder calls within dunder definitions ([#&#8203;9496](https://togithub.com/astral-sh/ruff/pull/9496)) - \[`refurb`] Avoid bailing when `reimplemented-operator` is called on function (`FURB118`) ([#&#8203;9556](https://togithub.com/astral-sh/ruff/pull/9556)) - \[`ruff`] Avoid treating named expressions as static keys (`RUF011`) ([#&#8203;9494](https://togithub.com/astral-sh/ruff/pull/9494)) ##### Documentation - Add instructions on using `noqa` with isort rules ([#&#8203;9555](https://togithub.com/astral-sh/ruff/pull/9555)) - Documentation update for URL giving 'page not found' ([#&#8203;9565](https://togithub.com/astral-sh/ruff/pull/9565)) - Fix admonition in dark mode ([#&#8203;9502](https://togithub.com/astral-sh/ruff/pull/9502)) - Update contributing docs to use `cargo bench -p ruff_benchmark` ([#&#8203;9535](https://togithub.com/astral-sh/ruff/pull/9535)) - Update emacs integration section to include `emacs-ruff-format` ([#&#8203;9403](https://togithub.com/astral-sh/ruff/pull/9403)) - \[`flake8-blind-except`] Document exceptions to `blind-except` rule ([#&#8203;9580](https://togithub.com/astral-sh/ruff/pull/9580)) ### [`v0.1.13`](https://togithub.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#0113) [Compare Source](https://togithub.com/astral-sh/ruff/compare/v0.1.12...v0.1.13) ##### Bug fixes - Include base pyproject when initializing cache settings ([#&#8203;9480](https://togithub.com/astral-sh/ruff/pull/9480)) - \[`flake8-simplify`] Account for possibly-empty f-string values in truthiness logic ([#&#8203;9484](https://togithub.com/astral-sh/ruff/pull/9484)) - \[`pylint`] Add the missing period in `unnecessary-dunder-call` ([#&#8203;9485](https://togithub.com/astral-sh/ruff/pull/9485)) - \[`pylint`] Fix `__aenter__` message in `unnecessary-dunder-call` ([#&#8203;9492](https://togithub.com/astral-sh/ruff/pull/9492)) ### [`v0.1.12`](https://togithub.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#0112) [Compare Source](https://togithub.com/astral-sh/ruff/compare/v0.1.11...v0.1.12) ##### Preview features - Formatter: Hug multiline-strings in preview style ([#&#8203;9243](https://togithub.com/astral-sh/ruff/pull/9243)) - \[`flake8-bandit`] Add `ssl-with-no-version` (`S504`) ([#&#8203;9384](https://togithub.com/astral-sh/ruff/pull/9384)) - \[`flake8-bandit`] Implement `ssl-insecure-version` (`S502`) ([#&#8203;9390](https://togithub.com/astral-sh/ruff/pull/9390)) - \[`flake8-bandit`] Implement `ssl-with-bad-defaults` (`S503`) ([#&#8203;9391](https://togithub.com/astral-sh/ruff/pull/9391)) - \[`flake8-bandit`] Implement suspicious import rules (`S4XX`) ([#&#8203;8831](https://togithub.com/astral-sh/ruff/pull/8831)) - \[`flake8-simplify`] Implement `zip-dict-keys-and-values` (`SIM911`) ([#&#8203;9460](https://togithub.com/astral-sh/ruff/pull/9460)) - \[`pyflakes`] Add a fix for `redefined-while-unused` (`F811`) ([#&#8203;9419](https://togithub.com/astral-sh/ruff/pull/9419)) - \[`pylint`] Implement `unnecessary-dunder-call` (`C2801`) ([#&#8203;9166](https://togithub.com/astral-sh/ruff/pull/9166)) - \[`ruff`] Add `parenthesize-chained-operators` (`RUF021`) to enforce parentheses in `a or b and c` ([#&#8203;9440](https://togithub.com/astral-sh/ruff/pull/9440)) ##### Rule changes - \[`flake8-boolean-trap`] Allow Boolean positional arguments in setters ([#&#8203;9429](https://togithub.com/astral-sh/ruff/pull/9429)) - \[`flake8-builtins`] Restrict `builtin-attribute-shadowing` (`A003`) to actual shadowed references ([#&#8203;9462](https://togithub.com/astral-sh/ruff/pull/9462)) - \[`flake8-pyi`] Add fix for `generator-return-from-iter-method` (`PYI058`) ([#&#8203;9355](https://togithub.com/astral-sh/ruff/pull/9355)) - \[`pyflakes`] Don't flag `redefined-while-unused` (`F811`) in `if` branches ([#&#8203;9418](https://togithub.com/astral-sh/ruff/pull/9418)) - \[`pyupgrade`] Add some additional Python 3.12 typing members to `deprecated-import` ([#&#8203;9445](https://togithub.com/astral-sh/ruff/pull/9445)) - \[`ruff`] Add fix for `parenthesize-chained-operators` (`RUF021`) ([#&#8203;9449](https://togithub.com/astral-sh/ruff/pull/9449)) - \[`ruff`] Include subscripts and attributes in static key rule (`RUF011`) ([#&#8203;9416](https://togithub.com/astral-sh/ruff/pull/9416)) - \[`ruff`] Support variable keys in static dictionary key rule (`RUF011`) ([#&#8203;9411](https://togithub.com/astral-sh/ruff/pull/9411)) ##### Formatter - Generate deterministic IDs when formatting notebooks ([#&#8203;9359](https://togithub.com/astral-sh/ruff/pull/9359)) - Allow `# fmt: skip` with interspersed same-line comments ([#&#8203;9395](https://togithub.com/astral-sh/ruff/pull/9395)) - Parenthesize breaking named expressions in match guards ([#&#8203;9396](https://togithub.com/astral-sh/ruff/pull/9396)) ##### Bug fixes - Add cell indexes to all diagnostics ([#&#8203;9387](https://togithub.com/astral-sh/ruff/pull/9387)) - Avoid infinite loop in constant vs. `None` comparisons ([#&#8203;9376](https://togithub.com/astral-sh/ruff/pull/9376)) - Handle raises with implicit alternate branches ([#&#8203;9377](https://togithub.com/astral-sh/ruff/pull/9377)) - Ignore trailing quotes for unclosed l-brace errors ([#&#8203;9388](https://togithub.com/astral-sh/ruff/pull/9388)) - Respect multi-segment submodule imports when resolving qualified names ([#&#8203;9382](https://togithub.com/astral-sh/ruff/pull/9382)) - Use `DisplayParseError` for stdin parser errors ([#&#8203;9409](https://togithub.com/astral-sh/ruff/pull/9409)) - Use `comment_ranges` for isort directive extraction ([#&#8203;9414](https://togithub.com/astral-sh/ruff/pull/9414)) - Use transformed source code for diagnostic locations ([#&#8203;9408](https://togithub.com/astral-sh/ruff/pull/9408)) - \[`flake8-pyi`] Exclude `warnings.deprecated` and `typing_extensions.deprecated` arguments ([#&#8203;9423](https://togithub.com/astral-sh/ruff/pull/9423)) - \[`flake8-pyi`] Fix false negative for `unused-private-protocol` (`PYI046`) with unused generic protocols ([#&#8203;9405](https://togithub.com/astral-sh/ruff/pull/9405)) - \[`pydocstyle`] Disambiguate argument descriptors from section headers ([#&#8203;9427](https://togithub.com/astral-sh/ruff/pull/9427)) - \[`pylint`] Homogenize `PLR0914` message to match other `PLR09XX` rules ([#&#8203;9399](https://togithub.com/astral-sh/ruff/pull/9399)) - \[`ruff`] Allow `Hashable = None` in type annotations (`RUF013`) ([#&#8203;9442](https://togithub.com/astral-sh/ruff/pull/9442)) ##### Documentation - Fix admonition hyperlink colouring ([#&#8203;9385](https://togithub.com/astral-sh/ruff/pull/9385)) - Add missing preview link ([#&#8203;9386](https://togithub.com/astral-sh/ruff/pull/9386)) ### [`v0.1.11`](https://togithub.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#0111) [Compare Source](https://togithub.com/astral-sh/ruff/compare/v0.1.10...v0.1.11) ##### Preview features - \[`pylint`] Implement `super-without-brackets` (`W0245`) ([#&#8203;9257](https://togithub.com/astral-sh/ruff/pull/9257)) ##### Bug fixes - Check path string properly in `python -m ruff` invocations ([#&#8203;9367](https://togithub.com/astral-sh/ruff/pull/9367)) ##### Documentation - Tweak `relative-imports` message ([#&#8203;9365](https://togithub.com/astral-sh/ruff/pull/9365)) - Add fix safety note for `yield-in-for-loop` ([#&#8203;9364](https://togithub.com/astral-sh/ruff/pull/9364)) ### [`v0.1.10`](https://togithub.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#0110) [Compare Source](https://togithub.com/astral-sh/ruff/compare/v0.1.9...v0.1.10) ##### Preview features - Improve `dummy_implementations` preview style formatting ([#&#8203;9240](https://togithub.com/astral-sh/ruff/pull/9240)) - Normalise Hex and unicode escape sequences in strings ([#&#8203;9280](https://togithub.com/astral-sh/ruff/pull/9280)) - Parenthesize long type annotations in annotated assignments ([#&#8203;9210](https://togithub.com/astral-sh/ruff/pull/9210)) - Parenthesize multi-context managers in `with` statements ([#&#8203;9222](https://togithub.com/astral-sh/ruff/pull/9222)) - \[`flake8-pyi`] Implement `generator-return-from-iter-method` (`PYI058`) ([#&#8203;9313](https://togithub.com/astral-sh/ruff/pull/9313)) - \[`pylint`] Implement `empty-comment` (`PLR2044`) ([#&#8203;9174](https://togithub.com/astral-sh/ruff/pull/9174)) - \[`refurb`] Implement `bit-count` (`FURB161`) ([#&#8203;9265](https://togithub.com/astral-sh/ruff/pull/9265)) - \[`ruff`] Add `never-union` rule to detect redundant `typing.NoReturn` and `typing.Never` ([#&#8203;9217](https://togithub.com/astral-sh/ruff/pull/9217)) ##### CLI - Add paths to TOML parse errors ([#&#8203;9358](https://togithub.com/astral-sh/ruff/pull/9358)) - Add row and column numbers to formatter parse errors ([#&#8203;9321](https://togithub.com/astral-sh/ruff/pull/9321)) - Improve responsiveness when invoked via Python ([#&#8203;9315](https://togithub.com/astral-sh/ruff/pull/9315)) - Short rule messages should not end with a period ([#&#8203;9345](https://togithub.com/astral-sh/ruff/pull/9345)) ##### Configuration - Respect runtime-required decorators on functions ([#&#8203;9317](https://togithub.com/astral-sh/ruff/pull/9317)) ##### Bug fixes - Avoid `asyncio-dangling-task` for nonlocal and global bindings ([#&#8203;9263](https://togithub.com/astral-sh/ruff/pull/9263)) - Escape trailing placeholders in rule documentation ([#&#8203;9301](https://togithub.com/astral-sh/ruff/pull/9301)) - Fix continuation detection following multi-line strings ([#&#8203;9332](https://togithub.com/astral-sh/ruff/pull/9332)) - Fix scoping for generators in named expressions in classes ([#&#8203;9248](https://togithub.com/astral-sh/ruff/pull/9248)) - Port from obsolete wsl crate to is-wsl ([#&#8203;9356](https://togithub.com/astral-sh/ruff/pull/9356)) - Remove special pre-visit for module docstrings ([#&#8203;9261](https://togithub.com/astral-sh/ruff/pull/9261)) - Respect `__str__` definitions from super classes ([#&#8203;9338](https://togithub.com/astral-sh/ruff/pull/9338)) - Respect `unused-noqa` via `per-file-ignores` ([#&#8203;9300](https://togithub.com/astral-sh/ruff/pull/9300)) - Respect attribute chains when resolving builtin call paths ([#&#8203;9309](https://togithub.com/astral-sh/ruff/pull/9309)) - Treat all `typing_extensions` members as typing aliases ([#&#8203;9335](https://togithub.com/astral-sh/ruff/pull/9335)) - Use `Display` for formatter parse errors ([#&#8203;9316](https://togithub.com/astral-sh/ruff/pull/9316)) - Wrap subscripted dicts in parens for f-string conversion ([#&#8203;9238](https://togithub.com/astral-sh/ruff/pull/9238)) - \[`flake8-annotations`] Avoid adding return types to stub methods ([#&#8203;9277](https://togithub.com/astral-sh/ruff/pull/9277)) - \[`flake8-annotations`] Respect mixed `return` and `raise` cases in return-type analysis ([#&#8203;9310](https://togithub.com/astral-sh/ruff/pull/9310)) - \[`flake8-bandit`] Don't report violations when `SafeLoader` is imported from `yaml.loader` (`S506`) ([#&#8203;9299](https://togithub.com/astral-sh/ruff/pull/9299)) - \[`pylint`] Avoid panic when comment is preceded by Unicode ([#&#8203;9331](https://togithub.com/astral-sh/ruff/pull/9331)) - \[`pylint`] Change `PLR0917` error message to match other `PLR09XX` messages ([#&#8203;9308](https://togithub.com/astral-sh/ruff/pull/9308)) - \[`refurb`] Avoid false positives for `math-constant` (`FURB152`) ([#&#8203;9290](https://togithub.com/astral-sh/ruff/pull/9290)) ##### Documentation - Expand target name for better rule documentation ([#&#8203;9302](https://togithub.com/astral-sh/ruff/pull/9302)) - Fix typos found by codespell ([#&#8203;9346](https://togithub.com/astral-sh/ruff/pull/9346)) - \[`perflint`] Document `PERF102` fix un-safety ([#&#8203;9351](https://togithub.com/astral-sh/ruff/pull/9351)) - \[`pyupgrade`] Document `UP007` fix un-safety ([#&#8203;9306](https://togithub.com/astral-sh/ruff/pull/9306)) ### [`v0.1.9`](https://togithub.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#019) [Compare Source](https://togithub.com/astral-sh/ruff/compare/v0.1.8...v0.1.9) ##### Breaking changes - Add site-packages to default exclusions ([#&#8203;9188](https://togithub.com/astral-sh/ruff/pull/9188)) ##### Preview features - Fix: Avoid parenthesizing subscript targets and values ([#&#8203;9209](https://togithub.com/astral-sh/ruff/pull/9209)) - \[`pylint`] Implement `too-many-locals` (`PLR0914`) ([#&#8203;9163](https://togithub.com/astral-sh/ruff/pull/9163)) - Implement `reimplemented_operator` (FURB118) ([#&#8203;9171](https://togithub.com/astral-sh/ruff/pull/9171)) - Add a rule to detect string members in runtime-evaluated unions ([#&#8203;9143](https://togithub.com/astral-sh/ruff/pull/9143)) - Implement `no_blank_line_before_class_docstring` preview style ([#&#8203;9154](https://togithub.com/astral-sh/ruff/pull/9154)) ##### Rule changes - `CONSTANT_CASE` variables are improperly flagged for yoda violation (`SIM300`) ([#&#8203;9164](https://togithub.com/astral-sh/ruff/pull/9164)) - \[`flake8-pyi`] Cover ParamSpecs and TypeVarTuples (`PYI018`) ([#&#8203;9198](https://togithub.com/astral-sh/ruff/pull/9198)) - \[`flake8-bugbear`] Add fix for `zip-without-explicit-strict` (`B905`) ([#&#8203;9176](https://togithub.com/astral-sh/ruff/pull/9176)) - Add fix to automatically remove `print` and `pprint` statements (`T201`, `T203`) ([#&#8203;9208](https://togithub.com/astral-sh/ruff/pull/9208)) - Prefer `Never` to `NoReturn` in auto-typing in Python >= 3.11 (`ANN201`) ([#&#8203;9213](https://togithub.com/astral-sh/ruff/pull/9213)) ##### Formatter - `can_omit_optional_parentheses`: Exit early for unparenthesized expressions ([#&#8203;9125](https://togithub.com/astral-sh/ruff/pull/9125)) - Fix `dynamic` mode with doctests so that it doesn't exceed configured line width ([#&#8203;9129](https://togithub.com/astral-sh/ruff/pull/9129)) - Fix `can_omit_optional_parentheses` for expressions with a right most fstring ([#&#8203;9124](https://togithub.com/astral-sh/ruff/pull/9124)) - Add `target_version` to formatter options ([#&#8203;9220](https://togithub.com/astral-sh/ruff/pull/9220)) ##### CLI - Update `ruff format --check` to display message for already formatted files ([#&#8203;9153](https://togithub.com/astral-sh/ruff/pull/9153)) ##### Bug fixes - Reverse order of arguments for `operator.contains` ([#&#8203;9192](https://togithub.com/astral-sh/ruff/pull/9192)) - Iterate over lambdas in deferred type annotations ([#&#8203;9175](https://togithub.com/astral-sh/ruff/pull/9175)) - Fix panic in `D208` with multibyte indent ([#&#8203;9147](https://togithub.com/astral-sh/ruff/pull/9147)) - Add support for `NoReturn` in auto-return-typing ([#&#8203;9206](https://togithub.com/astral-sh/ruff/pull/9206)) - Allow removal of `typing` from `exempt-modules` ([#&#8203;9214](https://togithub.com/astral-sh/ruff/pull/9214)) - Avoid `mutable-class-default` violations for Pydantic subclasses ([#&#8203;9187](https://togithub.com/astral-sh/ruff/pull/9187)) - Fix dropped union expressions for piped non-types in `PYI055` autofix ([#&#8203;9161](https://togithub.com/astral-sh/ruff/pull/9161)) - Enable annotation quoting for multi-line expressions ([#&#8203;9142](https://togithub.com/astral-sh/ruff/pull/9142)) - Deduplicate edits when quoting annotations ([#&#8203;9140](https://togithub.com/astral-sh/ruff/pull/9140)) - Prevent invalid utf8 indexing in cell magic detection ([#&#8203;9146](https://togithub.com/astral-sh/ruff/pull/9146)) - Avoid nested quotations in auto-quoting fix ([#&#8203;9168](https://togithub.com/astral-sh/ruff/pull/9168)) - Add base-class inheritance detection to flake8-django rules ([#&#8203;9151](https://togithub.com/astral-sh/ruff/pull/9151)) - Avoid `asyncio-dangling-task` violations on shadowed bindings ([#&#8203;9215](https://togithub.com/astral-sh/ruff/pull/9215)) ##### Documentation - Fix blog post URL in changelog ([#&#8203;9119](https://togithub.com/astral-sh/ruff/pull/9119)) - Add error suppression hint for multi-line strings ([#&#8203;9205](https://togithub.com/astral-sh/ruff/pull/9205)) - Fix typo in SemanticModel.parent_expression docstring ([#&#8203;9167](https://togithub.com/astral-sh/ruff/pull/9167)) - Document link between import sorting and formatter ([#&#8203;9117](https://togithub.com/astral-sh/ruff/pull/9117)) ### [`v0.1.8`](https://togithub.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#018) [Compare Source](https://togithub.com/astral-sh/ruff/compare/v0.1.7...v0.1.8) This release includes opt-in support for formatting Python snippets within docstrings via the `docstring-code-format` setting. [Check out the blog post](https://astral.sh/blog/ruff-v0.1.8) for more details! ##### Preview features - Add `"preserve"` quote-style to mimic Black's skip-string-normalization ([#&#8203;8822](https://togithub.com/astral-sh/ruff/pull/8822)) - Implement `prefer_splitting_right_hand_side_of_assignments` preview style ([#&#8203;8943](https://togithub.com/astral-sh/ruff/pull/8943)) - \[`pycodestyle`] Add fix for `unexpected-spaces-around-keyword-parameter-equals` ([#&#8203;9072](https://togithub.com/astral-sh/ruff/pull/9072)) - \[`pycodestyle`] Add fix for comment-related whitespace rules ([#&#8203;9075](https://togithub.com/astral-sh/ruff/pull/9075)) - \[`pycodestyle`] Allow `sys.path` modifications between imports ([#&#8203;9047](https://togithub.com/astral-sh/ruff/pull/9047)) - \[`refurb`] Implement `hashlib-digest-hex` (`FURB181`) ([#&#8203;9077](https://togithub.com/astral-sh/ruff/pull/9077)) ##### Rule changes - Allow `flake8-type-checking` rules to automatically quote runtime-evaluated references ([#&#8203;6001](https://togithub.com/astral-sh/ruff/pull/6001)) - Allow transparent cell magics in Jupyter Notebooks ([#&#8203;8911](https://togithub.com/astral-sh/ruff/pull/8911)) - \[`flake8-annotations`] Avoid `ANN2xx` fixes for abstract methods with empty bodies ([#&#8203;9034](https://togithub.com/astral-sh/ruff/pull/9034)) - \[`flake8-self`] Ignore underscore references in type annotations ([#&#8203;9036](https://togithub.com/astral-sh/ruff/pull/9036)) - \[`pep8-naming`] Allow class names when `apps.get_model` is a non-string ([#&#8203;9065](https://togithub.com/astral-sh/ruff/pull/9065)) - \[`pycodestyle`] Allow `matplotlib.use` calls to intersperse imports ([#&#8203;9094](https://togithub.com/astral-sh/ruff/pull/9094)) - \[`pyflakes`] Support fixing unused assignments in tuples by renaming variables (`F841`) ([#&#8203;9107](https://togithub.com/astral-sh/ruff/pull/9107)) - \[`pylint`] Add fix for `subprocess-run-without-check` (`PLW1510`) ([#&#8203;6708](https://togithub.com/astral-sh/ruff/pull/6708)) ##### Formatter - Add `docstring-code-format` knob to enable docstring snippet formatting ([#&#8203;8854](https://togithub.com/astral-sh/ruff/pull/8854)) - Use double quotes for all docstrings, including single-quoted docstrings ([#&#8203;9020](https://togithub.com/astral-sh/ruff/pull/9020)) - Implement "dynamic" line width mode for docstring code formatting ([#&#8203;9098](https://togithub.com/astral-sh/ruff/pull/9098)) - Support reformatting Markdown code blocks ([#&#8203;9030](https://togithub.com/astral-sh/ruff/pull/9030)) - add support for formatting reStructuredText code snippets ([#&#8203;9003](https://togithub.com/astral-sh/ruff/pull/9003)) - Avoid trailing comma for single-argument with positional separator ([#&#8203;9076](https://togithub.com/astral-sh/ruff/pull/9076)) - Fix handling of trailing target comment ([#&#8203;9051](https://togithub.com/astral-sh/ruff/pull/9051)) ##### CLI - Hide unsafe fix suggestions when explicitly disabled ([#&#8203;9095](https://togithub.com/astral-sh/ruff/pull/9095)) - Add SARIF support to `--output-format` ([#&#8203;9078](https://togithub.com/astral-sh/ruff/pull/9078)) ##### Bug fixes - Apply unnecessary index rule prior to enumerate rewrite ([#&#8203;9012](https://togithub.com/astral-sh/ruff/pull/9012)) - \[`flake8-err-msg`] Allow `EM` fixes even if `msg` variable is defined ([#&#8203;9059](https://togithub.com/astral-sh/ruff/pull/9059)) - \[`flake8-pie`] Prevent keyword arguments duplication ([#&#8203;8450](https://togithub.com/astral-sh/ruff/pull/8450)) - \[`flake8-pie`] Respect trailing comma in `unnecessary-dict-kwargs` (`PIE804`) ([#&#8203;9015](https://togithub.com/astral-sh/ruff/pull/9015)) - \[`flake8-raise`] Avoid removing parentheses on ctypes.WinError ([#&#8203;9027](https://togithub.com/astral-sh/ruff/pull/9027)) - \[`isort`] Avoid invalid combination of `force-sort-within-types` and `lines-between-types` ([#&#8203;9041](https://togithub.com/astral-sh/ruff/pull/9041)) - \[`isort`] Ensure that from-style imports are always ordered first in `__future__` ([#&#8203;9039](https://togithub.com/astral-sh/ruff/pull/9039)) - \[`pycodestyle`] Allow tab indentation before keyword ([#&#8203;9099](https://togithub.com/astral-sh/ruff/pull/9099)) - \[`pylint`] Ignore `@overrides` and `@overloads` for `too-many-positional` ([#&#8203;9000](https://togithub.com/astral-sh/ruff/pull/9000)) - \[`pyupgrade`] Enable `printf-string-formatting` fix with comments on right-hand side ([#&#8203;9037](https://togithub.com/astral-sh/ruff/pull/9037)) - \[`refurb`] Make `math-constant` (`FURB152`) rule more targeted ([#&#8203;9054](https://togithub.com/astral-sh/ruff/pull/9054)) - \[`refurb`] Support floating-point base in `redundant-log-base` (`FURB163`) ([#&#8203;9100](https://togithub.com/astral-sh/ruff/pull/9100)) - \[`ruff`] Detect `unused-asyncio-dangling-task` (`RUF006`) on unused assignments ([#&#8203;9060](https://togithub.com/astral-sh/ruff/pull/9060)) ### [`v0.1.7`](https://togithub.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#017) [Compare Source](https://togithub.com/astral-sh/ruff/compare/v0.1.6...v0.1.7) ##### Preview features - Implement multiline dictionary and list hugging for preview style ([#&#8203;8293](https://togithub.com/astral-sh/ruff/pull/8293)) - Implement the `fix_power_op_line_length` preview style ([#&#8203;8947](https://togithub.com/astral-sh/ruff/pull/8947)) - Use Python version to determine typing rewrite safety ([#&#8203;8919](https://togithub.com/astral-sh/ruff/pull/8919)) - \[`flake8-annotations`] Enable auto-return-type involving `Optional` and `Union` annotations ([#&#8203;8885](https://togithub.com/astral-sh/ruff/pull/8885)) - \[`flake8-bandit`] Implement `django-raw-sql` (`S611`) ([#&#8203;8651](https://togithub.com/astral-sh/ruff/pull/8651)) - \[`flake8-bandit`] Implement `tarfile-unsafe-members` (`S202`) ([#&#8203;8829](https://togithub.com/astral-sh/ruff/pull/8829)) - \[`flake8-pyi`] Implement fix for `unnecessary-literal-union` (`PYI030`) ([#&#8203;7934](https://togithub.com/astral-sh/ruff/pull/7934)) - \[`flake8-simplify`] Extend `dict-get-with-none-default` (`SIM910`) to non-literals ([#&#8203;8762](https://togithub.com/astral-sh/ruff/pull/8762)) - \[`pylint`] - add `unnecessary-list-index-lookup` (`PLR1736`) + autofix ([#&#8203;7999](https://togithub.com/astral-sh/ruff/pull/7999)) - \[`pylint`] - implement R0202 and R0203 with autofixes ([#&#8203;8335](https://togithub.com/astral-sh/ruff/pull/8335)) - \[`pylint`] Implement `repeated-keyword` (`PLe1132`) ([#&#8203;8706](https://togithub.com/astral-sh/ruff/pull/8706)) - \[`pylint`] Implement `too-many-positional` (`PLR0917`) ([#&#8203;8995](https://togithub.com/astral-sh/ruff/pull/8995)) - \[`pylint`] Implement `unnecessary-dict-index-lookup` (`PLR1733`) ([#&#8203;8036](https://togithub.com/astral-sh/ruff/pull/8036)) - \[`refurb`] Implement `redundant-log-base` (`FURB163`) ([#&#8203;8842](https://togithub.com/astral-sh/ruff/pull/8842)) ##### Rule changes - \[`flake8-boolean-trap`] Allow booleans in `@override` methods ([#&#8203;8882](https://togithub.com/astral-sh/ruff/pull/8882)) - \[`flake8-bugbear`] Avoid `B015`,`B018` for last expression in a cell ([#&#8203;8815](https://togithub.com/astral-sh/ruff/pull/8815)) - \[`flake8-pie`] Allow ellipses for enum values in stub files ([#&#8203;8825](https://togithub.com/astral-sh/ruff/pull/8825)) - \[`flake8-pyi`] Check PEP 695 type aliases for `snake-case-type-alias` and `t-suffixed-type-alias` ([#&#8203;8966](https://togithub.com/astral-sh/ruff/pull/8966)) - \[`flake8-pyi`] Check for kwarg and vararg `NoReturn` type annotations ([#&#8203;8948](https://togithub.com/astral-sh/ruff/pull/8948)) - \[`flake8-simplify`] Omit select context managers from `SIM117` ([#&#8203;8801](https://togithub.com/astral-sh/ruff/pull/8801)) - \[`pep8-naming`] Allow Django model loads in `non-lowercase-variable-in-function` (`N806`) ([#&#8203;8917](https://togithub.com/astral-sh/ruff/pull/8917)) - \[`pycodestyle`] Avoid `E703` for last expression in a cell ([#&#8203;8821](https://togithub.com/astral-sh/ruff/pull/8821)) - \[`pycodestyle`] Update `E402` to work at cell level for notebooks ([#&#8203;8872](https://togithub.com/astral-sh/ruff/pull/8872)) - \[`pydocstyle`] Avoid `D100` for Jupyter Notebooks ([#&#8203;8816](https://togithub.com/astral-sh/ruff/pull/8816)) - \[`pylint`] Implement fix for `unspecified-encoding` (`PLW1514`) ([#&#8203;8928](https://togithub.com/astral-sh/ruff/pull/8928)) ##### Formatter - Avoid unstable formatting in ellipsis-only body with trailing comment ([#&#8203;8984](https://togithub.com/astral-sh/ruff/pull/8984)) - Inline trailing comments for type alias similar to assignments ([#&#8203;8941](https://togithub.com/astral-sh/ruff/pull/8941)) - Insert trailing comma when function breaks with single argument ([#&#8203;8921](https://togithub.com/astral-sh/ruff/pull/8921)) ##### CLI - Update `ruff check` and `ruff format` to default to the current directory ([#&#8203;8791](https://togithub.com/astral-sh/ruff/pull/8791)) - Stop at the first resolved parent configuration ([#&#8203;8864](https://togithub.com/astral-sh/ruff/pull/8864)) ##### Configuration - \[`pylint`] Default `max-positional-args` to `max-args` ([#&#8203;8998](https://togithub.com/astral-sh/ruff/pull/8998)) - \[`pylint`] Add `allow-dunder-method-names` setting for `bad-dunder-method-name` (`PLW3201`) ([#&#8203;8812](https://togithub.com/astral-sh/ruff/pull/8812)) - \[`isort`] Add support for `from-first` setting ([#&#8203;8663](https://togithub.com/astral-sh/ruff/pull/8663)) - \[`isort`] Add support for `length-sort` settings ([#&#8203;8841](https://togithub.com/astral-sh/ruff/pull/8841)) ##### Bug fixes - Add support for `@functools.singledispatch` ([#&#8203;8934](https://togithub.com/astral-sh/ruff/pull/8934)) - Avoid off-by-one error in stripping noqa following multi-byte char ([#&#8203;8979](https://togithub.com/astral-sh/ruff/pull/8979)) - Avoid off-by-one error in with-item named expressions ([#&#8203;8915](https://togithub.com/astral-sh/ruff/pull/8915)) - Avoid syntax error via invalid ur string prefix ([#&#8203;8971](https://togithub.com/astral-sh/ruff/pull/8971)) - Avoid underflow in `get_model` matching ([#&#8203;8965](https://togithub.com/astral-sh/ruff/pull/8965)) - Avoid unnecessary index diagnostics when value is modified ([#&#8203;8970](https://togithub.com/astral-sh/ruff/pull/8970)) - Convert over-indentation rule to use number of characters ([#&#8203;8983](https://togithub.com/astral-sh/ruff/pull/8983)) - Detect implicit returns in auto-return-types ([#&#8203;8952](https://togithub.com/astral-sh/ruff/pull/8952)) - Fix start >= end error in over-indentation ([#&#8203;8982](https://togithub.com/astral-sh/ruff/pull/8982)) - Ignore `@overload` and `@override` methods for too-many-arguments checks ([#&#8203;8954](https://togithub.com/astral-sh/ruff/pull/8954)) - Lexer start of line is false only for `Mode::Expression` ([#&#8203;8880](https://togithub.com/astral-sh/ruff/pull/8880)) - Mark `pydantic_settings.BaseSettings` as having default copy semantics ([#&#8203;8793](https://togithub.com/astral-sh/ruff/pull/8793)) - Respect dictionary unpacking in `NamedTuple` assignments ([#&#8203;8810](https://togithub.com/astral-sh/ruff/pull/8810)) - Respect local subclasses in `flake8-type-checking` ([#&#8203;8768](https://togithub.com/astral-sh/ruff/pull/8768)) - Support type alias statements in simple statement positions ([#&#8203;8916](https://togithub.com/astral-sh/ruff/pull/8916)) - \[`flake8-annotations`] Avoid filtering out un-representable types in return annotation ([#&#8203;8881](https://togithub.com/astral-sh/ruff/pull/8881)) - \[`flake8-pie`] Retain extra ellipses in protocols and abstract methods ([#&#8203;8769](https://togithub.com/astral-sh/ruff/pull/8769)) - \[`flake8-pyi`] Respect local enum subclasses in `simple-defaults` (`PYI052`) ([#&#8203;8767](https://togithub.com/astral-sh/ruff/pull/8767)) - \[`flake8-trio`] Use correct range for `TRIO115` fix ([#&#8203;8933](https://togithub.com/astral-sh/ruff/pull/8933)) - \[`flake8-trio`] Use full arguments range for zero-sleep-call ([#&#8203;8936](https://togithub.com/astral-sh/ruff/pull/8936)) - \[`isort`] fix: mark `__main__` as first-party import ([#&#8203;8805](https://togithub.com/astral-sh/ruff/pull/8805)) - \[`pep8-naming`] Avoid `N806` errors for type alias statements ([#&#8203;8785](https://togithub.com/astral-sh/ruff/pull/8785)) - \[`perflint`] Avoid `PERF101` if there's an append in loop body ([#&#8203;8809](https://togithub.com/astral-sh/ruff/pull/8809)) - \[`pycodestyle`] Allow space-before-colon after end-of-slice ([#&#8203;8838](https://togithub.com/astral-sh/ruff/pull/8838)) - \[`pydocstyle`] Avoid non-character breaks in `over-indentation` (`D208`) ([#&#8203;8866](https://togithub.com/astral-sh/ruff/pull/8866)) - \[`pydocstyle`] Ignore underlines when determining docstring logical lines ([#&#8203;8929](https://togithub.com/astral-sh/ruff/pull/8929)) - \[`pylint`] Extend `self-assigning-variable` to multi-target assignments ([#&#8203;8839](https://togithub.com/astral-sh/ruff/pull/8839)) - \[`tryceratops`] Avoid repeated triggers in nested `tryceratops` diagnostics ([#&#8203;8772](https://togithub.com/astral-sh/ruff/pull/8772)) ##### Documentation - Add advice for fixing RUF008 when mutability is not desired ([#&#8203;8853](https://togithub.com/astral-sh/ruff/pull/8853)) - Added the command to run ruff using pkgx to the installation.md ([#&#8203;8955](https://togithub.com/astral-sh/ruff/pull/8955)) - Document fix safety for flake8-comprehensions and some pyupgrade rules ([#&#8203;8918](https://togithub.com/astral-sh/ruff/pull/8918)) - Fix doc formatting for zero-sleep-call ([#&#8203;8937](https://togithub.com/astral-sh/ruff/pull/8937)) - Remove duplicate imports from os-stat documentation ([#&#8203;8930](https://togithub.com/astral-sh/ruff/pull/8930)) - Replace generated reference to MkDocs ([#&#8203;8806](https://togithub.com/astral-sh/ruff/pull/8806)) - Update Arch Linux package URL in installation.md ([#&#8203;8802](https://togithub.com/astral-sh/ruff/pull/8802)) - \[`flake8-pyi`] Fix error in `t-suffixed-type-alias` (`PYI043`) example ([#&#8203;8963](https://togithub.com/astral-sh/ruff/pull/8963)) - \[`flake8-pyi`] Improve motivation for `custom-type-var-return-type` (`PYI019`) ([#&#8203;8766](https://togithub.com/astral-sh/ruff/pull/8766)) ### [`v0.1.6`](https://togithub.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#016) [Compare Source](https://togithub.com/astral-sh/ruff/compare/v0.1.5...v0.1.6) ##### Preview features - \[`flake8-boolean-trap`] Extend `boolean-type-hint-positional-argument` (`FBT001`) to include booleans in unions ([#&#8203;7501](https://togithub.com/astral-sh/ruff/pull/7501)) - \[`flake8-pie`] Extend `reimplemented-list-builtin` (`PIE807`) to `dict` reimplementations ([#&#8203;8608](https://togithub.com/astral-sh/ruff/pull/8608)) - \[`flake8-pie`] Extend `unnecessary-pass` (`PIE790`) to include ellipses (`...`) ([#&#8203;8641](https://togithub.com/astral-sh/ruff/pull/8641)) - \[`flake8-pie`] Implement fix for `unnecessary-spread` (`PIE800`) ([#&#8203;8668](https://togithub.com/astral-sh/ruff/pull/8668)) - \[`flake8-quotes`] Implement `unnecessary-escaped-quote` (`Q004`) ([#&#8203;8630](https://togithub.com/astral-sh/ruff/pull/8630)) - \[`pycodestyle`] Implement fix for `multiple-spaces-after-keyword` (`E271`) and `multiple-spaces-before-keyword` (`E272`) ([#&#8203;8622](https://togithub.com/astral-sh/ruff/pull/8622)) - \[`pycodestyle`] Implement fix for `multiple-spaces-after-operator` (`E222`) and `multiple-spaces-before-operator` (`E221`) ([#&#8203;8623](https://togithub.com/astral-sh/ruff/pull/8623)) - \[`pyflakes`] Extend `is-literal` (`F632`) to include comparisons against mutable initializers ([#&#8203;8607](https://togithub.com/astral-sh/ruff/pull/8607)) - \[`pylint`] Implement `redefined-argument-from-local` (`PLR1704`) ([#&#8203;8159](https://togithub.com/astral-sh/ruff/pull/8159)) - \[`pylint`] Implement fix for `unnecessary-lambda` (`PLW0108`) ([#&#8203;8621](https://togithub.com/astral-sh/ruff/pull/8621)) - \[`refurb`] Implement `if-expr-min-max` (`FURB136`) ([#&#8203;8664](https://togithub.com/astral-sh/ruff/pull/8664)) - \[`refurb`] Implement `math-constant` (`FURB152`) ([#&#8203;8727](https://togithub.com/astral-sh/ruff/pull/8727)) ##### Rule changes - \[`flake8-annotations`] Add autotyping-like return type inference for annotation rules ([#&#8203;8643](https://togithub.com/astral-sh/ruff/pull/8643)) - \[`flake8-future-annotations`] Implement fix for `future-required-type-annotation` (`FA102`) ([#&#8203;8711](https://togithub.com/astral-sh/ruff/pull/8711)) - \[`flake8-implicit-namespace-package`] Avoid missing namespace violations in scripts with shebangs ([#&#8203;8710](https://togithub.com/astral-sh/ruff/pull/8710)) - \[`pydocstyle`] Update `over-indentation` (`D208`) to preserve indentation offsets when fixing overindented lines ([#&#8203;8699](https://togithub.com/astral-sh/ruff/pull/8699)) - \[`pyupgrade`] Refine `timeout-error-alias` (`UP041`) to remove false positives ([#&#8203;8587](https://togithub.com/astral-sh/ruff/pull/8587)) ##### Formatter - Fix instability in `await` formatting with fluent style ([#&#8203;8676](https://togithub.com/astral-sh/ruff/pull/8676)) - Compare formatted and unformatted ASTs during formatter tests ([#&#8203;8624](https://togithub.com/astral-sh/ruff/pull/8624)) - Preserve trailing semicolon for Notebooks ([#&#8203;8590](https://togithub.com/astral-sh/ruff/pull/8590)) ##### CLI - Improve debug printing for resolving origin of config settings ([#&#8203;8729](https://togithub.com/astral-sh/ruff/pull/8729)) - Write unchanged, excluded files to stdout when read via stdin ([#&#8203;8596](https://togithub.com/astral-sh/ruff/pull/8596)) ##### Configuration - \[`isort`] Support disabling sections with `no-sections = true` ([#&#8203;8657](https://togithub.com/astral-sh/ruff/pull/8657)) - \[`pep8-naming`] Support local and dynamic class- and static-method decorators ([#&#8203;8592](https://togithub.com/astral-sh/ruff/pull/8592)) - \[`pydocstyle`] Allow overriding pydocstyle convention rules ([#&#8203;8586](https://togithub.com/astral-sh/ruff/pull/8586)) ##### Bug fixes - Avoid syntax error via importing `trio.lowlevel` ([#&#8203;8730](https://togithub.com/astral-sh/ruff/pull/8730)) - Omit unrolled augmented assignments in `PIE794` ([#&#8203;8634](https://togithub.com/astral-sh/ruff/pull/8634)) - Slice source code instead of generating it for `EM` fixes ([#&#8203;7746](https://togithub.com/astral-sh/ruff/pull/7746)) - Allow whitespace around colon in slices for `whitespace-before-punctuation` (`E203`) ([#&#8203;8654](https://togithub.com/astral-sh/ruff/pull/8654)) - Use function range for `no-self-use` ([#&#8203;8637](https://togithub.com/astral-sh/ruff/pull/8637)) - F-strings doesn't contain bytes literal for `PLW0129` ([#&#8203;8675](https://togithub.com/astral-sh/ruff/pull/8675)) - Improve detection of `TYPE_CHECKING` blocks imported from `typing_extensions` or `_typeshed` ([#&#8203;8429](https://togithub.com/astral-sh/ruff/pull/8429)) - Treat display as a builtin in IPython ([#&#8203;8707](https://togithub.com/astral-sh/ruff/pull/8707)) - Avoid `FURB113` autofix if comments are present ([#&#8203;8494](https://togithub.com/astral-sh/ruff/pull/8494)) - Consider the new f-string tokens for `flake8-commas` ([#&#8203;8582](https://togithub.com/astral-sh/ruff/pull/8582)) - Remove erroneous bad-dunder-name reference ([#&#8203;8742](https://togithub.com/astral-sh/ruff/pull/8742)) - Avoid recommending Self usages in metaclasses ([#&#8203;8639](https://togithub.com/astral-sh/ruff/pull/8639)) - Detect runtime-evaluated base classes defined in the current file ([#&#8203;8572](https://togithub.com/astral-sh/ruff/pull/8572)) - Avoid inserting trailing commas within f-strings ([#&#8203;8574](https://togithub.com/astral-sh/ruff/pull/8574)) - Remove incorrect deprecation label for stdout and stderr ([#&#8203;8743](https://togithub.com/astral-sh/ruff/pull/8743)) - Fix unnecessary parentheses in UP007 fix ([#&#8203;8610](https://togithub.com/astral-sh/ruff/pull/8610)) - Remove repeated and erroneous scoped settings headers in docs ([#&#8203;8670](https://togithub.com/astral-sh/ruff/pull/8670)) - Trim trailing empty strings when converting to f-strings ([#&#8203;8712](https://togithub.com/astral-sh/ruff/pull/8712)) - Fix ordering for `force-sort-within-sections` ([#&#8203;8665](https://togithub.com/astral-sh/ruff/pull/8665)) - Run unicode prefix rule over tokens ([#&#8203;8709](https://togithub.com/astral-sh/ruff/pull/8709)) - Update UP032 to unescape curly braces in literal parts of converted strings ([#&#8203;8697](https://togithub.com/astral-sh/ruff/pull/8697)) - List all ipython builtins ([#&#8203;8719](https://togithub.com/astral-sh/ruff/pull/8719)) ##### Documentation - Document conventions in the FAQ ([#&#8203;8638](https://togithub.com/astral-sh/ruff/pull/8638)) - Redirect from rule codes to rule pages in docs ([#&#8203;8636](https://togithub.com/astral-sh/ruff/pull/8636)) - Fix permalink to convention setting ([#&#8203;8575](https://togithub.com/astral-sh/ruff/pull/8575)) ### [`v0.1.5`](https://togithub.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#015) [Compare Source](https://togithub.com/astral-sh/ruff/compare/v0.1.4...v0.1.5) ##### Preview features - \[`flake8-bandit`] Implement `mako-templates` (`S702`) ([#&#8203;8533](https://togithub.com/astral-sh/ruff/pull/8533)) - \[`flake8-trio`] Implement `TRIO105` ([#&#8203;8490](https://togithub.com/astral-sh/ruff/pull/8490)) - \[`flake8-trio`] Implement `TRIO109` ([#&#8203;8534](https://togithub.com/astral-sh/ruff/pull/8534)) - \[`flake8-trio`] Implement `TRIO110` ([#&#8203;8537](https://togithub.com/astral-sh/ruff/pull/8537)) - \[`flake8-trio`] Implement `TRIO115` ([#&#8203;8486](https://togithub.com/astral-sh/ruff/pull/8486)) - \[`refurb`] Implement `type-none-comparison` (`FURB169`) ([#&#8203;8487](https://togithub.com/astral-sh/ruff/pull/8487)) - Flag all comparisons against builtin types in `E721` ([#&#8203;8491](https://togithub.com/astral-sh/ruff/pull/8491)) - Make `SIM118` fix as safe when the expression is a known dictionary ([#&#8203;8525](https://togithub.com/astral-sh/ruff/pull/8525)) ##### Formatter - Fix multiline lambda expression statement formatting ([#&#8203;8466](https://togithub.com/astral-sh/ruff/pull/8466)) ##### CLI - Add hidden `--extension` to override inference of source type from file extension ([#&#8203;8373](https://togithub.com/astral-sh/ruff/pull/8373)) ##### Configuration - Account for selector specificity when merging `extend_unsafe_fixes` and `override extend_safe_fixes` ([#&#8203;8444](https://togithub.com/astral-sh/ruff/pull/8444)) - Add support for disabling cache with `RUFF_NO_CACHE` environment variable ([#&#8203;8538](https://togithub.com/astral-sh/ruff/pull/8538)) ##### Bug fixes - \[`E721`] Flag comparisons to `memoryview` ([#&#8203;8485](https://togithub.com/astral-sh/ruff/pull/8485)) - Allow collapsed-ellipsis bodies in other statements ([#&#8203;8499](https://togithub.com/astral-sh/ruff/pull/8499)) - Avoid `D301` autofix for `u` prefixed strings ([#&#8203;8495](https://togithub.com/astral-sh/ruff/pull/8495)) - Only flag `flake8-trio` rules when `trio` import is present ([#&#8203;8550](https://togithub.com/astral-sh/ruff/pull/8550)) - Reject more syntactically invalid Python programs ([#&#8203;8524](https://togithub.com/astral-sh/ruff/pull/8524)) - Avoid raising `TRIO115` violations for `trio.sleep(...)` calls with non-number values ([#&#8203;8532](https://togithub.com/astral-sh/ruff/pull/8532)) - Fix `F841` false negative on assignment to multiple variables ([#&#8203;8489](https://togithub.com/astral-sh/ruff/pull/8489)) ##### Documentation - Fix link to isort `known-first-party` ([#&#8203;8562](https://togithub.com/astral-sh/ruff/pull/8562)) - Add notes on fix safety to a few rules ([#&#8203;8500](https://togithub.com/astral-sh/ruff/pull/8500)) - Add missing toml config tabs ([#&#8203;8512](https://togithub.com/astral-sh/ruff/pull/8512)) - Add instructions for configuration of Emacs ([#&#8203;8488](https://togithub.com/astral-sh/ruff/pull/8488)) - Improve detail link contrast in dark mode ([#&#8203;8548](https://togithub.com/astral-sh/ruff/pull/8548)) - Fix typo in example ([#&#8203;8506](https://togithub.com/astral-sh/ruff/pull/8506)) - Added tabs for configuration files in the documentation ([#&#8203;8480](https://togithub.com/astral-sh/ruff/pull/8480)) - Recommend `project.requires-python` over `target-version` ([#&#8203;8513](https://togithub.com/astral-sh/ruff/pull/8513)) - Add singleton escape hatch to `B008` documentation ([#&#8203;8501](https://togithub.com/astral-sh/ruff/pull/8501)) - Fix tab configuration docs ([#&#8203;8502](https://togithub.com/astral-sh/ruff/pull/8502)) ### [`v0.1.4`](https://togithub.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#014) [Compare Source](https://togithub.com/astral-sh/ruff/compare/v0.1.3...v0.1.4) ##### Preview features - \[`flake8-trio`] Implement `timeout-without-await` (`TRIO001`) ([#&#8203;8439](https://togithub.com/astral-sh/ruff/pull/8439)) - \[`numpy`] Implement NumPy 2.0 migration rule (`NPY200`) ([#&#8203;7702](https://togithub.com/astral-sh/ruff/pull/7702)) - \[`pylint`] Implement `bad-open-mode` (`W1501`) ([#&#8203;8294](https://togithub.com/astral-sh/ruff/pull/8294)) - \[`pylint`] Implement `import-outside-toplevel` (`C0415`) rule ([#&#8203;5180](https://togithub.com/astral-sh/ruff/pull/5180)) - \[`pylint`] Implement `useless-with-lock` (`W2101`) ([#&#8203;8321](https://togithub.com/astral-sh/ruff/pull/8321)) - \[`pyupgrade`] Implement `timeout-error-alias` (`UP041`) ([#&#8203;8476](https://togithub.com/astral-sh/ruff/pull/8476)) - \[`refurb`] Implement `isinstance-type-none` (`FURB168`) ([#&#8203;8308](https://togithub.com/astral-sh/ruff/pull/8308)) - Detect confusable Unicode-to-Unicode units in `RUF001`, `RUF002`, and `RUF003` ([#&#8203;4430](https://togithub.com/astral-sh/ruff/pull/4430)) - Add newline after module docstrings in preview style ([#&#8203;8283](https://togithub.com/astral-sh/ruff/pull/8283)) ##### Formatter - Add a note on line-too-long to the formatter docs ([#&#8203;8314](https://togithub.com/astral-sh/ruff/pull/8314)) - Preserve trailing statement semicolons when using `fmt: skip` ([#&#8203;8273](https://togithub.com/astral-sh/ruff/pull/8273)) - Preserve trailing semicolons when using `fmt: off` ([#&#8203;8275](https://togithub.com/astral-sh/ruff/pull/8275)) - Avoid duplicating linter-formatter compatibility warnings ([#&#8203;8292](https://togithub.com/astral-sh/ruff/pull/8292)) - Avoid inserting a newline after function docstrings ([#&#8203;8375](https://togithub.com/astral-sh/ruff/pull/8375)) - Insert newline between docstring and following own line comment ([#&#8203;8216](https://togithub.com/astral-sh/ruff/pull/8216)) - Split tuples in return positions by comma first ([#&#8203;8280](https://togithub.com/astral-sh/ruff/pull/8280)) - Avoid treating byte strings as docstrings ([#&#8203;8350](https://togithub.com/astral-sh/ruff/pull/8350)) - Add `--line-length` option to `format` command ([#&#8203;8363](https://togithub.com/astral-sh/ruff/pull/8363)) - Avoid parenthesizing unsplittable because of comments ([#&#8203;8431](https://togithub.com/astral-sh/ruff/pull/8431)) ##### CLI - Add `--output-format` to `ruff rule` and `ruff linter` ([#&#8203;8203](https://togithub.com/astral-sh/ruff/pull/8203)) ##### Bug fixes - Respect `--force-exclude` in `lint.exclude` and `format.exclude` ([#&#8203;8393](https://togithub.com/astral-sh/ruff/pull/8393)) - Respect `--extend-per-file-ignores` on the CLI ([#&#8203;8329](https://togithub.com/astral-sh/ruff/pull/8329)) - Extend `bad-dunder-method-name` to permit `__index__` ([#&#8203;8300](https://togithub.com/astral-sh/ruff/pull/8300)) - Fix panic with 8 in octal escape ([#&#8203;8356](https://togithub.com/astral-sh/ruff/pull/8356)) - Avoid raising `D300` when both triple quote styles are present ([#&#8203;8462](https://togithub.com/astral-sh/ruff/pull/8462)) - Consider unterminated f-strings in `FStringRanges` ([#&#8203;8154](https://togithub.com/astral-sh/ruff/pull/8154)) - Avoid including literal `shell=True` for truthy, non-`True` diagnostics ([#&#8203;8359](https://togithub.com/astral-sh/ruff/pull/8359)) - Avoid triggering single-element test for starred expressions ([#&#8203;8433](https://togithub.com/astral-sh/ruff/pull/8433)) - Detect and ignore Jupyter automagics ([#&#8203;8398](https://togithub.com/astral-sh/ruff/pull/8398)) - Fix invalid E231 error with f-strings ([#&#8203;8369](https://togithub.com/astral-sh/ruff/pull/8369)) - Avoid triggering `NamedTuple` rewrite with starred annotation ([#&#8203;8434](https://togithub.com/astral-sh/ruff/pull/8434)) - Avoid un-setting bracket flag in logical lines ([#&#8203;8380](https://togithub.com/astral-sh/ruff/pull/8380)) - Place 'r' prefix before 'f' for raw format strings ([#&#8203;8464](https://togithub.com/astral-sh/ruff/pull/8464)) - Remove trailing periods from NumPy 2.0 code actions ([#&#8203;8475](https://togithub.com/astral-sh/ruff/pull/8475)) - Fix bug where `PLE1307` was raised when formatting `%c` with characters ([#&#8203;8407](https://togithub.com/astral-sh/ruff/pull/8407)) - Remove unicode flag from comparable ([#&#8203;8440](https://togithub.com/astral-sh/ruff/pull/8440)) - Improve B015 message ([#&#8203;8295](https://togithub.com/astral-sh/ruff/pull/8295)) - Use `fixedOverflowWidgets` for playground popover ([#&#8203;8458](https://togithub.com/astral-sh/ruff/pull/8458)) - Mark `byte_bounds` as a non-backwards-compatible NumPy 2.0 change ([#&#8203;8474](https://togithub.com/astral-sh/ruff/pull/8474)) ##### Internals - Add a dedicated cache directory per Ruff version ([#&#8203;8333](https://togithub.com/astral-sh/ruff/pull/8333)) - Allow selective caching for `--fix` and `--diff` ([#&#8203;8316](https://togithub.com/astral-sh/ruff/pull/8316)) - Improve performance of comment parsing ([#&#8203;8193](https://togithub.com/astral-sh/ruff/pull/8193)) - Improve performance of string parsing ([#&#8203;8227](https://togithub.com/astral-sh/ruff/pull/8227)) - Use a dedicated sort key for isort import sorting ([#&#8203;7963](https://togithub.com/astral-sh/ruff/pull/7963)) ### [`v0.1.3`](https://togithub.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#013) [Compare Source](https://togithub.com/astral-sh/ruff/compare/v0.1.2...v0.1.3) This release includes a variety of improvements to the Ruff formatter, removing several known and unintentional deviations from Black. ##### Formatter - Avoid space around pow for `None`, `True` and `False` ([#&#8203;8189](https://togithub.com/astral-sh/ruff/pull/8189)) - Avoid sorting all paths in the format command ([#&#8203;8181](https://togithub.com/astral-sh/ruff/pull/8181)) - Insert necessary blank line between class and leading comments ([#&#8203;8224](https://togithub.com/astral-sh/ruff/pull/8224)) - Avoid introducing new parentheses in annotated assignments ([#&#8203;8233](https://togithub.com/astral-sh/ruff/pull/8233)) - Refine the warnings about incompatible linter options ([#&#8203;8196](https://togithub.com/astral-sh/ruff/pull/8196)) - Add test and basic implementation for formatter preview mode ([#&#8203;8044](https://togithub.com/astral-sh/ruff/pull/8044)) - Refine warning about incompatible `isort` settings ([#&#8203;8192](https://togithub.com/astral-sh/ruff/pull/8192)) - Only omit optional parentheses for starting or ending with parentheses ([#&#8203;8238](https://togithub.com/astral-sh/ruff/pull/8238)) - Use source type to determine parser mode for formatting ([#&#8203;8205](https://togithub.com/astral-sh/ruff/pull/8205)) - Don't warn about magic trailing comma when `isort.force-single-line` is true ([#&#8203;8244](https://togithub.com/astral-sh/ruff/pull/8244)) - Use `SourceKind::diff` for formatter ([#&#8203;8240](https://togithub.com/astral-sh/ruff/pull/8240)) - Fix `fmt:off` with trailing child comment ([#&#8203;8234](https://togithub.com/astral-sh/ruff/pull/8234)) - Formatter parentheses support for `IpyEscapeCommand` ([#&#8203;8207](https://togithub.com/astral-sh/ruff/pull/8207)) ##### Linter - \[`pylint`] Add buffer methods to `bad-dunder-method-name` (`PLW3201`) exclusions ([#&#8203;8190](https://togithub.com/astral-sh/ruff/pull/8190)) - Match rule prefixes from `external` codes setting in `unused-noqa` ([#&#8203;8177](https://togithub.com/astral-sh/ruff/pull/8177)) - Use `line-length` setting for isort in lieu of `pycodestyle.max-line-length` ([#&#8203;8235](https://togithub.com/astral-sh/ruff/pull/8235)) - Update fix for `unnecessary-paren-on-raise-exception` to unsafe for unknown types ([#&#8203;8231](https://togithub.com/astral-sh/ruff/pull/8231)) - Correct quick fix message for `W605` ([#&#8203;8255](https://togithub.com/astral-sh/ruff/pull/8255)) ##### Documentation - Fix typo in max-doc-length documentation ([#&#8203;8201](https://togithub.com/astral-sh/ruff/pull/8201)) - Improve documentation around linter-formatter conflicts ([#&#8203;8257](https://togithub.com/astral-sh/ruff/pull/8257)) - Fix link to error suppression documentation in `unused-noqa` ([#&#8203;8172](https://togithub.com/astral-sh/ruff/pull/8172)) - Add `external` option to `unused-noqa` documentation ([#&#8203;8171](https://togithub.com/astral-sh/ruff/pull/8171)) - Add title attribute to icons ([#&#8203;8060](https://togithub.com/astral-sh/ruff/pull/806 </details> --- ### Configuration 📅 **Schedule**: Branch creation - "every weekend" in timezone Etc/UTC, Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/canonical/starbase). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4xNTMuMiIsInVwZGF0ZWRJblZlciI6IjM3LjE1My4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9-->

Evaluation history

Date Model Scores Action Summary
qwen/qwen3.6-35b-a3b Successfully merged automated dependency update upgrading ruff from 0.0.267 to 0.1.15. The change passed CI checks, maintained 100% test coverage, and updated the project's linting tool to the latest release.
qwen3.6-35b-a3b-mtp-q6 Merged automated dependency update upgrading ruff from 0.0.267 to 0.1.15. The change passed CI checks, maintained 100% code coverage, and was successfully integrated into the main branch.

Update history

No update history recorded yet.

Related issues

Issue Project State Summary Similarity
#69 chore(deps): update dependency ruff to v0.0.269 starbase merged Merged automated dependency update upgrading ruff from v0.0.267 to v0.0.269. Passed CI checks and reviewer approval before integration.
96%
#423 chore(deps): update dependency ruff to v0.1.6 rockcraft merged Merged automated dependency update upgrading ruff from v0.1.1 to v0.1.6. Approved by two reviewers, passed CI checks, and applied with a minimal two-line change across two files.
95%
#589 chore(deps): update dependency ruff to v0.1.14 craft-parts merged Merged automated dependency update for ruff from v0.1.6 to v0.1.14. Approved by two reviewers with passing CI checks. Updated a single configuration file to apply the new version constraint.
95%
#181 chore(deps): update dependency lint/ruff to v0.1.14 craft-application merged Merged an automated dependency update upgrading lint/ruff from v0.1.11 to v0.1.14. The change passed CI, received approvals, and maintained 99.29% test coverage.
95%
#230 chore(deps): update dependency lint/ruff to v0.1.15 craft-cli merged Merged automated dependency update upgrading lint/ruff from v0.1.14 to v0.1.15. Approved by two reviewers, passed CI checks, and maintained 94.81% test coverage across a single file change.
94%
#223 chore(deps): update dependency lint/ruff to v0.1.14 craft-cli merged Merged automated dependency update for lint/ruff from v0.1.8 to v0.1.14 via Renovate bot. CI and code coverage checks passed, successfully integrating the update.
94%
#214 chore(deps): update dependency lint/ruff to v0.1.7 craft-cli merged Merged an automated dependency update upgrading lint/ruff from v0.1.6 to v0.1.7. Approved by two reviewers, passed CI checks, maintained 94.77% test coverage, and modified a single file before final merge.
94%
#165 chore(deps): update dependency lint/ruff to v0.1.7 craft-application merged Merged an automated dependency update for lint/ruff from v0.1.6 to v0.1.7. Approved by two reviewers, passed CI checks, and successfully integrated into the main branch.
94%
#387 chore(deps): update dependency ruff to v0.1.1 rockcraft merged Renovate bot updated the ruff dependency from 0.0.256 to 0.1.1. The change was approved by two reviewers, passed CI checks, and successfully merged.
94%
#142 chore(deps): update dependency lint/ruff to v0.1.1 starbase merged Merged automated dependency update upgrading lint/ruff from v0.1.0 to v0.1.1. Approved by reviewer, passed CI checks, and successfully merged into main with a single line change.
94%