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

Автор: Javohir Abdullayev · · Python

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

Мелочи, которые крадут время разработчика

Каждый 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