Всем привет!
За последние пару лет компания Astral буквально разрывает Python-мир своими инструментами. Даже если вы не слышали это имя напрямую, с большой вероятностью вы уже пользовались их продуктами — ruff или uv.
И это не преувеличение. И ruff, и uv сегодня фактически стали стандартом индустрии. Например, в свежем релизе PyCharm 2025.3 при создании нового проекта по умолчанию инициализируется именно окружение uv, а не привычный venv. Для open source-проекта — это очень серьёзный показатель доверия со стороны экосистемы.
Открытый исходный код и массовое принятие инструментов Python-разработчиками дали Astral тот самый «кредит доверия», который компания, судя по всему, пока что уверенно оправдывает.
И вот буквально на днях Astral объявили, что их новый «революционный» тайп-чекер ty переходит в стадию бета-тестирования. А если учитывать, что и uv, и ruff формально тоже всё ещё находятся в бете, то можно считать, что ty уже фактически вышел в релиз. Собственно, о нём и поговорим дальше.
Если вам интересны подобные материалы — подписывайтесь на Telegram-канал «Код на салфетке». Там я делюсь гайдами для новичков и полезными инструментами. А прямо сейчас у нас ещё и проходит новогодний розыгрыш.
Кто такие Astral?
Astral — компания, основанная в 2022 году Чарли Маршем. Основной фокус команды — разработка высокопроизводительных инструментов для Python-экосистемы.
Если коротко, Astral делает Python быстрее, удобнее и предсказуемее для повседневной разработки. Компания последовательно развивает набор инструментов, которые закрывают реальные боли разработчиков: скорость, воспроизводимость окружений и качество кода.
Отдельный и принципиальный момент — открытость. Все проекты Astral распространяются под лицензией MIT, а разработка ведётся полностью в open source.
Официальный сайт компании: https://astral.sh/
Что Astral уже выпустили?
Ruff — это сверхбыстрый линтер и форматтер кода для Python, написанный на Rust. На практике он способен заменить сразу целый зоопарк инструментов: Flake8, Black, isort, pydocstyle, pyupgrade, autoflake и многие другие. При этом Ruff работает в десятки, а иногда и в сотни раз быстрее каждого из них по отдельности.
Проект был выпущен в августе 2022 года и практически сразу стал стандартом де-факто во многих командах и open source-проектах.
Страница проекта: https://astral.sh/ruff
uv — быстрый менеджер пакетов и проектов для Python, тоже написанный на Rust. По скорости он превосходит традиционный pip в 10–100 раз и одинаково хорошо работает на macOS, Linux и Windows. Сегодня uv всё чаще выбирают как основу для новых проектов — во многих случаях он уже воспринимается как стандарт индустрии.
Страница проекта: https://github.com/astral-sh/uv
Оба инструмента в своё время наделали много шума в сообществе — и это при том, что формально они до сих пор находятся в статусе Beta.
Новое слово в тайп-чекинге — ty
ty — это сверхбыстрый тайп-чекер и языковой сервер для Python, написанный на Rust. Он создаётся как альтернатива таким инструментам, как mypy, Pyright и Pylance. В декабре 2025 года Astral объявили о выходе ty в стадию бета-тестирования, и инструмент уже можно использовать в реальных проектах.
ty стал третьим крупным продуктом Astral — после менеджера пакетов uv и линтера/форматтера Ruff — и логично продолжает их стратегию: делать базовые инструменты разработки для Python быстрыми и удобными по умолчанию.
Зачем создан ty: миссия и цели
Astral создаёт ty с достаточно амбициозной целью — сделать Python сам��й продуктивной экосистемой программирования в мире. При разработке инструмента команда опирается на три ключевых принципа:
Одержимый фокус на производительности —
tyработает в 10–60 раз быстрее mypy и Pyright без какого-либо кэширования. В режиме работы через редактор разница становится ещё заметнее.Корректность, прагматичность и эргономика — Задача не просто сделать «самый быстрый» тайп-чекер, а создать инструмент с разумным балансом строгой типизации, практичности и удобства для разработчика.
Открытая разработка —
tyраспространяется под лицензией MIT и разрабатывается основной командой Astral вместе с десятками активных контрибьюторов.
Производительность: ключевое преимущество
Скорость проверки типов
На больших кодовых базах ty показывает действительно впечатляющие результаты.
Например, проверка проекта home-assistant без использования кэша занимает считанные секунды — это в 10–60 раз быстрее, чем у mypy и Pyright.

Ещё более показательный пример — работа в редакторе. При редактировании ключевого файла в репозитории PyTorch ty пересчитывает диагностику за 4,7 мс. Для сравнения:
Pyright тратит около 386 мс, а Pyrefly — порядка 2,38 секунды. Разница — в десятки и сотни раз.

Инкрементальная архитектура
ty спроектирован с нуля с прицелом на работу в режиме языкового сервера. Вся архитектура инструмента построена вокруг инкрементальности: при изменении файла или отдельной функции пересчитываются только действительно затронутые части программы.
Благодаря детальной (fine-grained) инкрементальности повторные проверки выполняются значительно быстрее, чем при каждом новом запуске ty check. Именно это делает отклик в редакторе почти мгновенным и отличает ty от многих существующих решений.
Как работает ty: технические особенности
Продвинутая система типов
ty приносит в Python-тайп-чекинг несколько возможностей, которых либо нет в других инструментах, либо они реализованы заметно проще.
Пересечения типов первого класса (intersection types) —
tyподдерживает типы вида A & B. На практике это даёт более точное сужение типов после проверок isinstance и других условий, без костылей и ручных cast.Продвинутое сужение типов (type narrowing) — Помимо стандартных проверок, ty умеет сужать типы через hasattr и другие, менее очевидные конструкции, которые часто встречаются в реальном коде.
Анализ достижимости (reachability analysis) —
tyиспользует вывод типов для поиска недостижимых ветвей кода. Это особенно полезно в библиотеках с версионной логикой и условными импортами — например, в проектах уровня pydantic.Итерации до фиксированной точки (fixpoint iteration) — Инструмент способен корректно выводить типы для символов, которые циклически зависят друг от друга, постепенно уточняя их до момента сходимости. Такие сценарии традиционно сложны для тайп-чекеров.
Переопределения (redeclarations) —
tyдопускает повторное объявление одного и того же символа с другим типом в пределах функции, если это логически оправдано. Это делает работу с динамическим Python-кодом менее болезненной.
Система диагностики мирового класса
Отдельный акцент в ty сделан на диагностике ошибок. Она вдохновлена сообщениями компилятора Rust и ориентирована не только на указание проблемы, но и на её объяснение.
Ключевые особенности:
Контекст из нескольких файлов — Одна диагностика может собирать информацию сразу из нескольких файлов, показывая не только где ошибка, но и почему она возникла — а иногда и как её исправить.
Трёхуровневая система серьёзности — Каждое правило можно настроить как error, warning или info, в зависимости от требований проекта и этапа внедрения типизации.
Структурированный и понятный вывод — Сообщения содержат точное расположение (файл, строка, колонка), имя правила в квадратных скобках и читаемое описание проблемы.
Цветовое кодирование — Разные уровни серьёзности подсвечиваются разными цветами, что заметно упрощает восприятие ошибок при работе в терминале или редакторе.
Поддержка градуального типизирования
ty изначально разрабатывался с прицелом на существующие кодовые базы. Он старается избегать ложных срабатываний на нетипизированном коде и следует принципу gradual guarantee: частично типизированный код анализируется ровно настолько строго, насколько это возможно без превращения отчёта в шум.
Благодаря этому ty можно внедрять постепенно — без необходимости сразу переписывать весь проект под строгую типизацию.
Как работать с ty
Установка
ty можно установить несколькими способами — Astral традиционно даёт выбор под разные сценарии использования.
Добавление в проект как зависимость разработки:
uv add --dev ty
uv run tyПодходит, если вы хотите зафиксировать версию ty в проекте и использовать его в CI или в команде.
Глобальная установка с uv:
uv tool install ty@latestУдобный вариант, если вы часто запускаете ty из разных проектов.
Использование автономного установщика:
curl -LsSf https://astral.sh/ty/install.sh | shПодойдёт тем, кто хочет получить готовый бинарник без привязки к Python-окружению.
Установка через pipx:
pipx install tyКлассический вариант для CLI-инструментов в Python-экосистеме.
Установка через pip:
pip install tyСамый простой способ, но обычно менее предпочтительный для CLI-инструментов.
Базовое использование
CLI у ty минималистичный и интуитивный. Основных команд всего несколько:
ty check— проверить проект на ошибки типизации.ty server— запустить языковой сервер.ty version— вывести текущую версиюty.
Проверка всего проекта:
ty checkПроверка конкретного файла:
ty check example.pyРежим наблюдения (watch mode):
ty check --watchВ режиме наблюдения ty отслеживает изменения файлов и перепроверяет только затронутые участки кода, а также все файлы, которые от них зависят. Именно здесь особенно хорошо раскрывается его инкрементальная архитектура.
Выбор файлов
По умолчанию ty запускается на всех Python-файлах в текущей рабочей директории и её поддиректориях. Если команда выполнена внутри проекта, ty начинает анализ с директории, где найден pyproject.toml.
При необходимости можно:
указать конкретные файлы или директории для проверки;
настроить включаемые и исключаемые пути.
ty автоматически учитывает правила из .gitignore и .ignore: все файлы и директории, перечисленные там, будут пропущены при проверке.
Конфигурация
ty поддерживает детальную настройку правил и поведения:
Уровни серьёзности — каждое правило диагностики можно задать как
error,warningилиignore.Переопределения для отдельных файлов — гибкая настройка правил под конкретные файлы.
Комментарии подавления — возможность точечно отключать отдельные проверки прямо в коде.
Конфигурация может располагаться как на уровне проекта, так и на уровне пользователя. ty ищет настройки в следующих файлах:
pyproject.toml(секция[tool.ty])ty.toml(отдельный файл конфигурации)
Приоритет конфигурации:
ty.toml имеет приоритет над настройками в pyproject.toml. Также поддерживается пользовательская конфигурация, ��оторая применяется ко всем проектам и может переопределять проектные правила.
Пример настройки правил:
[tool.ty.rules]
unused-ignore-comment = "warn"
redundant-cast = "ignore"
possibly-missing-attribute = "error"
possibly-missing-import = "error"Интеграция с редакторами
Для пользователей VS Code, Cursor и совместимых редакторов Astral разработала официальное расширение ty для VS Code. Языковой сервер поддерживает весь стандартный набор возможностей: диагностику, подсветку проблем, быстрые обновления и работу в реальном времени.
В PyCharm, начиная с версии 2025.3, доступна нативная поддержка инструментов Astral — ruff и ty работают «из коробки», без дополнительной настройки.
Заключение
Astral в очередной раз сделали очень сильный ход в экосистеме инструментов для Python-разработчиков. ty показывает действительно впечатляющие результаты — как по скорости работы, так и по качеству диагностики.
Статуса beta здесь бояться не стоит. В контексте продуктов Astral это уже вполне зрелое решение, которое можно использовать в продакшене и которое будет активно развиваться на основе обратной связи от сообщества.
Лично я планирую применять ty в своих проектах. Если будет интерес — сделаю отдельный материал с практическим сравнением ty с mypy и Pyright или покажу реальный пример использования в живом коде.
Если вам интересны подобные материалы, подписывайтесь на Telegram-канал «Код на салфетке». Там я делюсь гайдами для новичков и полезными инструментами. А прямо сейчас у нас ещё и проходит новогодний розыгрыш.