Ruff 0.16.6
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-autousemoved to therestrictioncategory to sit closer to related pytest rules- An autofix arrived for
PT020(deprecatedyieldfixtures) - Fixed a potential fix loop between
TID254andTID255 - 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.