Response

Response — это объект, который передаётся в обработчик команды. Он создаётся автоматически при обработке пользовательского ввода и содержит статус валидации, введённые флаги.

См. также

Документация по InputFlags — коллекция введённых флагов команды.

Документация по ResponseStatus — статусы валидации флагов команды.

Документация по InputFlag — отдельный введённый флаг.


Инициализация

1__init__(
2    self, status: ResponseStatus,
3    input_flags: InputFlags = EMPTY_INPUT_FLAGS,
4)

Создаёт новый объект ответа.

  • status: Общий статус валидации флагов из перечисления ResponseStatus.

  • input_flags: Коллекция введённых флагов (InputFlags). По умолчанию — пустая.

Предупреждение

Экземпляры этого класса не предназначены для прямого создания. Они автоматически формируются системой и передаются в обработчик команды в качестве первого обязательного аргумента.

Атрибуты:

status

Общий статус валидации всех флагов команды (ResponseStatus). Указывает, были ли среди введённых флагов некорректные или незарегистрированные.

input_flags

Коллекция всех флагов, переданных с командой (InputFlags). Содержит все обработанные флаги с их значениями и статусами валидации.

Пример использования:

 1from argenta import Command, Response, Router
 2from argenta.response import ResponseStatus
 3
 4router = Router(title="Example")
 5
 6
 7@router.command(Command("greet", description="Greet the user"))
 8def greet_handler(response: Response):
 9    if response.status == ResponseStatus.ALL_FLAGS_VALID:
10        print("Hello! All flags are valid.")
11    else:
12        print("Warning: Some flags have issues.")

Работа с флагами

Response предоставляет доступ к введённым флагам через атрибут input_flags. Вы можете проверять их наличие, получать значения и статусы валидации.

Пример работы с флагами:

 1from argenta import Command, Response, Router
 2from argenta.command import Flag, Flags
 3from argenta.command.flag import ValidationStatus
 4from argenta.response import ResponseStatus
 5
 6router = Router(title="Flags Example")
 7
 8
 9@router.command(
10    Command(
11        "process",
12        description="Process with flags",
13        flags=Flags([Flag("format", possible_values=["json", "xml"]), Flag("verbose")]),
14    )
15)
16def process_handler(response: Response):
17    print(f"Status: {response.status}")
18
19    format_flag = response.input_flags.get_flag_by_name("format")
20    verbose_flag = response.input_flags.get_flag_by_name("verbose")
21
22    if format_flag:
23        format_value = format_flag.input_value
24        print(f"Format: {format_value}")
25
26    if verbose_flag:
27        print("Verbose mode enabled")
28
29    if response.status == ResponseStatus.ALL_FLAGS_VALID:
30        print("All flags are valid, proceeding...")
31    elif response.status == ResponseStatus.INVALID_VALUE_FLAGS:
32        print("Warning: Some flags have invalid values")
33        for flag in response.input_flags:
34            if flag.status == ValidationStatus.INVALID:
35                print(f"  Invalid flag: {flag.string_entity} = {flag.input_value}")

ResponseStatus

ResponseStatus — это перечисление, которое определяет общий статус валидации всех флагов команды. Используется в атрибуте status объекта Response.

ALL_FLAGS_VALID

1ResponseStatus.ALL_FLAGS_VALID = 'ALL_FLAGS_VALID'

Все введённые флаги прошли валидацию. Нет ни некорректных, ни незарегистрированных флагов.

UNDEFINED_FLAGS

1ResponseStatus.UNDEFINED_FLAGS = 'UNDEFINED_FLAGS'

Среди введённых флагов есть незарегистрированные, но нет флагов с некорректными значениями.

INVALID_VALUE_FLAGS

1ResponseStatus.INVALID_VALUE_FLAGS = 'INVALID_VALUE_FLAGS'

Среди введённых флагов есть флаги с некорректными значениями, но нет незарегистрированных.

UNDEFINED_AND_INVALID_FLAGS

1ResponseStatus.UNDEFINED_AND_INVALID_FLAGS = 'UNDEFINED_AND_INVALID_FLAGS'

Среди введённых флагов есть как незарегистрированные, так и флаги с некорректными значениями.