Ruff 0.16: CI падает от 413 правил, агенты разгребают хвост

23 июля Astral выпустила Ruff 0.16.0 — линтер Python с 413 правилами по умолчанию вместо прежних 59. Без правок в конфиге он теперь поднимает синтаксические ошибки и сбои на рантайме, которые раньше нужно было включать вручную.
Simon Willison узнал об этом, когда CI на трёх проектах — Datasette, sqlite-utils и LLM — начал падать: ruff в dev-зависимостях был незакреплён, и свежая версия подтянулась сама.
Масштаб обновления
С момента v0.1.0 в Ruff накопилось уже 968 проверок — было 708. Simon Willison гоняет тесты в CI на Python 3.10–3.14, поэтому для него апгрейд оказался относительно безопасным — главная боль была в объёме замечаний, а не в поломках.
Одна команда — и половина работы
Проверить любой проект:
uvx ruff@latest check .Массовый автофикс:
uvx ruff@latest check . --fix --unsafe-fixesНа sqlite-utils эта связка закрыла 1538 из 1618 замечаний. Среди оставшихся — правила вроде DTZ005 (вызов datetime.now() без таймзоны), BLE001 (голый except Exception) и B018 (бесполезный доступ к атрибуту). Ruff пишет подсказки так, что оставшийся хвост можно отдать агенту без ручного разбора.
Simon Willison как раз так и сделал: Codex (GPT-5.6 Sol high) почистил LLM и sqlite-utils, Claude Code с Opus 5 — Datasette.
Источник: Ruff v0.16.0.