Экономия времени в Python-проектах: настройка Ruff и Pre-commit
Автор: Javohir Abdullayev · · Python

Мелочи, которые крадут время разработчика
Каждый Python-разработчик в процессе написания кода сталкивается с одними и теми же повторяющимися проблемами: лишние пробелы в конце строк, неиспользуемые импорты (unused imports), несоответствия форматирования и нарушения правил PEP 8. Исправление таких ошибок вручную — как в команде, так и в личных фриланс-проектах — напрасно отнимает время и внимание.
Вместо того чтобы писать и читать на Code Review замечания вроде «добавьте сюда пустую строку» или «отсортируйте импорты по алфавиту», этот процесс можно полностью автоматизировать. Сегодня мы рассмотрим, как повысить продуктивность разработки с помощью Ruff — самого быстрого инструмента в современной экосистеме Python — и хуков pre-commit.
Почему именно Ruff?
До недавнего времени для проверки качества кода в Python-проектах использовалось сразу несколько отдельных инструментов (Flake8, Black, isort, Pylint). Однако каждый из них требовал отдельной конфигурации, а на крупных проектах они работали ощутимо медленно.
Ruff — это современный, невероятно быстрый линтер и форматтер для Python, написанный на Rust. Он обладает следующими преимуществами:
- Беспрецедентная скорость: работает в 10–100 раз быстрее существующих аналогов.
- Всё в одном: заменяет собой Flake8, isort, Black и десятки других плагинов.
- Автоматическое исправление: устраняет многие ошибки (например, удаление лишних импортов, форматирование строк) за доли секунды с помощью флага
--fix.
Шаг 1. Установка и запуск Ruff в проекте
Установить Ruff в виртуальное окружение (venv) вашего проекта очень просто:
pip install ruffДля проверки кода выполните следующую команду:
ruff check .Если вы хотите автоматически исправить найденные ошибки:
ruff check --fix .А для форматирования кода (в качестве быстрой замены Black):
ruff format .Шаг 2. Настройка хуков Pre-commit
Даже самый лучший инструмент окажется бесполезным, если забывать его запускать. Чтобы создать систему, которая автоматически проверяет код перед каждым коммитом в Git, воспользуемся пакетом pre-commit.
Сначала установим его:
pip install pre-commitВ корневой папке проекта создайте файл .pre-commit-config.yaml и добавьте в него следующую конфигурацию:
repos:
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.4.0
hooks:
- id: ruff
args: [--fix]
- id: ruff-formatТеперь свяжем хуки pre-commit с Git:
pre-commit installС этого момента при каждом выполнении команды git commit система будет автоматически проверять измененные файлы с помощью Ruff, форматировать их и, в случае обнаружения ошибок, прерывать коммит, уведомляя вас о проблемах.
Шаг 3. Настройка правил через pyproject.toml
Хранить настройки всех инструментов в одном файле pyproject.toml — современный стандарт разработки. В нем можно гибко настроить длину строки и перечень проверяемых правил:
[tool.ruff]
line-length = 88
target-version = Теги: #Python #Dasturlash #Ruff #Samaradorlik #Pre-commit