Skip to main content

Ruff 0.16.6

Release Date: September 3, 2026

Ruff 0.16.6 rolled out on September 3, a tidy patch release that mostly stays under the hood: a few preview-rule moves, a handful of correctness fixes, and one notable panic that just stopped happening. If you update lint-heavy pipelines on a schedule, this is a quiet and safe one to pull.

Preview Moves

  • pytest-fixture-autouse moved to the restriction category to sit closer to related pytest rules
  • An autofix arrived for PT020 (deprecated yield fixtures)
  • Fixed a potential fix loop between TID254 and TID255
  • isort no longer counts pragma comments toward the line length that triggers I001

Bug Fixes Worth Knowing

The patch that will make someone happy is the B031 panic on match subjects, which is resolved. Beyond that, unary expressions are now validated during parsing, builtins.open is recognized by ASYNC230 and PLW1514, DTZ901 rejects tzinfo=None bounds, and duplicate PT017 diagnostics are suppressed. There is also a display-only fix so PTH208 suggests the pathlib form of os.listdir.

Rule Change and Edge Case

flake8-use-pathlib gained a non-applying display fix for os.listdir, and the parser now allows unary plus in match patterns on Python 3.15. None of it is disruptive, but it closes gaps that were nagging edge cases in real repos.

The Realist Scenario

Do not expect a performance cliff or a magic speedup here. This is stabilization work: safer parsing, fewer duplicate diagnostics, and one fewer panic. Upgrade when convenient, run your lint suite, and move on. The hooks and editors all keep working unchanged.

What is New?

By continuing to use the site, you agree to the use of cookies.