mirror of
https://github.com/koloideal/Argenta.git
synced 2026-06-10 10:05:28 +03:00
ce7e24b924
The entire public api is covered with documentation in two languages - Russian and English. the library now supports the latest three versions of python - 3.12, 3.13 and 3.14 minor design changes: now, when a Boolean flag is entered, its value is an empty string, not None. tests have been adapted to the supported versions of python, readmi has been redesigned in two languages, German is no longer available.
193 lines
8.5 KiB
ReStructuredText
193 lines
8.5 KiB
ReStructuredText
.. _root_api_app_index:
|
|
|
|
App
|
|
===
|
|
|
|
Объект ``App`` — это ядро вашего консольного приложения. Он отвечает за конфигурацию, управление жизненным циклом, обработку команд и взаимодействие с пользователем, координируя работу всех компонентов: роутеров, обработчиков и системных сообщений.
|
|
|
|
------
|
|
|
|
Инициализация
|
|
-------------
|
|
|
|
.. code-block:: python
|
|
:linenos:
|
|
|
|
AVAILABLE_DIVIDING_LINES: TypeAlias = StaticDividingLine | DynamicDividingLine
|
|
DEFAULT_DIVIDING_LINE: StaticDividingLine = StaticDividingLine()
|
|
|
|
DEFAULT_PRINT_FUNC: Printer = Console().print
|
|
DEFAULT_AUTOCOMPLETER: AutoCompleter = AutoCompleter()
|
|
DEFAULT_EXIT_COMMAND: Command = Command("Q", description="Exit command")
|
|
|
|
.. code-block:: python
|
|
:linenos:
|
|
|
|
def __init__(self, *, prompt: str = "What do you want to do?\n\n",
|
|
initial_message: str = "Argenta\n",
|
|
farewell_message: str = "\nSee you\n",
|
|
exit_command: Command = DEFAULT_EXIT_COMMAND,
|
|
system_router_title: str | None = "System points:",
|
|
ignore_command_register: bool = True,
|
|
dividing_line: AVAILABLE_DIVIDING_LINES = DEFAULT_DIVIDING_LINE,
|
|
repeat_command_groups_printing: bool = True,
|
|
override_system_messages: bool = False,
|
|
autocompleter: AutoCompleter = DEFAULT_AUTOCOMPLETER,
|
|
print_func: Printer = DEFAULT_PRINT_FUNC) -> None
|
|
|
|
Создаёт и настраивает экземпляр приложения.
|
|
|
|
* ``prompt``: Приглашение к вводу, отображаемое перед каждой командой.
|
|
* ``initial_message``: Сообщение, выводимое при запуске приложения.
|
|
* ``farewell_message``: Сообщение, выводимое при выходе из приложения.
|
|
* ``exit_command``: Команда, которая маркируется как триггер для выхода из приложения.
|
|
* ``system_router_title``: Заголовок для системного роутера (содержит команду выхода).
|
|
* ``ignore_command_register``: Если ``True``, регистр вводимых команд игнорируется при поиске обработчика.
|
|
* ``dividing_line``: Тип разделительной линии (``StaticDividingLine`` или ``DynamicDividingLine``).
|
|
* ``repeat_command_groups_printing``: Если ``True``, список доступных команд выводится перед каждым вводом.
|
|
* ``override_system_messages``: Если ``True``, стандартное форматирование (цвета, ASCII-арт) отключается.
|
|
* ``autocompleter``: Экземпляр класса :ref:`AutoCompleter <root_api_app_autocompleter>`, отвечающий за автодополнение команд.
|
|
* ``print_func``: Функция для вывода всех системных сообщений (по умолчанию ``rich.Console().print``).
|
|
|
|
-----
|
|
|
|
Основные методы
|
|
---------------
|
|
|
|
- .. py:method:: include_router(self, router: Router) -> None
|
|
|
|
Регистрирует роутер в приложении. Все команды из этого роутера становятся доступными для вызова.
|
|
|
|
:param router: Экземпляр ``Router`` для регистрации.
|
|
|
|
- .. py:method:: include_routers(self, *routers: Router) -> None
|
|
|
|
Регистрирует несколько роутеров одновременно.
|
|
|
|
:param routers: Последовательность экземпляров ``Router`` для регистрации.
|
|
|
|
- .. py:method:: add_message_on_startup(self, message: str) -> None
|
|
|
|
Добавляет текстовое сообщение, которое выводится при запуске приложения после ``initial_message``.
|
|
|
|
:param message: Строка с сообщением.
|
|
|
|
.. seealso::
|
|
Для вывода стандартных сообщений можно использовать готовые шаблоны из :ref:`PredefinedMessages <root_api_predefined_messages>`.
|
|
|
|
-----
|
|
|
|
Методы установки обработчиков
|
|
-------------------------------
|
|
|
|
``App`` позволяет настраивать реакцию на различные события, такие как ошибки ввода или неизвестные команды.
|
|
|
|
.. hint::
|
|
Подробнее об исключениях и их обработке в соответствующем :ref:`разделе документации <root_error_handling>`.
|
|
|
|
-----
|
|
|
|
.. py:method:: set_description_message_pattern(self, handler: Callable[[str, str], str]) -> None
|
|
|
|
Устанавливает шаблон для форматирования описания команды.
|
|
|
|
Обработчик принимает триггер команды (``str``) и её описание (``str``).
|
|
|
|
------
|
|
|
|
.. py:method:: set_incorrect_input_syntax_handler(self, handler: Callable[[str], None]) -> None
|
|
|
|
Устанавливает обработчик при некорректном введённом синтаксисе флагов.
|
|
|
|
Обработчик принимает строку, введённую пользователем.
|
|
|
|
------
|
|
|
|
.. py:method:: set_repeated_input_flags_handler(self, handler: Callable[[str], None]) -> None
|
|
|
|
Устанавливает обработчик при повторяющихся флагах в введённой команде.
|
|
|
|
Обработчик принимает строку, введённую пользователем.
|
|
|
|
------
|
|
|
|
.. py:method:: set_unknown_command_handler(self, handler: Callable[[InputCommand], None]) -> None
|
|
|
|
Устанавливает обработчик при вводе неизвестной команды.
|
|
|
|
Обработчик принимает объект ``InputCommand`` - объект введённой команды.
|
|
|
|
-----
|
|
|
|
.. py:method:: set_empty_command_handler(self, handler: Callable[[], None]) -> None
|
|
|
|
Устанавливает обработчик при вводе пустой строки.
|
|
|
|
Обработчик не принимает аргументов.
|
|
|
|
-----
|
|
|
|
.. py:method:: set_exit_command_handler(self, handler: Callable[[Response], None]) -> None
|
|
|
|
Переопределяет стандартное поведение при вызове команды выхода.
|
|
|
|
Обработчик принимает объект ``Response``.
|
|
|
|
.. toctree::
|
|
:hidden:
|
|
|
|
autocompleter
|
|
dividing_lines
|
|
|
|
-----
|
|
|
|
.. _root_api_predefined_messages:
|
|
|
|
PredefinedMessages
|
|
------------------
|
|
|
|
``PredefinedMessages`` — это контейнер, содержащий набор готовых к использованию сообщений. Они отформатированы с использованием синтаксиса ``rich`` и предназначены для вывода стандартной информации, такой как подсказки по использованию.
|
|
|
|
Рекомендуется использовать их при старте приложения.
|
|
|
|
.. code-block:: python
|
|
:linenos:
|
|
|
|
from argenta import App, Orchestrator
|
|
from argenta.app import PredefinedMessages
|
|
|
|
app: App = App()
|
|
orchestrator: Orchestrator = Orchestrator()
|
|
|
|
def main():
|
|
app.add_message_on_startup(PredefinedMessages.USAGE)
|
|
app.add_message_on_startup(PredefinedMessages.AUTOCOMPLETE)
|
|
app.add_message_on_startup(PredefinedMessages.HELP)
|
|
|
|
orchestrator.start_polling(app)
|
|
|
|
if __name__ == "__main__":
|
|
main()
|
|
|
|
|
|
.. py:class:: PredefinedMessages
|
|
:no-index:
|
|
|
|
.. py:attribute:: USAGE
|
|
|
|
Строка: ``[b dim]Usage[/b dim]: [i]<command> <[green]flags[/green]>[/i]``
|
|
|
|
Отображается как: ``Usage: <command> <flags>``
|
|
|
|
.. py:attribute:: HELP
|
|
|
|
Строка: ``[b dim]Help[/b dim]: [i]<command>[/i] [b red]--help[/b red]``
|
|
|
|
Отображается как: ``Help: <command> --help``
|
|
|
|
.. py:attribute:: AUTOCOMPLETE
|
|
|
|
Строка: ``[b dim]Autocomplete[/b dim]: [i]<part>[/i] [bold]<tab>``
|
|
|
|
Отображается как: ``Autocomplete: <part> <tab>``
|