Argenta¶
Что это и зачем?¶
Библиотека для построения модульных CLI-приложений с простым и приятным API.
Если у вас есть функциональность, которую вы хотите предоставить в виде CLI-приложения, Argenta поможет вам в этом. Основная цель библиотеки — дать разработчикам возможность сосредоточиться на реализации своих идей, предоставляя для этого удобные абстракции.
Argenta предназначена для создания приложений, работающих в собственном контексте (scope). Это означает, что приложение запускается один раз и создаёт интерактивную сессию, похожую на Python REPL или MySQL консоль. При запуске пользователь входит в эту сессию, где ему доступна вся реализованная вами функциональность.
Один из ключевых принципов библиотеки — цикличность. После выполнения команды пользователь остаётся в интерактивной сессии, в отличие от таких библиотек, как argparse, click и typer, где приложение завершается после каждой команды. Выход из сессии контролируется пользователем.
Ключевые особенности:
Интерактивные сессии: В отличие от традиционных CLI-инструментов,
Argentaсоздаёт циклические сессии, позволяя пользователю выполнять команды последовательно, не перезапуская приложение.Декларативный синтаксис: Команды и их обработчики объявляются с помощью простых декораторов, что делает код интуитивно понятным и позволяет сосредоточиться на том, «что» вы хотите сделать, а не «как».
Нативный DI: Благодаря интеграции с dishka, вы можете легко внедрять зависимости прямо в обработчики команд, что упрощает их тестирование, позволяет избежать мутабельных глобалов и многое другое.
Автоматическая валидация и парсинг: Библиотека берёт на себя обработку флагов и аргументов командной строки, включая их парсинг, валидацию и преобразование типов.
Гибкая настройка: Вы можете легко кастомизировать системные сообщения, форматирование вывода, создавать кастомные обработчики нестандартного поведения и т.д.
Архитектура и жизненный цикл¶
Следующая диаграмма иллюстрирует, как компоненты Argenta взаимодействуют друг с другом, обрабатывая ввод пользователя.