This commit is contained in:
2025-10-15 16:17:52 +03:00
parent e68a6c48ac
commit 074ace7d54
36 changed files with 116 additions and 97 deletions
+4
View File
@@ -0,0 +1,4 @@
.. _Autocompleter:
Autocompleter
****************
+4
View File
@@ -0,0 +1,4 @@
.. _DividingLines:
DividingLines
****************
+8
View File
@@ -0,0 +1,8 @@
App
****************
.. toctree::
:hidden:
autocompleter
dividing_lines
+4
View File
@@ -0,0 +1,4 @@
.. _Flags:
Flags
****************
+9
View File
@@ -0,0 +1,9 @@
Command
****************
.. toctree::
:hidden:
flags
possible_values
validation_status
@@ -0,0 +1,6 @@
.. _PossibleValues:
PossibleValues
****************
mda
@@ -0,0 +1,6 @@
.. _ValidationStatus:
ValidationStatus
****************
case
+11
View File
@@ -0,0 +1,11 @@
Публичный API
****************
.. toctree::
:hidden:
app/index
router
orchestrator/index
command/index
response
+6
View File
@@ -0,0 +1,6 @@
.. _Argparser:
Argparser
****************
nu
+6
View File
@@ -0,0 +1,6 @@
.. _Arguments:
Arguments
****************
prikol
+8
View File
@@ -0,0 +1,8 @@
Orchestrator
****************
.. toctree::
:hidden:
argparser
arguments
+4
View File
@@ -0,0 +1,4 @@
.. _Response:
Response
****************
+4
View File
@@ -0,0 +1,4 @@
.. _Router:
Router
****************
-58
View File
@@ -1,58 +0,0 @@
.. 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>
+3 -3
View File
@@ -9,17 +9,17 @@
pip install argenta
2. **Определение роутера и хэндлеров**, за регистрацию функции как обработчика отвечает декоратор ``@router.command``, хэндлер всегда должен принимать аргумент с типом ``Response``, подробнее в :ref:`разделе <Response>`.
2. **Определение роутера и хэндлеров**. За регистрацию функции как обработчика отвечает декоратор ``@router.command``, хэндлер всегда должен принимать аргумент с типом ``Response``, подробнее в :ref:`разделе <Response>`.
.. literalinclude:: ../code_snippets/quickstart_example_routers.py
:language: python
3. **Определение приложения и оркестратора**, для запуска приложения необходимо вызвать ``.include_router()`` у созданного приложения и передать ему раннее созданный роутер, после этого необходимо вызвать ``.start_polling()`` у созданного оркестратора и передать ему созданное приложение.
3. **Определение приложения и оркестратора**. Для запуска приложения необходимо вызвать ``.include_router()`` у созданного приложения и передать ему раннее созданный роутер, после этого необходимо вызвать ``.start_polling()`` у созданного оркестратора и передать ему созданное приложение.
.. literalinclude:: ../code_snippets/quickstart_example_main.py
:language: python
4. **Запуск приложения**, запускаем приложение как обычный процесс.
4. **Запуск приложения**. Запускаем приложение как обычный скрипт.
.. image:: https://github.com/koloideal/Argenta/blob/docs/create_docs/imgs/mock_app_preview6.png?raw=true