Релиз tyro 1.0 — инструмента для генерации CLI-интерфейсов из аннотированного по …

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 доступны для изучения в документации проекта . Релиз tyr 1.0 представляет переписанный бэкенд для парсинга и генерации текста справки, который лучше масштабируется для больших конфигураций. В решении снижены накладные расходы на установку и импорт, а также улучшен пользовательский интерфейс подкоманд. Теги: Source: https://habr.com/ru/amp/publications/975000/