Change8

0.9.4

📦 ruffView on GitHub →
18 features🐛 3 fixes🔧 22 symbols

Summary

Ruff 0.9.4 introduces several preview features, rule enhancements, CLI improvements, and bug fixes, along with updated documentation.

✨ New Features

  • Add preview support for Airflow context parameter check for BaseOperator.execute (AIR302).
  • Update AIR302 to check for deprecated context keys.
  • Permit suspicious imports within stub files for flake8-bandit (S4).
  • Do not trigger PLR6201 on empty collections for pylint.
  • Suppress FURB122 diagnostic when loop variables are used outside loop body.
  • Add support for more regex patterns in ruff (RUF055).
  • Check for shadowed map before suggesting fix (RUF058).
  • Do not emit diagnostic when all arguments to zip() are variadic (RUF058).
  • Parenthesize fix for unnecessary-round when argument spans multiple lines (RUF057).
  • Preserve quote style in generated code.
  • Exempt NewType calls where the original type is immutable for flake8-bugbear (B008).
  • Honor banned top-level imports by TID253 in PLC0415 for pylint.
  • Ignore is_typeddict and TypedDict for deprecated-import in pyupgrade (UP035).
  • Fix formatter warning message for flake8-quotes option.
  • Implement tab autocomplete for ruff config command.
  • Add missing config docstrings.
  • Add references to trio.run_process and anyio.run_process.
  • Use uv init --lib in tutorial.

🐛 Bug Fixes

  • Do not emit unnecessary-map diagnostic when lambda has different arity (C417).
  • Parenthesize sorted when needed for unnecessary-call-around-sorted (C413).
  • Handle end-of-line comments for quoted-annotation (UP037).

🔧 Affected Symbols

BaseOperator.executeAIR302S4PLR6201FURB122RUF055RUF058RUF057quote style handlingB008TID253PLC0415UP035flake8-quotesruff configC417C413UP037mapzipsortedre patterns