8 декабря 2025 года состоялся первый мажорный релиз открытого проекта tyro. Это инструмент для генерации CLI-интерфейсов из аннотированного по типам кода Python. Р��шение опубликовано на GitHub под лицензией MIT. Проект находится в разработке с октября 2021 года.

Преимущества tyro:

  • определите вещи один раз (define things once). Стандартные аннотации типов Python, строки документации и значения по умолчанию анализируются для автоматической генерации интерфейсов командной строки с удобным текстом справки;

  • статические типы. В отличие от инструментов, зависящих от словарей, YAML или динамических пространств имён, аргументы, заполняемые tyro, лучше распознаются IDE и языковыми серверами, а также инструментами статической проверки, такими как pyright и mypy;

  • модульность. tyro поддерживает иерархические конфигурации, что упрощает децентрализацию определений, значений по умолчанию и документации.

tyro разработан для быстрого использования в скриптах (throwaway script), одновременно повышая удобство поддержки крупных проектов. Инструмент tyro.cli() позволяет определять настраиваемые скрипты с помощью функций:

"""A command-line interface defined using a function signature.

Usage: python script_name.py --foo INT [--bar STR]
"""

import tyro

def main(foo: int, bar: str = "default") -> None:
    ...  # Main body of a script.

if __name__ == "__main__":
    # Generate a CLI and call `main` with its two arguments: `foo` and `bar`.
    tyro.cli(main)

Также решение умеет создавать экземпляры конфигураций, определённых с помощью таких инструментов, как dataclasses, pydantic и attrs:

"""A command-line interface defined using a class signature.

Usage: python script_name.py --foo INT [--bar STR]
"""

from dataclasses import dataclass
import tyro

@dataclass
class Config:
    foo: int
    bar: str = "default"

if __name__ == "__main__":
    # Generate a CLI and instantiate `Config` with its two arguments: `foo` and `bar`.
    config = tyro.cli(Config)

    # Rest of script.
    assert isinstance(config, Config)  # Should pass.

Другие функции tyro включают генерацию текста справки (helptext), вложенные структуры, подкоманды и автодополнение оболочки. Примеры и справочник по API доступны для изучения в документации проекта.

Альтернативы tyro: cappa, cyclopts и defopt, simple-parsing и jsonargparse, clipstick, datargs, fire и clize.

Релиз tyr 1.0 представляет переписанный бэкенд для парсинга и генерации текста справки, который лучше масштабируется для больших конфигураций. В решении снижены накладные расходы на установку и импорт, а также улучшен пользовательский интерфейс подкоманд.