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)
[bug] [codegen] Fixed unexpected error when use control lines which the
first control block with no bodies other than comments,
as pass is now added to the first empty block.
Pull request courtesy Hai Zhu.
[bug] [parser] Fixed unexpected syntax error in strict_undefined mode that occurred
when using comprehensions within a function in a Mako Python code block.
Now, the local variable in comprehensions won't be added to the checklist
when using strict_undefined mode.
Pull request courtesy Hai Zhu.
[#178](https://github.com/pytest-dev/pluggy/issues/178) <https://github.com/pytest-dev/pluggy/issues/178>_: Add support for deprecating specific hook parameters, or more generally, for issuing a warning whenever a hook implementation requests certain parameters.
See :ref:warn_on_impl for details.
Bug Fixes
[#481](https://github.com/pytest-dev/pluggy/issues/481) <https://github.com/pytest-dev/pluggy/issues/481>_: PluginManager.get_plugins() no longer returns None for blocked plugins.
Bumps the all-dependencies group with 12 updates:
0.110.1
0.110.2
2.6.4
2.7.0
0.3.5
0.4.1
3.13.3
3.13.4
2.5.35
2.5.36
3.6
3.7
1.3.2
1.3.3
1.4.0
1.5.0
2.16.3
2.18.1
69.2.0
69.5.1
20.25.1
20.25.3
6.2
6.3
Updates
fastapi
from 0.110.1 to 0.110.2Release notes
Sourced from fastapi's releases.
Commits
be1e3fa
🔖 Release version 0.110.24ae63ae
📝 Update release notes6d523d6
📝 Fix types in examples underdocs_src/extra_data_types
(#10535)d84d6e0
📝 Update release notesa901e2f
📝 Update references to UJSON (#11464)8a45645
📝 Update release notes74cc33d
♻️ Simplify Pydantic configs in OpenAPI models infastapi/openapi/models.py
...5815fa5
📝 Update release notes09e4859
🐛 Fix support for query parameters with list types, handle JSON encoding Pyda...071b8f2
📝 Update release notesUpdates
pydantic
from 2.6.4 to 2.7.0Release notes
Sourced from pydantic's releases.
... (truncated)
Changelog
Sourced from pydantic's changelog.
... (truncated)
Commits
7af856a
Prep for 2.7 Release (#9212)60d77f0
Updatewarnings
parameter for serialization utilities to allow raising a wa...99821e9
Add support for field level number to str coercion option (#9137)a01b902
Updating JSON docs, addingcache_strings
toConfigDict
(#9178)932b025
Bump core to 2.18.1 (#9211)a7d3253
Fix allow extra generic (#9193)8aeac1a
Update mkdocs_material (#9169)7501231
Add 1.10.15 section to HISTORY.md (#9161)d294244
Prep for 2.7 beta release 🚀 (#9158)d77a940
Uprevpydantic-core
(#9153)Updates
ruff
from 0.3.5 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
filelock
from 3.13.3 to 3.13.4Release notes
Sourced from filelock's releases.
Commits
000a3fa
Raise error on incompatible singleton timeout and mode args (#320)312fb4e
[pre-commit.ci] pre-commit autoupdate (#321)Updates
identify
from 2.5.35 to 2.5.36Commits
838a489
v2.5.36dab738c
Merge pull request #455 from jalaziz/rust-cargo-tagsc0083af
Identify Cargo.toml and Cargo.lock as cargo and cargo-lock80f2107
Merge pull request #452 from pre-commit/pre-commit-ci-update-config73dcf7d
[pre-commit.ci] pre-commit autoupdatef6fb929
Merge pull request #449 from pre-commit/pre-commit-ci-update-config49e2b09
[pre-commit.ci] pre-commit autoupdate21189f2
Merge pull request #448 from pre-commit/pre-commit-ci-update-configf583181
[pre-commit.ci] pre-commit autoupdate1397916
Merge pull request #447 from pre-commit/pre-commit-ci-update-configUpdates
idna
from 3.6 to 3.7Release notes
Sourced from idna's releases.
Changelog
Sourced from idna's changelog.
Commits
1d365e1
Release v3.7c1b3154
Merge pull request #172 from kjd/optimize-contextj0394ec7
Merge branch 'master' into optimize-contextjcd58a23
Merge pull request #152 from elliotwutingfeng/dev5beb28b
More efficient resolution of joiner contexts1b12148
Update ossf/scorecard-action to v2.3.1d516b87
Update Github actions/checkout to v4c095c75
Merge branch 'master' into dev60a0a4c
Fix typo in GitHub Actions workflow key5918a0e
Merge branch 'master' into devUpdates
mako
from 1.3.2 to 1.3.3Release notes
Sourced from mako's releases.
Commits
Updates
pluggy
from 1.4.0 to 1.5.0Changelog
Sourced from pluggy's changelog.
Commits
f8aa4a0
Preparing release 1.5.0b4a8c92
Merge pull request #495 from bluetech/warn-on-impl-args6f6ea68
Add support deprecating hook parameters91f88d2
Merge pull request #496 from bluetech/codecov-action89ce829
ci: replace upload-coverage script with codecov github action29f104d
Lift pluggy (#493)c2b36b4
Merge pull request #491 from pytest-dev/pre-commit-ci-update-config2b533c9
[pre-commit.ci] pre-commit autoupdate04d1bcd
[pre-commit.ci] pre-commit autoupdate (#490)f74e94b
[pre-commit.ci] pre-commit autoupdate (#489)Updates
pydantic-core
from 2.16.3 to 2.18.1Release notes
Sourced from pydantic-core's releases.
... (truncated)
Commits
031fc93
Bump to 2.18.1 (#1268)b945bcb
prevent trailing dots in integers (#1267)f636403
trim leading zeros before parsingstr
->int
(#1266)e23d7eb
remove old profiling directory (#1265)4b82169
Add coerce_numbers_to_str option in StringSchema (#1262)683c5a3
allow serialization functions to upgrade warnings to exceptions (#1258)ee06335
update to PyO3 0.21.1, bump version to 2.18 (#1261)e73b2d1
Adopt jiter0.2.0
(#1250)1c4baac
Fixes forser_json_inf_nan
inference (#1251)e26e857
fix build warnings on python <3.11 (#1259)Updates
setuptools
from 69.2.0 to 69.5.1Changelog
Sourced from setuptools's changelog.
... (truncated)
Commits
ff58075
Bump version: 69.5.0 → 69.5.1d46727f
Merge tag 'v69.4.2' into main.5de8e14
Bump version: 69.4.1 → 69.4.2f07b037
Add news fragment.608de82
Merge https://github.com/pypa/distutils into v69.4.1e5e3cc1
Merge pull request #247 from pypa/hotfix/246-linker-args-listef297f2
Extend the retention of the compatibility.98eee7f
Exclude compat package from coverage.d2581bf
Add 'consolidate_linker_args' wrapper to protect the old behavior for now.a04913a
Add type declaration for runtime_library_dir_option, making explicit the diff...Updates
virtualenv
from 20.25.1 to 20.25.3Release notes
Sourced from virtualenv's releases.
Changelog
Sourced from virtualenv's changelog.