Change8

0.14.0

Breaking Changes
📦 ruffView on GitHub →
1 breaking3 features🐛 6 fixes🔧 12 symbols

Summary

Ruff 0.14.0 updates the default Python target to 3.14, adds several preview rule enhancements, and includes numerous bug fixes across flake8‑annotations, flynt, isort, and Ruff itself.

⚠️ Breaking Changes

  • Default and latest supported Python version updated to 3.14; update CI pipelines, virtual environments, and Docker images to use Python >=3.14 to avoid compatibility issues.

Migration Steps

  1. Update CI pipelines, Docker images, and local development environments to use Python 3.14 or newer.
  2. Verify that any custom tooling relying on the previous default Python version is compatible with Python 3.14.

✨ New Features

  • Preview: flake8-bugbear now includes certain guaranteed‑mutable expressions such as tuples, generators, and assignment expressions (rule B006).
  • Preview: refurb adds fixes for rule FURB101 and FURB103.
  • Preview: ruff extends rule FA102 with listed PEP 585‑compatible APIs.

🐛 Bug Fixes

  • flake8-annotations: Fixed return‑type annotations to correctly handle shadowed builtin symbols (rules ANN201, ANN202, ANN204, ANN205, ANN206).
  • flynt: Fixed f‑string quoting when mixed quote joiners are used (rule FLY002).
  • isort: Fixed insertion of required imports before future imports (rule I002).
  • ruff: Argfile expansion errors are now handled gracefully.
  • ruff: RUF051 is skipped when an else/elif block is present.
  • ruff: Improved handling of intermixed comments inside from‑imports.

🔧 Affected Symbols

B006FURB101FURB103FA102ANN201ANN202ANN204ANN205ANN206FLY002I002RUF051