.. _root_api_orchestrator_argparser: ArgParser ========== Объект ``ArgParser`` в ``Argenta`` предназначен для разбора и обработки **аргументов командной строки**, которые передаются вашему приложению при его запуске. Важно не путать их с флагами команд, которые пользователь вводит в интерактивном режиме работы приложения. ``ArgParser`` позволяет вашему приложению получать внешнюю конфигурацию в момент старта, например, путь к файлу настроек, флаги для отладки или режим запуска. ----- Инициализация ------------- .. code-block:: python :linenos: def __init__(self, processed_args: list[ValueArgument | BooleanArgument], *, name: str = "Argenta", description: str = "Argenta available arguments", epilog: str = "github.com/koloideal/Argenta | made by kolo") Создает экземпляр парсера аргументов командной строки. * ``processed_args``: Список аргументов, которые будут обрабатываться и парситься при запуске приложения, подробнее :ref:`тут `. * ``name``: Имя приложения, которое будет отображаться в справке. * ``description``: Описание приложения, которое будет отображаться в справке. * ``epilog``: Дополнительная информация, которая будет отображаться в конце справки. Основные методы и атрибуты --------------------------- .. py:attribute:: parsed_argspace: ArgSpace Экземпляр класса ``ArgSpace``, который содержит все обработанные аргументы командной строки, подробнее :ref:`тут `. .. caution:: До инициализации инстанса ``Orchestrator``, которому в конструктор был передан соответствующий экземпляр ``ArgParser``, атрибут ``parsed_argspace`` будет равен пустому ``ArgSpace``. Парсинг и валидация аргументов командной строки происходит при инициализации ``Orchestrator``, соответственно использование атрибута ``parsed_argspace`` **целесообразно только после инициализации** ``Orchestrator``. ----- Назначение и интеграция ------------------------ Использование атрибута ``parsed_argspace`` рекомендуется только на этапе настройки приложения, в хэндлерах лучшей практикой является получение ``ArgSpace`` через ``di``, подробнее :ref:`тут `. Пример использования -------------------- .. literalinclude:: ../../../code_snippets/argparser_snippet.py :language: python :linenos: