Astral объединила uv и ty: проверка скриптов и команда uv check

Astral, разработчик инструментов для Python (менеджер пакетов uv, линтер и форматтер Ruff, проверяющий типы анализатор и языковой сервер ty), объявила об экспериментальной интеграции uv и ty. Она доступна в режиме preview (предварительной версии). Идея, по словам компании, в том, что uv знает окружение и зависимости проекта, а ty знает код, и вместе они дают возможности, недоступные каждому по отдельности. Это шаг к «интегрированному тулчейну» Astral: каждый инструмент должен оставаться самостоятельным и совместимым с остальной экосистемой, но работать ещё лучше в связке.
Первое нововведение, полноценная поддержка скриптов Python. PEP 723 позволяет скрипту объявлять зависимости и требуемую версию Python во встроенных метаданных, и uv уже использовал их, готовя окружение для запуска. Теперь эти метаданные читает и ty: и в командной строке, и в редакторе он находит скрипты по всему проекту и через uv готовит для каждого своё окружение. Каждый скрипт проверяется по собственным объявленным зависимостям, даже если они или требования к версии Python отличаются от остального проекта. В редакторе ty сам запускает uv в фоне, чтобы подготовить окружение скрипта, и на его основе даёт проверку типов, навигацию по коду, автодополнение, подсказки при наведении и переход к определению.
Второе, команда uv check, единый диагностический интерфейс в uv, пока только с поддержкой ty. Она автоматически готовит окружение проекта, ставит нужные зависимости и проверяет проект с помощью ty. Если команду не запускать, в работе uv ничего не меняется: бинарный файл ty ставится отдельно при первом вызове. Можно проверять отдельные пакеты или всё рабочее пространство (workspace): uv check --package <имя> выбирает один пакет, uv check --all-packages проверяет все, а что именно проверять, uv определяет по конфигурации workspace. Отдельные скрипты с PEP 723 имеют независимые окружения и проверяются отдельно: uv check --script example.py. Команда берёт версию ty из файла блокировки (lockfile) проекта, поэтому разработчики и CI, закоммитившие конфигурацию и lockfile, используют одну версию ty без отдельных закреплений. Хук ty для pre-commit тоже работает через uv check и сам готовит окружение по зависимостям проекта.
Как это устроено: интеграция опирается на метаданные workspace в uv, которые дают ty структурированное представление о пакетах, зависимостях и окружении Python. Для скриптов ty вызывает uv, а тот устанавливает объявленные зависимости. Поскольку установка зависимостей может выполнять сторонний код на Python, автоматическая подготовка окружения сейчас включается только по желанию (opt-in).
Чтобы попробовать для скриптов в VS Code, нужно установить uv и расширение ty и включить в settings.json параметр ty.experimental.useUv со значением on. Из командной строки интеграция для скриптов включается переменной окружения TY_UV=scripts (например, TY_UV=scripts ty check); запуск uv check включает интеграцию автоматически и дополнительной настройки не требует. Нужны uv не ниже 0.12.3 и ty не ниже 0.0.76.
Планы Astral: со временем включить поддержку скриптов по умолчанию и автоматическую подготовку окружения для обычных проектов, а также добавить в uv check поддержку Ruff, чтобы объединить линтинг и проверку типов в одной команде. Кроме того, команда работает над новым классом проверок, сочетающих знание зависимостей (uv) с пониманием кода (ty), например поиском неиспользуемых зависимостей, об этом обещан отдельный пост. Параллельно продолжается движение к стабильному релизу ty. Реализацию интеграции подготовили Aria Desires, Micha Reiser и Zsolt Dollenstein из команды Astral.
Ключевые факты
- Astral объявила экспериментальную интеграцию uv и ty, доступную в режиме preview.
- ty теперь находит скрипты с метаданными PEP 723 и через uv готовит для каждого собственное окружение, в командной строке и в редакторе; скрипт проверяется по своим зависимостям, даже если они отличаются от проектных.
- Новая команда uv check готовит окружение, ставит зависимости и проверяет проект с помощью ty; есть режимы --package, --all-packages и --script, версия ty берётся из lockfile.
- Автоматическая подготовка окружения для скриптов пока включается только вручную (opt-in), так как установка зависимостей может выполнять сторонний код; нужны uv 0.12.3+ и ty 0.0.76+.
- В планах, поддержка Ruff в uv check, включение скриптов по умолчанию и проверки вроде поиска неиспользуемых зависимостей; сроков не названо.
Почему это важно
Astral делает ставку на связку своих инструментов: uv знает окружение и зависимости, ty понимает код. Первые плоды, проверка типов скриптов по их собственным зависимостям и единая команда uv check, которая сама готовит окружение. Это убирает ручную подготовку окружения перед проверкой типов. Компания прямо называет это шагом к интегрированному тулчейну; в дальнейшем в uv check планируется поддержка Ruff, то есть линтинг и проверка типов в одной команде.
Кому это важно
Разработчикам на Python, которые уже используют uv и пробуют ty; тем, кто пишет отдельные скрипты с метаданными PEP 723 и хочет получать для них автодополнение, подсказки и переход к определению в редакторе; командам с монорепозиториями и workspace в uv; тем, кто настраивает CI и pre-commit и хочет единую версию ty у всех без отдельных закреплений.
Как это применить
Установите uv версии 0.12.3 или новее и ty версии 0.0.76 или новее. Для проекта достаточно запустить uv check; для одного пакета, uv check --package <имя>, для всех, uv check --all-packages, для отдельного скрипта, uv check --script example.py. Закоммитьте конфигурацию и lockfile, чтобы разработчики и CI использовали одну версию ty. Для скриптов в VS Code установите расширение ty и укажите в settings.json ty.experimental.useUv со значением on; из командной строки можно использовать TY_UV=scripts ty check. Хук ty для pre-commit уже работает через uv check. Цены и условия лицензирования в источнике не упоминаются.
Можно ли доверять
Источник, официальный блог Astral, то есть это объявление самого разработчика о собственном продукте. Бенчмарков и цифр производительности в нём нет, как нет и сведений об отзывах пользователей или известных проблемах. Все утверждения о возможностях, заявления компании; сроков для будущих функций она не называет.
Риски и подводные камни
Интеграция экспериментальная и доступна в режиме preview, а сам ty ещё не вышел в стабильный релиз: Astral лишь продолжает движение к нему. Автоматическая подготовка окружения для скриптов включается вручную, потому что установка зависимостей может выполнять сторонний код на Python; включая её, помните об этом. Требуются минимальные версии uv 0.12.3 и ty 0.0.76. Поддержка Ruff в uv check, включение скриптов по умолчанию и автонастройка окружения для обычных проектов пока лишь планы без сроков.
«uv понимает окружение и зависимости вашего проекта на Python, а ty понимает ваш код.»
— Astral, блог компании