Update documentation

This commit is contained in:
2025-12-08 19:53:03 +03:00
parent 183f069766
commit 22970f7115
6 changed files with 164 additions and 95 deletions
+4 -4
View File
@@ -5,7 +5,7 @@ Command
``Command`` — это основная единица функциональности в приложении. Каждая команда связывает хэндлер с триггером, введя который он будет вызван для обработки.
``Command`` инкапсулирует всю информацию о команде: её триггер (ключевое слово для вызова), описание, набор флагов и список псевдонимов.
``Command`` инкапсулирует всю информацию о команде: её триггер (ключевое слово для вызова), описание, набор флагов и множество псевдонимов.
-----
@@ -18,14 +18,14 @@ Command
__init__(self, trigger: str, *,
description: str | None = None,
flags: Flag | Flags = DEFAULT_WITHOUT_FLAGS,
aliases: list[str] | list[Never] = DEFAULT_WITHOUT_ALIASES) -> None
aliases: set[str] = DEFAULT_WITHOUT_ALIASES) -> None
Создаёт новую команду для регистрации в роутере.
* ``trigger``: Строковый триггер, который пользователь вводит для вызова команды. Является основным идентификатором.
* ``description``: Необязательное описание, объясняющее назначение команды. Отображается в справке.
* ``flags``: Набор флагов для настройки поведения. Может быть одиночным объектом ``Flag`` или коллекцией ``Flags``.
* ``aliases``: Список строковых псевдонимов для основного триггера.
* ``aliases``: Множество строковых псевдонимов для основного триггера.
**Атрибуты:**
@@ -43,7 +43,7 @@ Command
.. py:attribute:: aliases
Список строковых псевдонимов. Пуст, если псевдонимы не заданы.
Множество строковых псевдонимов. Пуст, если псевдонимы не заданы.
**Пример использования:**
+39 -1
View File
@@ -54,7 +54,7 @@ Router
Предопределённый экземпляр ``Router`` с базовыми системными командами (по умолчанию — команда выхода). Имеет заголовок **«System points:»**, который можно переопределить в ``App``.
Вы можете добавлять свои команды в этот роутер. Для этого импортируйте ``argenta.router.defaults.system_router`` и используйте его декоратор ``@command``.
Вы можете добавлять свои команды в этот роутер. Для этого используйте атрибут ``.system_router`` у созданного экхемпляра ``Orchestrator`` и используйте его декоратор ``@command``.
-----
@@ -89,3 +89,41 @@ Router
Возникает, если обработчик команды не принимает обязательный аргумент ``Response``.
.. py:exception:: RepeatedTriggerNameException
Возникает, если при регистрации команд в роутере были использованы дублирующиеся триггеры. Каждая команда должна иметь уникальный триггер в рамках приложения.
**Пример, вызывающий исключение:**
.. code-block:: python
:linenos:
router = Router()
@router.command(Command("start"))
def start_handler(response: Response) -> None:
pass
@router.command(Command("start")) # Duplicate trigger!
def another_start_handler(response: Response) -> None:
pass
.. py:exception:: RepeatedAliasNameException
Возникает, если при регистрации команд были использованы дублирующиеся алиасы. Алиасы должны быть уникальны в рамках всего приложения.
**Пример, вызывающий исключение:**
.. code-block:: python
:linenos:
router = Router()
@router.command(Command("start", aliases={"s", "run"}))
def start_handler(response: Response) -> None:
pass
@router.command(Command("begin", aliases={"s"})) # Duplicate alias "s"!
def begin_handler(response: Response) -> None:
pass
+7 -4
View File
@@ -12,10 +12,13 @@
Отключайте перехват ``stdout`` (``disable_redirect_stdout=True`` в ``Router``), если ваши команды:
✓ Используют ``input()`` для интерактивного ввода данных от пользователя
✓ Используют прогресс-бары (``tqdm``, ``rich.progress``)
Выводят данные в реальном времени (streaming, логи)
✓ Используют библиотеки, которые напрямую работают с ``stdout``
✓ Используют ``input()`` для интерактивного ввода данных от пользователя
Используют прогресс-бары (``tqdm``, ``rich.progress``)
✓ Выводят данные в реальном времени (streaming, логи)
✓ Используют библиотеки, которые напрямую работают с ``stdout``
Для обычных команд с ``print()`` перехват можно оставить включённым — это не влияет на их работу.