Skip to content

Releases: astral-sh/ruff

v0.1.1

19 Oct 21:24
22cf451
Compare
Choose a tag to compare

Changes

Rule changes

  • Add unsafe fix for escape-sequence-in-docstring (D301) (#7970)

Configuration

  • Respect #(deprecated) attribute in configuration options (#8035)
  • Add [format|lint].exclude options (#8000)
  • Respect tab-size setting in formatter (#8006)
  • Add lint.preview (#8002)

Preview features

  • [pylint] Implement literal-membership (PLR6201) (#7973)
  • [pylint] Implement too-many-boolean-expressions (PLR0916) (#7975)
  • [pylint] Implement misplaced-bare-raise (E0704) (#7961)
  • [pylint] Implement global-at-module-level (W0604) (#8058)
  • [pylint] Implement unspecified-encoding (PLW1514) (#7939)
  • Add fix for triple-single-quotes (D300) (#7967)

Formatter

  • New code style badge for ruff format (#7878)
  • Fix comments outside expression parentheses (#7873)
  • Add --target-version to ruff format (#8055)
  • Skip over parentheses when detecting in keyword (#8054)
  • Add --diff option to ruff format (#7937)
  • Insert newline after nested function or class statements (#7946)
  • Use pass over ellipsis in non-function/class contexts (#8049)

Bug fixes

  • Lazily evaluate all PEP 695 type alias values (#8033)
  • Avoid failed assertion when showing fixes from stdin (#8029)
  • Avoid flagging HTTP and HTTPS literals in urllib-open (#8046)
  • Avoid flagging bad-dunder-method-name for _ (#8015)
  • Remove Python 2-only methods from URLOpen audit (#8047)
  • Use set bracket replacement for iteration-over-set to preserve whitespace and comments (#8001)

Documentation

  • Update tutorial to match revised Ruff defaults (#8066)
  • Update rule B005 docs (#8028)
  • Update GitHub actions example in docs to use --output-format (#8014)
  • Document lint.preview and format.preview (#8032)
  • Clarify that new rules should be added to RuleGroup::Preview. (#7989)

Contributors

v0.1.0

16 Oct 19:51
172ac2c
Compare
Choose a tag to compare

Read the blog post about this release.

Read Ruff's new versioning policy.

This is the first release which uses the CHANGELOG file — change entries will be listed there and in each GitHub Release.

Changes

Breaking changes

  • Unsafe fixes are no longer displayed or applied without opt-in (#7769)
  • Drop formatting specific rules from the default set (#7900)
  • The deprecated format setting has been removed (#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)
  • Improve cases covered by RUF015 (#7848)
  • Update SIM15 to allow open followed by close (#7916)
  • Respect msgspec.Struct default-copy semantics in RUF012 (#7786)
  • Add sqlalchemy methods to `flake8-boolean-trap`` exclusion list (#7874)
  • Add fix for PLR1714 (#7910)
  • Add fix for PIE804 (#7884)
  • Add fix for PLC0208 (#7887)
  • Add fix for PYI055 (#7886)
  • Update non-pep695-type-alias to require --unsafe-fixes outside of stub files (#7836)
  • Improve fix message for UP018 (#7913)
  • Update PLW3201 to support Enum sunder names (#7987)

Preview features

  • Only show warnings for empty preview selectors when enabling rules (#7842)
  • Add unnecessary-key-check to simplify key in dct and dct[key] to dct.get(key) (#7895)
  • Add assignment-in-assert to prevent walrus expressions in assert statements (#7856)
  • [refurb] Add single-item-membership-test (FURB171) (#7815)
  • [pylint] Add and-or-ternary (R1706) (#7811)

New rules are added in preview.

Configuration

  • Add unsafe-fixes setting (#7769)
  • Add extend-safe-fixes and extend-unsafe-fixes for promoting and demoting fixes (#7841)

CLI

  • Added --unsafe-fixes option for opt-in to display and apply unsafe fixes (#7769)
  • Fix use of deprecated --format option in warning (#7837)
  • Show changed files when running under --check (#7788)
  • Write summary messages to stderr when fixing via stdin instead of omitting them (#7838)
  • Update fix summary message in check --diff to include unsafe fix hints (#7790)
  • Add notebook cell field to JSON output format (#7664)
  • Rename applicability levels to Safe, Unsafe, and Display (#7843)

Bug fixes

  • Fix bug where f-strings were allowed in match pattern literal (#7857)
  • Fix SIM110 with a yield in the condition (#7801)
  • Preserve trailing comments in C414 fixes (#7775)
  • Check sequence type before triggering unnecessary-enumerate len suggestion (#7781)
  • Use correct start location for class/function clause header (#7802)
  • Fix incorrect fixes for SIM101 (#7798)
  • Format comment before parameter default correctly (#7870)
  • Fix E251 false positive inside f-strings (#7894)
  • Allow bindings to be created and referenced within annotations (#7885)
  • Show per-cell diffs when analyzing notebooks over stdin (#7789)
  • Avoid curly brace escape in f-string format spec (#7780)
  • Fix lexing single-quoted f-string with multi-line format spec (#7787)
  • Consider nursery rules to be in-preview for ruff rule (#7812)
  • Report precise location for invalid conversion flag (#7809)
  • Visit pattern match guard as a boolean test (#7911)
  • Respect --unfixable in ISC rules (#7917)
  • Fix edge case with PIE804 (#7922)
  • Show custom message in PTH118 for Path.joinpath with starred arguments (#7852)
  • Fix false negative in outdated-version-block when using greater than comparisons (#7920)
  • Avoid converting f-strings within Django gettext calls (#7898)
  • Fix false positive in PLR6301 (#7933)
  • Treat type aliases as typing-only expressions e.g. resolves false positive in TCH004 (#7968)
  • Resolve cache-dir relative to project root (#7962)
  • Respect subscripted base classes in type-checking rules e.g. resolves false positive in TCH003 (#7954)
  • Fix JSON schema limit for line-length (#7883)
  • Fix commented-out coalesce keyword (#7876)

Documentation

  • Document reimplemented-starmap performance effects (#7846)
  • Default to following the system dark/light mode (#7888)
  • Add documentation for fixes (#7901)
  • Fix typo in docs of PLR6301 (#7831)
  • Update UP038 docs to note that it results in slower code (#7872)
  • crlf -> cr-lf (#7766)
  • Add an example of an unsafe fix (#7924)
  • Fix documented examples for unnecessary-subscript-reversal (#7774)
  • Correct error in tuple example in ruff formatter docs (#7822)
  • Add versioning policy to documentation (#7923)
  • Fix invalid code in FURB177 example (#7832)

Formatter

  • Less scary ruff format message (#7867)
  • Remove spaces from import statements (#7859)
  • Formatter quoting for f-strings with triple quotes (#7826)
  • Update ruff_python_formatter generate.py comment (#7850)
  • Document one-call chaining deviation (#7767)
  • Allow f-string modifications in line-shrinking cases (#7818)
  • Add trailing comment deviation to README (#7827)
  • Add trailing zero between dot and exponential (#7956)
  • Force parentheses for power operations in unary expressions (#7955)

Playground

  • Fix playground Quick Fix action (#7824)

Contributors

Read more

v0.0.292

02 Oct 17:15
c6d0bdd
Compare
Choose a tag to compare

What's Changed

Highlights

This release includes full support for Python 3.12 (out now!), including the new type parameter (PEP 695) and f-string syntaxes (PEP 701).

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 in #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: #7680).
  • line-too-long (E501) now ignores trailing pragma comments (like # type: ignore and # noqa) when computing line length (see: #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 in #7617
  • [flake8-bandit] Implement weak-cryptographic-key (S505) by @mkniewallner in #7703
  • [refurb] Implement implicit-cwd (FURB177) by @danparizher in #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: #7697).

Settings

Bug Fixes

Other Changes

New Contributors

Full Changelog: v0.0.291...v0.0.292

v0.0.291

22 Sep 18:14
8bfe9bd
Compare
Choose a tag to compare

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: #7514.

Rules

Settings

Bug Fixes

New Contributors

Full Changelog: v0.0.290...v0.0.291

v0.0.290

15 Sep 21:51
0c030b5
Compare
Choose a tag to compare

What's Changed

Rules

  • Update deprecated-import lists based on recent typing-extensions release by @charliermarsh in #7356
  • Add support for bounds, constraints, and explicit variance on generic type variables to UP040 by @nathanwhit in #6749

Settings

Bug Fixes

Preview

What's this section?

New Contributors

Full Changelog: v0.0.289...v0.0.290

v0.0.289

12 Sep 16:45
e7a2779
Compare
Choose a tag to compare

What's Changed

Bug Fixes

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 in #7195
  • Display the --preview option in the CLI help menu by @zanieb in #7274

See the documentation and versioning discussion for more details.

New Contributors

Full Changelog: v0.0.288...v0.0.289

v0.0.288

11 Sep 17:05
7c9bbcf
Compare
Choose a tag to compare

What's Changed

Breaking Changes

Rules

Settings

  • [flake8-self]
    • SLF001: Add extend-ignore-names option by @jaap3 in #7194

Bug Fixes

Other Changes

New Contributors

Full Changelog: v0.0.287...v0.0.288

v0.0.287

01 Sep 17:09
2f3a950
Compare
Choose a tag to compare

What's Changed

Rules

Bug Fixes

New Contributors

Full Changelog: v0.0.286...v0.0.287

v0.0.286

25 Aug 19:46
91880b8
Compare
Choose a tag to compare

What's Changed

New Rules

  • [flake8-bugbear] Update function-call-in-argument-default (B008) to ignore arguments with immutable annotations by @zanieb in #6784
  • [flake8-bugbear] Update mutable-argument-default (B006) to use extend-immutable-calls when determining if annotations are immutable by @zanieb in #6781
  • [flake8-pie] Implement unnecessary-range-start (PIE808) by @harupy in #6690
  • [flake8-pytest-style] Add autofix for PT014 by @harupy in #6698
  • [pylint] Implement no-self-use (R6301) by @LaBatata101 in #6574
  • [pylint] Extend repeated-equality-comparison-target to check for mixed orderings and Yoda conditions. by @tjkuson in #6691

Settings

Bug Fixes

Full Changelog: v0.0.285...v0.0.286

v0.0.285

17 Aug 21:24
5892c69
Compare
Choose a tag to compare

What's Changed

New rules

  • [flake8-pytest-style] Implement pytest-unittest-raises-assertion (PT027) by @harupy in #6554
  • [flake8-pytest-style] Implement pytest-duplicate-parametrize-test-cases (PT014) by @harupy in #6598
  • [flake8-tidy-imports] Implement banned-module-level-imports (TID253) by @durumu in #6378
  • [pylint] Implement bad-dunder-name (W3201) (in the Ruff nursery) by @LaBatata101 in #6486
  • [pylint] Implement subprocess-run-check (W1510) by @tjkuson in #6487
  • [ruff] Implement quadratic-list-summation (RUF017) by @evanrittenhouse in #6489

Rule changes

Settings

  • Respect .ipynb and .pyi sources when linting from stdin by @charliermarsh in #6628
  • Support glob patterns for raises_require_match_for and raises_require_match_for by @harupy in #6635

Bug Fixes

Playground

Performance

New Contributors

Full Changelog: v0.0.284...v0.0.285