Ruff Replaces 3 Tools, Boosts CI Speed 10x

I replaced 3 Python tools with 1 and my CI pipeline got 10x faster. The tools I dropped: black, isort, flake8. The replacement: Ruff. I've now migrated 7 repositories to Ruff (totaling 800+ Python files) and here's my honest take after 3 months. What's great: - Speed. Ruff lints my entire monorepo in under 2 seconds. The old stack took 20-30 seconds. In CI, that compounds fast across matrix builds. - One config block. Instead of [tool.black], [tool.isort], [tool.flake8] scattered across pyproject.toml, it's just [tool.ruff] and [tool.ruff.lint]. Select the rule codes you want, done. - Auto-fix. Ruff can fix most import sorting and unused import issues on save. I have it wired as a post-tool hook in my editor — every file save auto-formats. What's not perfect: - Rule parity isn't 100%. A few flake8 plugins I relied on (like flake8-bugbear's B950 line length) don't have exact equivalents. You adapt. - The error messages are sometimes less descriptive than flake8's. When a rule fires that you haven't seen before, you're reading docs more often. - If your team has muscle memory around black's opinionated formatting, Ruff's formatter makes slightly different choices in edge cases. Minor, but it can cause noisy diffs during migration. Bottom line: I'd never go back. The speed alone justifies the switch, and consolidating 3 config sections into 1 removes a real source of drift. If you're still running black + isort + flake8 separately, try `ruff check . --fix` on your repo. You'll feel the difference immediately. Have you switched to Ruff yet? What held you back (or convinced you)? #Python #DevTools #Ruff #DeveloperExperience #CodeQuality

To view or add a comment, sign in

Explore content categories