Release Notes
Released on 2026-02-12.
Preview features
- [
airflow] Add ruff rules to catch deprecated Airflow imports for Airflow 3.1 (AIR321) (#22376) - [
airflow] Third positional parameter not namedti_keyshould be flagged forBaseOperatorLink.get_link(AIR303) (#22828) - [
flake8-gettext] Fix false negatives for plural argument ofngettext(INT001,INT002,INT003) (#21078) - [
pyflakes] Fix infinite loop in preview fix forunused-import(F401) (#23038) - [
pygrep-hooks] Detect non-existent mock methods in standalone expressions (PGH005) (#22830) - [
pylint] Allow dunder submodules and improve diagnostic range (PLC2701) (#22804) - [
pyupgrade] Improve diagnostic range for tuples (UP024) (#23013) - [
refurb] Check subscripts in tuple do not use lambda parameters inreimplemented-operator(FURB118) (#23079) - [
ruff] Detect mutable defaults infieldcalls (RUF008) (#23046) - [
ruff] Ignore stdcmath.inf(RUF069) (#23120) - [
ruff] New rulefloat-equality-comparison(RUF069) (#20585) - Don't format unlabeled Markdown code blocks (#23106)
- Markdown formatting support in LSP (#23063)
- Support Quarto Markdown language markers (#22947)
- Support formatting
pyconMarkdown code blocks (#23112) - Use extension mapping to select Markdown code block language (#22934)
Bug fixes
- Avoid false positive for undefined variables in
FAST001(#23224) - Avoid introducing syntax errors for
FAST003autofix (#23227) - Avoid suggesting
InitVarfor__post_init__that references PEP 695 type parameters (#23226) - Deduplicate type variables in generic functions (#23225)
- Fix exception handler parenthesis removal for Python 3.14+ (#23126)
- Fix f-string middle panic when parsing t-strings (#23232)
- Wrap
RUF020target for multiline fixes (#23210) - Wrap
UP007target for multiline fixes (#23208) - Fix missing diagnostics for last range suppression in file (#23242)
- [
pyupgrade] Fix syntax error on string with newline escape and comment (UP037) (#22968)
Rule changes
- Use
ruffinstead ofRuffas the program name in GitHub output format (#23240) - [
PT006] Fix syntax error when unpacking nested tuples inparametrizefixes (#22441) (#22464) - [
airflow] Catch deprecated attribute access from context key for Airflow 3.0 (AIR301) (#22850) - [
airflow] Capture deprecated arguments and a decorator (AIR301) (#23170) - [
flake8-boolean-trap] Addmultiprocessing.Valueto excluded functions forFBT003(#23010) - [
flake8-bugbear] Add a secondary annotation showing the previous occurrence (B033) (#22634) - [
flake8-type-checking] Add sub-diagnostic showing the runtime use of an annotation (TC004) (#23091) - [
isort] Support configurable import section heading comments (#23151) - [
ruff] Improve the diagnostic forRUF012(#23202)
Formatter
- Suppress diagnostic output for
format --check --silent(#17736)
Documentation
- Add tabbed shell completion documentation (#23169)
- Explain how to enable Markdown formatting for pre-commit hook (#23077)
- Fixed import in
runtime-evaluated-decoratorsexample (#23187) - Update ruff server contributing guide (#23060)
Other changes
- Exclude WASM artifacts from GitHub releases (#23221)
Contributors
- @mkniewallner
- @bxff
- @dylwil3
- @Avasam
- @amyreese
- @charliermarsh
- @Alex-ley-scrub
- @Kalmaegi
- @danparizher
- @AiyionPrime
- @eureka928
- @11happy
- @Jkhall81
- @chirizxc
- @leandrobbraga
- @tvatter
- @anishgirianish
- @shaanmajid
- @ntBre
- @sjyangkevin
Install ruff 0.15.1
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/ruff/releases/download/0.15.1/ruff-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/ruff/releases/download/0.15.1/ruff-installer.ps1 | iex"