two commandsruff check (lint) + ruff format; replaces flake8/black/isort/pyupgrade/bandit
--fix does the boring workunused imports, sorting, rewrites; --unsafe-fixes for the rest (review)
rule prefixesE/W style, F bugs, I imports, B bugbear, UP upgrade, SIM simplify
config under [tool.ruff.lint]select/ignore moved there in 0.2
select replaces, extend-select addsknow which you want
per-file-ignoresF401 in __init__, S101 in tests
format = Black-compatiblebyte-for-byte for most code; import sort is lint rule I
# noqa: CODE, not bare# ruff: noqa at file top for whole-file
not a type checkerpair with mypy; ruff-pre-commit for automation