Co-authored-by: astral-automations-bot[bot] <305554984+astral-automations-bot[bot]@users.noreply.github.com> Co-authored-by: Brent Westbrook <brentrwestbrook@gmail.com>
7.8 KiB
Changelog
0.17.0
Released on 2026-10-09.
Breaking changes
-
Update the default and latest Python versions for 3.15 (#28792)
Ruff now defaults to Python 3.11 instead of 3.10 when no Python version is configured through
target-versionorrequires-python. When checking for syntax errors without a configured Python version, Ruff now defaults to Python 3.15 instead of 3.14. -
Update the default rule set (#28786)
Several of the
flake8-datetimezrules (DTZ001,DTZ005,DTZ006,DTZ007,DTZ011,DTZ012, andDTZ901) are no longer enabled by default, whileundefined-local-with-nested-import-star-usage(F406), which corresponds to a syntax error, is now enabled by default. -
Update Rust crate quick-junit to 0.8.0 (#27295)
JUnit output now uses a
skippedattribute instead ofdisabledon<testsuite>elements and includes askippedattribute on the root<testsuites>element. -
[
flake8-import-conventions] Adddatetime as dtas a conventional alias (ICN001) (#28790) -
Support Unicode dummy variable names (#28722)
The default
lint.dummy-variable-rgxnow recognizes underscore-prefixed Unicode names, such as_次, as dummy variables. -
Update to Unicode 17 (#21229, #28784)
Ruff now uses Unicode 17 data for identifier normalization and named character escapes (
"\N{...}"). -
Always show unsafe and display-only fixes in the CLI (#27810)
The default
fulloutput format now shows unsafe fixes and suggestions requiring manual review, regardless of theunsafe-fixessetting. Actually applying unsafe fixes still requires explicit opt-in. -
Remove the Python dependency from conda-forge builds (conda-forge/ruff-feedstock#361)
The conda-forge build no longer depends on Python, now supports linux-riscv64, win-arm64, and linux-ppc64le platforms, and now includes shell completions. However, no longer depending on Python means that
python -m ruffandimport ruffwill no longer work. Useruffdirectly fromPATHinstead. PyPI installations and those from the standalone installer are unaffected. -
Remove support for ruff-lsp (#28750)
Support for
ruff-lsp, the legacy Python language server deprecated in Ruff v0.9.5, has been removed. The Ruff VS Code extension now always uses the native language server;ruff.nativeServeris deprecated and ignored. See the migration guide.
Stabilization
The following rules have been stabilized and are no longer in preview:
lazy-import-mismatch(TID254)lazy-import-immediately-resolved(TID255)os-path-commonprefix(RUF071)
The following behaviors have been stabilized:
- The formatter,
unsorted-imports(I001),line-too-long(E501), anddoc-line-too-long(W505) now consistently ignore trailing pragma comments when computing line length. This resolved several bugs involving interactions between these rules (#27313) but may also cause existing imports to be reformatted and was thus classified as a breaking change.
Preview features
- [
flake8-bugbear] Report the method name and a more precise range (B005) (#27050) - [
refurb] Mark fix unsafe and move tosuspicious(FURB152) (#28405) - [
ruff] Allow docstrings in strict mode (RUF067) (#28679)
Bug fixes
- [
flake8-builtins] Expand checks in class scopes (A001) (#29076) - [
flake8-self] Allow private access onobject.__new__(cls)instances (SLF001) (#29001) - [
flake8-tidy-imports] Skiplazy-import-mismatchin stubs (TID254) (#29095) - [
flake8-type-checking] Add the notion of runtime-ambiguous references (#26508) - [
flake8-type-checking] Never flag annotations in function scopes (#29183) - [
pyflakes] Mark the fix as unsafe when it creates a docstring (F541) (#28258) - [
pylint] Preserve trailing comments inuseless-returnfix (PLR1711) (#29180) - [
ruff] Avoid false positive whenpytest.raisesis used in awithstatement (RUF061) (#28186)
Rule changes
- [
pyupgrade] Suggesttyping.TypeFormon Python 3.15 (UP035) (#29084)
Contributors
- @DeviousCardi
- @hugehoo
- @nekomario28
- @Daverball
- @Viicos
- @DebadityaHait
- @saberoueslati
- @baltasarblanco
- @yxshee
- @lognd
- @dor-sr
0.16.x
0.15.x
0.14.x
0.13.x
0.12.x
0.11.x
0.10.x
0.9.x
See changelogs/0.9.x
0.8.x
See changelogs/0.8.x
0.7.x
See changelogs/0.7.x
0.6.x
See changelogs/0.6.x
0.5.x
See changelogs/0.5.x
0.4.x
See changelogs/0.4.x
0.3.x
See changelogs/0.3.x
0.2.x
See changelogs/0.2.x
0.1.x
See changelogs/0.1.x