ty: революция в тайп-чекинге

Всем привет!

За последние пару лет компания 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 показывает действительно впечатляющие результаты.

Например, проверка проекта home-assistant без использования кэша занимает считанные секунды — это в 10–60 раз быстрее, чем у mypy и Pyright.

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

Инкрементальная архитектура

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

Благодаря детальной (fine-grained) инкрементальности повторные проверки выполняются значительно быстрее, чем при каждом новом запуске ty check. Именно это делает отклик в редакторе почти мгновенным и отличает ty от многих существующих решений.

Как работает ty: технические особенности

Продвинутая система типов

ty приносит в Python-тайп-чекинг несколько возможностей, которых либо нет в других инструментах, либо они реализованы заметно проще.

Система диагностики мирового класса

Отдельный акцент в ty сделан на диагностике ошибок. Она вдохновлена сообщениями компилятора Rust и ориентирована не только на указание проблемы, но и на её объяснение.

Ключевые особенности:

Поддержка градуального типизирования

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 check example.py

Режим наблюдения (watch mode):

ty check --watch

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

Выбор файлов

По умолчанию ty запускается на всех Python-файлах в текущей рабочей директории и её поддиректориях. Если команда выполнена внутри проекта, ty начинает анализ с директории, где найден pyproject.toml.

При необходимости можно:

ty автоматически учитывает правила из .gitignore и .ignore: все файлы и директории, перечисленные там, будут пропущены при проверке.

Конфигурация

ty поддерживает детальную настройку правил и поведения:

Конфигурация может располагаться как на уровне проекта, так и на уровне пользователя. ty ищет настройки в следующих файлах:

Приоритет конфигурации:
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-канал «Код на салфетке». Там я делюсь гайдами для новичков и полезными инструментами. А прямо сейчас у нас ещё и проходит новогодний розыгрыш.

@proDream
23.12.2025 16:56 UTC
Первоисточник

Комментарии

@andreymal
23.12.2025 13:09 UTC
0

Он старается избегать ложных срабатываний на нетипизированном коде

Как было отмечено в недавнем посте, это автоматически делает ty непригодным для реального использования

@danilovmy
23.12.2025 14:45 UTC
+5

И хотя уровень непригодности настраивается, одержимость на скорости работы статического тайпчекера мне непонятна. Я не пишу с такой скоростью, что бы увидеть отличия в быстроте работы mypy и ty. Это как сделать самый быстрый электро чайник для заварки. Заваривает то все равно 5 минут 🤣

23.12.2025 14:52 UTC
+10

Скорость проверки играет роль при увеличении размера проекта и росте связей. Если проект маленький, то там и mypy справится за считанные секунды, но чем больше и замороченнее проект, тем выше издержки на проверку. Это условно как переход с HDD на SSD, скорость выше, по началу не понятно зачем такие скорости, а потом обратно-то не особо и хочется)

26.12.2025 08:44 UTC
+1

Я пользуюсь Error Lens (или аналогами), и хочу видеть сообщения об ошибка/ворнингах сразу при вводе кода. Зачем пользоваться медленным ПО когда можно пользоваться быстрым?)

@klim_neumann
06.01.2026 20:30 UTC
0

Во-первых в документации указано что планируется strict mode.
Во-вторых может наоборот, пригодным? Кажется абсолютно логичным, к примеру, что нельзя запрещать ложить в массив объекты разного типа если мы не указали какие типы могут находиться в этом массиве. Это же Python :/

06.01.2026 20:57 UTC
0

Кажется абсолютно логичным, что незнание типа объектов в массиве приведёт сразу к отказу автодополнения в редакторе, а чуть позже — к ошибкам в рантайме (и молитесь чтобы не на проде)

Я за десять лет уже достаточно настрадался с незнанием типов в массивах и словарях, больше не хочу

@Megadeth77
24.12.2025 10:27 UTC
+4

Есть в этом конечно некоторая метаирония, что лучшие инструменты для питона пишут на раст

@proDream
24.12.2025 11:03 UTC
+1

А раньше их писали на Си =)