mirror of
https://github.com/koloideal/Argenta.git
synced 2026-06-10 10:05:28 +03:00
docs
This commit is contained in:
@@ -1,15 +1,15 @@
|
|||||||
from argenta import App, Orchestrator
|
from argenta import App, Orchestrator
|
||||||
from argenta.orchestrator.argparser import ArgParser, ValueArgument
|
from argenta.orchestrator.argparser import ArgParser, ValueArgument
|
||||||
|
|
||||||
# Определение аргументов приложения
|
|
||||||
arguments = [
|
arguments = [
|
||||||
ValueArgument("host", help="Server host", default="localhost"),
|
ValueArgument("host", help="Server host", is_required=True),
|
||||||
ValueArgument("port", help="Server port", default="8080"),
|
ValueArgument("port", help="Server port", is_required=True),
|
||||||
]
|
]
|
||||||
|
|
||||||
# Создание и запуск парсера
|
|
||||||
argparser = ArgParser(
|
argparser = ArgParser(
|
||||||
processed_args=arguments, name="WebServer", description="Simple web server"
|
processed_args=arguments,
|
||||||
|
name="WebServer",
|
||||||
|
description="Simple web server"
|
||||||
)
|
)
|
||||||
|
|
||||||
app = App()
|
app = App()
|
||||||
@@ -17,10 +17,8 @@ orchestrator = Orchestrator(argparser)
|
|||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
# Получение аргументов только после инициализации Orchestrator
|
|
||||||
argspace = argparser.parsed_argspace
|
argspace = argparser.parsed_argspace
|
||||||
|
|
||||||
# Получение конкретных аргументов
|
|
||||||
host = argspace.get_by_name("host")
|
host = argspace.get_by_name("host")
|
||||||
port = argspace.get_by_name("port")
|
port = argspace.get_by_name("port")
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,11 @@
|
|||||||
|
config_arg = argspace.get_by_name("config")
|
||||||
|
if config_arg:
|
||||||
|
print(f"Config path: {config_arg.value}")
|
||||||
|
|
||||||
|
verbose_arg = argspace.get_by_name("verbose")
|
||||||
|
if verbose_arg and verbose_arg.value:
|
||||||
|
print("Verbose mode enabled")
|
||||||
|
|
||||||
|
unknown_arg = argspace.get_by_name("nonexistent")
|
||||||
|
if unknown_arg is None:
|
||||||
|
print("Argument not found")
|
||||||
@@ -5,27 +5,20 @@ ArgSpace
|
|||||||
|
|
||||||
``ArgSpace`` — это контейнер для хранения и управления обработанными аргументами командной строки. Его основная задача — предоставить удобный интерфейс для доступа к значениям, переданным при запуске приложения.
|
``ArgSpace`` — это контейнер для хранения и управления обработанными аргументами командной строки. Его основная задача — предоставить удобный интерфейс для доступа к значениям, переданным при запуске приложения.
|
||||||
|
|
||||||
``ArgSpace`` создаётся автоматически после обработки аргументов с помощью `ArgParser` и содержит коллекцию объектов `InputArgument`.
|
``ArgSpace`` создаётся автоматически после обработки аргументов с помощью ``ArgParser`` и содержит коллекцию объектов ``InputArgument``.
|
||||||
|
|
||||||
-----
|
-----
|
||||||
|
|
||||||
Инициализация
|
Инициализация
|
||||||
-------------
|
-------------
|
||||||
|
|
||||||
.. code-block:: python
|
Создание экземпляров класса ``ArgSpace`` происходит под `капотом`, вам не нужно создавать их вручную.
|
||||||
:linenos:
|
|
||||||
|
|
||||||
__init__(self, all_arguments: list[InputArgument]) -> None
|
|
||||||
|
|
||||||
Создаёт новое пространство аргументов.
|
|
||||||
|
|
||||||
* ``all_arguments``: Список обработанных аргументов в виде объектов `InputArgument`. Каждый элемент содержит имя, значение и тип исходного аргумента.
|
|
||||||
|
|
||||||
**Атрибуты:**
|
**Атрибуты:**
|
||||||
|
|
||||||
.. py:attribute:: all_arguments
|
.. py:attribute:: all_arguments
|
||||||
|
|
||||||
Список всех обработанных аргументов типа `InputArgument`, включая значения по умолчанию для не указанных параметров.
|
Список всех обработанных аргументов типа ``InputArgument``.
|
||||||
|
|
||||||
-----
|
-----
|
||||||
|
|
||||||
@@ -43,29 +36,13 @@ get_by_name
|
|||||||
Возвращает аргумент по имени.
|
Возвращает аргумент по имени.
|
||||||
|
|
||||||
:param name: Имя искомого аргумента.
|
:param name: Имя искомого аргумента.
|
||||||
:return: Объект `InputArgument` или `None`, если аргумент не найден.
|
:return: Объект ``InputArgument`` или ``None``, если аргумент не найден.
|
||||||
|
|
||||||
Метод выполняет линейный поиск по списку `all_arguments`. Если аргумент не найден, возвращается `None`.
|
|
||||||
|
|
||||||
**Пример использования:**
|
**Пример использования:**
|
||||||
|
|
||||||
.. code-block:: python
|
.. literalinclude:: ../../../code_snippets/argspace/snippet4.py
|
||||||
:linenos:
|
:linenos:
|
||||||
|
|
||||||
# Получение значения конкретного аргумента
|
|
||||||
config_arg = argspace.get_by_name("config")
|
|
||||||
if config_arg:
|
|
||||||
print(f"Config path: {config_arg.value}")
|
|
||||||
|
|
||||||
verbose_arg = argspace.get_by_name("verbose")
|
|
||||||
if verbose_arg and verbose_arg.value:
|
|
||||||
print("Verbose mode enabled")
|
|
||||||
|
|
||||||
# Обработка отсутствующего аргумента
|
|
||||||
unknown_arg = argspace.get_by_name("nonexistent")
|
|
||||||
if unknown_arg is None:
|
|
||||||
print("Argument not found")
|
|
||||||
|
|
||||||
-----
|
-----
|
||||||
|
|
||||||
get_by_type
|
get_by_type
|
||||||
@@ -78,10 +55,10 @@ get_by_type
|
|||||||
|
|
||||||
Возвращает все аргументы определённого типа.
|
Возвращает все аргументы определённого типа.
|
||||||
|
|
||||||
:param arg_type: Тип аргумента (`BooleanArgument` или `ValueArgument`).
|
:param arg_type: Тип аргумента (``BooleanArgument`` или ``ValueArgument``).
|
||||||
:return: Список аргументов указанного типа или пустой список.
|
:return: Список аргументов указанного типа или пустой список.
|
||||||
|
|
||||||
Метод фильтрует `all_arguments` по атрибуту `founder_class` и возвращает аргументы, созданные из указанного типа.
|
Метод фильтрует ``all_arguments`` по атрибуту ``founder_class`` и возвращает аргументы, созданные из указанного типа.
|
||||||
|
|
||||||
**Пример использования:**
|
**Пример использования:**
|
||||||
|
|
||||||
@@ -101,14 +78,14 @@ InputArgument
|
|||||||
Примеры испольования
|
Примеры испольования
|
||||||
--------------------
|
--------------------
|
||||||
|
|
||||||
`ArgSpace` используется для доступа к значениям аргументов после запуска приложения. Типичный сценарий включает обработку аргументов через `ArgParser` и последующее извлечение значений из `ArgSpace`.
|
``ArgSpace`` используется для доступа к значениям аргументов после запуска приложения. Типичный сценарий включает обработку аргументов через ``ArgParser`` и последующее извлечение значений из ``ArgSpace``.
|
||||||
|
|
||||||
**Полный пример:**
|
**Полный пример:**
|
||||||
|
|
||||||
.. literalinclude:: ../../../code_snippets/argspace/snippet.py
|
.. literalinclude:: ../../../code_snippets/argspace/snippet.py
|
||||||
:linenos:
|
:linenos:
|
||||||
|
|
||||||
Доступ к аргументам из обработчиков осуществляется с помощью DI. Подробнее см. :ref:`здесь <root_dependency_injection>`.
|
Доступ к аргументам из обработчиков осуществляется с помощью ``di``. Подробнее см. :ref:`здесь <root_dependency_injection>`.
|
||||||
|
|
||||||
.. literalinclude:: ../../../code_snippets/argspace/snippet2.py
|
.. literalinclude:: ../../../code_snippets/argspace/snippet2.py
|
||||||
:linenos:
|
:linenos:
|
||||||
@@ -117,14 +94,6 @@ InputArgument
|
|||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
# С параметрами по умолчанию
|
|
||||||
python server.py
|
|
||||||
# Output:
|
|
||||||
# Server configuration:
|
|
||||||
# Host: localhost
|
|
||||||
# Port: 8080
|
|
||||||
|
|
||||||
# С кастомными параметрами
|
|
||||||
python server.py --host 0.0.0.0 --port 9000
|
python server.py --host 0.0.0.0 --port 9000
|
||||||
# Output:
|
# Output:
|
||||||
# Server configuration:
|
# Server configuration:
|
||||||
|
|||||||
Reference in New Issue
Block a user