diff --git a/docs/code_snippets/flag/predefined_flags.py b/docs/code_snippets/flag/predefined_flags.py index b389196..8c8ac8a 100644 --- a/docs/code_snippets/flag/predefined_flags.py +++ b/docs/code_snippets/flag/predefined_flags.py @@ -1,5 +1,4 @@ -from argenta.command import Flags -from argenta.command.flag.defaults import PredefinedFlags +from argenta.command import Flags, PredefinedFlags # Использование предопределенных флагов при создании команды command_flags = Flags( diff --git a/docs/code_snippets/quickstart/simple_app.py b/docs/code_snippets/quickstart/simple_app.py new file mode 100644 index 0000000..b31b281 --- /dev/null +++ b/docs/code_snippets/quickstart/simple_app.py @@ -0,0 +1,34 @@ +from argenta import App, Command, Orchestrator, Router, Response +from argenta.command import Flag + +# 1. Создание экземпляра приложения и оркестратора +app = App( + prompt=">> ", + initial_message="Simple App", + farewell_message="Goodbye!", +) +orchestrator = Orchestrator() + +# 2. Создание роутера для группировки команд +main_router = Router(title="Основные команды") + +# 3. Определение команды и её обработчика +@main_router.command(Command( + "hello", + description="Печатает приветственное сообщение", + flags=Flag("name") +)) +def hello_handler(response: Response): + """Этот обработчик будет вызван для команды 'hello'.""" + name = response.input_flags.get_flag_by_name("name") + if name: + print(f"Привет, {name.input_value}!") + else: + print("Привет, мир!") + +# 4. Подключение роутера к приложению +app.include_router(main_router) + +# 5. Запуск приложения +if __name__ == "__main__": + orchestrator.start_polling(app) diff --git a/docs/code_snippets/response/data_sharing.py b/docs/code_snippets/response/data_sharing.py index 5f6c846..72356f3 100644 --- a/docs/code_snippets/response/data_sharing.py +++ b/docs/code_snippets/response/data_sharing.py @@ -1,6 +1,5 @@ -from argenta import Router, Response, Command +from argenta import Router, Response, Command, DataBridge from argenta.command import Flag -from argenta.data_bridge import DataBridge from argenta.di import FromDishka # 1. Создаём роутер diff --git a/docs/root/api/app/index.rst b/docs/root/api/app/index.rst index 2c0e266..30924ee 100644 --- a/docs/root/api/app/index.rst +++ b/docs/root/api/app/index.rst @@ -148,15 +148,27 @@ PredefinedMessages `PredefinedMessages` — это перечисление (Enum), содержащее набор готовых к использованию строковых сообщений. Они отформатированы с использованием синтаксиса `rich` и предназначены для вывода стандартной информации, такой как подсказки по использованию. -Вы можете импортировать и использовать их напрямую в своих обработчиках. +Реккомендуется использовать их при старте приложения. .. code-block:: python :linenos: + from argenta import App, Orchestrator from argenta.app import PredefinedMessages - def my_handler(response): - print(PredefinedMessages.USAGE) + 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 diff --git a/docs/root/api/bridge.rst b/docs/root/api/bridge.rst index 6970c3c..d674678 100644 --- a/docs/root/api/bridge.rst +++ b/docs/root/api/bridge.rst @@ -10,10 +10,10 @@ DataBridge .. code-block:: python :linenos: - from dishka.integrations.fastapi import FromDishka - from argenta.bridge import DataBridge + from argenta.di import FromDishka + from argenta import DataBridge, Response - def my_handler(data_bridge: FromDishka[DataBridge]): + def my_handler(response: Response, data_bridge: FromDishka[DataBridge]): # ... ваш код **Практический пример: Аутентификация** diff --git a/docs/root/api/command/flag.rst b/docs/root/api/command/flag.rst index 46ce192..92eb8a7 100644 --- a/docs/root/api/command/flag.rst +++ b/docs/root/api/command/flag.rst @@ -166,10 +166,8 @@ PredefinedFlags ----- -Доступные флаги -~~~~~~~~~~~~~~~ - Информационные флаги +~~~~~~~~~~~~~~~~~~~~ .. py:attribute:: PredefinedFlags.HELP diff --git a/docs/root/code_of_conduct.rst b/docs/root/code_of_conduct.rst index 543ec93..87cb74d 100644 --- a/docs/root/code_of_conduct.rst +++ b/docs/root/code_of_conduct.rst @@ -49,7 +49,7 @@ Обеспечение соблюдения ---------------------- -О случаях оскорбительного, преследовательского или иного неприемлемого поведения можно сообщить команде проекта по адресу [ВСТАВЬТЕ АДРЕС ЭЛЕКТРОННОЙ ПОЧТЫ]. Все жалобы будут рассмотрены и расследованы оперативно и справедливо. +О случаях оскорбительного, преследовательского или иного неприемлемого поведения можно сообщить команде проекта по адресу kolo.is.main@gmail.com. Все жалобы будут рассмотрены и расследованы оперативно и справедливо. Команда проекта обязуется уважать частную жизнь и безопасность заявителя. diff --git a/docs/root/quickstart.rst b/docs/root/quickstart.rst index 783cfcb..ee32893 100644 --- a/docs/root/quickstart.rst +++ b/docs/root/quickstart.rst @@ -1,7 +1,29 @@ .. _root_quickstart: Быстрый старт -******************** +============= + +В этом руководстве мы рассмотрим два примера создания CLI-приложения с помощью Argenta: + +* **Простой пример**: Быстрое знакомство с основными компонентами, такими как `App`, `Command` и `Router`. +* **Более сложный пример**: Полнофункциональное приложение «Менеджер задач» с внедрением зависимостей и бизнес-логикой. + +Простой пример +--------------- + +Этот пример демонстрирует абсолютный минимум, необходимый для создания и запуска приложения. Вы можете скопировать этот код, запустить его и сразу увидеть результат. + +.. literalinclude:: ../code_snippets/quickstart/simple_app.py + :language: python + :linenos: + +**Результат** + +.. image:: https://i.ibb.co/JwK9Vv4j/2025-11-03-135118.png + :alt: Simple App Example + +Более сложный пример: Менеджер задач +-------------------------------------- В этом руководстве мы создадим простое, но полнофункциональное CLI-приложение «Менеджер задач», которое продемонстрирует ключевые возможности Argenta. diff --git a/docs/root/redirect_stdout.rst b/docs/root/redirect_stdout.rst index e9d4e40..60fd487 100644 --- a/docs/root/redirect_stdout.rst +++ b/docs/root/redirect_stdout.rst @@ -24,6 +24,8 @@ .. image:: https://i.ibb.co/YFGRY2c0/2025-11-03-121650.png :alt: Пример приложения с статической разделительной линией +В этом примере разделительная линия имеет фиксированную длину (по умолчанию 25 символов). + ----- Побочные эффекты перехвата ``stdout`` diff --git a/src/argenta/__init__.py b/src/argenta/__init__.py index 54afdc1..e631d0b 100644 --- a/src/argenta/__init__.py +++ b/src/argenta/__init__.py @@ -3,3 +3,4 @@ from argenta.command.models import Command as Command from argenta.orchestrator.entity import Orchestrator as Orchestrator from argenta.response.entity import Response as Response from argenta.router.entity import Router as Router +from argenta.data_bridge.entity import DataBridge as DataBridge