astral-sh/ruff (ruff)
### [`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`) ([#8533](https://togithub.com/astral-sh/ruff/pull/8533))
- \[`flake8-trio`] Implement `TRIO105` ([#8490](https://togithub.com/astral-sh/ruff/pull/8490))
- \[`flake8-trio`] Implement `TRIO109` ([#8534](https://togithub.com/astral-sh/ruff/pull/8534))
- \[`flake8-trio`] Implement `TRIO110` ([#8537](https://togithub.com/astral-sh/ruff/pull/8537))
- \[`flake8-trio`] Implement `TRIO115` ([#8486](https://togithub.com/astral-sh/ruff/pull/8486))
- \[`refurb`] Implement `type-none-comparison` (`FURB169`) ([#8487](https://togithub.com/astral-sh/ruff/pull/8487))
- Flag all comparisons against builtin types in `E721` ([#8491](https://togithub.com/astral-sh/ruff/pull/8491))
- Make `SIM118` fix as safe when the expression is a known dictionary ([#8525](https://togithub.com/astral-sh/ruff/pull/8525))
##### Formatter
- Fix multiline lambda expression statement formatting ([#8466](https://togithub.com/astral-sh/ruff/pull/8466))
##### CLI
- Add hidden `--extension` to override inference of source type from file extension ([#8373](https://togithub.com/astral-sh/ruff/pull/8373))
##### Configuration
- Account for selector specificity when merging `extend_unsafe_fixes` and `override extend_safe_fixes` ([#8444](https://togithub.com/astral-sh/ruff/pull/8444))
- Add support for disabling cache with `RUFF_NO_CACHE` environment variable ([#8538](https://togithub.com/astral-sh/ruff/pull/8538))
##### Bug fixes
- \[`E721`] Flag comparisons to `memoryview` ([#8485](https://togithub.com/astral-sh/ruff/pull/8485))
- Allow collapsed-ellipsis bodies in other statements ([#8499](https://togithub.com/astral-sh/ruff/pull/8499))
- Avoid `D301` autofix for `u` prefixed strings ([#8495](https://togithub.com/astral-sh/ruff/pull/8495))
- Only flag `flake8-trio` rules when `trio` import is present ([#8550](https://togithub.com/astral-sh/ruff/pull/8550))
- Reject more syntactically invalid Python programs ([#8524](https://togithub.com/astral-sh/ruff/pull/8524))
- Avoid raising `TRIO115` violations for `trio.sleep(...)` calls with non-number values ([#8532](https://togithub.com/astral-sh/ruff/pull/8532))
- Fix `F841` false negative on assignment to multiple variables ([#8489](https://togithub.com/astral-sh/ruff/pull/8489))
##### Documentation
- Fix link to isort `known-first-party` ([#8562](https://togithub.com/astral-sh/ruff/pull/8562))
- Add notes on fix safety to a few rules ([#8500](https://togithub.com/astral-sh/ruff/pull/8500))
- Add missing toml config tabs ([#8512](https://togithub.com/astral-sh/ruff/pull/8512))
- Add instructions for configuration of Emacs ([#8488](https://togithub.com/astral-sh/ruff/pull/8488))
- Improve detail link contrast in dark mode ([#8548](https://togithub.com/astral-sh/ruff/pull/8548))
- Fix typo in example ([#8506](https://togithub.com/astral-sh/ruff/pull/8506))
- Added tabs for configuration files in the documentation ([#8480](https://togithub.com/astral-sh/ruff/pull/8480))
- Recommend `project.requires-python` over `target-version` ([#8513](https://togithub.com/astral-sh/ruff/pull/8513))
- Add singleton escape hatch to `B008` documentation ([#8501](https://togithub.com/astral-sh/ruff/pull/8501))
- Fix tab configuration docs ([#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`) ([#8439](https://togithub.com/astral-sh/ruff/pull/8439))
- \[`numpy`] Implement NumPy 2.0 migration rule (`NPY200`) ([#7702](https://togithub.com/astral-sh/ruff/pull/7702))
- \[`pylint`] Implement `bad-open-mode` (`W1501`) ([#8294](https://togithub.com/astral-sh/ruff/pull/8294))
- \[`pylint`] Implement `import-outside-toplevel` (`C0415`) rule ([#5180](https://togithub.com/astral-sh/ruff/pull/5180))
- \[`pylint`] Implement `useless-with-lock` (`W2101`) ([#8321](https://togithub.com/astral-sh/ruff/pull/8321))
- \[`pyupgrade`] Implement `timeout-error-alias` (`UP041`) ([#8476](https://togithub.com/astral-sh/ruff/pull/8476))
- \[`refurb`] Implement `isinstance-type-none` (`FURB168`) ([#8308](https://togithub.com/astral-sh/ruff/pull/8308))
- Detect confusable Unicode-to-Unicode units in `RUF001`, `RUF002`, and `RUF003` ([#4430](https://togithub.com/astral-sh/ruff/pull/4430))
- Add newline after module docstrings in preview style ([#8283](https://togithub.com/astral-sh/ruff/pull/8283))
##### Formatter
- Add a note on line-too-long to the formatter docs ([#8314](https://togithub.com/astral-sh/ruff/pull/8314))
- Preserve trailing statement semicolons when using `fmt: skip` ([#8273](https://togithub.com/astral-sh/ruff/pull/8273))
- Preserve trailing semicolons when using `fmt: off` ([#8275](https://togithub.com/astral-sh/ruff/pull/8275))
- Avoid duplicating linter-formatter compatibility warnings ([#8292](https://togithub.com/astral-sh/ruff/pull/8292))
- Avoid inserting a newline after function docstrings ([#8375](https://togithub.com/astral-sh/ruff/pull/8375))
- Insert newline between docstring and following own line comment ([#8216](https://togithub.com/astral-sh/ruff/pull/8216))
- Split tuples in return positions by comma first ([#8280](https://togithub.com/astral-sh/ruff/pull/8280))
- Avoid treating byte strings as docstrings ([#8350](https://togithub.com/astral-sh/ruff/pull/8350))
- Add `--line-length` option to `format` command ([#8363](https://togithub.com/astral-sh/ruff/pull/8363))
- Avoid parenthesizing unsplittable because of comments ([#8431](https://togithub.com/astral-sh/ruff/pull/8431))
##### CLI
- Add `--output-format` to `ruff rule` and `ruff linter` ([#8203](https://togithub.com/astral-sh/ruff/pull/8203))
##### Bug fixes
- Respect `--force-exclude` in `lint.exclude` and `format.exclude` ([#8393](https://togithub.com/astral-sh/ruff/pull/8393))
- Respect `--extend-per-file-ignores` on the CLI ([#8329](https://togithub.com/astral-sh/ruff/pull/8329))
- Extend `bad-dunder-method-name` to permit `__index__` ([#8300](https://togithub.com/astral-sh/ruff/pull/8300))
- Fix panic with 8 in octal escape ([#8356](https://togithub.com/astral-sh/ruff/pull/8356))
- Avoid raising `D300` when both triple quote styles are present ([#8462](https://togithub.com/astral-sh/ruff/pull/8462))
- Consider unterminated f-strings in `FStringRanges` ([#8154](https://togithub.com/astral-sh/ruff/pull/8154))
- Avoid including literal `shell=True` for truthy, non-`True` diagnostics ([#8359](https://togithub.com/astral-sh/ruff/pull/8359))
- Avoid triggering single-element test for starred expressions ([#8433](https://togithub.com/astral-sh/ruff/pull/8433))
- Detect and ignore Jupyter automagics ([#8398](https://togithub.com/astral-sh/ruff/pull/8398))
- Fix invalid E231 error with f-strings ([#8369](https://togithub.com/astral-sh/ruff/pull/8369))
- Avoid triggering `NamedTuple` rewrite with starred annotation ([#8434](https://togithub.com/astral-sh/ruff/pull/8434))
- Avoid un-setting bracket flag in logical lines ([#8380](https://togithub.com/astral-sh/ruff/pull/8380))
- Place 'r' prefix before 'f' for raw format strings ([#8464](https://togithub.com/astral-sh/ruff/pull/8464))
- Remove trailing periods from NumPy 2.0 code actions ([#8475](https://togithub.com/astral-sh/ruff/pull/8475))
- Fix bug where `PLE1307` was raised when formatting `%c` with characters ([#8407](https://togithub.com/astral-sh/ruff/pull/8407))
- Remove unicode flag from comparable ([#8440](https://togithub.com/astral-sh/ruff/pull/8440))
- Improve B015 message ([#8295](https://togithub.com/astral-sh/ruff/pull/8295))
- Use `fixedOverflowWidgets` for playground popover ([#8458](https://togithub.com/astral-sh/ruff/pull/8458))
- Mark `byte_bounds` as a non-backwards-compatible NumPy 2.0 change ([#8474](https://togithub.com/astral-sh/ruff/pull/8474))
##### Internals
- Add a dedicated cache directory per Ruff version ([#8333](https://togithub.com/astral-sh/ruff/pull/8333))
- Allow selective caching for `--fix` and `--diff` ([#8316](https://togithub.com/astral-sh/ruff/pull/8316))
- Improve performance of comment parsing ([#8193](https://togithub.com/astral-sh/ruff/pull/8193))
- Improve performance of string parsing ([#8227](https://togithub.com/astral-sh/ruff/pull/8227))
- Use a dedicated sort key for isort import sorting ([#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` ([#8189](https://togithub.com/astral-sh/ruff/pull/8189))
- Avoid sorting all paths in the format command ([#8181](https://togithub.com/astral-sh/ruff/pull/8181))
- Insert necessary blank line between class and leading comments ([#8224](https://togithub.com/astral-sh/ruff/pull/8224))
- Avoid introducing new parentheses in annotated assignments ([#8233](https://togithub.com/astral-sh/ruff/pull/8233))
- Refine the warnings about incompatible linter options ([#8196](https://togithub.com/astral-sh/ruff/pull/8196))
- Add test and basic implementation for formatter preview mode ([#8044](https://togithub.com/astral-sh/ruff/pull/8044))
- Refine warning about incompatible `isort` settings ([#8192](https://togithub.com/astral-sh/ruff/pull/8192))
- Only omit optional parentheses for starting or ending with parentheses ([#8238](https://togithub.com/astral-sh/ruff/pull/8238))
- Use source type to determine parser mode for formatting ([#8205](https://togithub.com/astral-sh/ruff/pull/8205))
- Don't warn about magic trailing comma when `isort.force-single-line` is true ([#8244](https://togithub.com/astral-sh/ruff/pull/8244))
- Use `SourceKind::diff` for formatter ([#8240](https://togithub.com/astral-sh/ruff/pull/8240))
- Fix `fmt:off` with trailing child comment ([#8234](https://togithub.com/astral-sh/ruff/pull/8234))
- Formatter parentheses support for `IpyEscapeCommand` ([#8207](https://togithub.com/astral-sh/ruff/pull/8207))
##### Linter
- \[`pylint`] Add buffer methods to `bad-dunder-method-name` (`PLW3201`) exclusions ([#8190](https://togithub.com/astral-sh/ruff/pull/8190))
- Match rule prefixes from `external` codes setting in `unused-noqa` ([#8177](https://togithub.com/astral-sh/ruff/pull/8177))
- Use `line-length` setting for isort in lieu of `pycodestyle.max-line-length` ([#8235](https://togithub.com/astral-sh/ruff/pull/8235))
- Update fix for `unnecessary-paren-on-raise-exception` to unsafe for unknown types ([#8231](https://togithub.com/astral-sh/ruff/pull/8231))
- Correct quick fix message for `W605` ([#8255](https://togithub.com/astral-sh/ruff/pull/8255))
##### Documentation
- Fix typo in max-doc-length documentation ([#8201](https://togithub.com/astral-sh/ruff/pull/8201))
- Improve documentation around linter-formatter conflicts ([#8257](https://togithub.com/astral-sh/ruff/pull/8257))
- Fix link to error suppression documentation in `unused-noqa` ([#8172](https://togithub.com/astral-sh/ruff/pull/8172))
- Add `external` option to `unused-noqa` documentation ([#8171](https://togithub.com/astral-sh/ruff/pull/8171))
- Add title attribute to icons ([#8060](https://togithub.com/astral-sh/ruff/pull/8060))
- Clarify unsafe case in RSE102 ([#8256](https://togithub.com/astral-sh/ruff/pull/8256))
- Fix skipping formatting examples ([#8210](https://togithub.com/astral-sh/ruff/pull/8210))
- docs: fix name of `magic-trailing-comma` option in README ([#8200](https://togithub.com/astral-sh/ruff/pull/8200))
- Add note about scope of rule changing in versioning policy ([#8169](https://togithub.com/astral-sh/ruff/pull/8169))
- Document: Fix default lint rules ([#8218](https://togithub.com/astral-sh/ruff/pull/8218))
- Fix a wrong setting in configuration.md ([#8186](https://togithub.com/astral-sh/ruff/pull/8186))
- Fix misspelled TOML headers in the tutorial ([#8209](https://togithub.com/astral-sh/ruff/pull/8209))
### [`v0.1.2`](https://togithub.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#012)
[Compare Source](https://togithub.com/astral-sh/ruff/compare/v0.1.1...v0.1.2)
This release includes the Beta version of the Ruff formatter — an extremely fast, Black-compatible Python formatter.
Try it today with `ruff format`! [Check out the blog post](https://astral.sh/blog/the-ruff-formatter) and [read the docs](https://docs.astral.sh/ruff/formatter/).
##### Preview features
- \[`pylint`] Implement `non-ascii-module-import` (`C2403`) ([#8056](https://togithub.com/astral-sh/ruff/pull/8056))
- \[`pylint`] implement `non-ascii-name` (`C2401`) ([#8038](https://togithub.com/astral-sh/ruff/pull/8038))
- \[`pylint`] Implement unnecessary-lambda (W0108) ([#7953](https://togithub.com/astral-sh/ruff/pull/7953))
- \[`refurb`] Implement `read-whole-file` (`FURB101`) ([#7682](https://togithub.com/astral-sh/ruff/pull/7682))
- Add fix for `E223`, `E224`, and `E242` ([#8143](https://togithub.com/astral-sh/ruff/pull/8143))
- Add fix for `E225`, `E226`, `E227`, and `E228` ([#8136](https://togithub.com/astral-sh/ruff/pull/8136))
- Add fix for `E252` ([#8142](https://togithub.com/astral-sh/ruff/pull/8142))
- Add fix for `E261` ([#8114](https://togithub.com/astral-sh/ruff/pull/8114))
- Add fix for `E273` and `E274` ([#8144](https://togithub.com/astral-sh/ruff/pull/8144))
- Add fix for `E275` ([#8133](https://togithub.com/astral-sh/ruff/pull/8133))
- Update `SIM401` to catch ternary operations ([#7415](https://togithub.com/astral-sh/ruff/pull/7415))
- Update `E721` to allow `is` and `is` not for direct type comparisons ([#7905](https://togithub.com/astral-sh/ruff/pull/7905))
##### Rule changes
- Add `backports.strenum` to `deprecated-imports` ([#8113](https://togithub.com/astral-sh/ruff/pull/8113))
- Update `SIM112` to ignore `https_proxy`, `http_proxy`, and `no_proxy` ([#8140](https://togithub.com/astral-sh/ruff/pull/8140))
- Update fix for `literal-membership` (`PLR6201`) to be unsafe ([#8097](https://togithub.com/astral-sh/ruff/pull/8097))
- Update fix for `mutable-argument-defaults` (`B006`) to be unsafe ([#8108](https://togithub.com/astral-sh/ruff/pull/8108))
##### Formatter
- Change `line-ending` default to `auto` ([#8057](https://togithub.com/astral-sh/ruff/pull/8057))
- Respect parenthesized generators in `has_own_parentheses` ([#8100](https://togithub.com/astral-sh/ruff/pull/8100))
- Add caching to formatter ([#8089](https://togithub.com/astral-sh/ruff/pull/8089))
- Remove `--line-length` option from `format` command ([#8131](https://togithub.com/astral-sh/ruff/pull/8131))
- Add formatter to `line-length` documentation ([#8150](https://togithub.com/astral-sh/ruff/pull/8150))
- Warn about incompatible formatter options ([#8088](https://togithub.com/astral-sh/ruff/pull/8088))
- Fix range of unparenthesized tuple subject in match statement ([#8101](https://togithub.com/astral-sh/ruff/pull/8101))
- Remove experimental formatter warning ([#8148](https://togithub.com/astral-sh/ruff/pull/8148))
- Don't move type param opening parenthesis comment ([#8163](https://togithub.com/astral-sh/ruff/pull/8163))
- Update versions in format benchmark script ([#8110](https://togithub.com/astral-sh/ruff/pull/8110))
- Avoid loading files for cached format results ([#8134](https://togithub.com/astral-sh/ruff/pull/8134))
##### CLI
- Show the `ruff format` command in help menus ([#8167](https://togithub.com/astral-sh/ruff/pull/8167))
- Add `ruff version` command with long version display ([#8034](https://togithub.com/astral-sh/ruff/pull/8034))
##### Configuration
- New `pycodestyle.max-line-length` option ([#8039](https://togithub.com/astral-sh/ruff/pull/8039))
##### Bug fixes
- Detect `sys.version_info` slices in `outdated-version-block` ([#8112](https://togithub.com/astral-sh/ruff/pull/8112))
- Avoid if-else simplification for `TYPE_CHECKING` blocks ([#8072](https://togithub.com/astral-sh/ruff/pull/8072))
- Avoid false-positive print separator diagnostic with starred argument ([#8079](https://togithub.com/astral-sh/ruff/pull/8079))
##### Documentation
- Fix message for `too-many-arguments` lint ([#8092](https://togithub.com/astral-sh/ruff/pull/8092))
- Fix `extend-unsafe-fixes` and `extend-safe-fixes` example ([#8139](https://togithub.com/astral-sh/ruff/pull/8139))
- Add links to `flake8-import-conventions` options ([#8115](https://togithub.com/astral-sh/ruff/pull/8115))
- Rework the documentation to incorporate the Ruff formatter ([#7732](https://togithub.com/astral-sh/ruff/pull/7732))
- Fix `Options` JSON schema description ([#8081](https://togithub.com/astral-sh/ruff/pull/8081))
- Fix typo (`pytext` -> `pytest`) ([#8117](https://togithub.com/astral-sh/ruff/pull/8117))
- Improve `magic-value-comparison` example in docs ([#8111](https://togithub.com/astral-sh/ruff/pull/8111))
### [`v0.1.1`](https://togithub.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#011)
[Compare Source](https://togithub.com/astral-sh/ruff/compare/v0.1.0...v0.1.1)
##### Rule changes
- Add unsafe fix for `escape-sequence-in-docstring` (`D301`) ([#7970](https://togithub.com/astral-sh/ruff/pull/7970))
##### Configuration
- Respect `#(deprecated)` attribute in configuration options ([#8035](https://togithub.com/astral-sh/ruff/pull/8035))
- Add `[format|lint].exclude` options ([#8000](https://togithub.com/astral-sh/ruff/pull/8000))
- Respect `tab-size` setting in formatter ([#8006](https://togithub.com/astral-sh/ruff/pull/8006))
- Add `lint.preview` ([#8002](https://togithub.com/astral-sh/ruff/pull/8002))
##### Preview features
- \[`pylint`] Implement `literal-membership` (`PLR6201`) ([#7973](https://togithub.com/astral-sh/ruff/pull/7973))
- \[`pylint`] Implement `too-many-boolean-expressions` (`PLR0916`) ([#7975](https://togithub.com/astral-sh/ruff/pull/7975))
- \[`pylint`] Implement `misplaced-bare-raise` (`E0704`) ([#7961](https://togithub.com/astral-sh/ruff/pull/7961))
- \[`pylint`] Implement `global-at-module-level` (`W0604`) ([#8058](https://togithub.com/astral-sh/ruff/pull/8058))
- \[`pylint`] Implement `unspecified-encoding` (`PLW1514`) ([#7939](https://togithub.com/astral-sh/ruff/pull/7939))
- Add fix for `triple-single-quotes` (`D300`) ([#7967](https://togithub.com/astral-sh/ruff/pull/7967))
##### Formatter
- New code style badge for `ruff format` ([#7878](https://togithub.com/astral-sh/ruff/pull/7878))
- Fix comments outside expression parentheses ([#7873](https://togithub.com/astral-sh/ruff/pull/7873))
- Add `--target-version` to `ruff format` ([#8055](https://togithub.com/astral-sh/ruff/pull/8055))
- Skip over parentheses when detecting `in` keyword ([#8054](https://togithub.com/astral-sh/ruff/pull/8054))
- Add `--diff` option to `ruff format` ([#7937](https://togithub.com/astral-sh/ruff/pull/7937))
- Insert newline after nested function or class statements ([#7946](https://togithub.com/astral-sh/ruff/pull/7946))
- Use `pass` over ellipsis in non-function/class contexts ([#8049](https://togithub.com/astral-sh/ruff/pull/8049))
##### Bug fixes
- Lazily evaluate all PEP 695 type alias values ([#8033](https://togithub.com/astral-sh/ruff/pull/8033))
- Avoid failed assertion when showing fixes from stdin ([#8029](https://togithub.com/astral-sh/ruff/pull/8029))
- Avoid flagging HTTP and HTTPS literals in urllib-open ([#8046](https://togithub.com/astral-sh/ruff/pull/8046))
- Avoid flagging `bad-dunder-method-name` for `_` ([#8015](https://togithub.com/astral-sh/ruff/pull/8015))
- Remove Python 2-only methods from `URLOpen` audit ([#8047](https://togithub.com/astral-sh/ruff/pull/8047))
- Use set bracket replacement for `iteration-over-set` to preserve whitespace and comments ([#8001](https://togithub.com/astral-sh/ruff/pull/8001))
##### Documentation
- Update tutorial to match revised Ruff defaults ([#8066](https://togithub.com/astral-sh/ruff/pull/8066))
- Update rule `B005` docs ([#8028](https://togithub.com/astral-sh/ruff/pull/8028))
- Update GitHub actions example in docs to use `--output-format` ([#8014](https://togithub.com/astral-sh/ruff/pull/8014))
- Document `lint.preview` and `format.preview` ([#8032](https://togithub.com/astral-sh/ruff/pull/8032))
- Clarify that new rules should be added to `RuleGroup::Preview`. ([#7989](https://togithub.com/astral-sh/ruff/pull/7989))
### [`v0.1.0`](https://togithub.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#010)
[Compare Source](https://togithub.com/astral-sh/ruff/compare/v0.0.292...v0.1.0)
This is the first release which uses the `CHANGELOG` file. See [GitHub Releases](https://togithub.com/astral-sh/ruff/releases) for prior changelog entries.
Read Ruff's new [versioning policy](https://docs.astral.sh/ruff/versioning/).
##### Breaking changes
- Unsafe fixes are no longer displayed or applied without opt-in ([#7769](https://togithub.com/astral-sh/ruff/pull/7769))
- Drop formatting specific rules from the default set ([#7900](https://togithub.com/astral-sh/ruff/pull/7900))
- The deprecated `format` setting has been removed ([#7984](https://togithub.com/astral-sh/ruff/pull/7984))
- The `format` setting cannot be used to configure the output format, use `output-format` instead
- The `RUFF_FORMAT` environment variable is ignored, use `RUFF_OUTPUT_FORMAT` instead
- The `--format` option has been removed from `ruff check`, use `--output-format` instead
##### Rule changes
- Extend `reimplemented-starmap` (`FURB140`) to catch calls with a single and starred argument ([#7768](https://togithub.com/astral-sh/ruff/pull/7768))
- Improve cases covered by `RUF015` ([#7848](https://togithub.com/astral-sh/ruff/pull/7848))
- Update `SIM15` to allow `open` followed by `close` ([#7916](https://togithub.com/astral-sh/ruff/pull/7916))
- Respect `msgspec.Struct` default-copy semantics in `RUF012` ([#7786](https://togithub.com/astral-sh/ruff/pull/7786))
- Add `sqlalchemy` methods to \`flake8-boolean-trap\`\` exclusion list ([#7874](https://togithub.com/astral-sh/ruff/pull/7874))
- Add fix for `PLR1714` ([#7910](https://togithub.com/astral-sh/ruff/pull/7910))
- Add fix for `PIE804` ([#7884](https://togithub.com/astral-sh/ruff/pull/7884))
- Add fix for `PLC0208` ([#7887](https://togithub.com/astral-sh/ruff/pull/7887))
- Add fix for `PYI055` ([#7886](https://togithub.com/astral-sh/ruff/pull/7886))
- Update `non-pep695-type-alias` to require `--unsafe-fixes` outside of stub files ([#7836](https://togithub.com/astral-sh/ruff/pull/7836))
- Improve fix message for `UP018` ([#7913](https://togithub.com/astral-sh/ruff/pull/7913))
- Update `PLW3201` to support `Enum` [sunder names](https://docs.python.org/3/library/enum.html#supported-sunder-names) ([#7987](https://togithub.com/astral-sh/ruff/pull/7987))
##### Preview features
- Only show warnings for empty preview selectors when enabling rules ([#7842](https://togithub.com/astral-sh/ruff/pull/7842))
- Add `unnecessary-key-check` to simplify `key in dct and dct[key]` to `dct.get(key)` ([#7895](https://togithub.com/astral-sh/ruff/pull/7895))
- Add `assignment-in-assert` to prevent walrus expressions in assert statements ([#7856](https://togithub.com/astral-sh/ruff/pull/7856))
- \[`refurb`] Add `single-item-membership-test` (`FURB171`) ([#7815](https://togithub.com/astral-sh/ruff/pull/7815))
- \[`pylint`] Add `and-or-ternary` (`R1706`) ([#7811](https://togithub.com/astral-sh/ruff/pull/7811))
*New rules are added in [preview](https://docs.astral.sh/ruff/preview/).*
##### Configuration
- Add `unsafe-fixes` setting ([#7769](https://togithub.com/astral-sh/ruff/pull/7769))
- Add `extend-safe-fixes` and `extend-unsafe-fixes` for promoting and demoting fixes ([#7841](https://togithub.com/astral-sh/ruff/pull/7841))
##### CLI
- Added `--unsafe-fixes` option for opt-in to display and apply unsafe fixes ([#7769](https://togithub.com/astral-sh/ruff/pull/7769))
- Fix use of deprecated `--format` option in warning ([#7837](https://togithub.com/astral-sh/ruff/pull/7837))
- Show changed files when running under `--check` ([#7788](https://togithub.com/astral-sh/ruff/pull/7788))
- Write summary messages to stderr when fixing via stdin instead of omitting them ([#7838](https://togithub.com/astral-sh/ruff/pull/7838))
- Update fix summary message in `check --diff` to include unsafe fix hints ([#7790](https://togithub.com/astral-sh/ruff/pull/7790))
- Add notebook `cell` field to JSON output format ([#7664](https://togithub.com/astral-sh/ruff/pull/7664))
- Rename applicability levels to `Safe`, `Unsafe`, and `Display` ([#7843](https://togithub.com/astral-sh/ruff/pull/7843))
##### Bug fixes
- Fix bug where f-strings were allowed in match pattern literal ([#7857](https://togithub.com/astral-sh/ruff/pull/7857))
- Fix `SIM110` with a yield in the condition ([#7801](https://togithub.com/astral-sh/ruff/pull/7801))
- Preserve trailing comments in `C414` fixes ([#7775](https://togithub.com/astral-sh/ruff/pull/7775))
- Check sequence type before triggering `unnecessary-enumerate` `len` suggestion ([#7781](https://togithub.com/astral-sh/ruff/pull/7781))
- Use correct start location for class/function clause header ([#7802](https://togithub.com/astral-sh/ruff/pull/7802))
- Fix incorrect fixes for `SIM101` ([#7798](https://togithub.com/astral-sh/ruff/pull/7798))
- Format comment before parameter default correctly ([#7870](https://togithub.com/astral-sh/ruff/pull/7870))
- Fix `E251` false positive inside f-strings ([#7894](https://togithub.com/astral-sh/ruff/pull/7894))
- Allow bindings to be created and referenced within annotations ([#7885](https://togithub.com/astral-sh/ruff/pull/7885))
- Show per-cell diffs when analyzing notebooks over `stdin` ([#7789](https://togithub.com/astral-sh/ruff/pull/7789))
- Avoid curly brace escape in f-string format spec ([#7780](https://togithub.com/astral-sh/ruff/pull/7780))
- Fix lexing single-quoted f-string with multi-line format spec ([#7787](https://togithub.com/astral-sh/ruff/pull/7787))
- Consider nursery rules to be in-preview for `ruff rule` ([#7812](https://togithub.com/astral-sh/ruff/pull/7812))
- Report precise location for invalid conversion flag ([#7809](https://togithub.com/astral-sh/ruff/pull/7809))
- Visit pattern match guard as a boolean test ([#7911](https://togithub.com/astral-sh/ruff/pull/7911))
- Respect `--unfixable` in `ISC` rules ([#7917](https://togithub.com/astral-sh/ruff/pull/7917))
- Fix edge case with `PIE804` ([#7922](https://togithub.com/astral-sh/ruff/pull/7922))
- Show custom message in `PTH118` for `Path.joinpath` with starred arguments ([#7852](https://togithub.com/astral-sh/ruff/pull/7852))
- Fix false negative in `outdated-version-block` when using greater than comparisons ([#7920](https://togithub.com/astral-sh/ruff/pull/7920))
- Avoid converting f-strings within Django `gettext` calls ([#7898](https://togithub.com/astral-sh/ruff/pull/7898))
- Fix false positive in `PLR6301` ([#7933](https://togithub.com/astral-sh/ruff/pull/7933))
- Treat type aliases as typing-only expressions e.g. resolves false positive in `TCH004` ([#7968](https://togithub.com/astral-sh/ruff/pull/7968))
- Resolve `cache-dir` relative to project root ([#7962](https://togithub.com/astral-sh/ruff/pull/7962))
- Respect subscripted base classes in type-checking rules e.g. resolves false positive in `TCH003` ([#7954](https://togithub.com/astral-sh/ruff/pull/7954))
- Fix JSON schema limit for `line-length` ([#7883](https://togithub.com/astral-sh/ruff/pull/7883))
- Fix commented-out `coalesce` keyword ([#7876](https://togithub.com/astral-sh/ruff/pull/7876))
##### Documentation
- Document `reimplemented-starmap` performance effects ([#7846](https://togithub.com/astral-sh/ruff/pull/7846))
- Default to following the system dark/light mode ([#7888](https://togithub.com/astral-sh/ruff/pull/7888))
- Add documentation for fixes ([#7901](https://togithub.com/astral-sh/ruff/pull/7901))
- Fix typo in docs of `PLR6301` ([#7831](https://togithub.com/astral-sh/ruff/pull/7831))
- Update `UP038` docs to note that it results in slower code ([#7872](https://togithub.com/astral-sh/ruff/pull/7872))
- crlf -> cr-lf ([#7766](https://togithub.com/astral-sh/ruff/pull/7766))
- Add an example of an unsafe fix ([#7924](https://togithub.com/astral-sh/ruff/pull/7924))
- Fix documented examples for `unnecessary-subscript-reversal` ([#7774](https://togithub.com/astral-sh/ruff/pull/7774))
- Correct error in tuple example in ruff formatter docs ([#7822](https://togithub.com/astral-sh/ruff/pull/7822))
- Add versioning policy to documentation ([#7923](https://togithub.com/astral-sh/ruff/pull/7923))
- Fix invalid code in `FURB177` example ([#7832](https://togithub.com/astral-sh/ruff/pull/7832))
##### Formatter
- Less scary `ruff format` message ([#7867](https://togithub.com/astral-sh/ruff/pull/7867))
- Remove spaces from import statements ([#7859](https://togithub.com/astral-sh/ruff/pull/7859))
- Formatter quoting for f-strings with triple quotes ([#7826](https://togithub.com/astral-sh/ruff/pull/7826))
- Update `ruff_python_formatter` generate.py comment ([#7850](https://togithub.com/astral-sh/ruff/pull/7850))
- Document one-call chaining deviation ([#7767](https://togithub.com/astral-sh/ruff/pull/7767))
- Allow f-string modifications in line-shrinking cases ([#7818](https://togithub.com/astral-sh/ruff/pull/7818))
- Add trailing comment deviation to README ([#7827](https://togithub.com/astral-sh/ruff/pull/7827))
- Add trailing zero between dot and exponential ([#7956](https://togithub.com/astral-sh/ruff/pull/7956))
- Force parentheses for power operations in unary expressions ([#7955](https://togithub.com/astral-sh/ruff/pull/7955))
##### Playground
- Fix playground `Quick Fix` action ([#7824](https://togithub.com/astral-sh/ruff/pull/7824))
### [`v0.0.292`](https://togithub.com/astral-sh/ruff/releases/tag/v0.0.292)
[Compare Source](https://togithub.com/astral-sh/ruff/compare/v0.0.291...v0.0.292)
#### What's Changed
##### Highlights
**This release includes full support for Python 3.12 ([out now!](https://www.python.org/downloads/release/python-3120/)), including the new type parameter ([PEP 695](https://peps.python.org/pep-0695/)) and f-string syntaxes ([PEP 701](https://peps.python.org/pep-0701/)).**
PEP 701 lifts many of the restrictions on f-strings that existed in the past, allowing for arbitrarily nested f-strings, consistent quote style within f-strings, and more, all of which are now supported by Ruff (thanks to [@dhruvmanila](https://togithub.com/dhruvmanila) in [https://github.com/astral-sh/ruff/pull/7376](https://togithub.com/astral-sh/ruff/pull/7376)).
##### Breaking Changes
- In the formatter, `format.quote-style` no longer affects triple-quoted strings, to align with common conventions as well as the guidance from PEP 8 and PEP 257 (see: [https://github.com/astral-sh/ruff/pull/7680](https://togithub.com/astral-sh/ruff/pull/7680)).
- `line-too-long` (`E501`) now ignores trailing pragma comments (like `# type: ignore` and `# noqa`) when computing line length (see: [https://github.com/astral-sh/ruff/pull/7692](https://togithub.com/astral-sh/ruff/pull/7692)). This is similar to flake8-bugbear's methodology for detecting overlong lines, and ensures that adding pragmas like `# noqa` does not introduce further lint errors.
##### Rules
- \[`refurb`] Implement `print-empty-string` (`FURB105`) by [@tjkuson](https://togithub.com/tjkuson) in [https://github.com/astral-sh/ruff/pull/7617](https://togithub.com/astral-sh/ruff/pull/7617)
- \[`flake8-bandit`] Implement `weak-cryptographic-key` (`S505`) by [@mkniewallner](https://togithub.com/mkniewallner) in [https://github.com/astral-sh/ruff/pull/7703](https://togithub.com/astral-sh/ruff/pull/7703)
- \[`refurb`] Implement `implicit-cwd` (`FURB177`) by [@danparizher](https://togithub.com/danparizher) in [https://github.com/astral-sh/ruff/pull/7704](https://togithub.com/astral-sh/ruff/pull/7704)
- `unnecessary-pass` (`PIE790`) now flags all unnecessary `pass` statements; previously, the rule only flagged `pass` statements that followed a docstring in a two-statement body (see: [https://github.com/astral-sh/ruff/pull/7697](https://togithub.com/astral-sh/ruff/pull/7697)).
##### Settings
- Add `lint` section to Ruff configuration by [@MichaReiser](https://togithub.com/MichaReiser) in [https://github.com/astral-sh/ruff/pull/7549](https://togithub.com/astral-sh/ruff/pull/7549)
- Add `explicit-preview-rules` to toggle explicit selection of preview rules by [@zanieb](https://togithub.com/zanieb) in [https://github.com/astral-sh/ruff/pull/7390](https://togithub.com/astral-sh/ruff/pull/7390)
- Decrease PEP 593 error to a debug warning by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7745](https://togithub.com/astral-sh/ruff/pull/7745)
- Write full Jupyter notebook to `stdout` by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7748](https://togithub.com/astral-sh/ruff/pull/7748)
- Extend `unnecessary-pass` (`PIE790`) to trigger on all unnecessary `pass` statements by [@tjkuson](https://togithub.com/tjkuson) in [https://github.com/astral-sh/ruff/pull/7697](https://togithub.com/astral-sh/ruff/pull/7697)
##### Bug Fixes
- Ignore blank lines between comments when counting newlines-after-imports by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7607](https://togithub.com/astral-sh/ruff/pull/7607)
- Avoid reordering mixed-indent-level comments after branches by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7609](https://togithub.com/astral-sh/ruff/pull/7609)
- Avoid flagging B009 and B010 on starred expressions by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7621](https://togithub.com/astral-sh/ruff/pull/7621)
- Use deletion for D215 full-line removals by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7625](https://togithub.com/astral-sh/ruff/pull/7625)
- Avoid searching for bracketed comments in unparenthesized generators by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7627](https://togithub.com/astral-sh/ruff/pull/7627)
- Update return type for `PT022` autofix by [@dhruvmanila](https://togithub.com/dhruvmanila) in [https://github.com/astral-sh/ruff/pull/7613](https://togithub.com/astral-sh/ruff/pull/7613)
- Flag FURB105 with starred kwargs by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7630](https://togithub.com/astral-sh/ruff/pull/7630)
- Don't suggest replacing `builtin.open()` with `Path.open()` if the latter doesn't support all options by [@konstin](https://togithub.com/konstin) in [https://github.com/astral-sh/ruff/pull/7637](https://togithub.com/astral-sh/ruff/pull/7637)
- Use 1-based cell indices consistently for Notebooks by [@dhruvmanila](https://togithub.com/dhruvmanila) in [https://github.com/astral-sh/ruff/pull/7662](https://togithub.com/astral-sh/ruff/pull/7662)
- Add `Expr::Name` checks to rules which use `is_logger_candidate` by [@qdegraaf](https://togithub.com/qdegraaf) in [https://github.com/astral-sh/ruff/pull/7521](https://togithub.com/astral-sh/ruff/pull/7521)
- Ensure that B006 autofixes are inserted after imports by [@Hoxbro](https://togithub.com/Hoxbro) in [https://github.com/astral-sh/ruff/pull/7629](https://togithub.com/astral-sh/ruff/pull/7629)
- Allow named expressions in `__all__` assignments by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7673](https://togithub.com/astral-sh/ruff/pull/7673)
- Include radix base prefix in large number representation by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7700](https://togithub.com/astral-sh/ruff/pull/7700)
- Parenthesize multi-line attributes in B009 by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7701](https://togithub.com/astral-sh/ruff/pull/7701)
- Insert necessary padding in B014 fixes by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7699](https://togithub.com/astral-sh/ruff/pull/7699)
- fix(rules): improve S507 detection by [@mkniewallner](https://togithub.com/mkniewallner) in [https://github.com/astral-sh/ruff/pull/7661](https://togithub.com/astral-sh/ruff/pull/7661)
- Ignore TODO tags in `commented-out-code` by [@tjkuson](https://togithub.com/tjkuson) in [https://github.com/astral-sh/ruff/pull/7523](https://togithub.com/astral-sh/ruff/pull/7523)
- Track fix isolation in `unnecessary-pass` by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7715](https://togithub.com/astral-sh/ruff/pull/7715)
- Use fixed source code for parser context by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7717](https://togithub.com/astral-sh/ruff/pull/7717)
- Preserve parentheses in `quadratic-list-summation` by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7719](https://togithub.com/astral-sh/ruff/pull/7719)
- Compute `NotebookIndex` for `Diagnostics` on stdin by [@dhruvmanila](https://togithub.com/dhruvmanila) in [https://github.com/astral-sh/ruff/pull/7663](https://togithub.com/astral-sh/ruff/pull/7663)
- Perform insertions before replacements by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7739](https://togithub.com/astral-sh/ruff/pull/7739)
- Skip all bracketed expressions when locating comparison ops by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7740](https://togithub.com/astral-sh/ruff/pull/7740)
- Fix PLE251 rules with f-string escaping by [@konstin](https://togithub.com/konstin) in [https://github.com/astral-sh/ruff/pull/7741](https://togithub.com/astral-sh/ruff/pull/7741)
- Skip BOM when inserting start-of-file imports by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7622](https://togithub.com/astral-sh/ruff/pull/7622)
- Emit `LexError` for dedent to incorrect level by [@MichaReiser](https://togithub.com/MichaReiser) in [https://github.com/astral-sh/ruff/pull/7638](https://togithub.com/astral-sh/ruff/pull/7638)
- Expand `DeprecatedLogWarn` to check for `Expr::Atrribute` calls by [@qdegraaf](https://togithub.com/qdegraaf) in [https://github.com/astral-sh/ruff/pull/7677](https://togithub.com/astral-sh/ruff/pull/7677)
##### Other Changes
- Add support for PEP 701 by [@dhruvmanila](https://togithub.com/dhruvmanila) in [https://github.com/astral-sh/ruff/pull/7376](https://togithub.com/astral-sh/ruff/pull/7376)
- Improve performance of `commented-out-code` (~50-80%) by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7706](https://togithub.com/astral-sh/ruff/pull/7706)
#### New Contributors
- [@bluthej](https://togithub.com/bluthej) made their first contribution in [https://github.com/astral-sh/ruff/pull/7665](https://togithub.com/astral-sh/ruff/pull/7665)
- [@Hoxbro](https://togithub.com/Hoxbro) made their first contribution in [https://github.com/astral-sh/ruff/pull/7629](https://togithub.com/astral-sh/ruff/pull/7629)
- [@danparizher](https://togithub.com/danparizher) made their first contribution in [https://github.com/astral-sh/ruff/pull/7704](https://togithub.com/astral-sh/ruff/pull/7704)
- [@aspizu](https://togithub.com/aspizu) made their first contribution in [https://github.com/astral-sh/ruff/pull/7750](https://togithub.com/astral-sh/ruff/pull/7750)
**Full Changelog**: https://github.com/astral-sh/ruff/compare/v0.0.291...v0.0.292
### [`v0.0.291`](https://togithub.com/astral-sh/ruff/releases/tag/v0.0.291)
[Compare Source](https://togithub.com/astral-sh/ruff/compare/v0.0.290...v0.0.291)
#### What's Changed
##### Deprecations
**The `format` command-line argument and configuration option has been renamed to `output-format`.** While Ruff will continue to respect `format` when passed as a command-line argument or configuration option, this backwards-compatible support will be dropped in a future release. See: [https://github.com/astral-sh/ruff/pull/7514](https://togithub.com/astral-sh/ruff/pull/7514).
##### Rules
- \[`flake8-bandit`] Implement `S201`: `flask-debug-true` by [@mkniewallner](https://togithub.com/mkniewallner) in [https://github.com/astral-sh/ruff/pull/7503](https://togithub.com/astral-sh/ruff/pull/7503)
- \[`flake8-bandit`] Implement `S507`: `ssh_no_host_key_verification` by [@mkniewallner](https://togithub.com/mkniewallner) in [https://github.com/astral-sh/ruff/pull/7528](https://togithub.com/astral-sh/ruff/pull/7528)
- \[`flake8-logging`] Implement `LOG002`: `invalid-get-logger-argument` by [@dhruvmanila](https://togithub.com/dhruvmanila) in [https://github.com/astral-sh/ruff/pull/7399](https://togithub.com/astral-sh/ruff/pull/7399)
- \[`flake8-logging`] Implement `LOG007`: `exception-without-exc-info` by [@qdegraaf](https://togithub.com/qdegraaf) in [https://github.com/astral-sh/ruff/pull/7410](https://togithub.com/astral-sh/ruff/pull/7410)
- \[`refurb`] Implement `FURB140`: `reimplemented-starmap` by [@SavchenkoValeriy](https://togithub.com/SavchenkoValeriy) in [https://github.com/astral-sh/ruff/pull/7253](https://togithub.com/astral-sh/ruff/pull/7253)
- \[`refurb`] Implement `FURB148`: `unnecessary-enumerate` by [@tjkuson](https://togithub.com/tjkuson) in [https://github.com/astral-sh/ruff/pull/7454](https://togithub.com/astral-sh/ruff/pull/7454)
- \[`ruff`] Detect `asyncio.get_running_loop` calls in RUF006 by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7562](https://togithub.com/astral-sh/ruff/pull/7562)
##### Settings
- Show `--no-X` variants in CLI help by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7504](https://togithub.com/astral-sh/ruff/pull/7504)
- Rename `format` option to `output-format` by [@MichaReiser](https://togithub.com/MichaReiser) in [https://github.com/astral-sh/ruff/pull/7514](https://togithub.com/astral-sh/ruff/pull/7514)
- Enable tab completion for `ruff rule` by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7560](https://togithub.com/astral-sh/ruff/pull/7560)
##### Bug Fixes
- Add padding to prevent some autofix errors by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7461](https://togithub.com/astral-sh/ruff/pull/7461)
- Remove parentheses when rewriting assert calls to statements by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7464](https://togithub.com/astral-sh/ruff/pull/7464)
- Avoid flagging starred elements in C402 by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7466](https://togithub.com/astral-sh/ruff/pull/7466)
- Extend `bad-dunder-method-name` to permit `attrs` dunders by [@tjkuson](https://togithub.com/tjkuson) in [https://github.com/astral-sh/ruff/pull/7472](https://togithub.com/astral-sh/ruff/pull/7472)
- Avoid N802 violations for [@overload](https://togithub.com/overload) methods by [@JonathanPlasse](https://togithub.com/JonathanPlasse) in [https://github.com/astral-sh/ruff/pull/7498](https://togithub.com/astral-sh/ruff/pull/7498)
- Avoid flagging starred expressions in UP007 by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7505](https://togithub.com/astral-sh/ruff/pull/7505)
- Ensure that LOG007 only triggers on `.exception()` calls by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7524](https://togithub.com/astral-sh/ruff/pull/7524)
- Use strict sorted and union for NoQA mapping insertion by [@dhruvmanila](https://togithub.com/dhruvmanila) in [https://github.com/astral-sh/ruff/pull/7531](https://togithub.com/astral-sh/ruff/pull/7531)
- Avoid inserting imports directly after continuation by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7553](https://togithub.com/astral-sh/ruff/pull/7553)
- Add padding in `PERF102` fixes by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7554](https://togithub.com/astral-sh/ruff/pull/7554)
- Avoid invalid fix for parenthesized values in F601 by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7559](https://togithub.com/astral-sh/ruff/pull/7559)
- Treat `os.error` as an `OSError` alias by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7582](https://togithub.com/astral-sh/ruff/pull/7582)
- Extend `bad-dunder-method-name` to permit `__html__` by [@jaap3](https://togithub.com/jaap3) in [https://github.com/astral-sh/ruff/pull/7492](https://togithub.com/astral-sh/ruff/pull/7492)
- Fix stylist indentation with a formfeed by [@konstin](https://togithub.com/konstin) in [https://github.com/astral-sh/ruff/pull/7489](https://togithub.com/astral-sh/ruff/pull/7489)
#### New Contributors
- [@MicaelJarniac](https://togithub.com/MicaelJarniac) made their first contribution in [https://github.com/astral-sh/ruff/pull/5498](https://togithub.com/astral-sh/ruff/pull/5498)
- [@maheshsaripalli9](https://togithub.com/maheshsaripalli9) made their first contribution in [https://github.com/astral-sh/ruff/pull/7552](https://togithub.com/astral-sh/ruff/pull/7552)
- [@T-256](https://togithub.com/T-256) made their first contribution in [https://github.com/astral-sh/ruff/pull/7585](https://togithub.com/astral-sh/ruff/pull/7585)
**Full Changelog**: https://github.com/astral-sh/ruff/compare/v0.0.290...v0.0.291
### [`v0.0.290`](https://togithub.com/astral-sh/ruff/releases/tag/v0.0.290)
[Compare Source](https://togithub.com/astral-sh/ruff/compare/v0.0.289...v0.0.290)
#### What's Changed
##### Rules
- Update `deprecated-import` lists based on recent `typing-extensions` release by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7356](https://togithub.com/astral-sh/ruff/pull/7356)
- Add support for bounds, constraints, and explicit variance on generic type variables to `UP040` by [@nathanwhit](https://togithub.com/nathanwhit) in [https://github.com/astral-sh/ruff/pull/6749](https://togithub.com/astral-sh/ruff/pull/6749)
##### Settings
- Show rule codes in shell tab completion by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7375](https://togithub.com/astral-sh/ruff/pull/7375)
##### Bug Fixes
- Parenthesize single-generator arguments when adding reverse keyword by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7365](https://togithub.com/astral-sh/ruff/pull/7365)
- Invert reverse argument regardless of whether it's a boolean by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7372](https://togithub.com/astral-sh/ruff/pull/7372)
- Extend `C416` to catch tuple unpacking by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7363](https://togithub.com/astral-sh/ruff/pull/7363)
- Allow `NURSERY` rule selctor in JSON Schema by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7374](https://togithub.com/astral-sh/ruff/pull/7374)
- Avoid flagging single-quoted docstrings with continuations for multi-line rules by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7392](https://togithub.com/astral-sh/ruff/pull/7392)
- Treat whitespace-only line as blank for `D411` by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7351](https://togithub.com/astral-sh/ruff/pull/7351)
##### Preview
[*What's this section?*](https://beta.ruff.rs/docs/preview/)
- \[`flake8-logging`] New rule `undocumented-warn` (`LOG009`) by [@qdegraaf](https://togithub.com/qdegraaf) in [https://github.com/astral-sh/ruff/pull/7249](https://togithub.com/astral-sh/ruff/pull/7249)
- \[`flake8-logging`] New rule `direct-logger-instantiation` (`LOG001`) by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7397](https://togithub.com/astral-sh/ruff/pull/7397)
- \[`flake8-logging`] New plugin `flake8_logging` (`LOG`) by [@qdegraaf](https://togithub.com/qdegraaf) in [https://github.com/astral-sh/ruff/pull/7249](https://togithub.com/astral-sh/ruff/pull/7249)
- \[`perflint`] Add `manual-dict-comprehsion` (`PERF403`) by [@qdegraaf](https://togithub.com/qdegraaf) in [https://github.com/astral-sh/ruff/pull/6132](https://togithub.com/astral-sh/ruff/pull/6132)
- \[`pylint`] New rule `too-many-public-methods` (`PLR0904`) by [@jelly](https://togithub.com/jelly) in [https://github.com/astral-sh/ruff/pull/6179](https://togithub.com/astral-sh/ruff/pull/6179)
- \[`refurb`] New rule `no-slice-copy` (`FURB145`) by [@tjkuson](https://togithub.com/tjkuson) in [https://github.com/astral-sh/ruff/pull/7007](https://togithub.com/astral-sh/ruff/pull/7007)
- Add warnings for nursery and preview rule selection by [@zanieb](https://togithub.com/zanieb) in [https://github.com/astral-sh/ruff/pull/7210](https://togithub.com/astral-sh/ruff/pull/7210)
- Remove the `PREVIEW` rule selector by [@zanieb](https://togithub.com/zanieb) in [https://github.com/astral-sh/ruff/pull/7389](https://togithub.com/astral-sh/ruff/pull/7389)
- [`pre-commit` support](https://togithub.com/astral-sh/ruff-pre-commit#using-ruffs-formatter-unstable) for the [alpha formatter](https://togithub.com/astral-sh/ruff/discussions/7310) by [@zanieb](https://togithub.com/zanieb) in [https://github.com/astral-sh/ruff-pre-commit/pull/50](https://togithub.com/astral-sh/ruff-pre-commit/pull/50)
#### New Contributors
- [@nathanwhit](https://togithub.com/nathanwhit) made their first contribution in [https://github.com/astral-sh/ruff/pull/6749](https://togithub.com/astral-sh/ruff/pull/6749)
**Full Changelog**: https://github.com/astral-sh/ruff/compare/v0.0.289...v0.0.290
### [`v0.0.289`](https://togithub.com/astral-sh/ruff/releases/tag/v0.0.289)
[Compare Source](https://togithub.com/astral-sh/ruff/compare/v0.0.288...v0.0.289)
#### What's Changed
##### Bug Fixes
- Invert condition for < and <= in outdated version block by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7284](https://togithub.com/astral-sh/ruff/pull/7284)
- Ignore `@override` method when enforcing `bad-dunder-name` rule by [@brendonh8](https://togithub.com/brendonh8) in [https://github.com/astral-sh/ruff/pull/7224](https://togithub.com/astral-sh/ruff/pull/7224)
- Add `NotebookIndex` to the cache by [@dhruvmanila](https://togithub.com/dhruvmanila) in [https://github.com/astral-sh/ruff/pull/6863](https://togithub.com/astral-sh/ruff/pull/6863)
##### Preview
This release includes a new preview mode which can be used to opt-in to unstable rules and features.
- Update rule selection to respect preview mode by [@zanieb](https://togithub.com/zanieb) in [https://github.com/astral-sh/ruff/pull/7195](https://togithub.com/astral-sh/ruff/pull/7195)
- Display the `--preview` option in the CLI help menu by [@zanieb](https://togithub.com/zanieb) in [https://github.com/astral-sh/ruff/pull/7274](https://togithub.com/astral-sh/ruff/pull/7274)
See the [documentation](https://beta.ruff.rs/docs/preview/) and [versioning discussion](https://togithub.com/astral-sh/ruff/discussions/6998) for more details.
#### New Contributors
- [@brendonh8](https://togithub.com/brendonh8) made their first contribution in [https://github.com/astral-sh/ruff/pull/7224](https://togithub.com/astral-sh/ruff/pull/7224)
**Full Changelog**: https://github.com/astral-sh/ruff/compare/v0.0.288...v0.0.289
### [`v0.0.288`](https://togithub.com/astral-sh/ruff/releases/tag/v0.0.288)
[Compare Source](https://togithub.com/astral-sh/ruff/compare/v0.0.287...v0.0.288)
#### What's Changed
##### Breaking Changes
- Remove emoji identifier support by [@MichaReiser](https://togithub.com/MichaReiser) in [https://github.com/astral-sh/ruff/pull/7212](https://togithub.com/astral-sh/ruff/pull/7212)
- Location agnostic GitLab fingerprints by [@gregersn](https://togithub.com/gregersn) in [https://github.com/astral-sh/ruff/pull/7203](https://togithub.com/astral-sh/ruff/pull/7203)
##### Rules
- \[`ruff`]
- `RUF001`: Remove autofix for ambiguous unicode rule by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7168](https://togithub.com/astral-sh/ruff/pull/7168)
##### Settings
- \[`flake8-self`]
- `SLF001`: Add `extend-ignore-names` option by [@jaap3](https://togithub.com/jaap3) in [https://github.com/astral-sh/ruff/pull/7194](https://togithub.com/astral-sh/ruff/pull/7194)
##### Bug Fixes
- \[`flake8-bugbear`]
- `B006`: Add newline if fix is at end-of-file by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7090](https://togithub.com/astral-sh/ruff/pull/7090)
- `B006`: Fix function docstring followed by whitespace but no newline by [@zanieb](https://togithub.com/zanieb) in [https://github.com/astral-sh/ruff/pull/7160](https://togithub.com/astral-sh/ruff/pull/7160)
- `B009`: Parenthesize expressions when converting to attribute access by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7091](https://togithub.com/astral-sh/ruff/pull/7091)
- `B009`, `B010`: Fix `getattr` calls on `int` literals by [@density](https://togithub.com/density) in [https://github.com/astral-sh/ruff/pull/7057](https://togithub.com/astral-sh/ruff/pull/7057)
- `B013`: Supported starred exceptions in length-one tuple detection by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7080](https://togithub.com/
Configuration
📅 Schedule: Branch creation - "every weekday" (UTC), Automerge - At any time (no schedule defined).
🚦 Automerge: Enabled.
♻ 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.
[ ] If you want to rebase/retry this PR, check this box
This PR has been generated by Mend Renovate. View repository job log here.
This PR contains the following updates:
^0.0.285
->^0.0.285 \|\| ^0.1.0
Release Notes
astral-sh/ruff (ruff)
### [`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`) ([#8533](https://togithub.com/astral-sh/ruff/pull/8533)) - \[`flake8-trio`] Implement `TRIO105` ([#8490](https://togithub.com/astral-sh/ruff/pull/8490)) - \[`flake8-trio`] Implement `TRIO109` ([#8534](https://togithub.com/astral-sh/ruff/pull/8534)) - \[`flake8-trio`] Implement `TRIO110` ([#8537](https://togithub.com/astral-sh/ruff/pull/8537)) - \[`flake8-trio`] Implement `TRIO115` ([#8486](https://togithub.com/astral-sh/ruff/pull/8486)) - \[`refurb`] Implement `type-none-comparison` (`FURB169`) ([#8487](https://togithub.com/astral-sh/ruff/pull/8487)) - Flag all comparisons against builtin types in `E721` ([#8491](https://togithub.com/astral-sh/ruff/pull/8491)) - Make `SIM118` fix as safe when the expression is a known dictionary ([#8525](https://togithub.com/astral-sh/ruff/pull/8525)) ##### Formatter - Fix multiline lambda expression statement formatting ([#8466](https://togithub.com/astral-sh/ruff/pull/8466)) ##### CLI - Add hidden `--extension` to override inference of source type from file extension ([#8373](https://togithub.com/astral-sh/ruff/pull/8373)) ##### Configuration - Account for selector specificity when merging `extend_unsafe_fixes` and `override extend_safe_fixes` ([#8444](https://togithub.com/astral-sh/ruff/pull/8444)) - Add support for disabling cache with `RUFF_NO_CACHE` environment variable ([#8538](https://togithub.com/astral-sh/ruff/pull/8538)) ##### Bug fixes - \[`E721`] Flag comparisons to `memoryview` ([#8485](https://togithub.com/astral-sh/ruff/pull/8485)) - Allow collapsed-ellipsis bodies in other statements ([#8499](https://togithub.com/astral-sh/ruff/pull/8499)) - Avoid `D301` autofix for `u` prefixed strings ([#8495](https://togithub.com/astral-sh/ruff/pull/8495)) - Only flag `flake8-trio` rules when `trio` import is present ([#8550](https://togithub.com/astral-sh/ruff/pull/8550)) - Reject more syntactically invalid Python programs ([#8524](https://togithub.com/astral-sh/ruff/pull/8524)) - Avoid raising `TRIO115` violations for `trio.sleep(...)` calls with non-number values ([#8532](https://togithub.com/astral-sh/ruff/pull/8532)) - Fix `F841` false negative on assignment to multiple variables ([#8489](https://togithub.com/astral-sh/ruff/pull/8489)) ##### Documentation - Fix link to isort `known-first-party` ([#8562](https://togithub.com/astral-sh/ruff/pull/8562)) - Add notes on fix safety to a few rules ([#8500](https://togithub.com/astral-sh/ruff/pull/8500)) - Add missing toml config tabs ([#8512](https://togithub.com/astral-sh/ruff/pull/8512)) - Add instructions for configuration of Emacs ([#8488](https://togithub.com/astral-sh/ruff/pull/8488)) - Improve detail link contrast in dark mode ([#8548](https://togithub.com/astral-sh/ruff/pull/8548)) - Fix typo in example ([#8506](https://togithub.com/astral-sh/ruff/pull/8506)) - Added tabs for configuration files in the documentation ([#8480](https://togithub.com/astral-sh/ruff/pull/8480)) - Recommend `project.requires-python` over `target-version` ([#8513](https://togithub.com/astral-sh/ruff/pull/8513)) - Add singleton escape hatch to `B008` documentation ([#8501](https://togithub.com/astral-sh/ruff/pull/8501)) - Fix tab configuration docs ([#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`) ([#8439](https://togithub.com/astral-sh/ruff/pull/8439)) - \[`numpy`] Implement NumPy 2.0 migration rule (`NPY200`) ([#7702](https://togithub.com/astral-sh/ruff/pull/7702)) - \[`pylint`] Implement `bad-open-mode` (`W1501`) ([#8294](https://togithub.com/astral-sh/ruff/pull/8294)) - \[`pylint`] Implement `import-outside-toplevel` (`C0415`) rule ([#5180](https://togithub.com/astral-sh/ruff/pull/5180)) - \[`pylint`] Implement `useless-with-lock` (`W2101`) ([#8321](https://togithub.com/astral-sh/ruff/pull/8321)) - \[`pyupgrade`] Implement `timeout-error-alias` (`UP041`) ([#8476](https://togithub.com/astral-sh/ruff/pull/8476)) - \[`refurb`] Implement `isinstance-type-none` (`FURB168`) ([#8308](https://togithub.com/astral-sh/ruff/pull/8308)) - Detect confusable Unicode-to-Unicode units in `RUF001`, `RUF002`, and `RUF003` ([#4430](https://togithub.com/astral-sh/ruff/pull/4430)) - Add newline after module docstrings in preview style ([#8283](https://togithub.com/astral-sh/ruff/pull/8283)) ##### Formatter - Add a note on line-too-long to the formatter docs ([#8314](https://togithub.com/astral-sh/ruff/pull/8314)) - Preserve trailing statement semicolons when using `fmt: skip` ([#8273](https://togithub.com/astral-sh/ruff/pull/8273)) - Preserve trailing semicolons when using `fmt: off` ([#8275](https://togithub.com/astral-sh/ruff/pull/8275)) - Avoid duplicating linter-formatter compatibility warnings ([#8292](https://togithub.com/astral-sh/ruff/pull/8292)) - Avoid inserting a newline after function docstrings ([#8375](https://togithub.com/astral-sh/ruff/pull/8375)) - Insert newline between docstring and following own line comment ([#8216](https://togithub.com/astral-sh/ruff/pull/8216)) - Split tuples in return positions by comma first ([#8280](https://togithub.com/astral-sh/ruff/pull/8280)) - Avoid treating byte strings as docstrings ([#8350](https://togithub.com/astral-sh/ruff/pull/8350)) - Add `--line-length` option to `format` command ([#8363](https://togithub.com/astral-sh/ruff/pull/8363)) - Avoid parenthesizing unsplittable because of comments ([#8431](https://togithub.com/astral-sh/ruff/pull/8431)) ##### CLI - Add `--output-format` to `ruff rule` and `ruff linter` ([#8203](https://togithub.com/astral-sh/ruff/pull/8203)) ##### Bug fixes - Respect `--force-exclude` in `lint.exclude` and `format.exclude` ([#8393](https://togithub.com/astral-sh/ruff/pull/8393)) - Respect `--extend-per-file-ignores` on the CLI ([#8329](https://togithub.com/astral-sh/ruff/pull/8329)) - Extend `bad-dunder-method-name` to permit `__index__` ([#8300](https://togithub.com/astral-sh/ruff/pull/8300)) - Fix panic with 8 in octal escape ([#8356](https://togithub.com/astral-sh/ruff/pull/8356)) - Avoid raising `D300` when both triple quote styles are present ([#8462](https://togithub.com/astral-sh/ruff/pull/8462)) - Consider unterminated f-strings in `FStringRanges` ([#8154](https://togithub.com/astral-sh/ruff/pull/8154)) - Avoid including literal `shell=True` for truthy, non-`True` diagnostics ([#8359](https://togithub.com/astral-sh/ruff/pull/8359)) - Avoid triggering single-element test for starred expressions ([#8433](https://togithub.com/astral-sh/ruff/pull/8433)) - Detect and ignore Jupyter automagics ([#8398](https://togithub.com/astral-sh/ruff/pull/8398)) - Fix invalid E231 error with f-strings ([#8369](https://togithub.com/astral-sh/ruff/pull/8369)) - Avoid triggering `NamedTuple` rewrite with starred annotation ([#8434](https://togithub.com/astral-sh/ruff/pull/8434)) - Avoid un-setting bracket flag in logical lines ([#8380](https://togithub.com/astral-sh/ruff/pull/8380)) - Place 'r' prefix before 'f' for raw format strings ([#8464](https://togithub.com/astral-sh/ruff/pull/8464)) - Remove trailing periods from NumPy 2.0 code actions ([#8475](https://togithub.com/astral-sh/ruff/pull/8475)) - Fix bug where `PLE1307` was raised when formatting `%c` with characters ([#8407](https://togithub.com/astral-sh/ruff/pull/8407)) - Remove unicode flag from comparable ([#8440](https://togithub.com/astral-sh/ruff/pull/8440)) - Improve B015 message ([#8295](https://togithub.com/astral-sh/ruff/pull/8295)) - Use `fixedOverflowWidgets` for playground popover ([#8458](https://togithub.com/astral-sh/ruff/pull/8458)) - Mark `byte_bounds` as a non-backwards-compatible NumPy 2.0 change ([#8474](https://togithub.com/astral-sh/ruff/pull/8474)) ##### Internals - Add a dedicated cache directory per Ruff version ([#8333](https://togithub.com/astral-sh/ruff/pull/8333)) - Allow selective caching for `--fix` and `--diff` ([#8316](https://togithub.com/astral-sh/ruff/pull/8316)) - Improve performance of comment parsing ([#8193](https://togithub.com/astral-sh/ruff/pull/8193)) - Improve performance of string parsing ([#8227](https://togithub.com/astral-sh/ruff/pull/8227)) - Use a dedicated sort key for isort import sorting ([#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` ([#8189](https://togithub.com/astral-sh/ruff/pull/8189)) - Avoid sorting all paths in the format command ([#8181](https://togithub.com/astral-sh/ruff/pull/8181)) - Insert necessary blank line between class and leading comments ([#8224](https://togithub.com/astral-sh/ruff/pull/8224)) - Avoid introducing new parentheses in annotated assignments ([#8233](https://togithub.com/astral-sh/ruff/pull/8233)) - Refine the warnings about incompatible linter options ([#8196](https://togithub.com/astral-sh/ruff/pull/8196)) - Add test and basic implementation for formatter preview mode ([#8044](https://togithub.com/astral-sh/ruff/pull/8044)) - Refine warning about incompatible `isort` settings ([#8192](https://togithub.com/astral-sh/ruff/pull/8192)) - Only omit optional parentheses for starting or ending with parentheses ([#8238](https://togithub.com/astral-sh/ruff/pull/8238)) - Use source type to determine parser mode for formatting ([#8205](https://togithub.com/astral-sh/ruff/pull/8205)) - Don't warn about magic trailing comma when `isort.force-single-line` is true ([#8244](https://togithub.com/astral-sh/ruff/pull/8244)) - Use `SourceKind::diff` for formatter ([#8240](https://togithub.com/astral-sh/ruff/pull/8240)) - Fix `fmt:off` with trailing child comment ([#8234](https://togithub.com/astral-sh/ruff/pull/8234)) - Formatter parentheses support for `IpyEscapeCommand` ([#8207](https://togithub.com/astral-sh/ruff/pull/8207)) ##### Linter - \[`pylint`] Add buffer methods to `bad-dunder-method-name` (`PLW3201`) exclusions ([#8190](https://togithub.com/astral-sh/ruff/pull/8190)) - Match rule prefixes from `external` codes setting in `unused-noqa` ([#8177](https://togithub.com/astral-sh/ruff/pull/8177)) - Use `line-length` setting for isort in lieu of `pycodestyle.max-line-length` ([#8235](https://togithub.com/astral-sh/ruff/pull/8235)) - Update fix for `unnecessary-paren-on-raise-exception` to unsafe for unknown types ([#8231](https://togithub.com/astral-sh/ruff/pull/8231)) - Correct quick fix message for `W605` ([#8255](https://togithub.com/astral-sh/ruff/pull/8255)) ##### Documentation - Fix typo in max-doc-length documentation ([#8201](https://togithub.com/astral-sh/ruff/pull/8201)) - Improve documentation around linter-formatter conflicts ([#8257](https://togithub.com/astral-sh/ruff/pull/8257)) - Fix link to error suppression documentation in `unused-noqa` ([#8172](https://togithub.com/astral-sh/ruff/pull/8172)) - Add `external` option to `unused-noqa` documentation ([#8171](https://togithub.com/astral-sh/ruff/pull/8171)) - Add title attribute to icons ([#8060](https://togithub.com/astral-sh/ruff/pull/8060)) - Clarify unsafe case in RSE102 ([#8256](https://togithub.com/astral-sh/ruff/pull/8256)) - Fix skipping formatting examples ([#8210](https://togithub.com/astral-sh/ruff/pull/8210)) - docs: fix name of `magic-trailing-comma` option in README ([#8200](https://togithub.com/astral-sh/ruff/pull/8200)) - Add note about scope of rule changing in versioning policy ([#8169](https://togithub.com/astral-sh/ruff/pull/8169)) - Document: Fix default lint rules ([#8218](https://togithub.com/astral-sh/ruff/pull/8218)) - Fix a wrong setting in configuration.md ([#8186](https://togithub.com/astral-sh/ruff/pull/8186)) - Fix misspelled TOML headers in the tutorial ([#8209](https://togithub.com/astral-sh/ruff/pull/8209)) ### [`v0.1.2`](https://togithub.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#012) [Compare Source](https://togithub.com/astral-sh/ruff/compare/v0.1.1...v0.1.2) This release includes the Beta version of the Ruff formatter — an extremely fast, Black-compatible Python formatter. Try it today with `ruff format`! [Check out the blog post](https://astral.sh/blog/the-ruff-formatter) and [read the docs](https://docs.astral.sh/ruff/formatter/). ##### Preview features - \[`pylint`] Implement `non-ascii-module-import` (`C2403`) ([#8056](https://togithub.com/astral-sh/ruff/pull/8056)) - \[`pylint`] implement `non-ascii-name` (`C2401`) ([#8038](https://togithub.com/astral-sh/ruff/pull/8038)) - \[`pylint`] Implement unnecessary-lambda (W0108) ([#7953](https://togithub.com/astral-sh/ruff/pull/7953)) - \[`refurb`] Implement `read-whole-file` (`FURB101`) ([#7682](https://togithub.com/astral-sh/ruff/pull/7682)) - Add fix for `E223`, `E224`, and `E242` ([#8143](https://togithub.com/astral-sh/ruff/pull/8143)) - Add fix for `E225`, `E226`, `E227`, and `E228` ([#8136](https://togithub.com/astral-sh/ruff/pull/8136)) - Add fix for `E252` ([#8142](https://togithub.com/astral-sh/ruff/pull/8142)) - Add fix for `E261` ([#8114](https://togithub.com/astral-sh/ruff/pull/8114)) - Add fix for `E273` and `E274` ([#8144](https://togithub.com/astral-sh/ruff/pull/8144)) - Add fix for `E275` ([#8133](https://togithub.com/astral-sh/ruff/pull/8133)) - Update `SIM401` to catch ternary operations ([#7415](https://togithub.com/astral-sh/ruff/pull/7415)) - Update `E721` to allow `is` and `is` not for direct type comparisons ([#7905](https://togithub.com/astral-sh/ruff/pull/7905)) ##### Rule changes - Add `backports.strenum` to `deprecated-imports` ([#8113](https://togithub.com/astral-sh/ruff/pull/8113)) - Update `SIM112` to ignore `https_proxy`, `http_proxy`, and `no_proxy` ([#8140](https://togithub.com/astral-sh/ruff/pull/8140)) - Update fix for `literal-membership` (`PLR6201`) to be unsafe ([#8097](https://togithub.com/astral-sh/ruff/pull/8097)) - Update fix for `mutable-argument-defaults` (`B006`) to be unsafe ([#8108](https://togithub.com/astral-sh/ruff/pull/8108)) ##### Formatter - Change `line-ending` default to `auto` ([#8057](https://togithub.com/astral-sh/ruff/pull/8057)) - Respect parenthesized generators in `has_own_parentheses` ([#8100](https://togithub.com/astral-sh/ruff/pull/8100)) - Add caching to formatter ([#8089](https://togithub.com/astral-sh/ruff/pull/8089)) - Remove `--line-length` option from `format` command ([#8131](https://togithub.com/astral-sh/ruff/pull/8131)) - Add formatter to `line-length` documentation ([#8150](https://togithub.com/astral-sh/ruff/pull/8150)) - Warn about incompatible formatter options ([#8088](https://togithub.com/astral-sh/ruff/pull/8088)) - Fix range of unparenthesized tuple subject in match statement ([#8101](https://togithub.com/astral-sh/ruff/pull/8101)) - Remove experimental formatter warning ([#8148](https://togithub.com/astral-sh/ruff/pull/8148)) - Don't move type param opening parenthesis comment ([#8163](https://togithub.com/astral-sh/ruff/pull/8163)) - Update versions in format benchmark script ([#8110](https://togithub.com/astral-sh/ruff/pull/8110)) - Avoid loading files for cached format results ([#8134](https://togithub.com/astral-sh/ruff/pull/8134)) ##### CLI - Show the `ruff format` command in help menus ([#8167](https://togithub.com/astral-sh/ruff/pull/8167)) - Add `ruff version` command with long version display ([#8034](https://togithub.com/astral-sh/ruff/pull/8034)) ##### Configuration - New `pycodestyle.max-line-length` option ([#8039](https://togithub.com/astral-sh/ruff/pull/8039)) ##### Bug fixes - Detect `sys.version_info` slices in `outdated-version-block` ([#8112](https://togithub.com/astral-sh/ruff/pull/8112)) - Avoid if-else simplification for `TYPE_CHECKING` blocks ([#8072](https://togithub.com/astral-sh/ruff/pull/8072)) - Avoid false-positive print separator diagnostic with starred argument ([#8079](https://togithub.com/astral-sh/ruff/pull/8079)) ##### Documentation - Fix message for `too-many-arguments` lint ([#8092](https://togithub.com/astral-sh/ruff/pull/8092)) - Fix `extend-unsafe-fixes` and `extend-safe-fixes` example ([#8139](https://togithub.com/astral-sh/ruff/pull/8139)) - Add links to `flake8-import-conventions` options ([#8115](https://togithub.com/astral-sh/ruff/pull/8115)) - Rework the documentation to incorporate the Ruff formatter ([#7732](https://togithub.com/astral-sh/ruff/pull/7732)) - Fix `Options` JSON schema description ([#8081](https://togithub.com/astral-sh/ruff/pull/8081)) - Fix typo (`pytext` -> `pytest`) ([#8117](https://togithub.com/astral-sh/ruff/pull/8117)) - Improve `magic-value-comparison` example in docs ([#8111](https://togithub.com/astral-sh/ruff/pull/8111)) ### [`v0.1.1`](https://togithub.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#011) [Compare Source](https://togithub.com/astral-sh/ruff/compare/v0.1.0...v0.1.1) ##### Rule changes - Add unsafe fix for `escape-sequence-in-docstring` (`D301`) ([#7970](https://togithub.com/astral-sh/ruff/pull/7970)) ##### Configuration - Respect `#(deprecated)` attribute in configuration options ([#8035](https://togithub.com/astral-sh/ruff/pull/8035)) - Add `[format|lint].exclude` options ([#8000](https://togithub.com/astral-sh/ruff/pull/8000)) - Respect `tab-size` setting in formatter ([#8006](https://togithub.com/astral-sh/ruff/pull/8006)) - Add `lint.preview` ([#8002](https://togithub.com/astral-sh/ruff/pull/8002)) ##### Preview features - \[`pylint`] Implement `literal-membership` (`PLR6201`) ([#7973](https://togithub.com/astral-sh/ruff/pull/7973)) - \[`pylint`] Implement `too-many-boolean-expressions` (`PLR0916`) ([#7975](https://togithub.com/astral-sh/ruff/pull/7975)) - \[`pylint`] Implement `misplaced-bare-raise` (`E0704`) ([#7961](https://togithub.com/astral-sh/ruff/pull/7961)) - \[`pylint`] Implement `global-at-module-level` (`W0604`) ([#8058](https://togithub.com/astral-sh/ruff/pull/8058)) - \[`pylint`] Implement `unspecified-encoding` (`PLW1514`) ([#7939](https://togithub.com/astral-sh/ruff/pull/7939)) - Add fix for `triple-single-quotes` (`D300`) ([#7967](https://togithub.com/astral-sh/ruff/pull/7967)) ##### Formatter - New code style badge for `ruff format` ([#7878](https://togithub.com/astral-sh/ruff/pull/7878)) - Fix comments outside expression parentheses ([#7873](https://togithub.com/astral-sh/ruff/pull/7873)) - Add `--target-version` to `ruff format` ([#8055](https://togithub.com/astral-sh/ruff/pull/8055)) - Skip over parentheses when detecting `in` keyword ([#8054](https://togithub.com/astral-sh/ruff/pull/8054)) - Add `--diff` option to `ruff format` ([#7937](https://togithub.com/astral-sh/ruff/pull/7937)) - Insert newline after nested function or class statements ([#7946](https://togithub.com/astral-sh/ruff/pull/7946)) - Use `pass` over ellipsis in non-function/class contexts ([#8049](https://togithub.com/astral-sh/ruff/pull/8049)) ##### Bug fixes - Lazily evaluate all PEP 695 type alias values ([#8033](https://togithub.com/astral-sh/ruff/pull/8033)) - Avoid failed assertion when showing fixes from stdin ([#8029](https://togithub.com/astral-sh/ruff/pull/8029)) - Avoid flagging HTTP and HTTPS literals in urllib-open ([#8046](https://togithub.com/astral-sh/ruff/pull/8046)) - Avoid flagging `bad-dunder-method-name` for `_` ([#8015](https://togithub.com/astral-sh/ruff/pull/8015)) - Remove Python 2-only methods from `URLOpen` audit ([#8047](https://togithub.com/astral-sh/ruff/pull/8047)) - Use set bracket replacement for `iteration-over-set` to preserve whitespace and comments ([#8001](https://togithub.com/astral-sh/ruff/pull/8001)) ##### Documentation - Update tutorial to match revised Ruff defaults ([#8066](https://togithub.com/astral-sh/ruff/pull/8066)) - Update rule `B005` docs ([#8028](https://togithub.com/astral-sh/ruff/pull/8028)) - Update GitHub actions example in docs to use `--output-format` ([#8014](https://togithub.com/astral-sh/ruff/pull/8014)) - Document `lint.preview` and `format.preview` ([#8032](https://togithub.com/astral-sh/ruff/pull/8032)) - Clarify that new rules should be added to `RuleGroup::Preview`. ([#7989](https://togithub.com/astral-sh/ruff/pull/7989)) ### [`v0.1.0`](https://togithub.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#010) [Compare Source](https://togithub.com/astral-sh/ruff/compare/v0.0.292...v0.1.0) This is the first release which uses the `CHANGELOG` file. See [GitHub Releases](https://togithub.com/astral-sh/ruff/releases) for prior changelog entries. Read Ruff's new [versioning policy](https://docs.astral.sh/ruff/versioning/). ##### Breaking changes - Unsafe fixes are no longer displayed or applied without opt-in ([#7769](https://togithub.com/astral-sh/ruff/pull/7769)) - Drop formatting specific rules from the default set ([#7900](https://togithub.com/astral-sh/ruff/pull/7900)) - The deprecated `format` setting has been removed ([#7984](https://togithub.com/astral-sh/ruff/pull/7984)) - The `format` setting cannot be used to configure the output format, use `output-format` instead - The `RUFF_FORMAT` environment variable is ignored, use `RUFF_OUTPUT_FORMAT` instead - The `--format` option has been removed from `ruff check`, use `--output-format` instead ##### Rule changes - Extend `reimplemented-starmap` (`FURB140`) to catch calls with a single and starred argument ([#7768](https://togithub.com/astral-sh/ruff/pull/7768)) - Improve cases covered by `RUF015` ([#7848](https://togithub.com/astral-sh/ruff/pull/7848)) - Update `SIM15` to allow `open` followed by `close` ([#7916](https://togithub.com/astral-sh/ruff/pull/7916)) - Respect `msgspec.Struct` default-copy semantics in `RUF012` ([#7786](https://togithub.com/astral-sh/ruff/pull/7786)) - Add `sqlalchemy` methods to \`flake8-boolean-trap\`\` exclusion list ([#7874](https://togithub.com/astral-sh/ruff/pull/7874)) - Add fix for `PLR1714` ([#7910](https://togithub.com/astral-sh/ruff/pull/7910)) - Add fix for `PIE804` ([#7884](https://togithub.com/astral-sh/ruff/pull/7884)) - Add fix for `PLC0208` ([#7887](https://togithub.com/astral-sh/ruff/pull/7887)) - Add fix for `PYI055` ([#7886](https://togithub.com/astral-sh/ruff/pull/7886)) - Update `non-pep695-type-alias` to require `--unsafe-fixes` outside of stub files ([#7836](https://togithub.com/astral-sh/ruff/pull/7836)) - Improve fix message for `UP018` ([#7913](https://togithub.com/astral-sh/ruff/pull/7913)) - Update `PLW3201` to support `Enum` [sunder names](https://docs.python.org/3/library/enum.html#supported-sunder-names) ([#7987](https://togithub.com/astral-sh/ruff/pull/7987)) ##### Preview features - Only show warnings for empty preview selectors when enabling rules ([#7842](https://togithub.com/astral-sh/ruff/pull/7842)) - Add `unnecessary-key-check` to simplify `key in dct and dct[key]` to `dct.get(key)` ([#7895](https://togithub.com/astral-sh/ruff/pull/7895)) - Add `assignment-in-assert` to prevent walrus expressions in assert statements ([#7856](https://togithub.com/astral-sh/ruff/pull/7856)) - \[`refurb`] Add `single-item-membership-test` (`FURB171`) ([#7815](https://togithub.com/astral-sh/ruff/pull/7815)) - \[`pylint`] Add `and-or-ternary` (`R1706`) ([#7811](https://togithub.com/astral-sh/ruff/pull/7811)) *New rules are added in [preview](https://docs.astral.sh/ruff/preview/).* ##### Configuration - Add `unsafe-fixes` setting ([#7769](https://togithub.com/astral-sh/ruff/pull/7769)) - Add `extend-safe-fixes` and `extend-unsafe-fixes` for promoting and demoting fixes ([#7841](https://togithub.com/astral-sh/ruff/pull/7841)) ##### CLI - Added `--unsafe-fixes` option for opt-in to display and apply unsafe fixes ([#7769](https://togithub.com/astral-sh/ruff/pull/7769)) - Fix use of deprecated `--format` option in warning ([#7837](https://togithub.com/astral-sh/ruff/pull/7837)) - Show changed files when running under `--check` ([#7788](https://togithub.com/astral-sh/ruff/pull/7788)) - Write summary messages to stderr when fixing via stdin instead of omitting them ([#7838](https://togithub.com/astral-sh/ruff/pull/7838)) - Update fix summary message in `check --diff` to include unsafe fix hints ([#7790](https://togithub.com/astral-sh/ruff/pull/7790)) - Add notebook `cell` field to JSON output format ([#7664](https://togithub.com/astral-sh/ruff/pull/7664)) - Rename applicability levels to `Safe`, `Unsafe`, and `Display` ([#7843](https://togithub.com/astral-sh/ruff/pull/7843)) ##### Bug fixes - Fix bug where f-strings were allowed in match pattern literal ([#7857](https://togithub.com/astral-sh/ruff/pull/7857)) - Fix `SIM110` with a yield in the condition ([#7801](https://togithub.com/astral-sh/ruff/pull/7801)) - Preserve trailing comments in `C414` fixes ([#7775](https://togithub.com/astral-sh/ruff/pull/7775)) - Check sequence type before triggering `unnecessary-enumerate` `len` suggestion ([#7781](https://togithub.com/astral-sh/ruff/pull/7781)) - Use correct start location for class/function clause header ([#7802](https://togithub.com/astral-sh/ruff/pull/7802)) - Fix incorrect fixes for `SIM101` ([#7798](https://togithub.com/astral-sh/ruff/pull/7798)) - Format comment before parameter default correctly ([#7870](https://togithub.com/astral-sh/ruff/pull/7870)) - Fix `E251` false positive inside f-strings ([#7894](https://togithub.com/astral-sh/ruff/pull/7894)) - Allow bindings to be created and referenced within annotations ([#7885](https://togithub.com/astral-sh/ruff/pull/7885)) - Show per-cell diffs when analyzing notebooks over `stdin` ([#7789](https://togithub.com/astral-sh/ruff/pull/7789)) - Avoid curly brace escape in f-string format spec ([#7780](https://togithub.com/astral-sh/ruff/pull/7780)) - Fix lexing single-quoted f-string with multi-line format spec ([#7787](https://togithub.com/astral-sh/ruff/pull/7787)) - Consider nursery rules to be in-preview for `ruff rule` ([#7812](https://togithub.com/astral-sh/ruff/pull/7812)) - Report precise location for invalid conversion flag ([#7809](https://togithub.com/astral-sh/ruff/pull/7809)) - Visit pattern match guard as a boolean test ([#7911](https://togithub.com/astral-sh/ruff/pull/7911)) - Respect `--unfixable` in `ISC` rules ([#7917](https://togithub.com/astral-sh/ruff/pull/7917)) - Fix edge case with `PIE804` ([#7922](https://togithub.com/astral-sh/ruff/pull/7922)) - Show custom message in `PTH118` for `Path.joinpath` with starred arguments ([#7852](https://togithub.com/astral-sh/ruff/pull/7852)) - Fix false negative in `outdated-version-block` when using greater than comparisons ([#7920](https://togithub.com/astral-sh/ruff/pull/7920)) - Avoid converting f-strings within Django `gettext` calls ([#7898](https://togithub.com/astral-sh/ruff/pull/7898)) - Fix false positive in `PLR6301` ([#7933](https://togithub.com/astral-sh/ruff/pull/7933)) - Treat type aliases as typing-only expressions e.g. resolves false positive in `TCH004` ([#7968](https://togithub.com/astral-sh/ruff/pull/7968)) - Resolve `cache-dir` relative to project root ([#7962](https://togithub.com/astral-sh/ruff/pull/7962)) - Respect subscripted base classes in type-checking rules e.g. resolves false positive in `TCH003` ([#7954](https://togithub.com/astral-sh/ruff/pull/7954)) - Fix JSON schema limit for `line-length` ([#7883](https://togithub.com/astral-sh/ruff/pull/7883)) - Fix commented-out `coalesce` keyword ([#7876](https://togithub.com/astral-sh/ruff/pull/7876)) ##### Documentation - Document `reimplemented-starmap` performance effects ([#7846](https://togithub.com/astral-sh/ruff/pull/7846)) - Default to following the system dark/light mode ([#7888](https://togithub.com/astral-sh/ruff/pull/7888)) - Add documentation for fixes ([#7901](https://togithub.com/astral-sh/ruff/pull/7901)) - Fix typo in docs of `PLR6301` ([#7831](https://togithub.com/astral-sh/ruff/pull/7831)) - Update `UP038` docs to note that it results in slower code ([#7872](https://togithub.com/astral-sh/ruff/pull/7872)) - crlf -> cr-lf ([#7766](https://togithub.com/astral-sh/ruff/pull/7766)) - Add an example of an unsafe fix ([#7924](https://togithub.com/astral-sh/ruff/pull/7924)) - Fix documented examples for `unnecessary-subscript-reversal` ([#7774](https://togithub.com/astral-sh/ruff/pull/7774)) - Correct error in tuple example in ruff formatter docs ([#7822](https://togithub.com/astral-sh/ruff/pull/7822)) - Add versioning policy to documentation ([#7923](https://togithub.com/astral-sh/ruff/pull/7923)) - Fix invalid code in `FURB177` example ([#7832](https://togithub.com/astral-sh/ruff/pull/7832)) ##### Formatter - Less scary `ruff format` message ([#7867](https://togithub.com/astral-sh/ruff/pull/7867)) - Remove spaces from import statements ([#7859](https://togithub.com/astral-sh/ruff/pull/7859)) - Formatter quoting for f-strings with triple quotes ([#7826](https://togithub.com/astral-sh/ruff/pull/7826)) - Update `ruff_python_formatter` generate.py comment ([#7850](https://togithub.com/astral-sh/ruff/pull/7850)) - Document one-call chaining deviation ([#7767](https://togithub.com/astral-sh/ruff/pull/7767)) - Allow f-string modifications in line-shrinking cases ([#7818](https://togithub.com/astral-sh/ruff/pull/7818)) - Add trailing comment deviation to README ([#7827](https://togithub.com/astral-sh/ruff/pull/7827)) - Add trailing zero between dot and exponential ([#7956](https://togithub.com/astral-sh/ruff/pull/7956)) - Force parentheses for power operations in unary expressions ([#7955](https://togithub.com/astral-sh/ruff/pull/7955)) ##### Playground - Fix playground `Quick Fix` action ([#7824](https://togithub.com/astral-sh/ruff/pull/7824)) ### [`v0.0.292`](https://togithub.com/astral-sh/ruff/releases/tag/v0.0.292) [Compare Source](https://togithub.com/astral-sh/ruff/compare/v0.0.291...v0.0.292) #### What's Changed ##### Highlights **This release includes full support for Python 3.12 ([out now!](https://www.python.org/downloads/release/python-3120/)), including the new type parameter ([PEP 695](https://peps.python.org/pep-0695/)) and f-string syntaxes ([PEP 701](https://peps.python.org/pep-0701/)).** PEP 701 lifts many of the restrictions on f-strings that existed in the past, allowing for arbitrarily nested f-strings, consistent quote style within f-strings, and more, all of which are now supported by Ruff (thanks to [@dhruvmanila](https://togithub.com/dhruvmanila) in [https://github.com/astral-sh/ruff/pull/7376](https://togithub.com/astral-sh/ruff/pull/7376)). ##### Breaking Changes - In the formatter, `format.quote-style` no longer affects triple-quoted strings, to align with common conventions as well as the guidance from PEP 8 and PEP 257 (see: [https://github.com/astral-sh/ruff/pull/7680](https://togithub.com/astral-sh/ruff/pull/7680)). - `line-too-long` (`E501`) now ignores trailing pragma comments (like `# type: ignore` and `# noqa`) when computing line length (see: [https://github.com/astral-sh/ruff/pull/7692](https://togithub.com/astral-sh/ruff/pull/7692)). This is similar to flake8-bugbear's methodology for detecting overlong lines, and ensures that adding pragmas like `# noqa` does not introduce further lint errors. ##### Rules - \[`refurb`] Implement `print-empty-string` (`FURB105`) by [@tjkuson](https://togithub.com/tjkuson) in [https://github.com/astral-sh/ruff/pull/7617](https://togithub.com/astral-sh/ruff/pull/7617) - \[`flake8-bandit`] Implement `weak-cryptographic-key` (`S505`) by [@mkniewallner](https://togithub.com/mkniewallner) in [https://github.com/astral-sh/ruff/pull/7703](https://togithub.com/astral-sh/ruff/pull/7703) - \[`refurb`] Implement `implicit-cwd` (`FURB177`) by [@danparizher](https://togithub.com/danparizher) in [https://github.com/astral-sh/ruff/pull/7704](https://togithub.com/astral-sh/ruff/pull/7704) - `unnecessary-pass` (`PIE790`) now flags all unnecessary `pass` statements; previously, the rule only flagged `pass` statements that followed a docstring in a two-statement body (see: [https://github.com/astral-sh/ruff/pull/7697](https://togithub.com/astral-sh/ruff/pull/7697)). ##### Settings - Add `lint` section to Ruff configuration by [@MichaReiser](https://togithub.com/MichaReiser) in [https://github.com/astral-sh/ruff/pull/7549](https://togithub.com/astral-sh/ruff/pull/7549) - Add `explicit-preview-rules` to toggle explicit selection of preview rules by [@zanieb](https://togithub.com/zanieb) in [https://github.com/astral-sh/ruff/pull/7390](https://togithub.com/astral-sh/ruff/pull/7390) - Decrease PEP 593 error to a debug warning by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7745](https://togithub.com/astral-sh/ruff/pull/7745) - Write full Jupyter notebook to `stdout` by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7748](https://togithub.com/astral-sh/ruff/pull/7748) - Extend `unnecessary-pass` (`PIE790`) to trigger on all unnecessary `pass` statements by [@tjkuson](https://togithub.com/tjkuson) in [https://github.com/astral-sh/ruff/pull/7697](https://togithub.com/astral-sh/ruff/pull/7697) ##### Bug Fixes - Ignore blank lines between comments when counting newlines-after-imports by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7607](https://togithub.com/astral-sh/ruff/pull/7607) - Avoid reordering mixed-indent-level comments after branches by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7609](https://togithub.com/astral-sh/ruff/pull/7609) - Avoid flagging B009 and B010 on starred expressions by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7621](https://togithub.com/astral-sh/ruff/pull/7621) - Use deletion for D215 full-line removals by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7625](https://togithub.com/astral-sh/ruff/pull/7625) - Avoid searching for bracketed comments in unparenthesized generators by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7627](https://togithub.com/astral-sh/ruff/pull/7627) - Update return type for `PT022` autofix by [@dhruvmanila](https://togithub.com/dhruvmanila) in [https://github.com/astral-sh/ruff/pull/7613](https://togithub.com/astral-sh/ruff/pull/7613) - Flag FURB105 with starred kwargs by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7630](https://togithub.com/astral-sh/ruff/pull/7630) - Don't suggest replacing `builtin.open()` with `Path.open()` if the latter doesn't support all options by [@konstin](https://togithub.com/konstin) in [https://github.com/astral-sh/ruff/pull/7637](https://togithub.com/astral-sh/ruff/pull/7637) - Use 1-based cell indices consistently for Notebooks by [@dhruvmanila](https://togithub.com/dhruvmanila) in [https://github.com/astral-sh/ruff/pull/7662](https://togithub.com/astral-sh/ruff/pull/7662) - Add `Expr::Name` checks to rules which use `is_logger_candidate` by [@qdegraaf](https://togithub.com/qdegraaf) in [https://github.com/astral-sh/ruff/pull/7521](https://togithub.com/astral-sh/ruff/pull/7521) - Ensure that B006 autofixes are inserted after imports by [@Hoxbro](https://togithub.com/Hoxbro) in [https://github.com/astral-sh/ruff/pull/7629](https://togithub.com/astral-sh/ruff/pull/7629) - Allow named expressions in `__all__` assignments by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7673](https://togithub.com/astral-sh/ruff/pull/7673) - Include radix base prefix in large number representation by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7700](https://togithub.com/astral-sh/ruff/pull/7700) - Parenthesize multi-line attributes in B009 by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7701](https://togithub.com/astral-sh/ruff/pull/7701) - Insert necessary padding in B014 fixes by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7699](https://togithub.com/astral-sh/ruff/pull/7699) - fix(rules): improve S507 detection by [@mkniewallner](https://togithub.com/mkniewallner) in [https://github.com/astral-sh/ruff/pull/7661](https://togithub.com/astral-sh/ruff/pull/7661) - Ignore TODO tags in `commented-out-code` by [@tjkuson](https://togithub.com/tjkuson) in [https://github.com/astral-sh/ruff/pull/7523](https://togithub.com/astral-sh/ruff/pull/7523) - Track fix isolation in `unnecessary-pass` by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7715](https://togithub.com/astral-sh/ruff/pull/7715) - Use fixed source code for parser context by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7717](https://togithub.com/astral-sh/ruff/pull/7717) - Preserve parentheses in `quadratic-list-summation` by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7719](https://togithub.com/astral-sh/ruff/pull/7719) - Compute `NotebookIndex` for `Diagnostics` on stdin by [@dhruvmanila](https://togithub.com/dhruvmanila) in [https://github.com/astral-sh/ruff/pull/7663](https://togithub.com/astral-sh/ruff/pull/7663) - Perform insertions before replacements by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7739](https://togithub.com/astral-sh/ruff/pull/7739) - Skip all bracketed expressions when locating comparison ops by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7740](https://togithub.com/astral-sh/ruff/pull/7740) - Fix PLE251 rules with f-string escaping by [@konstin](https://togithub.com/konstin) in [https://github.com/astral-sh/ruff/pull/7741](https://togithub.com/astral-sh/ruff/pull/7741) - Skip BOM when inserting start-of-file imports by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7622](https://togithub.com/astral-sh/ruff/pull/7622) - Emit `LexError` for dedent to incorrect level by [@MichaReiser](https://togithub.com/MichaReiser) in [https://github.com/astral-sh/ruff/pull/7638](https://togithub.com/astral-sh/ruff/pull/7638) - Expand `DeprecatedLogWarn` to check for `Expr::Atrribute` calls by [@qdegraaf](https://togithub.com/qdegraaf) in [https://github.com/astral-sh/ruff/pull/7677](https://togithub.com/astral-sh/ruff/pull/7677) ##### Other Changes - Add support for PEP 701 by [@dhruvmanila](https://togithub.com/dhruvmanila) in [https://github.com/astral-sh/ruff/pull/7376](https://togithub.com/astral-sh/ruff/pull/7376) - Improve performance of `commented-out-code` (~50-80%) by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7706](https://togithub.com/astral-sh/ruff/pull/7706) #### New Contributors - [@bluthej](https://togithub.com/bluthej) made their first contribution in [https://github.com/astral-sh/ruff/pull/7665](https://togithub.com/astral-sh/ruff/pull/7665) - [@Hoxbro](https://togithub.com/Hoxbro) made their first contribution in [https://github.com/astral-sh/ruff/pull/7629](https://togithub.com/astral-sh/ruff/pull/7629) - [@danparizher](https://togithub.com/danparizher) made their first contribution in [https://github.com/astral-sh/ruff/pull/7704](https://togithub.com/astral-sh/ruff/pull/7704) - [@aspizu](https://togithub.com/aspizu) made their first contribution in [https://github.com/astral-sh/ruff/pull/7750](https://togithub.com/astral-sh/ruff/pull/7750) **Full Changelog**: https://github.com/astral-sh/ruff/compare/v0.0.291...v0.0.292 ### [`v0.0.291`](https://togithub.com/astral-sh/ruff/releases/tag/v0.0.291) [Compare Source](https://togithub.com/astral-sh/ruff/compare/v0.0.290...v0.0.291) #### What's Changed ##### Deprecations **The `format` command-line argument and configuration option has been renamed to `output-format`.** While Ruff will continue to respect `format` when passed as a command-line argument or configuration option, this backwards-compatible support will be dropped in a future release. See: [https://github.com/astral-sh/ruff/pull/7514](https://togithub.com/astral-sh/ruff/pull/7514). ##### Rules - \[`flake8-bandit`] Implement `S201`: `flask-debug-true` by [@mkniewallner](https://togithub.com/mkniewallner) in [https://github.com/astral-sh/ruff/pull/7503](https://togithub.com/astral-sh/ruff/pull/7503) - \[`flake8-bandit`] Implement `S507`: `ssh_no_host_key_verification` by [@mkniewallner](https://togithub.com/mkniewallner) in [https://github.com/astral-sh/ruff/pull/7528](https://togithub.com/astral-sh/ruff/pull/7528) - \[`flake8-logging`] Implement `LOG002`: `invalid-get-logger-argument` by [@dhruvmanila](https://togithub.com/dhruvmanila) in [https://github.com/astral-sh/ruff/pull/7399](https://togithub.com/astral-sh/ruff/pull/7399) - \[`flake8-logging`] Implement `LOG007`: `exception-without-exc-info` by [@qdegraaf](https://togithub.com/qdegraaf) in [https://github.com/astral-sh/ruff/pull/7410](https://togithub.com/astral-sh/ruff/pull/7410) - \[`refurb`] Implement `FURB140`: `reimplemented-starmap` by [@SavchenkoValeriy](https://togithub.com/SavchenkoValeriy) in [https://github.com/astral-sh/ruff/pull/7253](https://togithub.com/astral-sh/ruff/pull/7253) - \[`refurb`] Implement `FURB148`: `unnecessary-enumerate` by [@tjkuson](https://togithub.com/tjkuson) in [https://github.com/astral-sh/ruff/pull/7454](https://togithub.com/astral-sh/ruff/pull/7454) - \[`ruff`] Detect `asyncio.get_running_loop` calls in RUF006 by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7562](https://togithub.com/astral-sh/ruff/pull/7562) ##### Settings - Show `--no-X` variants in CLI help by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7504](https://togithub.com/astral-sh/ruff/pull/7504) - Rename `format` option to `output-format` by [@MichaReiser](https://togithub.com/MichaReiser) in [https://github.com/astral-sh/ruff/pull/7514](https://togithub.com/astral-sh/ruff/pull/7514) - Enable tab completion for `ruff rule` by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7560](https://togithub.com/astral-sh/ruff/pull/7560) ##### Bug Fixes - Add padding to prevent some autofix errors by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7461](https://togithub.com/astral-sh/ruff/pull/7461) - Remove parentheses when rewriting assert calls to statements by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7464](https://togithub.com/astral-sh/ruff/pull/7464) - Avoid flagging starred elements in C402 by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7466](https://togithub.com/astral-sh/ruff/pull/7466) - Extend `bad-dunder-method-name` to permit `attrs` dunders by [@tjkuson](https://togithub.com/tjkuson) in [https://github.com/astral-sh/ruff/pull/7472](https://togithub.com/astral-sh/ruff/pull/7472) - Avoid N802 violations for [@overload](https://togithub.com/overload) methods by [@JonathanPlasse](https://togithub.com/JonathanPlasse) in [https://github.com/astral-sh/ruff/pull/7498](https://togithub.com/astral-sh/ruff/pull/7498) - Avoid flagging starred expressions in UP007 by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7505](https://togithub.com/astral-sh/ruff/pull/7505) - Ensure that LOG007 only triggers on `.exception()` calls by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7524](https://togithub.com/astral-sh/ruff/pull/7524) - Use strict sorted and union for NoQA mapping insertion by [@dhruvmanila](https://togithub.com/dhruvmanila) in [https://github.com/astral-sh/ruff/pull/7531](https://togithub.com/astral-sh/ruff/pull/7531) - Avoid inserting imports directly after continuation by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7553](https://togithub.com/astral-sh/ruff/pull/7553) - Add padding in `PERF102` fixes by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7554](https://togithub.com/astral-sh/ruff/pull/7554) - Avoid invalid fix for parenthesized values in F601 by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7559](https://togithub.com/astral-sh/ruff/pull/7559) - Treat `os.error` as an `OSError` alias by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7582](https://togithub.com/astral-sh/ruff/pull/7582) - Extend `bad-dunder-method-name` to permit `__html__` by [@jaap3](https://togithub.com/jaap3) in [https://github.com/astral-sh/ruff/pull/7492](https://togithub.com/astral-sh/ruff/pull/7492) - Fix stylist indentation with a formfeed by [@konstin](https://togithub.com/konstin) in [https://github.com/astral-sh/ruff/pull/7489](https://togithub.com/astral-sh/ruff/pull/7489) #### New Contributors - [@MicaelJarniac](https://togithub.com/MicaelJarniac) made their first contribution in [https://github.com/astral-sh/ruff/pull/5498](https://togithub.com/astral-sh/ruff/pull/5498) - [@maheshsaripalli9](https://togithub.com/maheshsaripalli9) made their first contribution in [https://github.com/astral-sh/ruff/pull/7552](https://togithub.com/astral-sh/ruff/pull/7552) - [@T-256](https://togithub.com/T-256) made their first contribution in [https://github.com/astral-sh/ruff/pull/7585](https://togithub.com/astral-sh/ruff/pull/7585) **Full Changelog**: https://github.com/astral-sh/ruff/compare/v0.0.290...v0.0.291 ### [`v0.0.290`](https://togithub.com/astral-sh/ruff/releases/tag/v0.0.290) [Compare Source](https://togithub.com/astral-sh/ruff/compare/v0.0.289...v0.0.290) #### What's Changed ##### Rules - Update `deprecated-import` lists based on recent `typing-extensions` release by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7356](https://togithub.com/astral-sh/ruff/pull/7356) - Add support for bounds, constraints, and explicit variance on generic type variables to `UP040` by [@nathanwhit](https://togithub.com/nathanwhit) in [https://github.com/astral-sh/ruff/pull/6749](https://togithub.com/astral-sh/ruff/pull/6749) ##### Settings - Show rule codes in shell tab completion by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7375](https://togithub.com/astral-sh/ruff/pull/7375) ##### Bug Fixes - Parenthesize single-generator arguments when adding reverse keyword by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7365](https://togithub.com/astral-sh/ruff/pull/7365) - Invert reverse argument regardless of whether it's a boolean by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7372](https://togithub.com/astral-sh/ruff/pull/7372) - Extend `C416` to catch tuple unpacking by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7363](https://togithub.com/astral-sh/ruff/pull/7363) - Allow `NURSERY` rule selctor in JSON Schema by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7374](https://togithub.com/astral-sh/ruff/pull/7374) - Avoid flagging single-quoted docstrings with continuations for multi-line rules by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7392](https://togithub.com/astral-sh/ruff/pull/7392) - Treat whitespace-only line as blank for `D411` by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7351](https://togithub.com/astral-sh/ruff/pull/7351) ##### Preview [*What's this section?*](https://beta.ruff.rs/docs/preview/) - \[`flake8-logging`] New rule `undocumented-warn` (`LOG009`) by [@qdegraaf](https://togithub.com/qdegraaf) in [https://github.com/astral-sh/ruff/pull/7249](https://togithub.com/astral-sh/ruff/pull/7249) - \[`flake8-logging`] New rule `direct-logger-instantiation` (`LOG001`) by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7397](https://togithub.com/astral-sh/ruff/pull/7397) - \[`flake8-logging`] New plugin `flake8_logging` (`LOG`) by [@qdegraaf](https://togithub.com/qdegraaf) in [https://github.com/astral-sh/ruff/pull/7249](https://togithub.com/astral-sh/ruff/pull/7249) - \[`perflint`] Add `manual-dict-comprehsion` (`PERF403`) by [@qdegraaf](https://togithub.com/qdegraaf) in [https://github.com/astral-sh/ruff/pull/6132](https://togithub.com/astral-sh/ruff/pull/6132) - \[`pylint`] New rule `too-many-public-methods` (`PLR0904`) by [@jelly](https://togithub.com/jelly) in [https://github.com/astral-sh/ruff/pull/6179](https://togithub.com/astral-sh/ruff/pull/6179) - \[`refurb`] New rule `no-slice-copy` (`FURB145`) by [@tjkuson](https://togithub.com/tjkuson) in [https://github.com/astral-sh/ruff/pull/7007](https://togithub.com/astral-sh/ruff/pull/7007) - Add warnings for nursery and preview rule selection by [@zanieb](https://togithub.com/zanieb) in [https://github.com/astral-sh/ruff/pull/7210](https://togithub.com/astral-sh/ruff/pull/7210) - Remove the `PREVIEW` rule selector by [@zanieb](https://togithub.com/zanieb) in [https://github.com/astral-sh/ruff/pull/7389](https://togithub.com/astral-sh/ruff/pull/7389) - [`pre-commit` support](https://togithub.com/astral-sh/ruff-pre-commit#using-ruffs-formatter-unstable) for the [alpha formatter](https://togithub.com/astral-sh/ruff/discussions/7310) by [@zanieb](https://togithub.com/zanieb) in [https://github.com/astral-sh/ruff-pre-commit/pull/50](https://togithub.com/astral-sh/ruff-pre-commit/pull/50) #### New Contributors - [@nathanwhit](https://togithub.com/nathanwhit) made their first contribution in [https://github.com/astral-sh/ruff/pull/6749](https://togithub.com/astral-sh/ruff/pull/6749) **Full Changelog**: https://github.com/astral-sh/ruff/compare/v0.0.289...v0.0.290 ### [`v0.0.289`](https://togithub.com/astral-sh/ruff/releases/tag/v0.0.289) [Compare Source](https://togithub.com/astral-sh/ruff/compare/v0.0.288...v0.0.289) #### What's Changed ##### Bug Fixes - Invert condition for < and <= in outdated version block by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7284](https://togithub.com/astral-sh/ruff/pull/7284) - Ignore `@override` method when enforcing `bad-dunder-name` rule by [@brendonh8](https://togithub.com/brendonh8) in [https://github.com/astral-sh/ruff/pull/7224](https://togithub.com/astral-sh/ruff/pull/7224) - Add `NotebookIndex` to the cache by [@dhruvmanila](https://togithub.com/dhruvmanila) in [https://github.com/astral-sh/ruff/pull/6863](https://togithub.com/astral-sh/ruff/pull/6863) ##### Preview This release includes a new preview mode which can be used to opt-in to unstable rules and features. - Update rule selection to respect preview mode by [@zanieb](https://togithub.com/zanieb) in [https://github.com/astral-sh/ruff/pull/7195](https://togithub.com/astral-sh/ruff/pull/7195) - Display the `--preview` option in the CLI help menu by [@zanieb](https://togithub.com/zanieb) in [https://github.com/astral-sh/ruff/pull/7274](https://togithub.com/astral-sh/ruff/pull/7274) See the [documentation](https://beta.ruff.rs/docs/preview/) and [versioning discussion](https://togithub.com/astral-sh/ruff/discussions/6998) for more details. #### New Contributors - [@brendonh8](https://togithub.com/brendonh8) made their first contribution in [https://github.com/astral-sh/ruff/pull/7224](https://togithub.com/astral-sh/ruff/pull/7224) **Full Changelog**: https://github.com/astral-sh/ruff/compare/v0.0.288...v0.0.289 ### [`v0.0.288`](https://togithub.com/astral-sh/ruff/releases/tag/v0.0.288) [Compare Source](https://togithub.com/astral-sh/ruff/compare/v0.0.287...v0.0.288) #### What's Changed ##### Breaking Changes - Remove emoji identifier support by [@MichaReiser](https://togithub.com/MichaReiser) in [https://github.com/astral-sh/ruff/pull/7212](https://togithub.com/astral-sh/ruff/pull/7212) - Location agnostic GitLab fingerprints by [@gregersn](https://togithub.com/gregersn) in [https://github.com/astral-sh/ruff/pull/7203](https://togithub.com/astral-sh/ruff/pull/7203) ##### Rules - \[`ruff`] - `RUF001`: Remove autofix for ambiguous unicode rule by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7168](https://togithub.com/astral-sh/ruff/pull/7168) ##### Settings - \[`flake8-self`] - `SLF001`: Add `extend-ignore-names` option by [@jaap3](https://togithub.com/jaap3) in [https://github.com/astral-sh/ruff/pull/7194](https://togithub.com/astral-sh/ruff/pull/7194) ##### Bug Fixes - \[`flake8-bugbear`] - `B006`: Add newline if fix is at end-of-file by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7090](https://togithub.com/astral-sh/ruff/pull/7090) - `B006`: Fix function docstring followed by whitespace but no newline by [@zanieb](https://togithub.com/zanieb) in [https://github.com/astral-sh/ruff/pull/7160](https://togithub.com/astral-sh/ruff/pull/7160) - `B009`: Parenthesize expressions when converting to attribute access by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7091](https://togithub.com/astral-sh/ruff/pull/7091) - `B009`, `B010`: Fix `getattr` calls on `int` literals by [@density](https://togithub.com/density) in [https://github.com/astral-sh/ruff/pull/7057](https://togithub.com/astral-sh/ruff/pull/7057) - `B013`: Supported starred exceptions in length-one tuple detection by [@charliermarsh](https://togithub.com/charliermarsh) in [https://github.com/astral-sh/ruff/pull/7080](https://togithub.com/Configuration
📅 Schedule: Branch creation - "every weekday" (UTC), Automerge - At any time (no schedule defined).
🚦 Automerge: Enabled.
♻ 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.
This PR has been generated by Mend Renovate. View repository job log here.