mirror of
https://github.com/koloideal/Argenta.git
synced 2026-06-10 10:05:28 +03:00
Update documentation
This commit is contained in:
@@ -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
|
||||
|
||||
Список строковых псевдонимов. Пуст, если псевдонимы не заданы.
|
||||
Множество строковых псевдонимов. Пуст, если псевдонимы не заданы.
|
||||
|
||||
**Пример использования:**
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -12,10 +12,13 @@
|
||||
|
||||
Отключайте перехват ``stdout`` (``disable_redirect_stdout=True`` в ``Router``), если ваши команды:
|
||||
|
||||
✓ Используют ``input()`` для интерактивного ввода данных от пользователя
|
||||
✓ Используют прогресс-бары (``tqdm``, ``rich.progress``)
|
||||
✓ Выводят данные в реальном времени (streaming, логи)
|
||||
✓ Используют библиотеки, которые напрямую работают с ``stdout``
|
||||
✓ Используют ``input()`` для интерактивного ввода данных от пользователя
|
||||
|
||||
✓ Используют прогресс-бары (``tqdm``, ``rich.progress``)
|
||||
|
||||
✓ Выводят данные в реальном времени (streaming, логи)
|
||||
|
||||
✓ Используют библиотеки, которые напрямую работают с ``stdout``
|
||||
|
||||
Для обычных команд с ``print()`` перехват можно оставить включённым — это не влияет на их работу.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user