Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ruff 0.4.0 #169465

Merged
merged 2 commits into from
Apr 18, 2024
Merged

ruff 0.4.0 #169465

merged 2 commits into from
Apr 18, 2024

Conversation

BrewTestBot
Copy link
Member

Created by brew bump


Created with brew bump-formula-pr.

release notes
## Changes

A new, hand-written parser

Ruff's new parser is >2x faster, which translates to a 20-40% speedup for all linting and formatting invocations. There's a lot to say about this exciting change, so check out the blog post for more details!

See #10036 for implementation details.

A new language server in Rust

With this release, we also want to highlight our new language server. ruff server is a Rust-powered language server that comes built-in with Ruff. It can be used with any editor that supports the Language Server Protocol (LSP). It uses a multi-threaded, lock-free architecture inspired by rust-analyzer and it will open the door for a lot of exciting features. It’s also faster than our previous Python-based language server -- but you probably guessed that already.

ruff server is only in alpha, but it has a lot of features that you can try out today:

  • Lints Python files automatically and shows quick-fixes when available
  • Formats Python files, with support for range formatting
  • Comes with commands for quickly performing actions: ruff.applyAutofix, ruff.applyFormat, and ruff.applyOrganizeImports
  • Supports source.fixAll and source.organizeImports source actions
  • Automatically reloads your project configuration when you change it

To setup ruff server with your editor, refer to the README.md.

Preview features

  • [pycodestyle] Do not trigger E3 rules on defs following a function/method with a dummy body (#10704)
  • [pylint] Implement invalid-bytes-returned (E0308) (#10959)
  • [pylint] Implement invalid-length-returned (E0303) (#10963)
  • [pylint] Implement self-cls-assignment (W0642) (#9267)
  • [pylint] Omit stubs from invalid-bool and invalid-str-return-type (#11008)
  • [ruff] New rule unused-async (RUF029) to detect unneeded async keywords on functions (#9966)

Rule changes

  • [flake8-bandit] Allow urllib.request.urlopen calls with static Request argument (S310) (#10964)
  • [flake8-bugbear] Treat raise NotImplemented-only bodies as stub functions (B006) (#10990)
  • [flake8-slots] Respect same-file Enum subclasses (SLOT000) (#11006)
  • [pylint] Support inverted comparisons (PLR1730) (#10920)

Linter

  • Improve handling of builtin symbols in linter rules (#10919)
  • Improve display of rules in --show-settings (#11003)
  • Improve inference capabilities of the BuiltinTypeChecker (#10976)
  • Resolve classes and functions relative to script name (#10965)
  • Improve performance of RuleTable::any_enabled (#10971)

Server

This section is devoted to updates for our new language server, written in Rust.

  • Enable ruff-specific source actions (#10916)
  • Refreshes diagnostics for open files when file configuration is changed (#10988)
  • Important errors are now shown as popups (#10951)
  • Introduce settings for directly configuring the linter and formatter (#10984)
  • Resolve configuration for each document individually (#10950)
  • Write a setup guide for Neovim (#10987)

Configuration

  • Add RUFF_OUTPUT_FILE environment variable support (#10992)

Bug fixes

  • Avoid non-augmented-assignment for reversed, non-commutative operators (PLR6104) (#10909)
  • Limit commutative non-augmented-assignments to primitive data types (PLR6104) (#10912)
  • Respect per-file-ignores for RUF100 on blanket # noqa (#10908)
  • Consider if expression for parenthesized with items parsing (#11010)
  • Consider binary expr for parenthesized with items parsing (#11012)
  • Reset FOR_TARGET context for all kinds of parentheses (#11009)

Contributors

@github-actions github-actions bot added rust Rust use is a significant feature of the PR or issue bump-formula-pr PR was created using `brew bump-formula-pr` labels Apr 18, 2024
Copy link
Contributor

🤖 An automated task has requested bottles to be published to this PR.

@github-actions github-actions bot added the CI-published-bottle-commits The commits for the built bottles have been pushed to the PR branch. label Apr 18, 2024
@BrewTestBot BrewTestBot added this pull request to the merge queue Apr 18, 2024
Merged via the queue into master with commit 5a47945 Apr 18, 2024
14 checks passed
@BrewTestBot BrewTestBot deleted the bump-ruff-0.4.0 branch April 18, 2024 22:51
@github-actions github-actions bot added the outdated PR was locked due to age label May 19, 2024
@github-actions github-actions bot locked as resolved and limited conversation to collaborators May 19, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
bump-formula-pr PR was created using `brew bump-formula-pr` CI-published-bottle-commits The commits for the built bottles have been pushed to the PR branch. outdated PR was locked due to age rust Rust use is a significant feature of the PR or issue
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants