Bump version to 0.17.0 (#29259)

Co-authored-by: astral-automations-bot[bot] <305554984+astral-automations-bot[bot]@users.noreply.github.com>
Co-authored-by: Brent Westbrook <brentrwestbrook@gmail.com>
This commit is contained in:
astral-automations-bot[bot]andBrent Westbrook authored and GitHub committed 2026-10-09 13:45:29 -04:00
1 parent 8f362bf4cb
commit 5b27c1ccfa
97 files changed
+987 -763

No files matched your search

+1 -1
View File
@@ -26,6 +26,6 @@ body:
attributes:
label: Version
description: What version of ruff are you using? (see `ruff version`)
placeholder: e.g., ruff 0.16.10
placeholder: e.g., ruff 0.17.0
validations:
required: false
+1 -1
View File
@@ -13,6 +13,6 @@ body:
attributes:
label: Version
description: What version of ruff are you using? (see `ruff version`)
placeholder: e.g., ruff 0.16.10
placeholder: e.g., ruff 0.17.0
validations:
required: false
+78
View File
@@ -1,5 +1,83 @@
# Breaking Changes
## 0.17.0
- **Default to Python 3.11**
Ruff now defaults to Python 3.11 instead of 3.10 if no Python version is configured using
[`target-version`](https://docs.astral.sh/ruff/settings/#target-version) or
[`project.requires-python`](https://docs.astral.sh/ruff/configuration/#inferring-the-python-version).
- **Default to Python 3.15 for syntax errors**
Ruff now defaults to Python 3.15 instead of 3.14 when checking for syntax errors without a
configured Python version. This allows Python 3.15 syntax, including lazy imports, without an
explicit target version. The default for version-dependent lint rules is Python 3.11.
- **Updated default rules**
Ruff no longer enables [`DTZ001`](https://docs.astral.sh/ruff/rules/call-datetime-without-tzinfo/),
[`DTZ005`](https://docs.astral.sh/ruff/rules/call-datetime-now-without-tzinfo/),
[`DTZ006`](https://docs.astral.sh/ruff/rules/call-datetime-fromtimestamp/),
[`DTZ007`](https://docs.astral.sh/ruff/rules/call-datetime-strptime-without-zone/),
[`DTZ011`](https://docs.astral.sh/ruff/rules/call-date-today/),
[`DTZ012`](https://docs.astral.sh/ruff/rules/call-date-fromtimestamp/), or
[`DTZ901`](https://docs.astral.sh/ruff/rules/datetime-min-max/)
by default. These rules restrict the use of timezone-naive dates and datetimes, which are
appropriate in many applications. The other `DTZ` rules remain in the default rule set.
[`F406`](https://docs.astral.sh/ruff/rules/undefined-local-with-nested-import-star-usage/),
which corresponds to a syntax error, is now enabled by default.
- **`datetime` import convention**
[`unconventional-import-alias`](https://docs.astral.sh/ruff/rules/unconventional-import-alias/)
(`ICN001`) now expects the `datetime` module to be imported as `dt`.
- **Unicode dummy variable names**
The default [`lint.dummy-variable-rgx`](https://docs.astral.sh/ruff/settings/#lint_dummy-variable-rgx)
now treats underscore-prefixed Unicode names, such as `_次` or `_é`, as dummy variables.
- **Unicode 17**
Ruff now uses Unicode 17 data for identifier normalization and named character escapes.
- **Unsafe fixes and manual suggestions in CLI output**
The default `full` output format now displays all suggested fix diffs, including unsafe fixes
and suggestions that require manual review. Enabling
[`unsafe-fixes`](https://docs.astral.sh/ruff/settings/#unsafe-fixes) in the configuration or
passing `--unsafe-fixes` alongside `--fix` are still required to _apply_ unsafe fixes.
- **JUnit output**
The `junit` output format now uses `skipped` instead of `disabled` on `<testsuite>` elements and
adds a `skipped` attribute to the root `<testsuites>` element.
- **Pragma comments and line length**
The formatter, [`unsorted-imports`](https://docs.astral.sh/ruff/rules/unsorted-imports/) (`I001`),
[`line-too-long`](https://docs.astral.sh/ruff/rules/line-too-long/) (`E501`), and
[`doc-line-too-long`](https://docs.astral.sh/ruff/rules/doc-line-too-long/) (`W505`) now
consistently ignore trailing pragma comments when computing line length. This resolved several
bugs involving interactions between these rules but may also cause existing imports to be
reformatted.
- **conda-forge package**
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 ruff` and `import ruff` will no longer work. Use `ruff` directly from
`PATH` instead. PyPI installations and those from the standalone installer are unaffected.
- **Removal of `ruff-lsp` support**
Support for `ruff-lsp`, the legacy Python language server [deprecated in Ruff
v0.9.5](https://github.com/astral-sh/ruff/releases/tag/0.9.5), has been removed. The Ruff VS Code
extension now always uses the native language server; `ruff.nativeServer` is deprecated and
ignored. See the [migration guide](https://docs.astral.sh/ruff/editors/migration/).
## 0.16.0
- **New default rules**
+84 -549
View File
@@ -1,590 +1,125 @@
# Changelog
## 0.16.10
## 0.17.0
Released on 2026-10-01.
### Preview features
- Add a migration guide for categories ([#28087](https://github.com/astral-sh/ruff/pull/28087))
- \[`pyupgrade`\] Add rule for context manager iterator annotations (`UP052`) ([#29000](https://github.com/astral-sh/ruff/pull/29000))
### Performance
- Reduce memory used by diagnostics ([#28951](https://github.com/astral-sh/ruff/pull/28951))
### Server
- Avoid running `uv format` in untrusted workspaces ([#28873](https://github.com/astral-sh/ruff/pull/28873))
### Documentation
- Fix links to moved changelog sections and renamed mdtests ([#28941](https://github.com/astral-sh/ruff/pull/28941))
- Add Python 3.15 as a supported version ([#28907](https://github.com/astral-sh/ruff/pull/28907))
- Add ty as a type checker example ([#28906](https://github.com/astral-sh/ruff/pull/28906))
### Other changes
- Update Rust toolchain to 1.99 and MSRV to 1.97 ([#29047](https://github.com/astral-sh/ruff/pull/29047))
### Contributors
- [@ntBre](https://github.com/ntBre)
- [@spaceone](https://github.com/spaceone)
- [@HardMax71](https://github.com/HardMax71)
- [@charliermarsh](https://github.com/charliermarsh)
## 0.16.9
Released on 2026-09-24.
### Preview features
- \[`ruff`\] Avoid false positives for overloaded division (`RUF069`) ([#28309](https://github.com/astral-sh/ruff/pull/28309))
### Bug fixes
- \[`flake8-bugbear`\] Avoid false positives for calls with keyword arguments (`B009`, `B010`, `B043`) ([#28776](https://github.com/astral-sh/ruff/pull/28776))
- \[`flake8-tidy-imports`\] Allow lazy imports to be used in deferred annotations (`TID255`) ([#28767](https://github.com/astral-sh/ruff/pull/28767))
### Rule changes
- Update LibCST-based fixes for Python 3.15 ([#28616](https://github.com/astral-sh/ruff/pull/28616))
- \[`flake8-pyi`\] Mention stubs in the diagnostic message (`PYI002`) ([#28542](https://github.com/astral-sh/ruff/pull/28542))
### Documentation
- Fix horizontal overflow on the rules documentation page ([#28699](https://github.com/astral-sh/ruff/pull/28699))
- Update rules table with category information ([#28651](https://github.com/astral-sh/ruff/pull/28651))
- \[`flake8-annotations`\] Clarify that `ANN401` checks return types in addition to arguments ([#28334](https://github.com/astral-sh/ruff/pull/28334))
- \[`flake8-bugbear`\] Document type-checker interaction (`B010`) ([#28509](https://github.com/astral-sh/ruff/pull/28509))
- \[`flake8-comprehensions`\] Document `map`/generator exception behavior (`C417`) ([#27794](https://github.com/astral-sh/ruff/pull/27794))
- \[`ruff`\] Mention related isort settings (`RUF022`) ([#28719](https://github.com/astral-sh/ruff/pull/28719))
### Contributors
- [@qinpei-dev](https://github.com/qinpei-dev)
- [@sanjayrohith](https://github.com/sanjayrohith)
- [@ntBre](https://github.com/ntBre)
- [@webdevsamran](https://github.com/webdevsamran)
- [@zaniebot](https://github.com/zaniebot)
- [@ewdurbin](https://github.com/ewdurbin)
- [@MichaReiser](https://github.com/MichaReiser)
- [@spaceone](https://github.com/spaceone)
- [@IbrahimKhan12](https://github.com/IbrahimKhan12)
- [@devtechedge](https://github.com/devtechedge)
- [@GruffElixir](https://github.com/GruffElixir)
## 0.16.8
Released on 2026-09-16.
### Bug fixes
- Visit functional `TypedDict` keyword arguments correctly ([#28584](https://github.com/astral-sh/ruff/pull/28584))
- \[`flake8-simplify`\] Detect nested `async with` under sync parent (`SIM117`) ([#27821](https://github.com/astral-sh/ruff/pull/27821))
- \[`flake8-simplify`\] Preserve operand order in `SIM109` fix ([#27824](https://github.com/astral-sh/ruff/pull/27824))
- \[`pyupgrade`\] Preserve required parentheses in multiline `UP040` fixes ([#28164](https://github.com/astral-sh/ruff/pull/28164))
- \[`pyupgrade`\] Skip `TypeVarTuple` and `ParamSpec` conversions with bounds or constraints (`UP040`, `UP046`, `UP047`) ([#28505](https://github.com/astral-sh/ruff/pull/28505))
### Rule changes
- Add support for `__lazy_modules__` ([#28459](https://github.com/astral-sh/ruff/pull/28459))
- Recognize PEP-728 `TypedDict` class keywords ([#28533](https://github.com/astral-sh/ruff/pull/28533))
- Recognize quoted types in `typing.TypeForm` ([#28507](https://github.com/astral-sh/ruff/pull/28507))
- Support conditional assignment to `__lazy_modules__` ([#28491](https://github.com/astral-sh/ruff/pull/28491))
- \[`flake8-type-checking`\] Prefer lazy imports over `TYPE_CHECKING` on Python 3.15 and later (`TC001`, `TC002`, `TC003`) ([#28541](https://github.com/astral-sh/ruff/pull/28541))
- \[`pyupgrade`\] Make the fix for `UP040` always unsafe ([#28526](https://github.com/astral-sh/ruff/pull/28526))
- \[`pyupgrade`\] Stop recommending deprecated `ByteString` aliases (`UP035`) ([#28498](https://github.com/astral-sh/ruff/pull/28498))
- \[`ruff`, `flake8-use-pathlib`\] Recognize the `parent_mode` argument (`RUF064`, `PTH103`) ([#28528](https://github.com/astral-sh/ruff/pull/28528))
- \[`ruff`\] Detect `\Z` in `pytest.raises()` match patterns (`RUF043`) ([#28598](https://github.com/astral-sh/ruff/pull/28598))
### CLI
- Use rule name and code in formatter incompatibility warnings ([#28571](https://github.com/astral-sh/ruff/pull/28571))
### Configuration
- \[`flake8-tidy-imports`\] Add `extend-banned-api` ([#28644](https://github.com/astral-sh/ruff/pull/28644))
### Contributors
- [@VedantMadane](https://github.com/VedantMadane)
- [@alzeph](https://github.com/alzeph)
- [@charliermarsh](https://github.com/charliermarsh)
- [@fredrikblau](https://github.com/fredrikblau)
- [@ntBre](https://github.com/ntBre)
- [@zsol](https://github.com/zsol)
- [@Aniket-a14](https://github.com/Aniket-a14)
- [@r-b-1](https://github.com/r-b-1)
## 0.16.7
Released on 2026-09-10.
### Preview features
- \[`ruff`\] Add rule for default values on method receivers (`RUF077`) ([#26700](https://github.com/astral-sh/ruff/pull/26700))
- \[`ruff`\] Recognize `re.prefixmatch` (`RUF039`, `RUF055`) ([#28311](https://github.com/astral-sh/ruff/pull/28311))
### Bug fixes
- Alternate nested quotes inside format spec interpolations ([#28259](https://github.com/astral-sh/ruff/pull/28259))
- \[`flake8-implicit-str-concat`\] Mark fix unsafe when it creates a docstring (`ISC003`) ([#27981](https://github.com/astral-sh/ruff/pull/27981))
- \[`flake8-tidy-imports`\] Skip fixes for multi-member imports (`TID254`) ([#26584](https://github.com/astral-sh/ruff/pull/26584))
- \[`pylint`\] Gate `ImportCycleError` on Python 3.15 (`PLW0133`) ([#28310](https://github.com/astral-sh/ruff/pull/28310))
### Rule changes
- Correct `D211` and `D203` rule conflict diagnostic ([#28444](https://github.com/astral-sh/ruff/pull/28444))
- Recognize `slice` and `frozendict` generics ([#28477](https://github.com/astral-sh/ruff/pull/28477))
- Stop defining `__cached__` for Python 3.15 ([#28476](https://github.com/astral-sh/ruff/pull/28476))
- \[`pyupgrade`\] Stop recommending removed `typing.no_type_check_decorator` (`UP035`) ([#28475](https://github.com/astral-sh/ruff/pull/28475))
### Performance
- Reuse parser name lookups when interning ([#28399](https://github.com/astral-sh/ruff/pull/28399))
- Speed up inherited configuration resolution ([#28299](https://github.com/astral-sh/ruff/pull/28299))
### Documentation
- Fix `line-length` path in `--config` example ([#28392](https://github.com/astral-sh/ruff/pull/28392))
- Remove the "Who’s Using Ruff?" list ([#28455](https://github.com/astral-sh/ruff/pull/28455))
### Other changes
- Embed archive checksums in the shell installer ([#28281](https://github.com/astral-sh/ruff/pull/28281))
### Contributors
- [@The-Compiler](https://github.com/The-Compiler)
- [@mdiniz97](https://github.com/mdiniz97)
- [@zsol](https://github.com/zsol)
- [@gorewilliams](https://github.com/gorewilliams)
- [@RafaelJohn9](https://github.com/RafaelJohn9)
- [@qatcod](https://github.com/qatcod)
- [@zanieb](https://github.com/zanieb)
- [@MichaReiser](https://github.com/MichaReiser)
- [@ntBre](https://github.com/ntBre)
- [@charliermarsh](https://github.com/charliermarsh)
- [@nightt5879](https://github.com/nightt5879)
- [@jonathandung](https://github.com/jonathandung)
- [@jogo-openai](https://github.com/jogo-openai)
## 0.16.6
Released on 2026-09-03.
### Preview features
- Move `pytest-fixture-autouse` to the `restriction` category ([#28219](https://github.com/astral-sh/ruff/pull/28219))
- \[`flake8-pytest-style`\] Add an autofix for `PT020` ([#27993](https://github.com/astral-sh/ruff/pull/27993))
- \[`flake8-tidy-imports`\] Prevent fix loop between `TID254` and `TID255` ([#28262](https://github.com/astral-sh/ruff/pull/28262))
- \[`isort`\] Exclude pragma comments from line length calculation (`I001`) ([#27313](https://github.com/astral-sh/ruff/pull/27313))
### Bug fixes
- Validate unary expressions when parsing ([#28233](https://github.com/astral-sh/ruff/pull/28233))
- \[`flake8-async`, `pylint`\] Recognize `builtins.open` (`ASYNC230`, `PLW1514`) ([#28021](https://github.com/astral-sh/ruff/pull/28021))
- \[`flake8-bugbear`\] Fix panic on `match` subjects (`B031`) ([#27781](https://github.com/astral-sh/ruff/pull/27781))
- \[`flake8-datetimez`\] Reject `tzinfo=None` for `datetime` bounds (`DTZ901`) ([#28022](https://github.com/astral-sh/ruff/pull/28022))
- \[`flake8-pytest-style`\] Avoid duplicate `PT017` diagnostics ([#27918](https://github.com/astral-sh/ruff/pull/27918))
- \[`ruff`\] Remove `lint.external` hint for Ruff-specific suppressions (`RUF102`) ([#27923](https://github.com/astral-sh/ruff/pull/27923))
### Rule changes
- \[`flake8-use-pathlib`\] Add display-only fix for `os.listdir` (`PTH208`) ([#28027](https://github.com/astral-sh/ruff/pull/28027))
### Documentation
- Add another example and glob reference for `lint.per-file-ignores` ([#28106](https://github.com/astral-sh/ruff/pull/28106))
- Add duplicate work guidance ([#28229](https://github.com/astral-sh/ruff/pull/28229))
- \[`flake8-async`\] Document thread offloading (`ASYNC240`) ([#28008](https://github.com/astral-sh/ruff/pull/28008))
- \[`pyupgrade`\] Clarify default `encoding` argument handling (`UP012`) ([#27315](https://github.com/astral-sh/ruff/pull/27315))
### Other changes
- Allow unary plus in match patterns on Python 3.15 ([#28231](https://github.com/astral-sh/ruff/pull/28231))
### Contributors
- [@flying-sheep](https://github.com/flying-sheep)
- [@pikammmmm](https://github.com/pikammmmm)
- [@fly1d](https://github.com/fly1d)
- [@waterWang](https://github.com/waterWang)
- [@Pierre-Sassoulas](https://github.com/Pierre-Sassoulas)
- [@ntBre](https://github.com/ntBre)
- [@jelle-openai](https://github.com/jelle-openai)
- [@ericbuehl](https://github.com/ericbuehl)
- [@tjkuson](https://github.com/tjkuson)
- [@AbhinavMir](https://github.com/AbhinavMir)
- [@Whning0513](https://github.com/Whning0513)
- [@chirizxc](https://github.com/chirizxc)
## 0.16.5
Released on 2026-08-27.
### Preview features
- Allow rules without codes ([#28049](https://github.com/astral-sh/ruff/pull/28049))
- Introduce category selectors ([#27666](https://github.com/astral-sh/ruff/pull/27666))
- Update preview default rules and categories ([#27877](https://github.com/astral-sh/ruff/pull/27877))
### Bug fixes
- \[`flake8-async`\] Detect blocking generic HTTP requests (`ASYNC210`) ([#28024](https://github.com/astral-sh/ruff/pull/28024))
- \[`flake8-datetimez`\] Allow timezone-safe `strptime` chains (`DTZ007`) ([#28023](https://github.com/astral-sh/ruff/pull/28023))
- \[`flake8-simplify`\] Respect side effects in `lambda` defaults (`SIM401`) ([#28000](https://github.com/astral-sh/ruff/pull/28000))
### Server
- Fix duplicated "of" in `ClientOptions` doc comment ([#27978](https://github.com/astral-sh/ruff/pull/27978))
### Documentation
- Document rule acceptance guidelines ([#27910](https://github.com/astral-sh/ruff/pull/27910))
- Document the new category selectors ([#27906](https://github.com/astral-sh/ruff/pull/27906))
### Contributors
- [@AlexWaygood](https://github.com/AlexWaygood)
- [@sharkdp](https://github.com/sharkdp)
- [@jelle-openai](https://github.com/jelle-openai)
- [@charliermarsh](https://github.com/charliermarsh)
- [@ntBre](https://github.com/ntBre)
- [@aarushkandukoori](https://github.com/aarushkandukoori)
## 0.16.4
Released on 2026-08-20.
### Preview features
- \[`flake8-use-pathlib`\] Add autofix for `PTH116` ([#26460](https://github.com/astral-sh/ruff/pull/26460))
- \[`refurb`\] Restrict `delete-full-slice` to lists (`FURB131`) ([#27711](https://github.com/astral-sh/ruff/pull/27711))
- \[`refurb`\] Skip `FURB101` and `FURB103` when the `open` argument is a file descriptor ([#27643](https://github.com/astral-sh/ruff/pull/27643))
### Bug fixes
- Fix `InvalidInstruction` on Windows CPUs that do not support `POPCNT` ([#27803](https://github.com/astral-sh/ruff/pull/27803))
- \[`pyflakes`\] Emit semantic syntax errors in string type definitions as `F722` ([#27835](https://github.com/astral-sh/ruff/pull/27835))
- \[`pylint`\] Allow `os._exit` imports in `import-private-name` (`PLC2701`) ([#27738](https://github.com/astral-sh/ruff/pull/27738))
### Rule changes
- [syntax-errors] Align mixed t-string/bytes error message with CPython 3.14 ([#27766](https://github.com/astral-sh/ruff/pull/27766))
- \[`ruff`\] Add `ctypes.LittleEndianStructure` and related types to existing exception (`RUF012`) ([#27753](https://github.com/astral-sh/ruff/pull/27753))
- [syntax-errors] Detect duplicate keyword arguments ([#17804](https://github.com/astral-sh/ruff/pull/17804))
- [syntax-errors] Detect parameters declared `nonlocal` ([#27628](https://github.com/astral-sh/ruff/pull/27628))
### Server
- Offer display-only fixes and mark safe fixes preferred ([#27807](https://github.com/astral-sh/ruff/pull/27807))
- Support pull diagnostics for notebook cells ([#27779](https://github.com/astral-sh/ruff/pull/27779))
### Documentation
- Add default indicator to rules table ([#27724](https://github.com/astral-sh/ruff/pull/27724))
- Fix broken link to Python docs ([#27757](https://github.com/astral-sh/ruff/pull/27757))
### Other changes
- Fix s390x stacker assembly in release builds ([#27776](https://github.com/astral-sh/ruff/pull/27776))
- Guarantee minimum stack size when parsing a module, standalone expression, and suites ([#25464](https://github.com/astral-sh/ruff/pull/25464))
- Reduce configuration deserialization code size ([#27924](https://github.com/astral-sh/ruff/pull/27924))
- Check packed AST index bounds ([#27849](https://github.com/astral-sh/ruff/pull/27849))
### Contributors
- [@AbhinavMir](https://github.com/AbhinavMir)
- [@eduardorittner](https://github.com/eduardorittner)
- [@royb3](https://github.com/royb3)
- [@MichaReiser](https://github.com/MichaReiser)
- [@carljm](https://github.com/carljm)
- [@rosstitmarsh](https://github.com/rosstitmarsh)
- [@ntBre](https://github.com/ntBre)
- [@zaniebot](https://github.com/zaniebot)
- [@ewdurbin](https://github.com/ewdurbin)
- [@woodruffw](https://github.com/woodruffw)
- [@Sacrimento](https://github.com/Sacrimento)
- [@lakshayxi](https://github.com/lakshayxi)
- [@WhiteFox0-0](https://github.com/WhiteFox0-0)
- [@baltasarblanco](https://github.com/baltasarblanco)
## 0.16.3
Released on 2026-08-13.
### Preview features
- \[`pylint`\] Fix false negatives on negative numbers (`PLR6104`) ([#27251](https://github.com/astral-sh/ruff/pull/27251))
- \[`pyupgrade`\] Add rule to replace `while 1` with `while True` (`UP048`) ([#27190](https://github.com/astral-sh/ruff/pull/27190))
### Bug fixes
- \[`flake8-bandit`\] Also check keyword arguments (`S602`, `S603`, `S607`, `S609`) ([#27687](https://github.com/astral-sh/ruff/pull/27687))
- \[`pylint`\] Allow `continue` in `finally` on Python 3.8 ([#27626](https://github.com/astral-sh/ruff/pull/27626))
- \[`pylint`\] Fix `PLE1307` false positive with bools ([#27651](https://github.com/astral-sh/ruff/pull/27651))
- \[`pylint`\] Fix false positives and negatives with `%b` format character (`PLE1300`, `PLE1307`) ([#27560](https://github.com/astral-sh/ruff/pull/27560))
- \[`pylint`\] Improve handling of concatenated strings (`PLE1300`) ([#27659](https://github.com/astral-sh/ruff/pull/27659))
### Rule changes
- \[`numpy`\] Make `np.chararray` autofix backwards-compatible (`NPY201`) ([#27527](https://github.com/astral-sh/ruff/pull/27527))
### Performance
- Enable PGO for Linux x86-64 Ruff releases ([#27570](https://github.com/astral-sh/ruff/pull/27570))
- Enable PGO for Linux ARM64 Ruff releases ([#27574](https://github.com/astral-sh/ruff/pull/27574))
- Enable PGO for Windows x86-64 Ruff releases ([#27573](https://github.com/astral-sh/ruff/pull/27573))
- Enable PGO for macOS ARM64 Ruff releases ([#27572](https://github.com/astral-sh/ruff/pull/27572))
- Reduce `Expr` size to 64 bytes ([#27591](https://github.com/astral-sh/ruff/pull/27591))
### CLI
- Hyperlink rule codes in `ruff check --statistics` output ([#27646](https://github.com/astral-sh/ruff/pull/27646))
### Documentation
- \[`ruff`\] Also suggest `asyncio.TaskGroup` (`RUF006`) ([#27461](https://github.com/astral-sh/ruff/pull/27461))
### Other changes
- Use mimalloc v3 ([#27586](https://github.com/astral-sh/ruff/pull/27586))
### Contributors
- [@Andrej730](https://github.com/Andrej730)
- [@alonfaraj](https://github.com/alonfaraj)
- [@romero-deshaw](https://github.com/romero-deshaw)
- [@Avasam](https://github.com/Avasam)
- [@tjkuson](https://github.com/tjkuson)
- [@charliermarsh](https://github.com/charliermarsh)
- [@chirizxc](https://github.com/chirizxc)
- [@saberoueslati](https://github.com/saberoueslati)
- [@MichaReiser](https://github.com/MichaReiser)
## 0.16.2
Released on 2026-08-06.
### Bug fixes
- \[`flake8-pyi`\] Avoid false positives on `singledispatch` functions (`PYI041`) ([#27335](https://github.com/astral-sh/ruff/pull/27335))
### Server
- Register formatting capabilities dynamically to exclude TOML files ([#27332](https://github.com/astral-sh/ruff/pull/27332))
### Contributors
- [@MeGaGiGaGon](https://github.com/MeGaGiGaGon)
- [@charliermarsh](https://github.com/charliermarsh)
- [@epage](https://github.com/epage)
- [@sharkdp](https://github.com/sharkdp)
- [@ntBre](https://github.com/ntBre)
## 0.16.1
Released on 2026-07-30.
### Preview features
- Add an option to opt out of human-readable names ([#27160](https://github.com/astral-sh/ruff/pull/27160))
- \[`flake8-pytest-style`\] Make fixes safe by default and unsafe only when comments are present (`PT018`) ([#27201](https://github.com/astral-sh/ruff/pull/27201))
- \[`pyupgrade`\] Skip fix when a defaulted `TypeVar` precedes a non-defaulted one (`UP040`, `UP046`, `UP047`) ([#27133](https://github.com/astral-sh/ruff/pull/27133))
- \[`ruff`\] Fix false positive with unpacked arguments (`RUF065`) ([#26959](https://github.com/astral-sh/ruff/pull/26959))
### Bug fixes
- Bump `gen-lsp-types` to gracefully handle unknown enumeration values in LSP messages ([#27230](https://github.com/astral-sh/ruff/pull/27230))
- \[`flake8-bugbear`\] Mark `range` as immutable (`B008`) ([#27247](https://github.com/astral-sh/ruff/pull/27247))
- \[`flake8-comprehensions`\] NFKC-normalize keyword names in `C408` fix ([#26813](https://github.com/astral-sh/ruff/pull/26813))
- \[`flake8-return`\] Fix false positive when variable is read in `finally` clause (`RET504`) ([#25441](https://github.com/astral-sh/ruff/pull/25441))
- \[`pydocstyle`\] Skip section detection inside RST directive bodies (`D214`, `D405`, `D413`) ([#23635](https://github.com/astral-sh/ruff/pull/23635))
- \[`refurb`\] Parenthesize `yield` arguments in the `FURB192` fix ([#27192](https://github.com/astral-sh/ruff/pull/27192))
### Rule changes
- \[`flake8-pytest-style`\] Mark `PT022` fixes as unsafe ([#26440](https://github.com/astral-sh/ruff/pull/26440))
- \[`refurb`\] Mark fixes that remove unknown separators as unsafe (`FURB105`) ([#27200](https://github.com/astral-sh/ruff/pull/27200))
### Server
- Fix indexing of excluded nested Ruff workspaces ([#27303](https://github.com/astral-sh/ruff/pull/27303))
- Lint TOML files in the LSP ([#26862](https://github.com/astral-sh/ruff/pull/26862))
### Documentation
- Cover `pycon` Markdown formatting ([#27153](https://github.com/astral-sh/ruff/pull/27153))
- \[`flake8-bandit`\] Document `TYPE_CHECKING` exception (`S101`) ([#27004](https://github.com/astral-sh/ruff/pull/27004))
- \[`flake8-import-conventions`\] Document that `extend-aliases` can override default aliases ([#27191](https://github.com/astral-sh/ruff/pull/27191))
- \[`pylint`\] Add missing fix safety gotchas for `non-augmented-assignment` (`PLR6104`) ([#27250](https://github.com/astral-sh/ruff/pull/27250))
### Other changes
- Reduce syntax error noise by swallowing dedents like indents ([#27170](https://github.com/astral-sh/ruff/pull/27170))
- Vendor latest annotate-snippets ([#27033](https://github.com/astral-sh/ruff/pull/27033))
### Contributors
- [@bxff](https://github.com/bxff)
- [@anishgirianish](https://github.com/anishgirianish)
- [@Avasam](https://github.com/Avasam)
- [@epage](https://github.com/epage)
- [@LHMQ878](https://github.com/LHMQ878)
- [@MichaReiser](https://github.com/MichaReiser)
- [@ntBre](https://github.com/ntBre)
- [@HarshalPatel1972](https://github.com/HarshalPatel1972)
- [@mjpieters](https://github.com/mjpieters)
- [@joshuavetos](https://github.com/joshuavetos)
- [@jesco-absolute](https://github.com/jesco-absolut)
- [@vidigoat](https://github.com/vidigoat)
- [@baltasarblanco](https://github.com/baltasarblanco)
- [@ribru17](https://github.com/ribru17)
- [@oh-summy](https://github.com/oh-summy)
- [@Jayashanker-Padishala](https://github.com/Jayashanker-Padishala)
## 0.16.0
Released on 2026-07-23.
Check out the [blog post](https://astral.sh/blog/ruff-v0.16.0) for a migration
guide and overview of the changes!
Released on 2026-10-09.
### Breaking changes
- Ruff now enables a much larger set of rules by default (413, up from 59). See the blog post for
more details and the new [Default Rules](https://docs.astral.sh/ruff/default-rules/) page for a
full listing of the enabled rules. Note that this is primarily an expansion, but 18 of the more
opinionated pycodestyle (`E`) and pyflakes (`F`) rules have been removed from the default set:
`E401`, `E402`, `E701`, `E702`, `E703`, `E711`, `E712`, `E713`, `E714`, `E721`, `E731`, `E741`,
`E742`, `E743`, `F403`, `F405`, `F406`, and `F722`.
- Update the default and latest Python versions for 3.15 ([#28792](https://github.com/astral-sh/ruff/pull/28792))
- Ruff can now format Python code blocks in Markdown files and will do this by default. See the
[documentation](https://docs.astral.sh/ruff/formatter/#markdown-code-formatting) for more details.
Ruff now defaults to Python 3.11 instead of 3.10 when no Python version is configured through
[`target-version`](https://docs.astral.sh/ruff/settings/#target-version) or
[`requires-python`](https://docs.astral.sh/ruff/configuration/#inferring-the-python-version). When
checking for syntax errors without a configured Python version, Ruff now defaults to Python 3.15
instead of 3.14.
- Ruff now supports `ruff: ignore` comments at the ends of lines, like `noqa` comments, or on the line preceding a diagnostic. For example, these both suppress an [`unused-import`](https://docs.astral.sh/ruff/rules/unused-import/) (`F401`) diagnostic:
- Update the default rule set ([#28786](https://github.com/astral-sh/ruff/pull/28786))
```py
import math # ruff: ignore[F401]
Several of the `flake8-datetimez` rules
([`DTZ001`](https://docs.astral.sh/ruff/rules/call-datetime-without-tzinfo/),
[`DTZ005`](https://docs.astral.sh/ruff/rules/call-datetime-now-without-tzinfo/),
[`DTZ006`](https://docs.astral.sh/ruff/rules/call-datetime-fromtimestamp/),
[`DTZ007`](https://docs.astral.sh/ruff/rules/call-datetime-strptime-without-zone/),
[`DTZ011`](https://docs.astral.sh/ruff/rules/call-date-today/),
[`DTZ012`](https://docs.astral.sh/ruff/rules/call-date-fromtimestamp/), and
[`DTZ901`](https://docs.astral.sh/ruff/rules/datetime-min-max/)) are no longer enabled by default,
while [`undefined-local-with-nested-import-star-usage`](https://docs.astral.sh/ruff/rules/undefined-local-with-nested-import-star-usage/)
(`F406`), which corresponds to a syntax error, is now enabled by default.
# ruff: ignore[F401]
import os
```
- Update Rust crate quick-junit to 0.8.0 ([#27295](https://github.com/astral-sh/ruff/pull/27295))
- Fixes are now shown in `check` and `format --check` output:
JUnit output now uses a `skipped` attribute instead of `disabled` on `<testsuite>` elements and
includes a `skipped` attribute on the root `<testsuites>` element.
````console
❯ ruff format --check .
unformatted: File would be reformatted
--> try.md:1:1
|
1 | ```python
- import math
2 + import math
3 | ```
|
- \[`flake8-import-conventions`\] Add `datetime as dt` as a conventional alias (`ICN001`) ([#28790](https://github.com/astral-sh/ruff/pull/28790))
1 file would be reformatted
````
- Support Unicode dummy variable names ([#28722](https://github.com/astral-sh/ruff/pull/28722))
This example also shows off the Markdown formatting.
The default [`lint.dummy-variable-rgx`](https://docs.astral.sh/ruff/settings/#lint_dummy-variable-rgx)
now recognizes underscore-prefixed Unicode names, such as `_次`, as dummy variables.
- `format --check` now supports the same output formats as the linter, including the `github` and
`gitlab` outputs for rendering annotations in CI:
- Update to Unicode 17 ([#21229](https://github.com/astral-sh/ruff/pull/21229), [#28784](https://github.com/astral-sh/ruff/pull/28784))
```console
❯ ruff format --check --output-format github .
::error title=ruff (unformatted),file=try.md,line=2,col=8,endLine=2,endColumn=10::try.md:2:8: unformatted: File would be reformatted
```
Ruff now uses Unicode 17 data for identifier normalization and named character escapes (`"\N{...}"`).
See the CLI help or [documentation](https://docs.astral.sh/ruff/settings/#output-format) for the
full list of supported formats.
- Always show unsafe and display-only fixes in the CLI ([#27810](https://github.com/astral-sh/ruff/pull/27810))
- The `filename`, `location`, `end_location`, `fix.edits[].location`, and `fix.edits[].end_location`
fields in the JSON output format may now be `null` rather than defaulting to the empty string and
row 1, column 1, respectively.
The default `full` output format now shows unsafe fixes and suggestions requiring manual review,
regardless of the [`unsafe-fixes`](https://docs.astral.sh/ruff/settings/#unsafe-fixes) setting.
Actually applying unsafe fixes still requires explicit opt-in.
- Remove the Python dependency from conda-forge builds ([conda-forge/ruff-feedstock#361](https://github.com/conda-forge/ruff-feedstock/pull/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 ruff` and `import ruff` will no longer work. Use `ruff` directly from
`PATH` instead. PyPI installations and those from the standalone installer are unaffected.
- Remove support for ruff-lsp ([#28750](https://github.com/astral-sh/ruff/pull/28750))
Support for `ruff-lsp`, the legacy Python language server [deprecated in Ruff
v0.9.5](https://github.com/astral-sh/ruff/releases/tag/0.9.5), has been removed. The Ruff VS Code
extension now always uses the native language server; `ruff.nativeServer` is deprecated and
ignored. See the [migration guide](https://docs.astral.sh/ruff/editors/migration/).
### Stabilization
The following rules have been stabilized and are no longer in preview:
- [`airflow3-incompatible-function-signature`](https://docs.astral.sh/ruff/rules/airflow3-incompatible-function-signature)
(`AIR303`)
- [`missing-copyright-notice`](https://docs.astral.sh/ruff/rules/missing-copyright-notice)
(`CPY001`)
- [`unnecessary-from-float`](https://docs.astral.sh/ruff/rules/unnecessary-from-float) (`FURB164`)
- [`sorted-min-max`](https://docs.astral.sh/ruff/rules/sorted-min-max) (`FURB192`)
- [`implicit-string-concatenation-in-collection-literal`](https://docs.astral.sh/ruff/rules/implicit-string-concatenation-in-collection-literal)
(`ISC004`)
- [`log-exception-outside-except-handler`](https://docs.astral.sh/ruff/rules/log-exception-outside-except-handler)
(`LOG004`)
- [`invalid-bool-return-type`](https://docs.astral.sh/ruff/rules/invalid-bool-return-type)
(`PLE0304`)
- [`too-many-positional-arguments`](https://docs.astral.sh/ruff/rules/too-many-positional-arguments)
(`PLR0917`)
- [`stop-iteration-return`](https://docs.astral.sh/ruff/rules/stop-iteration-return) (`PLR1708`)
- [`none-not-at-end-of-union`](https://docs.astral.sh/ruff/rules/none-not-at-end-of-union)
(`RUF036`)
- [`access-annotations-from-class-dict`](https://docs.astral.sh/ruff/rules/access-annotations-from-class-dict)
(`RUF063`)
- [`duplicate-entry-in-dunder-all`](https://docs.astral.sh/ruff/rules/duplicate-entry-in-dunder-all)
(`RUF068`)
- [`lazy-import-mismatch`](https://docs.astral.sh/ruff/rules/lazy-import-mismatch) (`TID254`)
- [`lazy-import-immediately-resolved`](https://docs.astral.sh/ruff/rules/lazy-import-immediately-resolved)
(`TID255`)
- [`os-path-commonprefix`](https://docs.astral.sh/ruff/rules/os-path-commonprefix) (`RUF071`)
The following behaviors have been stabilized:
- [`blind-except`](https://docs.astral.sh/ruff/rules/blind-except) (`BLE001`) is now suppressed when
the exception is logged via `logging` methods other than `critical`, `error` and `exception`.
- [`future-required-type-annotation`](https://docs.astral.sh/ruff/rules/future-required-type-annotation)
(`FA102`) now checks for additional [PEP 585](https://peps.python.org/pep-0585/)-compatible
APIs, such as those from `collections.abc`.
- [`f-string-in-get-text-func-call`](https://docs.astral.sh/ruff/rules/f-string-in-get-text-func-call)
(`INT001`),
[`format-in-get-text-func-call`](https://docs.astral.sh/ruff/rules/format-in-get-text-func-call)
(`INT002`), and
[`printf-in-get-text-func-call`](https://docs.astral.sh/ruff/rules/printf-in-get-text-func-call)
(`INT003`) now check for additional common ways of using the `gettext` module, such as assigning
it to `builtins._`.
- [`suspicious-url-open-usage`](https://docs.astral.sh/ruff/rules/suspicious-url-open-usage)
(`S310`) now resolves local string literal bindings to avoid more false positives.
- [`snmp-insecure-version`](https://docs.astral.sh/ruff/rules/snmp-insecure-version) (`S508`) and
[`snmp-weak-cryptography`](https://docs.astral.sh/ruff/rules/snmp-weak-cryptography) (`S509`) now
support the recommended API from newer versions of PySNMP.
- [`typing-text-str-alias`](https://docs.astral.sh/ruff/rules/typing-text-str-alias) (`UP019`) now
recognizes `typing_extensions.Text` in addition to `typing.Text`.
- The formatter, [`unsorted-imports`](https://docs.astral.sh/ruff/rules/unsorted-imports/) (`I001`),
[`line-too-long`](https://docs.astral.sh/ruff/rules/line-too-long/) (`E501`), and
[`doc-line-too-long`](https://docs.astral.sh/ruff/rules/doc-line-too-long/) (`W505`) now
consistently ignore trailing pragma comments when computing line length. This resolved several
bugs involving interactions between these rules
([#27313](https://github.com/astral-sh/ruff/pull/27313)) but may also cause existing imports to be
reformatted and was thus classified as a breaking change.
### Preview features
- \[`pyupgrade`\] Fix false positive with `TypeVar` default before Python 3.13 (`UP040`) ([#26888](https://github.com/astral-sh/ruff/pull/26888))
- \[`flake8-bugbear`\] Report the method name and a more precise range (`B005`) ([#27050](https://github.com/astral-sh/ruff/pull/27050))
- \[`refurb`\] Mark fix unsafe and move to `suspicious` (`FURB152`) ([#28405](https://github.com/astral-sh/ruff/pull/28405))
- \[`ruff`\] Allow docstrings in strict mode (`RUF067`) ([#28679](https://github.com/astral-sh/ruff/pull/28679))
### Bug fixes
- \[`ruff`\] Fix missing check on unrecognized early bound (`RUF016`) ([#26986](https://github.com/astral-sh/ruff/pull/26986))
- \[`flake8-builtins`\] Expand checks in class scopes (`A001`) ([#29076](https://github.com/astral-sh/ruff/pull/29076))
- \[`flake8-self`\] Allow private access on `object.__new__(cls)` instances (`SLF001`) ([#29001](https://github.com/astral-sh/ruff/pull/29001))
- \[`flake8-tidy-imports`\] Skip `lazy-import-mismatch` in stubs (`TID254`) ([#29095](https://github.com/astral-sh/ruff/pull/29095))
- \[`flake8-type-checking`\] Add the notion of runtime-ambiguous references ([#26508](https://github.com/astral-sh/ruff/pull/26508))
- \[`flake8-type-checking`\] Never flag annotations in function scopes ([#29183](https://github.com/astral-sh/ruff/pull/29183))
- \[`pyflakes`\] Mark the fix as unsafe when it creates a docstring (`F541`) ([#28258](https://github.com/astral-sh/ruff/pull/28258))
- \[`pylint`\] Preserve trailing comments in `useless-return` fix (`PLR1711`) ([#29180](https://github.com/astral-sh/ruff/pull/29180))
- \[`ruff`\] Avoid false positive when `pytest.raises` is used in a `with` statement (`RUF061`) ([#28186](https://github.com/astral-sh/ruff/pull/28186))
### Rule changes
- Insert a space after the colon in Ruff suppression comments ([#27123](https://github.com/astral-sh/ruff/pull/27123))
### Performance
- \[`pyupgrade`\] Speed up `unnecessary-future-import` (`UP010`) ([#27047](https://github.com/astral-sh/ruff/pull/27047))
### Documentation
- \[`ruff`\] Add missing period in "Why is this bad?" section (`RUF200`) ([#26930](https://github.com/astral-sh/ruff/pull/26930))
- \[`flake8-simplify`\] Clarify `os.environ` behavior on Windows (`SIM112`) ([#26972](https://github.com/astral-sh/ruff/pull/26972))
- \[`pydocstyle`\] Document fix safety (`D400`) ([#26971](https://github.com/astral-sh/ruff/pull/26971))
- \[`pyupgrade`\] Suggest `typing.TypeForm` on Python 3.15 (`UP035`) ([#29084](https://github.com/astral-sh/ruff/pull/29084))
### Contributors
- [@jonathandung](https://github.com/jonathandung)
- [@Joosboy](https://github.com/Joosboy)
- [@MichaReiser](https://github.com/MichaReiser)
- [@Andrej730](https://github.com/Andrej730)
- [@ntBre](https://github.com/ntBre)
- [@zaniebot](https://github.com/zaniebot)
- [@DeviousCardi](https://github.com/DeviousCardi)
- [@hugehoo](https://github.com/hugehoo)
- [@nekomario28](https://github.com/nekomario28)
- [@Daverball](https://github.com/Daverball)
- [@Viicos](https://github.com/Viicos)
- [@DebadityaHait](https://github.com/DebadityaHait)
- [@saberoueslati](https://github.com/saberoueslati)
- [@baltasarblanco](https://github.com/baltasarblanco)
- [@yxshee](https://github.com/yxshee)
- [@lognd](https://github.com/lognd)
- [@dor-sr](https://github.com/dor-sr)
## 0.16.x
See [changelogs/0.16.x](./changelogs/0.16.x.md)
## 0.15.x
Generated
+41 -41
View File
@@ -3084,7 +3084,7 @@ dependencies = [
[[package]]
name = "ruff"
version = "0.16.10"
version = "0.17.0"
dependencies = [
"anyhow",
"assert_fs",
@@ -3148,7 +3148,7 @@ dependencies = [
[[package]]
name = "ruff_annotate_snippets"
version = "0.0.16"
version = "0.0.17"
dependencies = [
"anstream 1.0.0",
"anstyle",
@@ -3192,7 +3192,7 @@ dependencies = [
[[package]]
name = "ruff_cache"
version = "0.0.16"
version = "0.0.17"
dependencies = [
"char_str",
"filetime",
@@ -3206,14 +3206,14 @@ dependencies = [
[[package]]
name = "ruff_command_line"
version = "0.0.16"
version = "0.0.17"
dependencies = [
"argfile",
]
[[package]]
name = "ruff_db"
version = "0.0.16"
version = "0.0.17"
dependencies = [
"anstyle",
"arc-swap",
@@ -3304,7 +3304,7 @@ dependencies = [
[[package]]
name = "ruff_diagnostics"
version = "0.0.16"
version = "0.0.17"
dependencies = [
"get-size2",
"is-macro",
@@ -3314,7 +3314,7 @@ dependencies = [
[[package]]
name = "ruff_formatter"
version = "0.0.16"
version = "0.0.17"
dependencies = [
"drop_bomb",
"ruff_cache",
@@ -3330,7 +3330,7 @@ dependencies = [
[[package]]
name = "ruff_graph"
version = "0.0.16"
version = "0.0.17"
dependencies = [
"anyhow",
"clap",
@@ -3351,7 +3351,7 @@ dependencies = [
[[package]]
name = "ruff_index"
version = "0.0.16"
version = "0.0.17"
dependencies = [
"get-size2",
"ruff_macros",
@@ -3361,7 +3361,7 @@ dependencies = [
[[package]]
name = "ruff_linter"
version = "0.16.10"
version = "0.17.0"
dependencies = [
"aho-corasick",
"anyhow",
@@ -3424,7 +3424,7 @@ dependencies = [
[[package]]
name = "ruff_macros"
version = "0.0.16"
version = "0.0.17"
dependencies = [
"heck",
"itertools 0.15.0",
@@ -3437,7 +3437,7 @@ dependencies = [
[[package]]
name = "ruff_markdown"
version = "0.0.16"
version = "0.0.17"
dependencies = [
"insta",
"regex",
@@ -3468,14 +3468,14 @@ dependencies = [
[[package]]
name = "ruff_memory_usage"
version = "0.0.16"
version = "0.0.17"
dependencies = [
"get-size2",
]
[[package]]
name = "ruff_notebook"
version = "0.0.16"
version = "0.0.17"
dependencies = [
"anyhow",
"rand 0.10.2",
@@ -3491,14 +3491,14 @@ dependencies = [
[[package]]
name = "ruff_options_metadata"
version = "0.0.16"
version = "0.0.17"
dependencies = [
"serde",
]
[[package]]
name = "ruff_python_ast"
version = "0.0.16"
version = "0.0.17"
dependencies = [
"aho-corasick",
"arrayvec",
@@ -3535,7 +3535,7 @@ dependencies = [
[[package]]
name = "ruff_python_codegen"
version = "0.0.16"
version = "0.0.17"
dependencies = [
"ruff_python_ast",
"ruff_python_literal",
@@ -3547,7 +3547,7 @@ dependencies = [
[[package]]
name = "ruff_python_edits"
version = "0.0.16"
version = "0.0.17"
dependencies = [
"ruff_python_ast",
"ruff_python_parser",
@@ -3557,7 +3557,7 @@ dependencies = [
[[package]]
name = "ruff_python_formatter"
version = "0.0.16"
version = "0.0.17"
dependencies = [
"anyhow",
"clap",
@@ -3590,7 +3590,7 @@ dependencies = [
[[package]]
name = "ruff_python_importer"
version = "0.0.16"
version = "0.0.17"
dependencies = [
"anyhow",
"insta",
@@ -3605,7 +3605,7 @@ dependencies = [
[[package]]
name = "ruff_python_index"
version = "0.0.16"
version = "0.0.17"
dependencies = [
"ruff_python_ast",
"ruff_python_parser",
@@ -3616,7 +3616,7 @@ dependencies = [
[[package]]
name = "ruff_python_literal"
version = "0.0.16"
version = "0.0.17"
dependencies = [
"bitflags 2.13.1",
"icu_normalizer",
@@ -3627,7 +3627,7 @@ dependencies = [
[[package]]
name = "ruff_python_parser"
version = "0.0.16"
version = "0.0.17"
dependencies = [
"anyhow",
"bitflags 2.13.1",
@@ -3658,7 +3658,7 @@ dependencies = [
[[package]]
name = "ruff_python_semantic"
version = "0.0.16"
version = "0.0.17"
dependencies = [
"bitflags 2.13.1",
"insta",
@@ -3679,7 +3679,7 @@ dependencies = [
[[package]]
name = "ruff_python_stdlib"
version = "0.0.16"
version = "0.0.17"
dependencies = [
"bitflags 2.13.1",
"unicode-ident",
@@ -3687,7 +3687,7 @@ dependencies = [
[[package]]
name = "ruff_python_trivia"
version = "0.0.16"
version = "0.0.17"
dependencies = [
"itertools 0.15.0",
"memchr",
@@ -3710,7 +3710,7 @@ dependencies = [
[[package]]
name = "ruff_ranged_value"
version = "0.0.16"
version = "0.0.17"
dependencies = [
"get-size2",
"ruff_db",
@@ -3723,7 +3723,7 @@ dependencies = [
[[package]]
name = "ruff_server"
version = "0.0.16"
version = "0.0.17"
dependencies = [
"anyhow",
"crossbeam",
@@ -3767,7 +3767,7 @@ dependencies = [
[[package]]
name = "ruff_source_file"
version = "0.0.16"
version = "0.0.17"
dependencies = [
"get-size2",
"memchr",
@@ -3777,7 +3777,7 @@ dependencies = [
[[package]]
name = "ruff_text_size"
version = "0.0.16"
version = "0.0.17"
dependencies = [
"get-size2",
"schemars",
@@ -3788,7 +3788,7 @@ dependencies = [
[[package]]
name = "ruff_unicode_names2"
version = "0.0.16"
version = "0.0.17"
dependencies = [
"phf 0.11.3",
"rand 0.8.5",
@@ -3797,7 +3797,7 @@ dependencies = [
[[package]]
name = "ruff_unicode_names2_generator"
version = "0.0.16"
version = "0.0.17"
dependencies = [
"phf_codegen",
"rand 0.8.5",
@@ -3805,7 +3805,7 @@ dependencies = [
[[package]]
name = "ruff_wasm"
version = "0.16.10"
version = "0.17.0"
dependencies = [
"console_error_panic_hook",
"console_log",
@@ -3832,7 +3832,7 @@ dependencies = [
[[package]]
name = "ruff_workspace"
version = "0.0.16"
version = "0.0.17"
dependencies = [
"anyhow",
"colored",
@@ -4714,7 +4714,7 @@ dependencies = [
[[package]]
name = "ty_combine"
version = "0.0.16"
version = "0.0.17"
dependencies = [
"ordermap",
"ruff_db",
@@ -4795,7 +4795,7 @@ dependencies = [
[[package]]
name = "ty_module_resolver"
version = "0.0.16"
version = "0.0.17"
dependencies = [
"anyhow",
"camino",
@@ -4874,7 +4874,7 @@ dependencies = [
[[package]]
name = "ty_python_core"
version = "0.0.16"
version = "0.0.17"
dependencies = [
"anyhow",
"bitflags 2.13.1",
@@ -4909,7 +4909,7 @@ dependencies = [
[[package]]
name = "ty_python_semantic"
version = "0.0.16"
version = "0.0.17"
dependencies = [
"anyhow",
"bitflags 2.13.1",
@@ -5009,7 +5009,7 @@ dependencies = [
[[package]]
name = "ty_site_packages"
version = "0.0.16"
version = "0.0.17"
dependencies = [
"camino",
"colored",
@@ -5030,7 +5030,7 @@ dependencies = [
[[package]]
name = "ty_static"
version = "0.0.16"
version = "0.0.17"
dependencies = [
"ruff_macros",
]
@@ -5063,7 +5063,7 @@ dependencies = [
[[package]]
name = "ty_vendored"
version = "0.0.16"
version = "0.0.17"
dependencies = [
"path-slash",
"ruff_db",
+40 -40
View File
@@ -14,55 +14,55 @@ license = "MIT"
[workspace.dependencies]
char_str = { version = "0.0.4", default-features = false, features = ["std"] }
ruff = { version = "0.16.10", path = "crates/ruff" }
ruff_annotate_snippets = { version = "0.0.16", path = "crates/ruff_annotate_snippets" }
ruff_cache = { version = "0.0.16", path = "crates/ruff_cache" }
ruff_command_line = { version = "0.0.16", path = "crates/ruff_command_line" }
ruff_db = { version = "0.0.16", path = "crates/ruff_db", default-features = false }
ruff_diagnostics = { version = "0.0.16", path = "crates/ruff_diagnostics" }
ruff_formatter = { version = "0.0.16", path = "crates/ruff_formatter" }
ruff_graph = { version = "0.0.16", path = "crates/ruff_graph" }
ruff_index = { version = "0.0.16", path = "crates/ruff_index" }
ruff_linter = { version = "0.16.10", path = "crates/ruff_linter" }
ruff_macros = { version = "0.0.16", path = "crates/ruff_macros" }
ruff_markdown = { version = "0.0.16", path = "crates/ruff_markdown" }
ruff_memory_usage = { version = "0.0.16", path = "crates/ruff_memory_usage" }
ruff_notebook = { version = "0.0.16", path = "crates/ruff_notebook" }
ruff_options_metadata = { version = "0.0.16", path = "crates/ruff_options_metadata" }
ruff_python_ast = { version = "0.0.16", path = "crates/ruff_python_ast" }
ruff_python_codegen = { version = "0.0.16", path = "crates/ruff_python_codegen" }
ruff_python_edits = { version = "0.0.16", path = "crates/ruff_python_edits" }
ruff_python_formatter = { version = "0.0.16", path = "crates/ruff_python_formatter" }
ruff_python_importer = { version = "0.0.16", path = "crates/ruff_python_importer" }
ruff_python_index = { version = "0.0.16", path = "crates/ruff_python_index" }
ruff_python_literal = { version = "0.0.16", path = "crates/ruff_python_literal" }
ruff_python_parser = { version = "0.0.16", path = "crates/ruff_python_parser" }
ruff_python_semantic = { version = "0.0.16", path = "crates/ruff_python_semantic" }
ruff_python_stdlib = { version = "0.0.16", path = "crates/ruff_python_stdlib" }
ruff_python_trivia = { version = "0.0.16", path = "crates/ruff_python_trivia" }
ruff_server = { version = "0.0.16", path = "crates/ruff_server" }
ruff_source_file = { version = "0.0.16", path = "crates/ruff_source_file" }
ruff = { version = "0.17.0", path = "crates/ruff" }
ruff_annotate_snippets = { version = "0.0.17", path = "crates/ruff_annotate_snippets" }
ruff_cache = { version = "0.0.17", path = "crates/ruff_cache" }
ruff_command_line = { version = "0.0.17", path = "crates/ruff_command_line" }
ruff_db = { version = "0.0.17", path = "crates/ruff_db", default-features = false }
ruff_diagnostics = { version = "0.0.17", path = "crates/ruff_diagnostics" }
ruff_formatter = { version = "0.0.17", path = "crates/ruff_formatter" }
ruff_graph = { version = "0.0.17", path = "crates/ruff_graph" }
ruff_index = { version = "0.0.17", path = "crates/ruff_index" }
ruff_linter = { version = "0.17.0", path = "crates/ruff_linter" }
ruff_macros = { version = "0.0.17", path = "crates/ruff_macros" }
ruff_markdown = { version = "0.0.17", path = "crates/ruff_markdown" }
ruff_memory_usage = { version = "0.0.17", path = "crates/ruff_memory_usage" }
ruff_notebook = { version = "0.0.17", path = "crates/ruff_notebook" }
ruff_options_metadata = { version = "0.0.17", path = "crates/ruff_options_metadata" }
ruff_python_ast = { version = "0.0.17", path = "crates/ruff_python_ast" }
ruff_python_codegen = { version = "0.0.17", path = "crates/ruff_python_codegen" }
ruff_python_edits = { version = "0.0.17", path = "crates/ruff_python_edits" }
ruff_python_formatter = { version = "0.0.17", path = "crates/ruff_python_formatter" }
ruff_python_importer = { version = "0.0.17", path = "crates/ruff_python_importer" }
ruff_python_index = { version = "0.0.17", path = "crates/ruff_python_index" }
ruff_python_literal = { version = "0.0.17", path = "crates/ruff_python_literal" }
ruff_python_parser = { version = "0.0.17", path = "crates/ruff_python_parser" }
ruff_python_semantic = { version = "0.0.17", path = "crates/ruff_python_semantic" }
ruff_python_stdlib = { version = "0.0.17", path = "crates/ruff_python_stdlib" }
ruff_python_trivia = { version = "0.0.17", path = "crates/ruff_python_trivia" }
ruff_server = { version = "0.0.17", path = "crates/ruff_server" }
ruff_source_file = { version = "0.0.17", path = "crates/ruff_source_file" }
ruff_mdtest = { path = "crates/ruff_mdtest" }
ruff_ranged_value = { version = "0.0.16", path = "crates/ruff_ranged_value" }
ruff_text_size = { version = "0.0.16", path = "crates/ruff_text_size" }
ruff_unicode_names2 = { version = "0.0.16", path = "crates/ruff_unicode_names2" }
ruff_unicode_names2_generator = { version = "0.0.16", path = "crates/ruff_unicode_names2_generator" }
ruff_workspace = { version = "0.0.16", path = "crates/ruff_workspace" }
ruff_ranged_value = { version = "0.0.17", path = "crates/ruff_ranged_value" }
ruff_text_size = { version = "0.0.17", path = "crates/ruff_text_size" }
ruff_unicode_names2 = { version = "0.0.17", path = "crates/ruff_unicode_names2" }
ruff_unicode_names2_generator = { version = "0.0.17", path = "crates/ruff_unicode_names2_generator" }
ruff_workspace = { version = "0.0.17", path = "crates/ruff_workspace" }
ty = { path = "crates/ty" }
ty_combine = { version = "0.0.16", path = "crates/ty_combine" }
ty_combine = { version = "0.0.17", path = "crates/ty_combine" }
ty_completion_bench = { path = "crates/ty_completion_bench" }
ty_completion_eval = { path = "crates/ty_completion_eval" }
ty_ide = { path = "crates/ty_ide" }
ty_module_resolver = { version = "0.0.16", path = "crates/ty_module_resolver" }
ty_module_resolver = { version = "0.0.17", path = "crates/ty_module_resolver" }
ty_project = { path = "crates/ty_project", default-features = false }
ty_python_semantic = { version = "0.0.16", path = "crates/ty_python_semantic" }
ty_python_core = { version = "0.0.16", path = "crates/ty_python_core" }
ty_python_semantic = { version = "0.0.17", path = "crates/ty_python_semantic" }
ty_python_core = { version = "0.0.17", path = "crates/ty_python_core" }
ty_server = { path = "crates/ty_server" }
ty_site_packages = { version = "0.0.16", path = "crates/ty_site_packages" }
ty_static = { version = "0.0.16", path = "crates/ty_static" }
ty_site_packages = { version = "0.0.17", path = "crates/ty_site_packages" }
ty_static = { version = "0.0.17", path = "crates/ty_static" }
ty_test = { path = "crates/ty_test" }
ty_vendored = { version = "0.0.16", path = "crates/ty_vendored" }
ty_vendored = { version = "0.0.17", path = "crates/ty_vendored" }
mdtest = { path = "crates/mdtest" }
+5 -5
View File
@@ -122,8 +122,8 @@ Ruff is available as [`ruff`](https://pypi.org/project/ruff/) on PyPI.
Invoke Ruff directly with [`uvx`](https://docs.astral.sh/uv/):
```shell
uvx ruff@0.16.10 check # Lint all files in the current directory.
uvx ruff@0.16.10 format # Format all files in the current directory.
uvx ruff@0.17.0 check # Lint all files in the current directory.
uvx ruff@0.17.0 format # Format all files in the current directory.
```
Or install Ruff with `uv` (recommended), `pip`, or `pipx`:
@@ -150,8 +150,8 @@ curl -LsSf https://astral.sh/ruff/install.sh | sh
powershell -c "irm https://astral.sh/ruff/install.ps1 | iex"
# For a specific version.
curl -LsSf https://astral.sh/ruff/0.16.10/install.sh | sh
powershell -c "irm https://astral.sh/ruff/0.16.10/install.ps1 | iex"
curl -LsSf https://astral.sh/ruff/0.17.0/install.sh | sh
powershell -c "irm https://astral.sh/ruff/0.17.0/install.ps1 | iex"
```
You can also install Ruff via [Homebrew](https://formulae.brew.sh/formula/ruff), [Conda](https://anaconda.org/conda-forge/ruff),
@@ -184,7 +184,7 @@ Ruff can also be used as a [pre-commit](https://pre-commit.com/) hook via [`ruff
```yaml
- repo: https://github.com/astral-sh/ruff-pre-commit
# Ruff version.
rev: v0.16.10
rev: v0.17.0
hooks:
# Run the linter.
- id: ruff-check
+585
View File
@@ -0,0 +1,585 @@
## 0.16.0
Released on 2026-07-23.
Check out the [blog post](https://astral.sh/blog/ruff-v0.16.0) for a migration
guide and overview of the changes!
### Breaking changes
- Ruff now enables a much larger set of rules by default (413, up from 59). See the blog post for
more details and the new [Default Rules](https://docs.astral.sh/ruff/default-rules/) page for a
full listing of the enabled rules. Note that this is primarily an expansion, but 18 of the more
opinionated pycodestyle (`E`) and pyflakes (`F`) rules have been removed from the default set:
`E401`, `E402`, `E701`, `E702`, `E703`, `E711`, `E712`, `E713`, `E714`, `E721`, `E731`, `E741`,
`E742`, `E743`, `F403`, `F405`, `F406`, and `F722`.
- Ruff can now format Python code blocks in Markdown files and will do this by default. See the
[documentation](https://docs.astral.sh/ruff/formatter/#markdown-code-formatting) for more details.
- Ruff now supports `ruff: ignore` comments at the ends of lines, like `noqa` comments, or on the line preceding a diagnostic. For example, these both suppress an [`unused-import`](https://docs.astral.sh/ruff/rules/unused-import/) (`F401`) diagnostic:
```py
import math # ruff: ignore[F401]
# ruff: ignore[F401]
import os
```
- Fixes are now shown in `check` and `format --check` output:
````console
❯ ruff format --check .
unformatted: File would be reformatted
--> try.md:1:1
|
1 | ```python
- import math
2 + import math
3 | ```
|
1 file would be reformatted
````
This example also shows off the Markdown formatting.
- `format --check` now supports the same output formats as the linter, including the `github` and
`gitlab` outputs for rendering annotations in CI:
```console
❯ ruff format --check --output-format github .
::error title=ruff (unformatted),file=try.md,line=2,col=8,endLine=2,endColumn=10::try.md:2:8: unformatted: File would be reformatted
```
See the CLI help or [documentation](https://docs.astral.sh/ruff/settings/#output-format) for the
full list of supported formats.
- The `filename`, `location`, `end_location`, `fix.edits[].location`, and `fix.edits[].end_location`
fields in the JSON output format may now be `null` rather than defaulting to the empty string and
row 1, column 1, respectively.
### Stabilization
The following rules have been stabilized and are no longer in preview:
- [`airflow3-incompatible-function-signature`](https://docs.astral.sh/ruff/rules/airflow3-incompatible-function-signature)
(`AIR303`)
- [`missing-copyright-notice`](https://docs.astral.sh/ruff/rules/missing-copyright-notice)
(`CPY001`)
- [`unnecessary-from-float`](https://docs.astral.sh/ruff/rules/unnecessary-from-float) (`FURB164`)
- [`sorted-min-max`](https://docs.astral.sh/ruff/rules/sorted-min-max) (`FURB192`)
- [`implicit-string-concatenation-in-collection-literal`](https://docs.astral.sh/ruff/rules/implicit-string-concatenation-in-collection-literal)
(`ISC004`)
- [`log-exception-outside-except-handler`](https://docs.astral.sh/ruff/rules/log-exception-outside-except-handler)
(`LOG004`)
- [`invalid-bool-return-type`](https://docs.astral.sh/ruff/rules/invalid-bool-return-type)
(`PLE0304`)
- [`too-many-positional-arguments`](https://docs.astral.sh/ruff/rules/too-many-positional-arguments)
(`PLR0917`)
- [`stop-iteration-return`](https://docs.astral.sh/ruff/rules/stop-iteration-return) (`PLR1708`)
- [`none-not-at-end-of-union`](https://docs.astral.sh/ruff/rules/none-not-at-end-of-union)
(`RUF036`)
- [`access-annotations-from-class-dict`](https://docs.astral.sh/ruff/rules/access-annotations-from-class-dict)
(`RUF063`)
- [`duplicate-entry-in-dunder-all`](https://docs.astral.sh/ruff/rules/duplicate-entry-in-dunder-all)
(`RUF068`)
The following behaviors have been stabilized:
- [`blind-except`](https://docs.astral.sh/ruff/rules/blind-except) (`BLE001`) is now suppressed when
the exception is logged via `logging` methods other than `critical`, `error` and `exception`.
- [`future-required-type-annotation`](https://docs.astral.sh/ruff/rules/future-required-type-annotation)
(`FA102`) now checks for additional [PEP 585](https://peps.python.org/pep-0585/)-compatible
APIs, such as those from `collections.abc`.
- [`f-string-in-get-text-func-call`](https://docs.astral.sh/ruff/rules/f-string-in-get-text-func-call)
(`INT001`),
[`format-in-get-text-func-call`](https://docs.astral.sh/ruff/rules/format-in-get-text-func-call)
(`INT002`), and
[`printf-in-get-text-func-call`](https://docs.astral.sh/ruff/rules/printf-in-get-text-func-call)
(`INT003`) now check for additional common ways of using the `gettext` module, such as assigning
it to `builtins._`.
- [`suspicious-url-open-usage`](https://docs.astral.sh/ruff/rules/suspicious-url-open-usage)
(`S310`) now resolves local string literal bindings to avoid more false positives.
- [`snmp-insecure-version`](https://docs.astral.sh/ruff/rules/snmp-insecure-version) (`S508`) and
[`snmp-weak-cryptography`](https://docs.astral.sh/ruff/rules/snmp-weak-cryptography) (`S509`) now
support the recommended API from newer versions of PySNMP.
- [`typing-text-str-alias`](https://docs.astral.sh/ruff/rules/typing-text-str-alias) (`UP019`) now
recognizes `typing_extensions.Text` in addition to `typing.Text`.
### Preview features
- \[`pyupgrade`\] Fix false positive with `TypeVar` default before Python 3.13 (`UP040`) ([#26888](https://github.com/astral-sh/ruff/pull/26888))
### Bug fixes
- \[`ruff`\] Fix missing check on unrecognized early bound (`RUF016`) ([#26986](https://github.com/astral-sh/ruff/pull/26986))
### Rule changes
- Insert a space after the colon in Ruff suppression comments ([#27123](https://github.com/astral-sh/ruff/pull/27123))
### Performance
- \[`pyupgrade`\] Speed up `unnecessary-future-import` (`UP010`) ([#27047](https://github.com/astral-sh/ruff/pull/27047))
### Documentation
- \[`ruff`\] Add missing period in "Why is this bad?" section (`RUF200`) ([#26930](https://github.com/astral-sh/ruff/pull/26930))
- \[`flake8-simplify`\] Clarify `os.environ` behavior on Windows (`SIM112`) ([#26972](https://github.com/astral-sh/ruff/pull/26972))
- \[`pydocstyle`\] Document fix safety (`D400`) ([#26971](https://github.com/astral-sh/ruff/pull/26971))
### Contributors
- [@jonathandung](https://github.com/jonathandung)
- [@Joosboy](https://github.com/Joosboy)
- [@MichaReiser](https://github.com/MichaReiser)
- [@Andrej730](https://github.com/Andrej730)
- [@ntBre](https://github.com/ntBre)
- [@zaniebot](https://github.com/zaniebot)
## 0.16.1
Released on 2026-07-30.
### Preview features
- Add an option to opt out of human-readable names ([#27160](https://github.com/astral-sh/ruff/pull/27160))
- \[`flake8-pytest-style`\] Make fixes safe by default and unsafe only when comments are present (`PT018`) ([#27201](https://github.com/astral-sh/ruff/pull/27201))
- \[`pyupgrade`\] Skip fix when a defaulted `TypeVar` precedes a non-defaulted one (`UP040`, `UP046`, `UP047`) ([#27133](https://github.com/astral-sh/ruff/pull/27133))
- \[`ruff`\] Fix false positive with unpacked arguments (`RUF065`) ([#26959](https://github.com/astral-sh/ruff/pull/26959))
### Bug fixes
- Bump `gen-lsp-types` to gracefully handle unknown enumeration values in LSP messages ([#27230](https://github.com/astral-sh/ruff/pull/27230))
- \[`flake8-bugbear`\] Mark `range` as immutable (`B008`) ([#27247](https://github.com/astral-sh/ruff/pull/27247))
- \[`flake8-comprehensions`\] NFKC-normalize keyword names in `C408` fix ([#26813](https://github.com/astral-sh/ruff/pull/26813))
- \[`flake8-return`\] Fix false positive when variable is read in `finally` clause (`RET504`) ([#25441](https://github.com/astral-sh/ruff/pull/25441))
- \[`pydocstyle`\] Skip section detection inside RST directive bodies (`D214`, `D405`, `D413`) ([#23635](https://github.com/astral-sh/ruff/pull/23635))
- \[`refurb`\] Parenthesize `yield` arguments in the `FURB192` fix ([#27192](https://github.com/astral-sh/ruff/pull/27192))
### Rule changes
- \[`flake8-pytest-style`\] Mark `PT022` fixes as unsafe ([#26440](https://github.com/astral-sh/ruff/pull/26440))
- \[`refurb`\] Mark fixes that remove unknown separators as unsafe (`FURB105`) ([#27200](https://github.com/astral-sh/ruff/pull/27200))
### Server
- Fix indexing of excluded nested Ruff workspaces ([#27303](https://github.com/astral-sh/ruff/pull/27303))
- Lint TOML files in the LSP ([#26862](https://github.com/astral-sh/ruff/pull/26862))
### Documentation
- Cover `pycon` Markdown formatting ([#27153](https://github.com/astral-sh/ruff/pull/27153))
- \[`flake8-bandit`\] Document `TYPE_CHECKING` exception (`S101`) ([#27004](https://github.com/astral-sh/ruff/pull/27004))
- \[`flake8-import-conventions`\] Document that `extend-aliases` can override default aliases ([#27191](https://github.com/astral-sh/ruff/pull/27191))
- \[`pylint`\] Add missing fix safety gotchas for `non-augmented-assignment` (`PLR6104`) ([#27250](https://github.com/astral-sh/ruff/pull/27250))
### Other changes
- Reduce syntax error noise by swallowing dedents like indents ([#27170](https://github.com/astral-sh/ruff/pull/27170))
- Vendor latest annotate-snippets ([#27033](https://github.com/astral-sh/ruff/pull/27033))
### Contributors
- [@bxff](https://github.com/bxff)
- [@anishgirianish](https://github.com/anishgirianish)
- [@Avasam](https://github.com/Avasam)
- [@epage](https://github.com/epage)
- [@LHMQ878](https://github.com/LHMQ878)
- [@MichaReiser](https://github.com/MichaReiser)
- [@ntBre](https://github.com/ntBre)
- [@HarshalPatel1972](https://github.com/HarshalPatel1972)
- [@mjpieters](https://github.com/mjpieters)
- [@joshuavetos](https://github.com/joshuavetos)
- [@jesco-absolute](https://github.com/jesco-absolut)
- [@vidigoat](https://github.com/vidigoat)
- [@baltasarblanco](https://github.com/baltasarblanco)
- [@ribru17](https://github.com/ribru17)
- [@oh-summy](https://github.com/oh-summy)
- [@Jayashanker-Padishala](https://github.com/Jayashanker-Padishala)
## 0.16.2
Released on 2026-08-06.
### Bug fixes
- \[`flake8-pyi`\] Avoid false positives on `singledispatch` functions (`PYI041`) ([#27335](https://github.com/astral-sh/ruff/pull/27335))
### Server
- Register formatting capabilities dynamically to exclude TOML files ([#27332](https://github.com/astral-sh/ruff/pull/27332))
### Contributors
- [@MeGaGiGaGon](https://github.com/MeGaGiGaGon)
- [@charliermarsh](https://github.com/charliermarsh)
- [@epage](https://github.com/epage)
- [@sharkdp](https://github.com/sharkdp)
- [@ntBre](https://github.com/ntBre)
## 0.16.3
Released on 2026-08-13.
### Preview features
- \[`pylint`\] Fix false negatives on negative numbers (`PLR6104`) ([#27251](https://github.com/astral-sh/ruff/pull/27251))
- \[`pyupgrade`\] Add rule to replace `while 1` with `while True` (`UP048`) ([#27190](https://github.com/astral-sh/ruff/pull/27190))
### Bug fixes
- \[`flake8-bandit`\] Also check keyword arguments (`S602`, `S603`, `S607`, `S609`) ([#27687](https://github.com/astral-sh/ruff/pull/27687))
- \[`pylint`\] Allow `continue` in `finally` on Python 3.8 ([#27626](https://github.com/astral-sh/ruff/pull/27626))
- \[`pylint`\] Fix `PLE1307` false positive with bools ([#27651](https://github.com/astral-sh/ruff/pull/27651))
- \[`pylint`\] Fix false positives and negatives with `%b` format character (`PLE1300`, `PLE1307`) ([#27560](https://github.com/astral-sh/ruff/pull/27560))
- \[`pylint`\] Improve handling of concatenated strings (`PLE1300`) ([#27659](https://github.com/astral-sh/ruff/pull/27659))
### Rule changes
- \[`numpy`\] Make `np.chararray` autofix backwards-compatible (`NPY201`) ([#27527](https://github.com/astral-sh/ruff/pull/27527))
### Performance
- Enable PGO for Linux x86-64 Ruff releases ([#27570](https://github.com/astral-sh/ruff/pull/27570))
- Enable PGO for Linux ARM64 Ruff releases ([#27574](https://github.com/astral-sh/ruff/pull/27574))
- Enable PGO for Windows x86-64 Ruff releases ([#27573](https://github.com/astral-sh/ruff/pull/27573))
- Enable PGO for macOS ARM64 Ruff releases ([#27572](https://github.com/astral-sh/ruff/pull/27572))
- Reduce `Expr` size to 64 bytes ([#27591](https://github.com/astral-sh/ruff/pull/27591))
### CLI
- Hyperlink rule codes in `ruff check --statistics` output ([#27646](https://github.com/astral-sh/ruff/pull/27646))
### Documentation
- \[`ruff`\] Also suggest `asyncio.TaskGroup` (`RUF006`) ([#27461](https://github.com/astral-sh/ruff/pull/27461))
### Other changes
- Use mimalloc v3 ([#27586](https://github.com/astral-sh/ruff/pull/27586))
### Contributors
- [@Andrej730](https://github.com/Andrej730)
- [@alonfaraj](https://github.com/alonfaraj)
- [@romero-deshaw](https://github.com/romero-deshaw)
- [@Avasam](https://github.com/Avasam)
- [@tjkuson](https://github.com/tjkuson)
- [@charliermarsh](https://github.com/charliermarsh)
- [@chirizxc](https://github.com/chirizxc)
- [@saberoueslati](https://github.com/saberoueslati)
- [@MichaReiser](https://github.com/MichaReiser)
## 0.16.4
Released on 2026-08-20.
### Preview features
- \[`flake8-use-pathlib`\] Add autofix for `PTH116` ([#26460](https://github.com/astral-sh/ruff/pull/26460))
- \[`refurb`\] Restrict `delete-full-slice` to lists (`FURB131`) ([#27711](https://github.com/astral-sh/ruff/pull/27711))
- \[`refurb`\] Skip `FURB101` and `FURB103` when the `open` argument is a file descriptor ([#27643](https://github.com/astral-sh/ruff/pull/27643))
### Bug fixes
- Fix `InvalidInstruction` on Windows CPUs that do not support `POPCNT` ([#27803](https://github.com/astral-sh/ruff/pull/27803))
- \[`pyflakes`\] Emit semantic syntax errors in string type definitions as `F722` ([#27835](https://github.com/astral-sh/ruff/pull/27835))
- \[`pylint`\] Allow `os._exit` imports in `import-private-name` (`PLC2701`) ([#27738](https://github.com/astral-sh/ruff/pull/27738))
### Rule changes
- [syntax-errors] Align mixed t-string/bytes error message with CPython 3.14 ([#27766](https://github.com/astral-sh/ruff/pull/27766))
- \[`ruff`\] Add `ctypes.LittleEndianStructure` and related types to existing exception (`RUF012`) ([#27753](https://github.com/astral-sh/ruff/pull/27753))
- [syntax-errors] Detect duplicate keyword arguments ([#17804](https://github.com/astral-sh/ruff/pull/17804))
- [syntax-errors] Detect parameters declared `nonlocal` ([#27628](https://github.com/astral-sh/ruff/pull/27628))
### Server
- Offer display-only fixes and mark safe fixes preferred ([#27807](https://github.com/astral-sh/ruff/pull/27807))
- Support pull diagnostics for notebook cells ([#27779](https://github.com/astral-sh/ruff/pull/27779))
### Documentation
- Add default indicator to rules table ([#27724](https://github.com/astral-sh/ruff/pull/27724))
- Fix broken link to Python docs ([#27757](https://github.com/astral-sh/ruff/pull/27757))
### Other changes
- Fix s390x stacker assembly in release builds ([#27776](https://github.com/astral-sh/ruff/pull/27776))
- Guarantee minimum stack size when parsing a module, standalone expression, and suites ([#25464](https://github.com/astral-sh/ruff/pull/25464))
- Reduce configuration deserialization code size ([#27924](https://github.com/astral-sh/ruff/pull/27924))
- Check packed AST index bounds ([#27849](https://github.com/astral-sh/ruff/pull/27849))
### Contributors
- [@AbhinavMir](https://github.com/AbhinavMir)
- [@eduardorittner](https://github.com/eduardorittner)
- [@royb3](https://github.com/royb3)
- [@MichaReiser](https://github.com/MichaReiser)
- [@carljm](https://github.com/carljm)
- [@rosstitmarsh](https://github.com/rosstitmarsh)
- [@ntBre](https://github.com/ntBre)
- [@zaniebot](https://github.com/zaniebot)
- [@ewdurbin](https://github.com/ewdurbin)
- [@woodruffw](https://github.com/woodruffw)
- [@Sacrimento](https://github.com/Sacrimento)
- [@lakshayxi](https://github.com/lakshayxi)
- [@WhiteFox0-0](https://github.com/WhiteFox0-0)
- [@baltasarblanco](https://github.com/baltasarblanco)
## 0.16.5
Released on 2026-08-27.
### Preview features
- Allow rules without codes ([#28049](https://github.com/astral-sh/ruff/pull/28049))
- Introduce category selectors ([#27666](https://github.com/astral-sh/ruff/pull/27666))
- Update preview default rules and categories ([#27877](https://github.com/astral-sh/ruff/pull/27877))
### Bug fixes
- \[`flake8-async`\] Detect blocking generic HTTP requests (`ASYNC210`) ([#28024](https://github.com/astral-sh/ruff/pull/28024))
- \[`flake8-datetimez`\] Allow timezone-safe `strptime` chains (`DTZ007`) ([#28023](https://github.com/astral-sh/ruff/pull/28023))
- \[`flake8-simplify`\] Respect side effects in `lambda` defaults (`SIM401`) ([#28000](https://github.com/astral-sh/ruff/pull/28000))
### Server
- Fix duplicated "of" in `ClientOptions` doc comment ([#27978](https://github.com/astral-sh/ruff/pull/27978))
### Documentation
- Document rule acceptance guidelines ([#27910](https://github.com/astral-sh/ruff/pull/27910))
- Document the new category selectors ([#27906](https://github.com/astral-sh/ruff/pull/27906))
### Contributors
- [@AlexWaygood](https://github.com/AlexWaygood)
- [@sharkdp](https://github.com/sharkdp)
- [@jelle-openai](https://github.com/jelle-openai)
- [@charliermarsh](https://github.com/charliermarsh)
- [@ntBre](https://github.com/ntBre)
- [@aarushkandukoori](https://github.com/aarushkandukoori)
## 0.16.6
Released on 2026-09-03.
### Preview features
- Move `pytest-fixture-autouse` to the `restriction` category ([#28219](https://github.com/astral-sh/ruff/pull/28219))
- \[`flake8-pytest-style`\] Add an autofix for `PT020` ([#27993](https://github.com/astral-sh/ruff/pull/27993))
- \[`flake8-tidy-imports`\] Prevent fix loop between `TID254` and `TID255` ([#28262](https://github.com/astral-sh/ruff/pull/28262))
- \[`isort`\] Exclude pragma comments from line length calculation (`I001`) ([#27313](https://github.com/astral-sh/ruff/pull/27313))
### Bug fixes
- Validate unary expressions when parsing ([#28233](https://github.com/astral-sh/ruff/pull/28233))
- \[`flake8-async`, `pylint`\] Recognize `builtins.open` (`ASYNC230`, `PLW1514`) ([#28021](https://github.com/astral-sh/ruff/pull/28021))
- \[`flake8-bugbear`\] Fix panic on `match` subjects (`B031`) ([#27781](https://github.com/astral-sh/ruff/pull/27781))
- \[`flake8-datetimez`\] Reject `tzinfo=None` for `datetime` bounds (`DTZ901`) ([#28022](https://github.com/astral-sh/ruff/pull/28022))
- \[`flake8-pytest-style`\] Avoid duplicate `PT017` diagnostics ([#27918](https://github.com/astral-sh/ruff/pull/27918))
- \[`ruff`\] Remove `lint.external` hint for Ruff-specific suppressions (`RUF102`) ([#27923](https://github.com/astral-sh/ruff/pull/27923))
### Rule changes
- \[`flake8-use-pathlib`\] Add display-only fix for `os.listdir` (`PTH208`) ([#28027](https://github.com/astral-sh/ruff/pull/28027))
### Documentation
- Add another example and glob reference for `lint.per-file-ignores` ([#28106](https://github.com/astral-sh/ruff/pull/28106))
- Add duplicate work guidance ([#28229](https://github.com/astral-sh/ruff/pull/28229))
- \[`flake8-async`\] Document thread offloading (`ASYNC240`) ([#28008](https://github.com/astral-sh/ruff/pull/28008))
- \[`pyupgrade`\] Clarify default `encoding` argument handling (`UP012`) ([#27315](https://github.com/astral-sh/ruff/pull/27315))
### Other changes
- Allow unary plus in match patterns on Python 3.15 ([#28231](https://github.com/astral-sh/ruff/pull/28231))
### Contributors
- [@flying-sheep](https://github.com/flying-sheep)
- [@pikammmmm](https://github.com/pikammmmm)
- [@fly1d](https://github.com/fly1d)
- [@waterWang](https://github.com/waterWang)
- [@Pierre-Sassoulas](https://github.com/Pierre-Sassoulas)
- [@ntBre](https://github.com/ntBre)
- [@jelle-openai](https://github.com/jelle-openai)
- [@ericbuehl](https://github.com/ericbuehl)
- [@tjkuson](https://github.com/tjkuson)
- [@AbhinavMir](https://github.com/AbhinavMir)
- [@Whning0513](https://github.com/Whning0513)
- [@chirizxc](https://github.com/chirizxc)
## 0.16.7
Released on 2026-09-10.
### Preview features
- \[`ruff`\] Add rule for default values on method receivers (`RUF077`) ([#26700](https://github.com/astral-sh/ruff/pull/26700))
- \[`ruff`\] Recognize `re.prefixmatch` (`RUF039`, `RUF055`) ([#28311](https://github.com/astral-sh/ruff/pull/28311))
### Bug fixes
- Alternate nested quotes inside format spec interpolations ([#28259](https://github.com/astral-sh/ruff/pull/28259))
- \[`flake8-implicit-str-concat`\] Mark fix unsafe when it creates a docstring (`ISC003`) ([#27981](https://github.com/astral-sh/ruff/pull/27981))
- \[`flake8-tidy-imports`\] Skip fixes for multi-member imports (`TID254`) ([#26584](https://github.com/astral-sh/ruff/pull/26584))
- \[`pylint`\] Gate `ImportCycleError` on Python 3.15 (`PLW0133`) ([#28310](https://github.com/astral-sh/ruff/pull/28310))
### Rule changes
- Correct `D211` and `D203` rule conflict diagnostic ([#28444](https://github.com/astral-sh/ruff/pull/28444))
- Recognize `slice` and `frozendict` generics ([#28477](https://github.com/astral-sh/ruff/pull/28477))
- Stop defining `__cached__` for Python 3.15 ([#28476](https://github.com/astral-sh/ruff/pull/28476))
- \[`pyupgrade`\] Stop recommending removed `typing.no_type_check_decorator` (`UP035`) ([#28475](https://github.com/astral-sh/ruff/pull/28475))
### Performance
- Reuse parser name lookups when interning ([#28399](https://github.com/astral-sh/ruff/pull/28399))
- Speed up inherited configuration resolution ([#28299](https://github.com/astral-sh/ruff/pull/28299))
### Documentation
- Fix `line-length` path in `--config` example ([#28392](https://github.com/astral-sh/ruff/pull/28392))
- Remove the "Who’s Using Ruff?" list ([#28455](https://github.com/astral-sh/ruff/pull/28455))
### Other changes
- Embed archive checksums in the shell installer ([#28281](https://github.com/astral-sh/ruff/pull/28281))
### Contributors
- [@The-Compiler](https://github.com/The-Compiler)
- [@mdiniz97](https://github.com/mdiniz97)
- [@zsol](https://github.com/zsol)
- [@gorewilliams](https://github.com/gorewilliams)
- [@RafaelJohn9](https://github.com/RafaelJohn9)
- [@qatcod](https://github.com/qatcod)
- [@zanieb](https://github.com/zanieb)
- [@MichaReiser](https://github.com/MichaReiser)
- [@ntBre](https://github.com/ntBre)
- [@charliermarsh](https://github.com/charliermarsh)
- [@nightt5879](https://github.com/nightt5879)
- [@jonathandung](https://github.com/jonathandung)
- [@jogo-openai](https://github.com/jogo-openai)
## 0.16.8
Released on 2026-09-16.
### Bug fixes
- Visit functional `TypedDict` keyword arguments correctly ([#28584](https://github.com/astral-sh/ruff/pull/28584))
- \[`flake8-simplify`\] Detect nested `async with` under sync parent (`SIM117`) ([#27821](https://github.com/astral-sh/ruff/pull/27821))
- \[`flake8-simplify`\] Preserve operand order in `SIM109` fix ([#27824](https://github.com/astral-sh/ruff/pull/27824))
- \[`pyupgrade`\] Preserve required parentheses in multiline `UP040` fixes ([#28164](https://github.com/astral-sh/ruff/pull/28164))
- \[`pyupgrade`\] Skip `TypeVarTuple` and `ParamSpec` conversions with bounds or constraints (`UP040`, `UP046`, `UP047`) ([#28505](https://github.com/astral-sh/ruff/pull/28505))
### Rule changes
- Add support for `__lazy_modules__` ([#28459](https://github.com/astral-sh/ruff/pull/28459))
- Recognize PEP-728 `TypedDict` class keywords ([#28533](https://github.com/astral-sh/ruff/pull/28533))
- Recognize quoted types in `typing.TypeForm` ([#28507](https://github.com/astral-sh/ruff/pull/28507))
- Support conditional assignment to `__lazy_modules__` ([#28491](https://github.com/astral-sh/ruff/pull/28491))
- \[`flake8-type-checking`\] Prefer lazy imports over `TYPE_CHECKING` on Python 3.15 and later (`TC001`, `TC002`, `TC003`) ([#28541](https://github.com/astral-sh/ruff/pull/28541))
- \[`pyupgrade`\] Make the fix for `UP040` always unsafe ([#28526](https://github.com/astral-sh/ruff/pull/28526))
- \[`pyupgrade`\] Stop recommending deprecated `ByteString` aliases (`UP035`) ([#28498](https://github.com/astral-sh/ruff/pull/28498))
- \[`ruff`, `flake8-use-pathlib`\] Recognize the `parent_mode` argument (`RUF064`, `PTH103`) ([#28528](https://github.com/astral-sh/ruff/pull/28528))
- \[`ruff`\] Detect `\Z` in `pytest.raises()` match patterns (`RUF043`) ([#28598](https://github.com/astral-sh/ruff/pull/28598))
### CLI
- Use rule name and code in formatter incompatibility warnings ([#28571](https://github.com/astral-sh/ruff/pull/28571))
### Configuration
- \[`flake8-tidy-imports`\] Add `extend-banned-api` ([#28644](https://github.com/astral-sh/ruff/pull/28644))
### Contributors
- [@VedantMadane](https://github.com/VedantMadane)
- [@alzeph](https://github.com/alzeph)
- [@charliermarsh](https://github.com/charliermarsh)
- [@fredrikblau](https://github.com/fredrikblau)
- [@ntBre](https://github.com/ntBre)
- [@zsol](https://github.com/zsol)
- [@Aniket-a14](https://github.com/Aniket-a14)
- [@r-b-1](https://github.com/r-b-1)
## 0.16.9
Released on 2026-09-24.
### Preview features
- \[`ruff`\] Avoid false positives for overloaded division (`RUF069`) ([#28309](https://github.com/astral-sh/ruff/pull/28309))
### Bug fixes
- \[`flake8-bugbear`\] Avoid false positives for calls with keyword arguments (`B009`, `B010`, `B043`) ([#28776](https://github.com/astral-sh/ruff/pull/28776))
- \[`flake8-tidy-imports`\] Allow lazy imports to be used in deferred annotations (`TID255`) ([#28767](https://github.com/astral-sh/ruff/pull/28767))
### Rule changes
- Update LibCST-based fixes for Python 3.15 ([#28616](https://github.com/astral-sh/ruff/pull/28616))
- \[`flake8-pyi`\] Mention stubs in the diagnostic message (`PYI002`) ([#28542](https://github.com/astral-sh/ruff/pull/28542))
### Documentation
- Fix horizontal overflow on the rules documentation page ([#28699](https://github.com/astral-sh/ruff/pull/28699))
- Update rules table with category information ([#28651](https://github.com/astral-sh/ruff/pull/28651))
- \[`flake8-annotations`\] Clarify that `ANN401` checks return types in addition to arguments ([#28334](https://github.com/astral-sh/ruff/pull/28334))
- \[`flake8-bugbear`\] Document type-checker interaction (`B010`) ([#28509](https://github.com/astral-sh/ruff/pull/28509))
- \[`flake8-comprehensions`\] Document `map`/generator exception behavior (`C417`) ([#27794](https://github.com/astral-sh/ruff/pull/27794))
- \[`ruff`\] Mention related isort settings (`RUF022`) ([#28719](https://github.com/astral-sh/ruff/pull/28719))
### Contributors
- [@qinpei-dev](https://github.com/qinpei-dev)
- [@sanjayrohith](https://github.com/sanjayrohith)
- [@ntBre](https://github.com/ntBre)
- [@webdevsamran](https://github.com/webdevsamran)
- [@zaniebot](https://github.com/zaniebot)
- [@ewdurbin](https://github.com/ewdurbin)
- [@MichaReiser](https://github.com/MichaReiser)
- [@spaceone](https://github.com/spaceone)
- [@IbrahimKhan12](https://github.com/IbrahimKhan12)
- [@devtechedge](https://github.com/devtechedge)
- [@GruffElixir](https://github.com/GruffElixir)
## 0.16.10
Released on 2026-10-01.
### Preview features
- Add a migration guide for categories ([#28087](https://github.com/astral-sh/ruff/pull/28087))
- \[`pyupgrade`\] Add rule for context manager iterator annotations (`UP052`) ([#29000](https://github.com/astral-sh/ruff/pull/29000))
### Performance
- Reduce memory used by diagnostics ([#28951](https://github.com/astral-sh/ruff/pull/28951))
### Server
- Avoid running `uv format` in untrusted workspaces ([#28873](https://github.com/astral-sh/ruff/pull/28873))
### Documentation
- Fix links to moved changelog sections and renamed mdtests ([#28941](https://github.com/astral-sh/ruff/pull/28941))
- Add Python 3.15 as a supported version ([#28907](https://github.com/astral-sh/ruff/pull/28907))
- Add ty as a type checker example ([#28906](https://github.com/astral-sh/ruff/pull/28906))
### Other changes
- Update Rust toolchain to 1.99 and MSRV to 1.97 ([#29047](https://github.com/astral-sh/ruff/pull/29047))
### Contributors
- [@ntBre](https://github.com/ntBre)
- [@spaceone](https://github.com/spaceone)
- [@HardMax71](https://github.com/HardMax71)
- [@charliermarsh](https://github.com/charliermarsh)
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "ruff"
version = "0.16.10"
version = "0.17.0"
description = "An extremely fast Python linter and code formatter"
authors = { workspace = true }
edition = { workspace = true }
+3 -1
View File
@@ -10,7 +10,7 @@ See the [documentation](https://docs.astral.sh/ruff/) or
This crate is the entry point to the Ruff command-line interface. The Rust API exposed here is not
considered public interface.
This is version 0.16.10. The source can be found [here](https://github.com/astral-sh/ruff/blob/0.16.10/crates/ruff).
This is version 0.17.0. The source can be found [here](https://github.com/astral-sh/ruff/blob/0.17.0/crates/ruff).
The following Ruff workspace members are also available:
@@ -43,6 +43,8 @@ The following Ruff workspace members are also available:
- [ruff_server](https://crates.io/crates/ruff_server)
- [ruff_source_file](https://crates.io/crates/ruff_source_file)
- [ruff_text_size](https://crates.io/crates/ruff_text_size)
- [ruff_unicode_names2](https://crates.io/crates/ruff_unicode_names2)
- [ruff_unicode_names2_generator](https://crates.io/crates/ruff_unicode_names2_generator)
- [ruff_wasm](https://crates.io/crates/ruff_wasm)
- [ruff_workspace](https://crates.io/crates/ruff_workspace)
- [ty_combine](https://crates.io/crates/ty_combine)
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "ruff_annotate_snippets"
version = "0.0.16"
version = "0.0.17"
description = "This is an internal component crate of Ruff"
authors = { workspace = true }
edition = { workspace = true }
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "ruff_cache"
version = "0.0.16"
version = "0.0.17"
description = "This is an internal component crate of Ruff"
authors = { workspace = true }
edition = { workspace = true }
+2 -2
View File
@@ -5,8 +5,8 @@
This crate is an internal component of [Ruff](https://crates.io/crates/ruff). The Rust API exposed
here is unstable and will have frequent breaking changes.
This version (0.0.16) is a component of [Ruff 0.16.10](https://crates.io/crates/ruff/0.16.10). The
source can be found [here](https://github.com/astral-sh/ruff/blob/0.16.10/crates/ruff_cache).
This version (0.0.17) is a component of [Ruff 0.17.0](https://crates.io/crates/ruff/0.17.0). The
source can be found [here](https://github.com/astral-sh/ruff/blob/0.17.0/crates/ruff_cache).
See Ruff's [crate versioning policy](https://docs.astral.sh/ruff/versioning/#crate-versioning) for
details on versioning.
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "ruff_command_line"
version = "0.0.16"
version = "0.0.17"
description = "This is an internal component crate of Ruff"
authors = { workspace = true }
edition = { workspace = true }
+12
View File
@@ -0,0 +1,12 @@
<!-- This file is generated. DO NOT EDIT -->
# ruff_command_line
This crate is an internal component of [Ruff](https://crates.io/crates/ruff). The Rust API exposed
here is unstable and will have frequent breaking changes.
This version (0.0.17) is a component of [Ruff 0.17.0](https://crates.io/crates/ruff/0.17.0). The
source can be found [here](https://github.com/astral-sh/ruff/blob/0.17.0/crates/ruff_command_line).
See Ruff's [crate versioning policy](https://docs.astral.sh/ruff/versioning/#crate-versioning) for
details on versioning.
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "ruff_db"
version = "0.0.16"
version = "0.0.17"
description = "This is an internal component crate of Ruff"
authors = { workspace = true }
edition = { workspace = true }
+2 -2
View File
@@ -5,8 +5,8 @@
This crate is an internal component of [Ruff](https://crates.io/crates/ruff). The Rust API exposed
here is unstable and will have frequent breaking changes.
This version (0.0.16) is a component of [Ruff 0.16.10](https://crates.io/crates/ruff/0.16.10). The
source can be found [here](https://github.com/astral-sh/ruff/blob/0.16.10/crates/ruff_db).
This version (0.0.17) is a component of [Ruff 0.17.0](https://crates.io/crates/ruff/0.17.0). The
source can be found [here](https://github.com/astral-sh/ruff/blob/0.17.0/crates/ruff_db).
See Ruff's [crate versioning policy](https://docs.astral.sh/ruff/versioning/#crate-versioning) for
details on versioning.
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "ruff_diagnostics"
version = "0.0.16"
version = "0.0.17"
description = "This is an internal component crate of Ruff"
authors = { workspace = true }
edition = { workspace = true }
+2 -2
View File
@@ -5,8 +5,8 @@
This crate is an internal component of [Ruff](https://crates.io/crates/ruff). The Rust API exposed
here is unstable and will have frequent breaking changes.
This version (0.0.16) is a component of [Ruff 0.16.10](https://crates.io/crates/ruff/0.16.10). The
source can be found [here](https://github.com/astral-sh/ruff/blob/0.16.10/crates/ruff_diagnostics).
This version (0.0.17) is a component of [Ruff 0.17.0](https://crates.io/crates/ruff/0.17.0). The
source can be found [here](https://github.com/astral-sh/ruff/blob/0.17.0/crates/ruff_diagnostics).
See Ruff's [crate versioning policy](https://docs.astral.sh/ruff/versioning/#crate-versioning) for
details on versioning.
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "ruff_formatter"
version = "0.0.16"
version = "0.0.17"
description = "This is an internal component crate of Ruff"
authors = { workspace = true }
edition = { workspace = true }
+2 -2
View File
@@ -5,8 +5,8 @@
This crate is an internal component of [Ruff](https://crates.io/crates/ruff). The Rust API exposed
here is unstable and will have frequent breaking changes.
This version (0.0.16) is a component of [Ruff 0.16.10](https://crates.io/crates/ruff/0.16.10). The
source can be found [here](https://github.com/astral-sh/ruff/blob/0.16.10/crates/ruff_formatter).
This version (0.0.17) is a component of [Ruff 0.17.0](https://crates.io/crates/ruff/0.17.0). The
source can be found [here](https://github.com/astral-sh/ruff/blob/0.17.0/crates/ruff_formatter).
See Ruff's [crate versioning policy](https://docs.astral.sh/ruff/versioning/#crate-versioning) for
details on versioning.
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "ruff_graph"
version = "0.0.16"
version = "0.0.17"
description = "This is an internal component crate of Ruff"
edition.workspace = true
rust-version.workspace = true
+2 -2
View File
@@ -5,8 +5,8 @@
This crate is an internal component of [Ruff](https://crates.io/crates/ruff). The Rust API exposed
here is unstable and will have frequent breaking changes.
This version (0.0.16) is a component of [Ruff 0.16.10](https://crates.io/crates/ruff/0.16.10). The
source can be found [here](https://github.com/astral-sh/ruff/blob/0.16.10/crates/ruff_graph).
This version (0.0.17) is a component of [Ruff 0.17.0](https://crates.io/crates/ruff/0.17.0). The
source can be found [here](https://github.com/astral-sh/ruff/blob/0.17.0/crates/ruff_graph).
See Ruff's [crate versioning policy](https://docs.astral.sh/ruff/versioning/#crate-versioning) for
details on versioning.
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "ruff_index"
version = "0.0.16"
version = "0.0.17"
description = "This is an internal component crate of Ruff"
authors = { workspace = true }
edition = { workspace = true }
+2 -2
View File
@@ -5,8 +5,8 @@
This crate is an internal component of [Ruff](https://crates.io/crates/ruff). The Rust API exposed
here is unstable and will have frequent breaking changes.
This version (0.0.16) is a component of [Ruff 0.16.10](https://crates.io/crates/ruff/0.16.10). The
source can be found [here](https://github.com/astral-sh/ruff/blob/0.16.10/crates/ruff_index).
This version (0.0.17) is a component of [Ruff 0.17.0](https://crates.io/crates/ruff/0.17.0). The
source can be found [here](https://github.com/astral-sh/ruff/blob/0.17.0/crates/ruff_index).
See Ruff's [crate versioning policy](https://docs.astral.sh/ruff/versioning/#crate-versioning) for
details on versioning.
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "ruff_linter"
version = "0.16.10"
version = "0.17.0"
description = "This is an internal component crate of Ruff"
authors = { workspace = true }
edition = { workspace = true }
+2 -2
View File
@@ -5,8 +5,8 @@
This crate is an internal component of [Ruff](https://crates.io/crates/ruff). The Rust API exposed
here is unstable and will have frequent breaking changes.
This version (0.16.10) is a component of [Ruff 0.16.10](https://crates.io/crates/ruff/0.16.10). The
source can be found [here](https://github.com/astral-sh/ruff/blob/0.16.10/crates/ruff_linter).
This version (0.17.0) is a component of [Ruff 0.17.0](https://crates.io/crates/ruff/0.17.0). The
source can be found [here](https://github.com/astral-sh/ruff/blob/0.17.0/crates/ruff_linter).
See Ruff's [crate versioning policy](https://docs.astral.sh/ruff/versioning/#crate-versioning) for
details on versioning.
@@ -67,7 +67,7 @@ use crate::{Edit, Fix, FixAvailability, Violation};
///
/// - [`lint.flake8-tidy-imports.require-lazy`]
#[derive(ViolationMetadata)]
#[violation_metadata(stable_since = "NEXT_RUFF_VERSION", category = Category::Correctness)]
#[violation_metadata(stable_since = "0.17.0", category = Category::Correctness)]
pub(crate) struct LazyImportImmediatelyResolved {
name: String,
fixable: bool,
@@ -60,7 +60,7 @@ use crate::{Edit, Fix, FixAvailability, Violation};
/// - `lint.flake8-tidy-imports.require-lazy`
/// - `lint.flake8-tidy-imports.ban-lazy`
#[derive(ViolationMetadata)]
#[violation_metadata(stable_since = "NEXT_RUFF_VERSION", category = Category::Restriction)]
#[violation_metadata(stable_since = "0.17.0", category = Category::Restriction)]
pub(crate) struct LazyImportMismatch {
policy: LazyImportPolicy,
name: Option<String>,
@@ -68,7 +68,7 @@ use crate::{Edit, Fix, FixAvailability, Violation};
/// - [Why `os.path.commonprefix` is deprecated](https://sethmlarson.dev/deprecate-confusing-apis-like-os-path-commonprefix)
/// - [CPython deprecation issue](https://github.com/python/cpython/issues/144347)
#[derive(ViolationMetadata)]
#[violation_metadata(stable_since = "NEXT_RUFF_VERSION", category = Category::Suspicious)]
#[violation_metadata(stable_since = "0.17.0", category = Category::Suspicious)]
pub(crate) struct OsPathCommonprefix;
impl Violation for OsPathCommonprefix {
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "ruff_macros"
version = "0.0.16"
version = "0.0.17"
description = "This is an internal component crate of Ruff"
authors = { workspace = true }
edition = { workspace = true }
+2 -2
View File
@@ -5,8 +5,8 @@
This crate is an internal component of [Ruff](https://crates.io/crates/ruff). The Rust API exposed
here is unstable and will have frequent breaking changes.
This version (0.0.16) is a component of [Ruff 0.16.10](https://crates.io/crates/ruff/0.16.10). The
source can be found [here](https://github.com/astral-sh/ruff/blob/0.16.10/crates/ruff_macros).
This version (0.0.17) is a component of [Ruff 0.17.0](https://crates.io/crates/ruff/0.17.0). The
source can be found [here](https://github.com/astral-sh/ruff/blob/0.17.0/crates/ruff_macros).
See Ruff's [crate versioning policy](https://docs.astral.sh/ruff/versioning/#crate-versioning) for
details on versioning.
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "ruff_markdown"
version = "0.0.16"
version = "0.0.17"
description = "This is an internal component crate of Ruff"
edition = { workspace = true }
rust-version = { workspace = true }
+2 -2
View File
@@ -5,8 +5,8 @@
This crate is an internal component of [Ruff](https://crates.io/crates/ruff). The Rust API exposed
here is unstable and will have frequent breaking changes.
This version (0.0.16) is a component of [Ruff 0.16.10](https://crates.io/crates/ruff/0.16.10). The
source can be found [here](https://github.com/astral-sh/ruff/blob/0.16.10/crates/ruff_markdown).
This version (0.0.17) is a component of [Ruff 0.17.0](https://crates.io/crates/ruff/0.17.0). The
source can be found [here](https://github.com/astral-sh/ruff/blob/0.17.0/crates/ruff_markdown).
See Ruff's [crate versioning policy](https://docs.astral.sh/ruff/versioning/#crate-versioning) for
details on versioning.
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "ruff_memory_usage"
version = "0.0.16"
version = "0.0.17"
description = "This is an internal component crate of Ruff"
authors = { workspace = true }
edition = { workspace = true }
+2 -2
View File
@@ -5,8 +5,8 @@
This crate is an internal component of [Ruff](https://crates.io/crates/ruff). The Rust API exposed
here is unstable and will have frequent breaking changes.
This version (0.0.16) is a component of [Ruff 0.16.10](https://crates.io/crates/ruff/0.16.10). The
source can be found [here](https://github.com/astral-sh/ruff/blob/0.16.10/crates/ruff_memory_usage).
This version (0.0.17) is a component of [Ruff 0.17.0](https://crates.io/crates/ruff/0.17.0). The
source can be found [here](https://github.com/astral-sh/ruff/blob/0.17.0/crates/ruff_memory_usage).
See Ruff's [crate versioning policy](https://docs.astral.sh/ruff/versioning/#crate-versioning) for
details on versioning.
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "ruff_notebook"
version = "0.0.16"
version = "0.0.17"
description = "This is an internal component crate of Ruff"
authors = { workspace = true }
edition = { workspace = true }
+2 -2
View File
@@ -5,8 +5,8 @@
This crate is an internal component of [Ruff](https://crates.io/crates/ruff). The Rust API exposed
here is unstable and will have frequent breaking changes.
This version (0.0.16) is a component of [Ruff 0.16.10](https://crates.io/crates/ruff/0.16.10). The
source can be found [here](https://github.com/astral-sh/ruff/blob/0.16.10/crates/ruff_notebook).
This version (0.0.17) is a component of [Ruff 0.17.0](https://crates.io/crates/ruff/0.17.0). The
source can be found [here](https://github.com/astral-sh/ruff/blob/0.17.0/crates/ruff_notebook).
See Ruff's [crate versioning policy](https://docs.astral.sh/ruff/versioning/#crate-versioning) for
details on versioning.
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "ruff_options_metadata"
version = "0.0.16"
version = "0.0.17"
description = "This is an internal component crate of Ruff"
authors = { workspace = true }
edition = { workspace = true }
+2 -2
View File
@@ -5,8 +5,8 @@
This crate is an internal component of [Ruff](https://crates.io/crates/ruff). The Rust API exposed
here is unstable and will have frequent breaking changes.
This version (0.0.16) is a component of [Ruff 0.16.10](https://crates.io/crates/ruff/0.16.10). The
source can be found [here](https://github.com/astral-sh/ruff/blob/0.16.10/crates/ruff_options_metadata).
This version (0.0.17) is a component of [Ruff 0.17.0](https://crates.io/crates/ruff/0.17.0). The
source can be found [here](https://github.com/astral-sh/ruff/blob/0.17.0/crates/ruff_options_metadata).
See Ruff's [crate versioning policy](https://docs.astral.sh/ruff/versioning/#crate-versioning) for
details on versioning.
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "ruff_python_ast"
version = "0.0.16"
version = "0.0.17"
description = "This is an internal component crate of Ruff"
authors = { workspace = true }
edition = { workspace = true }
+2 -2
View File
@@ -5,8 +5,8 @@
This crate is an internal component of [Ruff](https://crates.io/crates/ruff). The Rust API exposed
here is unstable and will have frequent breaking changes.
This version (0.0.16) is a component of [Ruff 0.16.10](https://crates.io/crates/ruff/0.16.10). The
source can be found [here](https://github.com/astral-sh/ruff/blob/0.16.10/crates/ruff_python_ast).
This version (0.0.17) is a component of [Ruff 0.17.0](https://crates.io/crates/ruff/0.17.0). The
source can be found [here](https://github.com/astral-sh/ruff/blob/0.17.0/crates/ruff_python_ast).
See Ruff's [crate versioning policy](https://docs.astral.sh/ruff/versioning/#crate-versioning) for
details on versioning.
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "ruff_python_codegen"
version = "0.0.16"
version = "0.0.17"
description = "This is an internal component crate of Ruff"
authors = { workspace = true }
edition = { workspace = true }
+2 -2
View File
@@ -5,8 +5,8 @@
This crate is an internal component of [Ruff](https://crates.io/crates/ruff). The Rust API exposed
here is unstable and will have frequent breaking changes.
This version (0.0.16) is a component of [Ruff 0.16.10](https://crates.io/crates/ruff/0.16.10). The
source can be found [here](https://github.com/astral-sh/ruff/blob/0.16.10/crates/ruff_python_codegen).
This version (0.0.17) is a component of [Ruff 0.17.0](https://crates.io/crates/ruff/0.17.0). The
source can be found [here](https://github.com/astral-sh/ruff/blob/0.17.0/crates/ruff_python_codegen).
See Ruff's [crate versioning policy](https://docs.astral.sh/ruff/versioning/#crate-versioning) for
details on versioning.
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "ruff_python_edits"
version = "0.0.16"
version = "0.0.17"
description = "This is an internal component crate of Ruff"
authors = { workspace = true }
edition = { workspace = true }
+2 -2
View File
@@ -5,8 +5,8 @@
This crate is an internal component of [Ruff](https://crates.io/crates/ruff). The Rust API exposed
here is unstable and will have frequent breaking changes.
This version (0.0.16) is a component of [Ruff 0.16.10](https://crates.io/crates/ruff/0.16.10). The
source can be found [here](https://github.com/astral-sh/ruff/blob/0.16.10/crates/ruff_python_edits).
This version (0.0.17) is a component of [Ruff 0.17.0](https://crates.io/crates/ruff/0.17.0). The
source can be found [here](https://github.com/astral-sh/ruff/blob/0.17.0/crates/ruff_python_edits).
See Ruff's [crate versioning policy](https://docs.astral.sh/ruff/versioning/#crate-versioning) for
details on versioning.
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "ruff_python_formatter"
version = "0.0.16"
version = "0.0.17"
description = "This is an internal component crate of Ruff"
authors = { workspace = true }
edition = { workspace = true }
+2 -2
View File
@@ -32,8 +32,8 @@ Head to [The Ruff Formatter](https://docs.astral.sh/ruff/formatter/) for usage i
This crate is an internal component of [Ruff](https://crates.io/crates/ruff). The Rust API exposed
here is unstable and will have frequent breaking changes.
This version (0.0.16) is a component of [Ruff 0.16.10](https://crates.io/crates/ruff/0.16.10). The
source can be found [here](https://github.com/astral-sh/ruff/blob/0.16.10/crates/ruff_python_formatter).
This version (0.0.17) is a component of [Ruff 0.17.0](https://crates.io/crates/ruff/0.17.0). The
source can be found [here](https://github.com/astral-sh/ruff/blob/0.17.0/crates/ruff_python_formatter).
See Ruff's [crate versioning policy](https://docs.astral.sh/ruff/versioning/#crate-versioning) for
details on versioning.
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "ruff_python_importer"
version = "0.0.16"
version = "0.0.17"
description = "This is an internal component crate of Ruff"
authors = { workspace = true }
edition = { workspace = true }
+2 -2
View File
@@ -5,8 +5,8 @@
This crate is an internal component of [Ruff](https://crates.io/crates/ruff). The Rust API exposed
here is unstable and will have frequent breaking changes.
This version (0.0.16) is a component of [Ruff 0.16.10](https://crates.io/crates/ruff/0.16.10). The
source can be found [here](https://github.com/astral-sh/ruff/blob/0.16.10/crates/ruff_python_importer).
This version (0.0.17) is a component of [Ruff 0.17.0](https://crates.io/crates/ruff/0.17.0). The
source can be found [here](https://github.com/astral-sh/ruff/blob/0.17.0/crates/ruff_python_importer).
See Ruff's [crate versioning policy](https://docs.astral.sh/ruff/versioning/#crate-versioning) for
details on versioning.
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "ruff_python_index"
version = "0.0.16"
version = "0.0.17"
description = "This is an internal component crate of Ruff"
authors = { workspace = true }
edition = { workspace = true }
+2 -2
View File
@@ -5,8 +5,8 @@
This crate is an internal component of [Ruff](https://crates.io/crates/ruff). The Rust API exposed
here is unstable and will have frequent breaking changes.
This version (0.0.16) is a component of [Ruff 0.16.10](https://crates.io/crates/ruff/0.16.10). The
source can be found [here](https://github.com/astral-sh/ruff/blob/0.16.10/crates/ruff_python_index).
This version (0.0.17) is a component of [Ruff 0.17.0](https://crates.io/crates/ruff/0.17.0). The
source can be found [here](https://github.com/astral-sh/ruff/blob/0.17.0/crates/ruff_python_index).
See Ruff's [crate versioning policy](https://docs.astral.sh/ruff/versioning/#crate-versioning) for
details on versioning.
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "ruff_python_literal"
version = "0.0.16"
version = "0.0.17"
description = "This is an internal component crate of Ruff"
authors = ["Charlie Marsh <charlie.r.marsh@gmail.com>", "RustPython Team"]
edition = { workspace = true }
+2 -2
View File
@@ -5,8 +5,8 @@
This crate is an internal component of [Ruff](https://crates.io/crates/ruff). The Rust API exposed
here is unstable and will have frequent breaking changes.
This version (0.0.16) is a component of [Ruff 0.16.10](https://crates.io/crates/ruff/0.16.10). The
source can be found [here](https://github.com/astral-sh/ruff/blob/0.16.10/crates/ruff_python_literal).
This version (0.0.17) is a component of [Ruff 0.17.0](https://crates.io/crates/ruff/0.17.0). The
source can be found [here](https://github.com/astral-sh/ruff/blob/0.17.0/crates/ruff_python_literal).
See Ruff's [crate versioning policy](https://docs.astral.sh/ruff/versioning/#crate-versioning) for
details on versioning.
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "ruff_python_parser"
version = "0.0.16"
version = "0.0.17"
description = "This is an internal component crate of Ruff"
authors = ["Charlie Marsh <charlie.r.marsh@gmail.com>", "RustPython Team"]
edition = { workspace = true }
+2 -2
View File
@@ -19,8 +19,8 @@ Refer to the [contributing guidelines](./CONTRIBUTING.md) to get started and Git
This crate is an internal component of [Ruff](https://crates.io/crates/ruff). The Rust API exposed
here is unstable and will have frequent breaking changes.
This version (0.0.16) is a component of [Ruff 0.16.10](https://crates.io/crates/ruff/0.16.10). The
source can be found [here](https://github.com/astral-sh/ruff/blob/0.16.10/crates/ruff_python_parser).
This version (0.0.17) is a component of [Ruff 0.17.0](https://crates.io/crates/ruff/0.17.0). The
source can be found [here](https://github.com/astral-sh/ruff/blob/0.17.0/crates/ruff_python_parser).
See Ruff's [crate versioning policy](https://docs.astral.sh/ruff/versioning/#crate-versioning) for
details on versioning.
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "ruff_python_semantic"
version = "0.0.16"
version = "0.0.17"
description = "This is an internal component crate of Ruff"
authors = { workspace = true }
edition = { workspace = true }
+2 -2
View File
@@ -5,8 +5,8 @@
This crate is an internal component of [Ruff](https://crates.io/crates/ruff). The Rust API exposed
here is unstable and will have frequent breaking changes.
This version (0.0.16) is a component of [Ruff 0.16.10](https://crates.io/crates/ruff/0.16.10). The
source can be found [here](https://github.com/astral-sh/ruff/blob/0.16.10/crates/ruff_python_semantic).
This version (0.0.17) is a component of [Ruff 0.17.0](https://crates.io/crates/ruff/0.17.0). The
source can be found [here](https://github.com/astral-sh/ruff/blob/0.17.0/crates/ruff_python_semantic).
See Ruff's [crate versioning policy](https://docs.astral.sh/ruff/versioning/#crate-versioning) for
details on versioning.
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "ruff_python_stdlib"
version = "0.0.16"
version = "0.0.17"
description = "This is an internal component crate of Ruff"
authors = { workspace = true }
edition = { workspace = true }
+2 -2
View File
@@ -5,8 +5,8 @@
This crate is an internal component of [Ruff](https://crates.io/crates/ruff). The Rust API exposed
here is unstable and will have frequent breaking changes.
This version (0.0.16) is a component of [Ruff 0.16.10](https://crates.io/crates/ruff/0.16.10). The
source can be found [here](https://github.com/astral-sh/ruff/blob/0.16.10/crates/ruff_python_stdlib).
This version (0.0.17) is a component of [Ruff 0.17.0](https://crates.io/crates/ruff/0.17.0). The
source can be found [here](https://github.com/astral-sh/ruff/blob/0.17.0/crates/ruff_python_stdlib).
See Ruff's [crate versioning policy](https://docs.astral.sh/ruff/versioning/#crate-versioning) for
details on versioning.
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "ruff_python_trivia"
version = "0.0.16"
version = "0.0.17"
description = "This is an internal component crate of Ruff"
authors = { workspace = true }
edition = { workspace = true }
+2 -2
View File
@@ -5,8 +5,8 @@
This crate is an internal component of [Ruff](https://crates.io/crates/ruff). The Rust API exposed
here is unstable and will have frequent breaking changes.
This version (0.0.16) is a component of [Ruff 0.16.10](https://crates.io/crates/ruff/0.16.10). The
source can be found [here](https://github.com/astral-sh/ruff/blob/0.16.10/crates/ruff_python_trivia).
This version (0.0.17) is a component of [Ruff 0.17.0](https://crates.io/crates/ruff/0.17.0). The
source can be found [here](https://github.com/astral-sh/ruff/blob/0.17.0/crates/ruff_python_trivia).
See Ruff's [crate versioning policy](https://docs.astral.sh/ruff/versioning/#crate-versioning) for
details on versioning.
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "ruff_ranged_value"
version = "0.0.16"
version = "0.0.17"
description = "This is an internal component crate of Ruff"
authors = { workspace = true }
edition = { workspace = true }
+2 -2
View File
@@ -5,8 +5,8 @@
This crate is an internal component of [Ruff](https://crates.io/crates/ruff). The Rust API exposed
here is unstable and will have frequent breaking changes.
This version (0.0.16) is a component of [Ruff 0.16.10](https://crates.io/crates/ruff/0.16.10). The
source can be found [here](https://github.com/astral-sh/ruff/blob/0.16.10/crates/ruff_ranged_value).
This version (0.0.17) is a component of [Ruff 0.17.0](https://crates.io/crates/ruff/0.17.0). The
source can be found [here](https://github.com/astral-sh/ruff/blob/0.17.0/crates/ruff_ranged_value).
See Ruff's [crate versioning policy](https://docs.astral.sh/ruff/versioning/#crate-versioning) for
details on versioning.
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "ruff_server"
version = "0.0.16"
version = "0.0.17"
description = "This is an internal component crate of Ruff"
authors = { workspace = true }
edition = { workspace = true }
+2 -2
View File
@@ -24,8 +24,8 @@ You can also join us on [**Discord**](https://discord.com/invite/astral-sh).
This crate is an internal component of [Ruff](https://crates.io/crates/ruff). The Rust API exposed
here is unstable and will have frequent breaking changes.
This version (0.0.16) is a component of [Ruff 0.16.10](https://crates.io/crates/ruff/0.16.10). The
source can be found [here](https://github.com/astral-sh/ruff/blob/0.16.10/crates/ruff_server).
This version (0.0.17) is a component of [Ruff 0.17.0](https://crates.io/crates/ruff/0.17.0). The
source can be found [here](https://github.com/astral-sh/ruff/blob/0.17.0/crates/ruff_server).
See Ruff's [crate versioning policy](https://docs.astral.sh/ruff/versioning/#crate-versioning) for
details on versioning.
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "ruff_source_file"
version = "0.0.16"
version = "0.0.17"
description = "This is an internal component crate of Ruff"
authors = { workspace = true }
edition = { workspace = true }
+2 -2
View File
@@ -5,8 +5,8 @@
This crate is an internal component of [Ruff](https://crates.io/crates/ruff). The Rust API exposed
here is unstable and will have frequent breaking changes.
This version (0.0.16) is a component of [Ruff 0.16.10](https://crates.io/crates/ruff/0.16.10). The
source can be found [here](https://github.com/astral-sh/ruff/blob/0.16.10/crates/ruff_source_file).
This version (0.0.17) is a component of [Ruff 0.17.0](https://crates.io/crates/ruff/0.17.0). The
source can be found [here](https://github.com/astral-sh/ruff/blob/0.17.0/crates/ruff_source_file).
See Ruff's [crate versioning policy](https://docs.astral.sh/ruff/versioning/#crate-versioning) for
details on versioning.
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "ruff_text_size"
version = "0.0.16"
version = "0.0.17"
description = "This is an internal component crate of Ruff"
authors = { workspace = true }
edition = { workspace = true }
+2 -2
View File
@@ -5,8 +5,8 @@
This crate is an internal component of [Ruff](https://crates.io/crates/ruff). The Rust API exposed
here is unstable and will have frequent breaking changes.
This version (0.0.16) is a component of [Ruff 0.16.10](https://crates.io/crates/ruff/0.16.10). The
source can be found [here](https://github.com/astral-sh/ruff/blob/0.16.10/crates/ruff_text_size).
This version (0.0.17) is a component of [Ruff 0.17.0](https://crates.io/crates/ruff/0.17.0). The
source can be found [here](https://github.com/astral-sh/ruff/blob/0.17.0/crates/ruff_text_size).
See Ruff's [crate versioning policy](https://docs.astral.sh/ruff/versioning/#crate-versioning) for
details on versioning.
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "ruff_unicode_names2"
version = "0.0.16"
version = "0.0.17"
description = "This is an internal component crate of Ruff"
authors = { workspace = true }
edition = { workspace = true }
@@ -1,6 +1,6 @@
[package]
name = "ruff_unicode_names2_generator"
version = "0.0.16"
version = "0.0.17"
description = "This is an internal component crate of Ruff"
authors = { workspace = true }
edition = "2018"
@@ -0,0 +1,12 @@
<!-- This file is generated. DO NOT EDIT -->
# ruff_unicode_names2_generator
This crate is an internal component of [Ruff](https://crates.io/crates/ruff). The Rust API exposed
here is unstable and will have frequent breaking changes.
This version (0.0.17) is a component of [Ruff 0.17.0](https://crates.io/crates/ruff/0.17.0). The
source can be found [here](https://github.com/astral-sh/ruff/blob/0.17.0/crates/ruff_unicode_names2_generator).
See Ruff's [crate versioning policy](https://docs.astral.sh/ruff/versioning/#crate-versioning) for
details on versioning.
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "ruff_wasm"
version = "0.16.10"
version = "0.17.0"
description = "WebAssembly bindings for Ruff"
authors = { workspace = true }
edition = { workspace = true }
+2 -2
View File
@@ -55,8 +55,8 @@ const formatted = workspace.format(exampleDocument);
This crate is an internal component of [Ruff](https://crates.io/crates/ruff). The Rust API exposed
here is unstable and will have frequent breaking changes.
This version (0.16.10) is a component of [Ruff 0.16.10](https://crates.io/crates/ruff/0.16.10). The
source can be found [here](https://github.com/astral-sh/ruff/blob/0.16.10/crates/ruff_wasm).
This version (0.17.0) is a component of [Ruff 0.17.0](https://crates.io/crates/ruff/0.17.0). The
source can be found [here](https://github.com/astral-sh/ruff/blob/0.17.0/crates/ruff_wasm).
See Ruff's [crate versioning policy](https://docs.astral.sh/ruff/versioning/#crate-versioning) for
details on versioning.
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "ruff_workspace"
version = "0.0.16"
version = "0.0.17"
description = "This is an internal component crate of Ruff"
authors = { workspace = true }
edition = { workspace = true }
+2 -2
View File
@@ -5,8 +5,8 @@
This crate is an internal component of [Ruff](https://crates.io/crates/ruff). The Rust API exposed
here is unstable and will have frequent breaking changes.
This version (0.0.16) is a component of [Ruff 0.16.10](https://crates.io/crates/ruff/0.16.10). The
source can be found [here](https://github.com/astral-sh/ruff/blob/0.16.10/crates/ruff_workspace).
This version (0.0.17) is a component of [Ruff 0.17.0](https://crates.io/crates/ruff/0.17.0). The
source can be found [here](https://github.com/astral-sh/ruff/blob/0.17.0/crates/ruff_workspace).
See Ruff's [crate versioning policy](https://docs.astral.sh/ruff/versioning/#crate-versioning) for
details on versioning.
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "ty_combine"
version = "0.0.16"
version = "0.0.17"
description = "This is an internal component crate of Ruff"
edition.workspace = true
rust-version.workspace = true
+2 -2
View File
@@ -5,8 +5,8 @@
This crate is an internal component of [Ruff](https://crates.io/crates/ruff). The Rust API exposed
here is unstable and will have frequent breaking changes.
This version (0.0.16) is a component of [Ruff 0.16.10](https://crates.io/crates/ruff/0.16.10). The
source can be found [here](https://github.com/astral-sh/ruff/blob/0.16.10/crates/ty_combine).
This version (0.0.17) is a component of [Ruff 0.17.0](https://crates.io/crates/ruff/0.17.0). The
source can be found [here](https://github.com/astral-sh/ruff/blob/0.17.0/crates/ty_combine).
See Ruff's [crate versioning policy](https://docs.astral.sh/ruff/versioning/#crate-versioning) for
details on versioning.
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "ty_module_resolver"
version = "0.0.16"
version = "0.0.17"
description = "This is an internal component crate of Ruff"
authors = { workspace = true }
edition = { workspace = true }
+2 -2
View File
@@ -5,8 +5,8 @@
This crate is an internal component of [Ruff](https://crates.io/crates/ruff). The Rust API exposed
here is unstable and will have frequent breaking changes.
This version (0.0.16) is a component of [Ruff 0.16.10](https://crates.io/crates/ruff/0.16.10). The
source can be found [here](https://github.com/astral-sh/ruff/blob/0.16.10/crates/ty_module_resolver).
This version (0.0.17) is a component of [Ruff 0.17.0](https://crates.io/crates/ruff/0.17.0). The
source can be found [here](https://github.com/astral-sh/ruff/blob/0.17.0/crates/ty_module_resolver).
See Ruff's [crate versioning policy](https://docs.astral.sh/ruff/versioning/#crate-versioning) for
details on versioning.
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "ty_python_core"
version = "0.0.16"
version = "0.0.17"
description = "This is an internal component crate of Ruff"
authors = { workspace = true }
edition = { workspace = true }
+2 -2
View File
@@ -5,8 +5,8 @@
This crate is an internal component of [Ruff](https://crates.io/crates/ruff). The Rust API exposed
here is unstable and will have frequent breaking changes.
This version (0.0.16) is a component of [Ruff 0.16.10](https://crates.io/crates/ruff/0.16.10). The
source can be found [here](https://github.com/astral-sh/ruff/blob/0.16.10/crates/ty_python_core).
This version (0.0.17) is a component of [Ruff 0.17.0](https://crates.io/crates/ruff/0.17.0). The
source can be found [here](https://github.com/astral-sh/ruff/blob/0.17.0/crates/ty_python_core).
See Ruff's [crate versioning policy](https://docs.astral.sh/ruff/versioning/#crate-versioning) for
details on versioning.
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "ty_python_semantic"
version = "0.0.16"
version = "0.0.17"
description = "This is an internal component crate of Ruff"
authors = { workspace = true }
edition = { workspace = true }
+2 -2
View File
@@ -5,8 +5,8 @@
This crate is an internal component of [Ruff](https://crates.io/crates/ruff). The Rust API exposed
here is unstable and will have frequent breaking changes.
This version (0.0.16) is a component of [Ruff 0.16.10](https://crates.io/crates/ruff/0.16.10). The
source can be found [here](https://github.com/astral-sh/ruff/blob/0.16.10/crates/ty_python_semantic).
This version (0.0.17) is a component of [Ruff 0.17.0](https://crates.io/crates/ruff/0.17.0). The
source can be found [here](https://github.com/astral-sh/ruff/blob/0.17.0/crates/ty_python_semantic).
See Ruff's [crate versioning policy](https://docs.astral.sh/ruff/versioning/#crate-versioning) for
details on versioning.
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "ty_site_packages"
version = "0.0.16"
version = "0.0.17"
description = "This is an internal component crate of Ruff"
authors = { workspace = true }
edition = { workspace = true }
+2 -2
View File
@@ -5,8 +5,8 @@
This crate is an internal component of [Ruff](https://crates.io/crates/ruff). The Rust API exposed
here is unstable and will have frequent breaking changes.
This version (0.0.16) is a component of [Ruff 0.16.10](https://crates.io/crates/ruff/0.16.10). The
source can be found [here](https://github.com/astral-sh/ruff/blob/0.16.10/crates/ty_site_packages).
This version (0.0.17) is a component of [Ruff 0.17.0](https://crates.io/crates/ruff/0.17.0). The
source can be found [here](https://github.com/astral-sh/ruff/blob/0.17.0/crates/ty_site_packages).
See Ruff's [crate versioning policy](https://docs.astral.sh/ruff/versioning/#crate-versioning) for
details on versioning.
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "ty_static"
version = "0.0.16"
version = "0.0.17"
description = "This is an internal component crate of Ruff"
edition = { workspace = true }
rust-version = { workspace = true }
+2 -2
View File
@@ -5,8 +5,8 @@
This crate is an internal component of [Ruff](https://crates.io/crates/ruff). The Rust API exposed
here is unstable and will have frequent breaking changes.
This version (0.0.16) is a component of [Ruff 0.16.10](https://crates.io/crates/ruff/0.16.10). The
source can be found [here](https://github.com/astral-sh/ruff/blob/0.16.10/crates/ty_static).
This version (0.0.17) is a component of [Ruff 0.17.0](https://crates.io/crates/ruff/0.17.0). The
source can be found [here](https://github.com/astral-sh/ruff/blob/0.17.0/crates/ty_static).
See Ruff's [crate versioning policy](https://docs.astral.sh/ruff/versioning/#crate-versioning) for
details on versioning.
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "ty_vendored"
version = "0.0.16"
version = "0.0.17"
description = "This is an internal component crate of Ruff"
authors = { workspace = true }
edition = { workspace = true }
+1 -1
View File
@@ -303,7 +303,7 @@ support needs to be explicitly included by adding it to `types_or`:
```yaml title=".pre-commit-config.yaml"
repos:
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.16.10
rev: v0.17.0
hooks:
- id: ruff-format
types_or: [python, pyi, jupyter, markdown]
+2 -2
View File
@@ -5,8 +5,8 @@ Ruff is available as [`ruff`](https://pypi.org/project/ruff/) on PyPI.
Ruff can be invoked directly with [`uvx`](https://docs.astral.sh/uv/):
```shell
uvx ruff@0.16.10 check # Lint all files in the current directory.
uvx ruff@0.16.10 format # Format all files in the current directory.
uvx ruff@0.17.0 check # Lint all files in the current directory.
uvx ruff@0.17.0 format # Format all files in the current directory.
```
Or installed with `uv` (recommended), `pip`, or `pipx`:
+4 -4
View File
@@ -80,7 +80,7 @@ You can add the following configuration to `.gitlab-ci.yml` to run a `ruff forma
stage: build
interruptible: true
image:
name: ghcr.io/astral-sh/ruff:0.16.10-alpine
name: ghcr.io/astral-sh/ruff:0.17.0-alpine
before_script:
- cd $CI_PROJECT_DIR
- ruff --version
@@ -106,7 +106,7 @@ Ruff can be used as a [pre-commit](https://pre-commit.com) hook via [`ruff-pre-c
```yaml
- repo: https://github.com/astral-sh/ruff-pre-commit
# Ruff version.
rev: v0.16.10
rev: v0.17.0
hooks:
# Run the linter.
- id: ruff-check
@@ -119,7 +119,7 @@ To enable lint fixes, add the `--fix` argument to the lint hook:
```yaml
- repo: https://github.com/astral-sh/ruff-pre-commit
# Ruff version.
rev: v0.16.10
rev: v0.17.0
hooks:
# Run the linter.
- id: ruff-check
@@ -133,7 +133,7 @@ To avoid running on Jupyter Notebooks, remove `jupyter` from the list of allowed
```yaml
- repo: https://github.com/astral-sh/ruff-pre-commit
# Ruff version.
rev: v0.16.10
rev: v0.17.0
hooks:
# Run the linter.
- id: ruff-check
+1 -1
View File
@@ -372,7 +372,7 @@ This tutorial has focused on Ruff's command-line interface, but Ruff can also be
```yaml
- repo: https://github.com/astral-sh/ruff-pre-commit
# Ruff version.
rev: v0.16.10
rev: v0.17.0
hooks:
# Run the linter.
- id: ruff-check
+1 -1
View File
@@ -4,7 +4,7 @@ build-backend = "maturin"
[project]
name = "ruff"
version = "0.16.10"
version = "0.17.0"
description = "An extremely fast Python linter and code formatter, written in Rust."
authors = [{ name = "Astral Software Inc.", email = "hey@astral.sh" }]
readme = "README.md"
+1 -1
View File
@@ -1,6 +1,6 @@
[project]
name = "scripts"
version = "0.16.10"
version = "0.17.0"
description = ""
authors = ["Charles Marsh <charlie.r.marsh@gmail.com>"]
Generated
+1 -1
View File
@@ -1505,7 +1505,7 @@ wheels = [
[[package]]
name = "ruff"
version = "0.16.10"
version = "0.17.0"
source = { editable = "." }
[package.dev-dependencies]