Skip to main content

Ruff 0.17.1

Release Date: October 15, 2026

OK RUFF 0.17.1 JUST DROPPED ☕️ Released October 15, 2026, one day after uv 0.13.1, because the Astral team does not sleep. This is a patch. It is not flashy. It still fixes stuff you will hit. Let's go. 🧵

🚀 The Fast Fixes

Four bugs got squashed and one of them is PYI036 false positives on quoted annotations in stub files. If you write .pyi stubs, that one matters. Period.

  • Dedent with multiple leading comments now works, so your formatter stops mangling blocks that start with two or more comment lines.
  • PYI063 catches legacy positional-only parameters in __new__ methods. Stub authors, this is your rule.
  • PYI036 false positives fixed for quoted annotations. No more noise on valid stubs.
  • PERF401 and PERF403 stop suggesting invalid comprehensions. A bad suggestion is worse than no suggestion, so this is a genuine win for the perflint crowd.

🧪 Preview Feature

Under preview, the pycodestyle whitespace rules E271 through E274 no longer treat None, True, or False as keywords. Tiny change. Real reduction in nonsense warnings. 👌

🔧 Rule Change

More collections and weakref containers are now treated as mutable. If you rely on rules that flag mutable class attributes or mutable default arguments, this expands coverage to containers that were slipping through. Check your output after upgrading, because new hits are the point.

📝 Docs

The flake8-import-conventions documentation got updated default and example aliases, and the PYI docs picked up fixes for invalid markup and HTML snippets. Boring but useful.

🙌 Shoutouts

Six contributors shipped this one: @fixfon, @mmaxjr, @joshuavetos, @nekomario28, @ntBre, and @shan3520. 👏

⬆️ Upgrade RNN

uv tool upgrade ruff or pip install -U ruff==0.17.1. Then run ruff check with the new version before you commit, because the mutable-container rule change can surface fresh findings. Go update. 🔗

Other Versions

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