Ruff
- ⚡️ 10-100x faster than existing linters (like Flake8) and formatters (like Black)
- 🐍 Installable via pip
- 🛠️ pyproject.toml support
- 🤝 Python 3.14 compatibility
- ⚖️ Drop-in parity with Flake8, isort, and Black
- 📦 Built-in caching, to avoid re-analyzing unchanged files
- 🔧 Fix support, for automatic error correction (e.g., automatically remove unused imports)
- 📏 Over 900 built-in rules, with native re-implementations of popular Flake8 plugins, like flake8-bugbear
- ⌨️ First-party editor integrations for VS Code and more
- 🌎 Monorepo-friendly, with hierarchical and cascading configuration
Ruff aims to be orders of magnitude faster than alternative tools while integrating more functionality behind a single, common interface.
Ruff can be used to replace Flake8 (plus dozens of plugins), Black, isort, pydocstyle, pyupgrade, autoflake, and more, all while executing tens or hundreds of times faster than any individual tool.
Installation Instructions
Linux
Linux
Download Ruff
{
"url": "{{ .SVar `.tool.ruff.download.url` }}",
"destination_folder": "{{ .PDownloads }}",
"output_filename": "{{ .SVar `.tool.ruff.download.filename` }}",
"overwrite": false
} Extract Ruff Release
{
"destination": "{{ .PTools }}/ruff/{{ .SVar `.tool.ruff.download.version` }}",
"max_file_size": 0,
"skip_symlinks": false,
"preserve_permissions": true,
"remove_existing": true,
"source": "{{ .PDownloads }}/{{ .SVar `.tool.ruff.download.filename` }}"
} Move files up one level to simplify directory structure
{
"source": "{{ .PTools }}/ruff/{{ .SVar `.tool.ruff.download.version` }}/ruff-x86_64-linux",
"destination": "{{ .PTools }}/ruff/{{ .SVar `.tool.ruff.download.version` }}",
"overwrite_duplicates": false
}
MacOS
MacOS
Download Ruff
{
"url": "{{ .SVar `.tool.ruff.download.url` }}",
"destination_folder": "{{ .PDownloads }}",
"output_filename": "{{ .SVar `.tool.ruff.download.filename` }}",
"overwrite": false
} Extract Ruff Release
{
"destination": "{{ .PTools }}/ruff/{{ .SVar `.tool.ruff.download.version` }}",
"max_file_size": 0,
"skip_symlinks": false,
"preserve_permissions": true,
"remove_existing": true,
"source": "{{ .PDownloads }}/{{ .SVar `.tool.ruff.download.filename` }}"
} Move files up one level to simplify directory structure
{
"source": "{{ .PTools }}/ruff/{{ .SVar `.tool.ruff.download.version` }}/ruff-x86_64-apple-darwin",
"destination": "{{ .PTools }}/ruff/{{ .SVar `.tool.ruff.download.version` }}",
"overwrite_duplicates": false
} Binaries
- ruff