.. Argenta documentation master file, created by sphinx-quickstart on Sat Oct 11 19:54:43 2025. You can adapt this file completely to your liking, but it should at least contain the root `toctree` directive. Argenta ======= **Библиотека для построения модульных CLI-приложений с простым и приятным API.** Если у вас есть функциональность, которую вы хотите предоставить в виде CLI-приложения, Argenta поможет вам в этом. Основная цель библиотеки — дать разработчикам возможность сосредоточиться на реализации своих идей, предоставляя для этого удобные абстракции. .. image:: https://github.com/koloideal/Argenta/blob/main/imgs/mock_app_preview4.png?raw=True :alt: Пример приложения Argenta предназначена для создания приложений, работающих в собственном контексте (scope). Это означает, что при запуске пользователь входит в интерактивную сессию, где ему доступна вся реализованная вами функциональность. Один из ключевых принципов библиотеки — цикличность. После выполнения команды пользователь остаётся в интерактивной сессии, в отличие от таких библиотек, как ``argparse``, ``click`` и ``typer``. Выход из сессии контролируется самим пользователем. **Ключевые особенности:** * **Интерактивные сессии**. В отличие от традиционных CLI-инструментов, Argenta создаёт циклические сессии, позволяя пользователю выполнять команды последовательно, не перезапуская приложение. * **Декларативный синтаксис**. Команды и их обработчики объявляются с помощью простых декораторов, что делает код чистым и интуитивно понятным. * **Встроенное внедрение зависимостей (DI)**. Благодаря интеграции с `dishka `_, вы можете легко внедрять сервисы (например, подключения к БД) прямо в обработчики команд, что упрощает их тестирование и переиспользование. * **Автоматическая валидация и парсинг**. Библиотека берёт на себя обработку флагов и аргументов командной строки, включая их парсинг, валидацию и преобразование типов. * **Гибкая настройка**. Вы можете легко кастомизировать системные сообщения, форматирование вывода и даже перенаправлять стандартный вывод (stdout) в свои обработчики. Архитектура и жизненный цикл ----------------------------- Следующая диаграмма иллюстрирует, как компоненты Argenta взаимодействуют друг с другом, обрабатывая ввод пользователя. .. graphviz:: digraph "Request Lifecycle" { rankdir=LR; node [shape=box, style=rounded, fontname="sans-serif"]; edge [fontname="sans-serif"]; subgraph cluster_input { label = "Пользовательский ввод"; style=filled; color=lightgrey; node [style=filled,color=white]; "User Input" [label="Ввод команды"]; } subgraph cluster_core { label = "Ядро Argenta"; style=filled; color=lightblue; node [style=filled,color=white]; "Orchestrator"; "App"; "Router"; "Command Handler" [label="Обработчик команды"]; } subgraph cluster_di { label = "Внедрение зависимостей"; style=filled; color=lightgreen; node [style=filled,color=white]; "DI Container (dishka)" [label="DI-контейнер (dishka)"]; "Dependencies" [label="Зависимости (напр., Repository)"]; } subgraph cluster_output { label = "Вывод"; style=filled; color=lightgrey; node [style=filled,color=white]; "User Output" [label="Вывод результата"]; } "User Input" -> "Orchestrator" [label="1. Запуск и парсинг"]; "Orchestrator" -> "App" [label="2. Передача управления"]; "App" -> "Router" [label="3. Поиск нужного роутера"]; "Router" -> "Command Handler" [label="4. Вызов обработчика"]; "Command Handler" -> "DI Container (dishka)" [label="5. Запрос зависимостей"]; "DI Container (dishka)" -> "Dependencies" [label="6. Создание и предоставление"]; "Dependencies" -> "Command Handler" [label="7. Внедрение"]; "Command Handler" -> "App" [label="8. Формирование ответа"]; "App" -> "User Output" [label="9. Отображение результата"]; } .. toctree:: :hidden: :caption: Контент: root/quickstart root/error_handling root/flags root/dependency_injection root/overriding_formatting root/redirect_stdout root/api/index .. toctree:: :hidden: :caption: Для разработчиков: root/contributing root/code_of_conduct .. toctree:: :hidden: :caption: Ссылки проекта: GitHub PyPI