// the find
astral-sh/ruff
An extremely fast Python linter and code formatter, written in Rust.
Ruff is a Python linter and formatter written in Rust that replaces Flake8, Black, isort, pyupgrade, and a dozen plugins with one binary. It's for any Python project, from a solo script to a monorepo at the Airflow/pandas scale, where lint time on save or in CI is actually noticeable.
The single-binary distribution means no virtualenv dependency hell for your lint tooling, which is a real problem Flake8 plugin stacks have. Rule coverage is wide (900+ rules) and most of them are direct Rust reimplementations rather than wrappers, so behavior tracks the original tools closely instead of drifting. Hierarchical pyproject.toml/ruff.toml config resolution handles monorepos without per-package duplication. The `--fix` autofix path covers most of the ruleset, not just a handful of trivial rules.
Some flake8 plugins are reimplemented rather than wrapped, so edge-case parity with the original tool isn't guaranteed — check the FAQ comparison tables before assuming a 1:1 swap for anything non-trivial. The formatter intentionally mimics Black but isn't a drop-in for projects with heavy custom Black config; migration can produce diff noise. It's now commercially backed by Astral (also behind uv and ty), which is good for funding but means roadmap priorities aren't purely community-driven. Preview-mode rules change behavior release to release, so pinning a version matters more here than with slower-moving linters.