ruff/changelogs/0.5.x.md

26 KiB

Changelog 0.5.x

0.5.0

Check out the blog post for a migration guide and overview of the changes!

Breaking changes

See also, the "Remapped rules" section which may result in disabled rules.

  • Follow the XDG specification to discover user-level configurations on macOS (same as on other Unix platforms)
  • Selecting ALL now excludes deprecated rules
  • The released archives now include an extra level of nesting, which can be removed with --strip-components=1 when untarring.
  • The release artifact's file name no longer includes the version tag. This enables users to install via /latest URLs on GitHub.
  • The diagnostic ranges for some flake8-bandit rules were modified (#10667).

Deprecations

The following rules are now deprecated:

Remapped rules

The following rules have been remapped to new rule codes:

Stabilization

The following rules have been stabilized and are no longer in preview:

The following behaviors have been stabilized:

Removals

The following deprecated settings have been removed:

  • output-format=text; use output-format=concise or output-format=full
  • tab-size; use indent-width

The following deprecated CLI options have been removed:

  • --show-source; use --output-format=full
  • --no-show-source; use --output-format=concise

The following deprecated CLI commands have been removed:

  • ruff <path>; use ruff check <path>
  • ruff --clean; use ruff clean
  • ruff --generate-shell-completion; use ruff generate-shell-completion

Preview features

  • `ruff`

CLI

  • Use rule name rather than message in --statistics (#11697)
  • Use the output format full by default (#12010)
  • Don't log syntax errors to the console (#11902)

Rule changes

  • `ruff`
  • `numpy`
  • `flake8-bandit`

Server

  • Closing an untitled, unsaved notebook document no longer throws an error (#11942)
  • Support the usage of tildes and environment variables in logFile (#11945)
  • Add option to configure whether to show syntax errors (#12059)

Bug fixes

  • `pycodestyle`
  • `pep8-naming`
  • `pyflakes`

Parser

  • Emit a syntax error for an empty type parameter list (#12030)
  • Avoid consuming the newline for unterminated strings (#12067)
  • Do not include the newline in the unterminated string range (#12017)
  • Use the correct range to highlight line continuation errors (#12016)
  • Consider 2-character EOL before line continuations (#12035)
  • Consider line continuation character for re-lexing (#12008)

Other changes

  • Upgrade the Unicode table used for measuring the line-length (#11194)
  • Remove the deprecation error message for the nursery selector (#10172)

0.5.1

Preview features

  • `flake8-bugbear`
  • `pycodestyle`
  • `pytest`

Rule changes

  • Enable token-based rules on source with syntax errors (#11950)
  • `flake8-bandit`
  • `numpy`
  • `pylint`

Server

  • Avoid syntax error notification for source code actions (#12148)
  • Consider the content of the new cells during notebook sync (#12203)
  • Fix replacement edit range computation (#12171)

Bug fixes

  • Disable auto-fix when source has syntax errors (#12134)
  • Fix cache key collisions for paths with separators (#12159)
  • Make requires-python inference robust to == (#12091)
  • Use char-wise width instead of str-width (#12135)
  • `pycodestyle`
  • `pycodestyle`
  • `pylint`

Performance

  • Remove allocation in parse_identifier (#12103)
  • Use CompactString for Identifier AST node (#12101)

0.5.2

Preview features

  • Use space separator before parenthesized expressions in comprehensions with leading comments (#12282)
  • `flake8-async`
  • `flake8-async`
  • `flake8-async`
  • `flake8-async`
  • `flake8-async`

Rule changes

  • `flake8-return`
  • `numpy`
  • `refurb`

Server

  • Consider include and extend-include settings in native server (#12252)
  • Include nested configurations in settings reloading (#12253)

CLI

  • Omit code frames for fixes with empty ranges (#12304)
  • Warn about formatter incompatibility for D203 (#12238)

Bug fixes

  • Make cache-write failures non-fatal on Windows (#12302)
  • Treat not operations as boolean tests (#12301)
  • `flake8-bandit`
  • `flake8-bandit`
  • `flake8-bandit`
  • `pycodestyle`
  • `pyflakes`
  • `refurb`

Documentation

  • Update help and documentation to reflect --output-format full default (#12248)

Performance

  • Use more threads when discovering Python files (#12258)

0.5.3

Ruff 0.5.3 marks the stable release of the Ruff language server and introduces revamped documentation, including setup guides for your editor of choice and the language server itself.

Preview features

  • Formatter: Insert empty line between suite and alternative branch after function/class definition (#12294)
  • `pyupgrade`

Rule changes

  • `flake8-bugbear`
  • `flake8-bugbear`
  • `pylint`
  • `pylint`
  • `pylint`

Server

  • Build settings index in parallel for the native server (#12299)
  • Use fallback settings when indexing the project (#12362)
  • Consider --preview flag for server subcommand for the linter and formatter (#12208)

Bug fixes

  • `flake8-comprehensions`
  • `pylint`
  • `pylint`

Documentation

  • Add docs for Ruff language server (#12344)
  • Migrate to standalone docs repo (#12341)
  • Update versioning policy for editor integration (#12375)

Other changes

  • Publish Wasm API to npm (#12317)

0.5.4

Rule changes

  • `ruff`

Bug fixes

  • `flake8-builtins`
  • `flake8-comprehensions`
  • `pydocstyle`

Documentation

  • Fix GitHub link to Neovim setup (#12410)
  • Fix output-format default in settings reference (#12409)

0.5.5

Preview features

  • `fastapi`
  • `pydoclint`

Rule changes

  • `numpy`
  • `numpy`
  • `pep8-naming`

Formatter

  • Fix incorrect placement of leading function comment with type params (#12447)

Server

  • Do not bail code action resolution when a quick fix is requested (#12462)

Bug fixes

  • Fix Ord implementation of cmp_fix (#12471)
  • Raise syntax error for unparenthesized generator expression in multi-argument call (#12445)
  • `pydoclint`
  • `flake8-bugbear`

Documentation

  • Add Eglot setup guide for Emacs editor (#12426)
  • Add note about the breaking change in nvim-lspconfig (#12507)
  • Add note to include notebook files for native server (#12449)
  • Add setup docs for Zed editor (#12501)

0.5.6

Ruff 0.5.6 automatically enables linting and formatting of notebooks in preview mode. You can opt-out of this behavior by adding *.ipynb to the extend-exclude setting.

[tool.ruff]
extend-exclude = ["*.ipynb"]

Preview features

  • Enable notebooks by default in preview mode (#12621)
  • `flake8-builtins`
  • `pydoclint`

Rule changes

  • `flake8-return`

Server

  • Make server panic hook more error resilient (#12610)
  • Use $/logTrace for server trace logs in Zed and VS Code (#12564)
  • Keep track of deleted cells for reorder change request (#12575)

Configuration

  • `flake8-implicit-str-concat`

Bug fixes

  • `flake8-async`
  • `flake8-slots`
  • `isort`
  • `isort`
  • `pycodestyle`
  • `pycodestyle`
  • `pyflakes`
  • `pylint`
  • `pyupgrade`
  • `pyupgrade`
  • Fix NFKC normalization bug when removing unused imports (#12571)

Other changes

  • Consider more stdlib decorators to be property-like (#12583)
  • Improve handling of metaclasses in various linter rules (#12579)
  • Improve consistency between linter rules in determining whether a function is property (#12581)

0.5.7

Preview features

  • `flake8-comprehensions`
  • `flake8-pyi`
  • `flake8-return`
  • `pydoclint`
  • `pydoclint`
  • `pydoclint`
  • `pydoclint`
  • `pydoclint`
  • `ruff`
  • `ruff`

Rule changes

  • `refurb`
  • `ruff`
  • `tryceratops`

Server

  • Ignore non-file workspace URL; Ruff will display a warning notification in this case (#12725)

CLI

  • Fix cache invalidation for nested pyproject.toml files (#12727)

Bug fixes

  • `flake8-async`
  • `flake8-bandit`
  • `flake8-bugbear`
  • `flake8-comprehensions`
  • `flake8-simplify`
  • `pydoclint`