Ruff Replaces Multiple Python Linters with Single Config

𝗬𝗼𝘂𝗿 𝗣𝘆𝘁𝗵𝗼𝗻 𝗽𝗿𝗼𝗷𝗲𝗰𝘁 𝗵𝗮𝘀 𝗳𝗹𝗮𝗸𝗲𝟴, 𝗶𝘀𝗼𝗿𝘁, 𝗯𝗹𝗮𝗰𝗸, 𝗽𝘆𝗹𝗶𝗻𝘁, 𝗮𝗻𝗱 𝗯𝗮𝗻𝗱𝗶𝘁. Five tools. Five configs. Five places for CI to silently drift. Ruff replaces all of them. Written in Rust, it runs in milliseconds on a full codebase. One config in 𝗽𝘆𝗽𝗿𝗼𝗷𝗲𝗰𝘁.𝘁𝗼𝗺𝗹. One command in CI. 🔹 Replaces: flake8, isort, black, pyupgrade, pydocstyle, and 700+ rules from pylint 🔹 10–100x faster than the tools it replaces — no more slow CI lint steps 🔹 𝗿𝘂𝗳𝗳 𝗰𝗵𝗲𝗰𝗸 --𝗳𝗶𝘅 auto-fixes most violations — not just reports them 🔹 One binary, zero inter-tool conflicts, one source of truth This "BIFES UP" ruleset is my way of beefing up code quality while keeping the stakes high on security. It covers 90% of what matters from security to logic. Want 100%? Just extend it with 𝗪, 𝗔𝗦𝗬𝗡𝗖, and 𝗡 — especially essential for ensuring concurrency safety in FastAPI environments. What other rules do you often include in your projects? #Python #DevSecOps #SoftwareEngineering #BackendDevelopment #SoftwareArchitecture

  • text

Ruff is a no-brainer at this point - consolidating tooling + speed alone justifies the switch. In production systems, I usually extend with B (bugbear), S (bandit), and ASYNC - especially for FastAPI and high-concurrency services where subtle issues become real incidents. The real win is keeping CI fast and enforcing consistency at scale.

Completely agree with you Thomas Cionek, tooling simplicity + speed is underrated when it comes to maintaining developer productivity.

Like
Reply

Switched to ruff mostly for the speed - but I still keep Black around because it collapses line breaks where Ruff leaves them, personal taste really. pre-commit ties it all together so nothing slips through

See more comments

To view or add a comment, sign in

Explore content categories