Ruff, uv и Ty: современный стек для быстрой Python-разработки

Ruff, uv и Ty — это три инструмента на Rust, которые заменяют традиционные утилиты для Python: линтинг, форматирование, управление зависимостями и проверку типов. Они работают в 10–100 раз быстрее, чем их аналоги, и интегрируются в рабочие процессы без накладных расходов. Ruff объединяет функции Fl…

Ruff, uv и Ty: современный стек для быстрой Python-разработки

Ruff, uv и Ty: три инструмента, меняющие подход к Python-разработке

Современная Python-разработка требует не только функциональности, но и согласованности, скорости и минимальных накладных расходов. Традиционные инструменты — pip, Flake8, Black, mypy — давно превратились в тормозящий фактор: они требуют десятков конфигураций, работают медленно и усложняют рабочий процесс.

Ruff, uv и Ty меняют эту ситуацию. Все три инструмента написаны на Rust и оптимизированы для максимальной производительности. Вместо россыпи утилит вы получаете три решения, которые покрывают основные задачи: линтинг, форматирование, управление зависимостями и проверку типов. Их совместное использование позволяет сосредоточиться на коде, а не на инструментах.


Ruff: молниеносный анализатор и форматировщик

Ruff — высокопроизводительный линтер и форматировщик Python-кода, полностью написанный на Rust. Он объединяет функции Flake8, isort, Black и pyupgrade, заменяя сразу несколько утилит одним инструментом, который работает в 10–100 раз быстрее традиционных аналогов.

Даже на крупных проектах Ruff выполняет анализ за миллисекунды. Например, проверка проекта среднего размера с помощью Flake8 занимает 3,25 секунды, тогда как Ruff справляется за 0,14 секунды — в 23 раза быстрее. В стандартной поставке доступно более 700 правил: от базовых ошибок PEP 8 до уязвимостей безопасности, неиспользуемых импортов и сложных антипаттернов. При этом инструмент не только диагностирует проблемы, но и исправляет их автоматически. Команда ruff check --fix удаляет неиспользуемый код, сортирует импорты и оптимизирует выражения без ручного вмешательства.

Форматирование кода — ещё одна сильная сторона Ruff. Команда ruff format заменяет Black, но работает в десятки раз быстрее. Так, форматирование 42 файлов с помощью Black занимает 2,47 секунды, тогда как Ruff справляется за 0,3 секунды. Инструмент легко интегрируется в редакторы (VS Code, PyCharm) и CI/CD-системы (GitHub Actions, pre-commit), а конфигурация через pyproject.toml позволяет адаптировать правила под нужды проекта.

pip install ruff
ruff check .                # Проверка кода
ruff check --fix .          # Автоматическое исправление проблем
ruff format .               # Форматирование кода
[tool.ruff]
line-length = 88
target-version = "py311"
select = ["E", "F", "I", "N", "UP", "B", "A"]
ignore = ["E501"]
fixable = ["ALL"]
src = ["src", "tests"]

uv: быстрый менеджер пакетов и окружений

uv — современный менеджер пакетов и виртуальных окружений для Python, также написанный на Rust. Он позиционируется как полная замена pip, venv, pip-tools, Poetry и даже pyenv, сохраняя при этом совместимость с существующими рабочими процессами. Главное преимущество — скорость: благодаря параллельной установке и оптимизированному Rust-коду пакеты устанавливаются в 5–10 раз быстрее, чем с pip.

Например, установка Django с зависимостями с помощью pip занимает 9,34 секунды, тогда как uv справляется за 1,87 секунды. Инструмент упрощает управление виртуальными окружениями, позволяя создавать и использовать их одной командой:

uv venv .venv && uv pip install -r requirements.txt --venv .venv

uv поддерживает запуск Python-скриптов с зависимостями без предварительной настройки окружения:

uv run --python 3.12 --no-project python -c "print('hello world')"

Инструмент совместим с requirements.txt и pyproject.toml, что позволяет легко мигрировать с существующих решений. Кроме того, uv поддерживает динамическое добавление зависимостей к скриптам:

uv add --script example.py 'requests<3' 'rich'
curl -Ls https://astral.sh/uv/install.sh | sh
uv init my_project
uv pip install requests pandas
uv run pytest

Ty: моментальная проверка типов

Ty — новый типчекер от создателей Ruff и uv, спроектированный для мгновенной обратной связи при работе с аннотациями типов. В отличие от традиционных инструментов вроде mypy или Pyright, Ty интегрируется в рабочий процесс как часть редактора, а не отдельный этап сборки. Проверка типов выполняется в реальном времени, сразу после изменения кода.

Например, в проектах с использованием PyTorch пересчёт диагностик занимает менее 5 миллисекунд. Ty анализирует только изменённые части кода, что минимизирует накладные расходы. Инструмент интегрируется с редакторами через Language Server Protocol (LSP), предоставляя подсказки и ошибки типов прямо в IDE (VS Code, PyCharm и др.). Он совместим с Ruff и uv, дополняя их функциональность и обеспечивая полный цикл проверки кода.

def calculate_total(prices: list[float], tax_rate: float) -> float:
    subtotal = sum(prices)
    return subtotal * (1 + tax_rate)

result: int = calculate_total([10.0, 20.0], 0.1)  # Ошибка: несовместимые типы

Почему эти инструменты стоит использовать вместе

Ruff, uv и Ty образуют современный стек для Python-разработки, который решает ключевые проблемы экосистемы. Все три инструмента написаны на Rust и оптимизированы для максимальной производительности, устраняя узкие места в рабочем процессе.

Вместо десятков разрозненных утилит вы получаете три инструмента, покрывающих основные задачи: линтинг, форматирование, управление зависимостями и проверку типов. Они легко интегрируются в существующие рабочие процессы, редакторы и CI/CD-системы. Их совместное использование гарантирует чистый, согласованный и безопасный код с минимальными затратами времени.

Пример типичного рабочего процесса:

uv venv .venv
source .venv/bin/activate
uv pip install -r requirements.txt
ruff check . --fix
ruff format .
ty check .
uv run pytest

Эти инструменты особенно ценны для командной разработки, где важны согласованность, скорость и воспроизводимость. Их использование позволяет сосредоточиться на создании функциональности, а не на борьбе с инструментами.

Read more

Когда Docker избыточен на VPS: как выбрать простой инструмент без лишних слоёв

Когда Docker избыточен на VPS: как выбрать простой инструмент без лишних слоёв

Docker удобен для упаковки приложений, но на небольшом VPS его накладные расходы — память, CPU и диск — становятся заметны. Альтернативы вроде Podman, Incus или системные сервисы решают конкретные задачи без лишних слоёв сложности.

Где в России бизнес выживает чаще: статистика и инфраструктурные зазоры

Где в России бизнес выживает чаще: статистика и инфраструктурные зазоры

В 2026 году в России регистрируют больше бизнесов, чем закрывают, но через пять лет выживает только 30% ООО и 22% ИП. Разница не в идеях, а в инфраструктуре: аренда, кредиты и налоги бьют по бизнесу с разной силой в зависимости от региона и отрасли.

Как найти прибыльную нишу и получить инвестиции без венчурных фондов

Как найти прибыльную нишу и получить инвестиции без венчурных фондов

Большие рынки быстро захватываются гигантами, а кредиты дорожают. Остаётся два пути: войти в подсегмент с высокой маржой или выбрать нишу, которую все игнорируют. Деньги для стартапов сегодня приходят не от фондов, а от синдикатов бизнес-ангелов.

Как построить работающий малый бизнес: маржа, команда и трезвый расчёт

Как построить работающий малый бизнес: маржа, команда и трезвый расчёт

Успех малого бизнеса зависит не от уникальности идеи, а от контроля маржи, тиражируемых процессов и работы на уже сформированном спросе. Две истории — Coca-Cola и авокадо в Австралии — показывают, почему попытки создать рынок с нуля оборачиваются потерями.