.. 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://i.ibb.co/fzWcfgFq/2025-12-04-173045.png
   :alt: App example

Argenta предназначена для создания приложений, работающих в собственном контексте (scope). Это означает, что приложение запускается один раз и создаёт интерактивную сессию, похожую на Python REPL или MySQL консоль. При запуске пользователь входит в эту сессию, где ему доступна вся реализованная вами функциональность.

Один из ключевых принципов библиотеки — цикличность. После выполнения команды пользователь остаётся в интерактивной сессии, в отличие от таких библиотек, как ``argparse``, ``click`` и ``typer``, где приложение завершается после каждой команды. Выход из сессии контролируется пользователем.

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

*   **Интерактивные сессии**: В отличие от традиционных CLI-инструментов, ``Argenta`` создаёт циклические сессии, позволяя пользователю выполнять команды последовательно, не перезапуская приложение.
*   **Декларативный синтаксис**: Команды и их обработчики объявляются с помощью простых декораторов, что делает код интуитивно понятным и позволяет сосредоточиться на том, "что" вы хотите сделать, а не "как".
*   **Нативный DI**: Благодаря интеграции с `dishka <https://dishka.readthedocs.io/en/stable/>`_, вы можете легко внедрять зависимости прямо в обработчики команд, что упрощает их тестирование, позволяет избежать мутабельных глобалов и многое другое.
*   **Автоматическая валидация и парсинг**: Библиотека берёт на себя обработку флагов и аргументов командной строки, включая их парсинг, валидацию и преобразование типов.
*   **Гибкая настройка**: Вы можете легко кастомизировать системные сообщения, форматирование вывода, создавать кастомные обработчики нестандартного поведения и т.д.

-----

Архитектура и жизненный цикл
-----------------------------

Следующая диаграмма иллюстрирует, как компоненты Argenta взаимодействуют друг с другом, обрабатывая ввод пользователя.

.. image:: https://i.ibb.co/hF3FdFr1/argenta-intro-drawio-2.png
   :alt: Request Lifecycle Diagram
   :align: center

.. toctree::
    :hidden:
    :caption: Контент:

    root/quickstart
    root/error_handling
    root/flags
    root/overriding_formatting
    root/api/index

.. toctree::
    :hidden:
    :caption: Продвинутое использование:

    root/redirect_stdout
    root/dependency_injection
    root/cli
    root/testing

.. toctree::
    :hidden:
    :caption: Для разработчиков:

    root/contributing
    root/code_of_conduct
    root/metrics

.. toctree::
    :hidden:
    :caption: Ссылки проекта:

    GitHub <https://github.com/koloideal/argenta>
    PyPI <https://pypi.org/project/argenta>
