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