Разработка
December 25, 2024
Ruff 🐶🐡
В очередной раз добавляя в проект Flake, isort и Black, я подумал "Эх вот был бы такой инструмент который объединяет в себе все эти линтеры и форматеры, работает в связке с pre-commit, и еще чтобы все настройки были в одном файле". Оказывается такой инструмент есть и называется он Ruff (что в переводе - Ёрш(???) 🤔)
Ruff - это линтер + форматер для Python написанный на Rust. Он объединяет в себе все вышеуказанные инструменты и для его настройки нужен всего 1 файл(ruff.toml или pyproject.toml, кому как удобнее)
Для того, чтобы использовать Ruff достаточно знать 2 команды:
ruff format - запускает форматер ruff check - запускает линтер (если запустить с флагом --fix сразу исправит все ошибки)
А вот так его можно запускать в pre-commit:
repos:
- repo: local
hooks:
- id: ruff-check
name: Ruff Check with Fix
entry: ruff check --fix
language: python
types: [python]
additional_dependencies: [ruff]
- id: ruff-format
name: Ruff Format
entry: ruff format
language: python
types: [python]
additional_dependencies: [ruff]
Ниже оставил конфигурацию моего ruff.toml, который я использую в каждом проекте:
exclude = [
".bzr",
".direnv",
".eggs",
".git",
".hg",
".mypy_cache",
".nox",
".pants.d",
".ruff_cache",
".svn",
".tox",
".venv",
"__pypackages__",
"_build",
"buck-out",
"build",
"dist",
"node_modules",
"venv",
"env.py"
]
target-version = "py312"
[lint]
select = [
"I",
"F",
"E",
"W",
"I001",
"T201"
]
[format]
quote-style = "single"