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!
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] Allow NoReturn-like functions for __str__, __len__, etc. (PLE0307) (#11017)
Parser: Use empty range when there's "gap" in token source (#11032)
[ruff] Ignore stub functions in unused-async (RUF029) (#11026)
Parser: Expect indented case block instead of match stmt (#11033)
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!
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)
- Add provision arguments to ToxParser to fix crash when provisioning new tox environment without list-dependencies by :user:`seyidaniels` (:issue:`3190`)
Improved Documentation - 4.14.2
Removed unused line from the 'fresh_subprocess' documentation. (:issue:3241)
v4.14.1 (2024-03-06)
Bugfixes - 4.14.1
- Fix crash with fresh subprocess, if the build backend is setuptools automatically enable fresh subprocesses for
build backend calls - by :user:`gaborbernat`. (:issue:`3235`)
v4.14.0 (2024-03-05)
Features - 4.14.0
Support enabling fresh subprocess for packaging build backends via :ref:fresh_subprocess - by :user:gaborbernat. (:issue:3227)
Allow plugins attaching additional information to --version via tox_append_version_info method in the plugin
module - by :user:gaborbernat. (:issue:3234)
v4.13.0 (2024-02-16)
Features - 4.13.0
- Extract virtual environment packaging code to its own base class not tied to ``virtualenv`` - by :user:`gaborbernat`. (:issue:`3221`)
Improved Documentation - 4.13.0
Documented usage of pytest with tox run-parallel - by :user:faph. (:issue:3187)
Configuration: state in config directive sections their ini file sections - by :user:0cjs. (:issue:3194)
Development: summarize important points experienced developers need to know - by :user:0cjs. (:issue:3197)
v4.12.1 (2024-01-16)
Bugfixes - 4.12.1
- Fixed bug where running with --installpkg and multiple envs could not clean up between tests (:issue:`3165`)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)
- `@dependabot ignore minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)
- `@dependabot ignore ` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore ` will remove all of the ignore conditions of the specified dependency
- `@dependabot unignore ` will remove the ignore condition of the specified dependency and ignore conditions
Updates the requirements on black, ruff, tox and pre-commit to permit the latest version. Updates
black
from 24.3.0 to 24.4.0Release notes
Sourced from black's releases.
Changelog
Sourced from black's changelog.
Commits
8fe6270
Prepare release 24.4.0 (#4307)6b25e7c
Bump peter-evans/find-comment from 3.0.0 to 3.1.0 (#4304)07fe1ca
docs: remove repetitive word (#4303)3383f53
GitHub Action: Allow reading version from pyproject.toml (#4294)c8f1a55
[pre-commit.ci] pre-commit autoupdate (#4297)836acad
Improve AST safety check (#4290)13bd092
fix: Stop moving multiline strings to a new line unless inside brackets (#4289)c9d2635
Remove mocking from tests (#4287)bf11956
Fix two logging calls in the test helper (#4286)97993f9
Bump pypa/cibuildwheel from 2.16.5 to 2.17.0 (#4283)Updates
ruff
from 0.3.3 to 0.4.1Release notes
Sourced from ruff's releases.
... (truncated)
Changelog
Sourced from ruff's changelog.
... (truncated)
Commits
0ff25a5
Bump version to 0.4.1 (#11035)34873ec
Add a script to fuzz the parser (courtesy ofpysource-codegen
) (#11015)d3cd61f
Use empty range when there's "gap" in token source (#11032)9b80cc0
Select fewer ruff rules when linting Python files inscripts/
(#11034)9bb23b0
Expect indented case block instead of match stmt (#11033)06c248a
[ruff]
Ignore stub functions inunused-async
(RUF029
) (#11026)27902b7
[pylint
] Implementinvalid-index-returned
(PLE0305
) (#10962)97acf1d
ENH: Bumpruff
dependency versions to support the latest release of `v0.4.0...adf63d9
[pylint
] Implementinvalid-hash-returned
(PLE0309
) (#10961)5d3c9f2
ruff server
: fix Neovim setup guide command (#11021)Updates
tox
to 4.14.2Release notes
Sourced from tox's releases.
Changelog
Sourced from tox's changelog.
... (truncated)
Commits
ab9b504
release 4.14.22f6667f
Add Provision Arguments to ToxParser (#3246)380d2e2
[pre-commit.ci] pre-commit autoupdate (#3244)7514e01
Add missing space20732d6
[pre-commit.ci] pre-commit autoupdate (#3242)543b718
Bump pypa/gh-action-pypi-publish from 1.8.12 to 1.8.14 (#3239)1fb9356
Removed unneeded line (#3241)Updates
pre-commit
to 3.7.0Release notes
Sourced from pre-commit's releases.
Changelog
Sourced from pre-commit's changelog.
... (truncated)
Commits
7b4667e
v3.7.0d46c8fc
Merge pull request #3168 from pre-commit/fix-fail-fastfc62215
fix per-hook fail_fast to not fail on previous failures716da1e
Merge pull request #3155 from pre-commit/pre-commit-ci-update-config0939c11
[pre-commit.ci] pre-commit autoupdate3bdf9fb
Merge pull request #3150 from pre-commit/pre-commit-ci-update-config75b3e52
[pre-commit.ci] pre-commit autoupdate5e11c26
Merge pull request #3122 from glehmann/docker-ttye580096
give docker a tty output when expecting color7b868c3
Merge pull request #3132 from pre-commit/pre-commit-ci-update-configDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show