0.15.17
Added
- Allow human-readable names in suppression comments
- Prioritize human-readable names in CLI output
- Add `trio.as_safe_channel` to safe decorators for `flake8-async` (ASYNC119)
- Check `pytest_asyncio` fixtures in `flake8-pytest-style`
- Ban `pytest` autouse fixtures with rule RUF076
- Add `from __future__ import annotations` automatically in `pyupgrade` (UP007, UP045)
- Allow rule names in `ruff rule` command
Changed
- Respect diagnostic start and parent ranges and trailing comments in `ruff:ignore` suppressions
- Clarify diagnostic message for single parameters in `flake8-pytest-style` (PT007)
- Exempt Python version comparisons in `pylint` (PLR2004)
- Reserve AST `Vec`s with correct capacity for common cases
Fixed
- Fix handling of `ignore` comments within a `disable`/`enable` pair
- Fix diagnostic when `ruff:enable` or `ruff:disable` appears where `ruff:ignore` is expected
- Preserve leading empty literals to avoid syntax errors in `pyupgrade` (UP032)
- Preserve whitespace for Quarto cell option comments in formatter
Removed
- Drop autofix for `np.in1d` in `numpy` (NPY201)
Release Notes
Released on 2026-06-11.
Preview features
- Allow human-readable names in suppression comments (#25614)
- Fix handling of
ignorecomments within adisable/enablepair (#25845) - Prioritize human-readable names in CLI output (#25869)
- Respect diagnostic start and parent ranges and trailing comments in
ruff:ignoresuppressions (#25673) - [
flake8-async] Addtrio.as_safe_channelto safe decorators (ASYNC119) (#25775) - [
flake8-pytest-style] Also checkpytest_asynciofixtures (#25375) - [
ruff] Banpytestautouse fixtures (RUF076) (#25477) - [
pyupgrade] Addfrom __future__ import annotationsautomatically (UP007,UP045) (#23259)
Bug fixes
- Fix diagnostic when
ruff:enableorruff:disableappears whereruff:ignoreis expected (#25700) - [
pyupgrade] Preserve leading empty literals to avoid syntax errors (UP032) (#25491)
Rule changes
- [
flake8-pytest-style] Clarify diagnostic message for single parameters (PT007) (#25592) - [
numpy] Drop autofix fornp.in1d(NPY201) (#25612) - [
pylint] Exempt Python version comparisons (PLR2004) (#25743)
Performance
- Reserve AST
Vecs with correct capacity for common cases (#25451)
Formatter
- Preserve whitespace for Quarto cell option comments (#25641)
CLI
- Allow rule names in
ruff rule(#25640)
Other changes
- Fix playground diagnostics scrollbars (#25642)
Contributors
- @SuryanshSS1011
- @anishgirianish
- @romero-deshaw
- @karlhillx
- @carljm
- @ntBre
- @11happy
- @Kilo59
- @oconnor663
- @LeonidasZhak
- @DavisVaughan
- @MeGaGiGaGon
- @jonathandung
- @MichaReiser
- @brianmego
Install ruff 0.15.17
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/ruff/releases/download/0.15.17/ruff-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://releases.astral.sh/github/ruff/releases/download/0.15.17/ruff-installer.ps1 | iex"
Download ruff 0.15.17
Verifying GitHub Artifact Attestations
The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:
gh attestation verify <file-path of downloaded artifact> --repo astral-sh/ruff
You can also download the attestation from GitHub and verify against that directly:
gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation>