Subject: CVS commit: pkgsrc/devel/py-ruff
From: Adam Ciarcinski
Date: 2024-04-19 11:12:07
Message id: 20240419091207.306C8FA2C@cvs.NetBSD.org

Log Message:
py-ruff: updated to 0.4.0

0.4.0

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!

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
[pylint] Implement invalid-bytes-returned (E0308)
[pylint] Implement invalid-length-returned (E0303)
[pylint] Implement self-cls-assignment (W0642)
[pylint] Omit stubs from invalid-bool and invalid-str-return-type
[ruff] New rule unused-async (RUF029) to detect unneeded async keywords on functions

Rule changes

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

Linter

Improve handling of builtin symbols in linter rules
Improve display of rules in --show-settings
Improve inference capabilities of the BuiltinTypeChecker
Resolve classes and functions relative to script name
Improve performance of RuleTable::any_enabled

Server

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

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

Configuration

Add RUFF_OUTPUT_FILE environment variable support

Bug fixes

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

Files:
RevisionActionfile
1.20modifypkgsrc/devel/py-ruff/Makefile
1.20modifypkgsrc/devel/py-ruff/cargo-depends.mk
1.20modifypkgsrc/devel/py-ruff/distinfo