Разработка
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"