.. 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 нужна для создания приложений, которым необходим свой скоуп, то есть: при запуске приложения юзер входит в абстрагированный скоуп,
в котором у него есть доступ к созданной функциональности.

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

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

* **Обработчики**. Объекты представления приложения, непосредственные обработчики введённых команд. Создание обработчиков максимально декларативно
* **Маршрутизаторы**. Объекты маршрутизации, которые регистрируют обработчиков, позволяя создавать кастомные настройки для групп обработчиков, а также семантически их разделять.
* **Приложение**. Объект управления жизненным циклом приложения, подключения созданных маршрутизаторов, конфигурирования различных вторичных утилит, таких как автокомплит, логирование и т.д.
* **Оркестратор**. Объект *оркестрации*, который конфигурирует, запускает и управляет всеми остальными компонентами программы.
* **Внедрение зависимостей**. ``Argenta`` нативно поддерживает ``dishka`` и предоставляет возможность инжектирования зависимостей в хэндлерах, резолвя тайпхинты, подробнее_.

.. _подробнее: https://dishka.readthedocs.io/en/stable/di_intro.html

* **Поддержка флагов**. Библиотека поддерживает определение флагов, введённых вместе с командой, ``Argenta`` сама парсит и валидирует их, отдавая понятные сущности.
* **Поддержка аргументов**. Осуществленна поддержка аргументов командной строки, позволяя пользователю передавать различные параметры при запуске приложения.

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

    quickstart
    error_handling
    dependency_injection
    overriding_formatting
    redirect_stdout
    ../api/index

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

    contributing

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

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