ArgParser

ArgParser предназначен для обработки аргументов командной строки, передаваемых приложению при запуске. Важно не путать их с флагами, которые пользователь вводит в интерактивном режиме. ArgParser позволяет получать внешнюю конфигурацию в момент старта (например, путь к файлу настроек, флаги отладки или режим запуска).


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

1def __init__(self, processed_args: list[ValueArgument | BooleanArgument], *,
2             name: str = "Argenta",
3             description: str = "Argenta available arguments",
4             epilog: str = "github.com/koloideal/Argenta | made by kolo")

Создаёт экземпляр парсера аргументов командной строки.

  • processed_args: Список аргументов для обработки при запуске приложения. Подробнее см. здесь.

  • name: Имя приложения для отображения в справке.

  • description: Описание приложения для отображения в справке.

  • epilog: Дополнительная информация для отображения в конце справки.


Атрибуты

parsed_argspace: ArgSpace

Экземпляр ArgSpace, содержащий все обработанные аргументы командной строки. Подробнее см. здесь.

Осторожно

До инициализации Orchestrator, в конструктор которого был передан экземпляр ArgParser, атрибут parsed_argspace будет содержать пустой ArgSpace.

Парсинг и валидация аргументов происходят при инициализации Orchestrator, поэтому использовать parsed_argspace целесообразно только после этого.


Лучшие практики

Использовать атрибут parsed_argspace рекомендуется только на этапе настройки приложения. В обработчиках лучшей практикой является получение ArgSpace через DI. Подробнее см. здесь.

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

 1from argenta import App, Orchestrator
 2from argenta.orchestrator.argparser import ArgParser, BooleanArgument
 3
 4arg_parser = ArgParser(
 5    processed_args=[
 6        BooleanArgument("dev")
 7    ]
 8)
 9orchestrator = Orchestrator(
10    arg_parser=arg_parser,
11)
12
13if __name__ == "__main__":
14    if arg_parser.parsed_argspace.get_by_name("dev"):
15        orchestrator.start_polling(App(initial_message="ArgentaDev"))
16    else:
17        orchestrator.start_polling(App())

Обработка ошибок

См. также

Про типы аргументов подробнее в Arguments

При работе с аргументами командной строки стандартный ArgumentParser автоматически обрабатывает следующие ситуации:

Отсутствие обязательного аргумента:

$ python app.py
usage: Argenta [-h] --config CONFIG
Argenta: error: the following arguments are required: --config

Недопустимое значение из списка possible_values:

$ python app.py --config app.yaml --log-level TRACE
usage: Argenta [-h] --log-level {DEBUG,INFO,WARNING,ERROR,CRITICAL}
Argenta: error: argument --log-level: invalid choice: 'TRACE'

Использование устаревшего аргумента:

При использовании аргумента с is_deprecated=True выводится предупреждение, но выполнение продолжается:

$ python app.py --old-param value
Warning: argument --old-param is deprecated

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

Параметр поддерживается начиная с версии CPython 3.13, если версия ниже, то параметр будет игнорироваться.