.. _root_api_command_flag: Flag ===== ``Flag`` — это сущность, описывающая флаг команды. Её основная задача — определить параметры флага, включая его имя, префикс и правила валидации. .. seealso:: Документация по :ref:`PossibleValues ` — перечисление, определяющее типы допустимых значений. Документация по :ref:`InputFlag ` — объект обработанного флага, введённого пользователем. :ref:`Общая информация ` о флагах и их использовании в ``Argenta`` ----- Инициализация ------------- .. code-block:: python :linenos: __init__( self, name: str, *, prefix: Literal["-", "--", "---"] = "--", possible_values: list[str] | Pattern[str] | PossibleValues = PossibleValues.ALL, ) -> None Создаёт новый флаг для регистрации в команде. * ``name``: Имя флага (обязательный параметр). * ``prefix``: Префикс флага (``-``, ``--``, ``---``). По умолчанию ``--``. * ``possible_values``: Правила валидации значения. Может быть списком строк, регулярным выражением или значением из ``PossibleValues``. По умолчанию ``PossibleValues.ALL``, то есть любое значение допустимо. **Атрибуты:** .. py:attribute:: name Имя флага в виде строки. .. py:attribute:: prefix Префикс флага. Один из: ``"-"``, ``"--"``, ``"---"``. .. py:attribute:: possible_values Допустимые значения для флага. **Пример использования:** .. literalinclude:: ../../../code_snippets/flag/snippet.py :linenos: :language: python ----- Свойства -------- string_entity ~~~~~~~~~~~~~ .. code-block:: python :linenos: @property string_entity(self) -> str Возвращает строковое представление флага в формате `prefix + name`. :return: Строковое представление флага Это свойство объединяет префикс и имя в единую строку, которая представляет флаг так, как он выглядел бы в командной строке. ----- Магические методы ----------------- __str__ ~~~~~~~ .. code-block:: python :linenos: __str__(self) -> str Возвращает строковое представление флага (аналогично ``string_entity``). :return: Строковое представление флага **Пример использования:** .. literalinclude:: ../../../code_snippets/flag/snippet4.py :linenos: :language: python ----- __repr__ ~~~~~~~~ .. code-block:: python :linenos: __repr__(self) -> str Возвращает отладочное представление объекта. :return: Строка в формате ``Flag``. **Пример использования:** .. literalinclude:: ../../../code_snippets/flag/snippet5.py :linenos: :language: python ----- __eq__ ~~~~~~ .. code-block:: python :linenos: __eq__(self, other: object) -> bool Сравнивает два флага на равенство по их строковому представлению (``string_entity``). :param other: Объект для сравнения :return: **True**, если флаги равны, иначе **False** Два флага считаются равными, если их ``string_entity`` идентичны. **Пример использования:** .. literalinclude:: ../../../code_snippets/flag/snippet6.py :linenos: :language: python ----- .. _root_api_command_flag_predefined_flags: PredefinedFlags --------------- ``argenta.command.PredefinedFlags`` Класс ``PredefinedFlags`` предоставляет набор готовых флагов для использования в приложениях без их ручного создания. Эти флаги покрывают распространённые сценарии. Все предопределённые флаги являются атрибутами класса и представляют собой готовые экземпляры ``Flag``. ----- Информационные флаги ~~~~~~~~~~~~~~~~~~~~ .. py:attribute:: PredefinedFlags.HELP Флаг для отображения справки: ``--help`` * ``name``: ``"help"`` * ``prefix``: ``"--"`` (по умолчанию) * ``possible_values``: ``PossibleValues.NEITHER`` .. py:attribute:: PredefinedFlags.SHORT_HELP Короткая версия флага справки: ``-H`` * ``name``: ``"H"`` * ``prefix``: ``"-"`` * ``possible_values``: ``PossibleValues.NEITHER`` .. py:attribute:: PredefinedFlags.INFO Флаг для отображения информации: ``--info`` * ``name``: ``"info"`` * ``prefix``: ``"--"`` (по умолчанию) * ``possible_values``: ``PossibleValues.NEITHER`` .. py:attribute:: PredefinedFlags.SHORT_INFO Короткая версия флага информации: ``-I`` * ``name``: ``"I"`` * ``prefix``: ``"-"`` * ``possible_values``: ``PossibleValues.NEITHER`` ----- Флаги выбора ~~~~~~~~~~~~ .. py:attribute:: PredefinedFlags.ALL Флаг для выбора всех элементов: ``--all`` * ``name``: ``"all"`` * ``prefix``: ``"--"`` * ``possible_values``: ``PossibleValues.NEITHER`` .. py:attribute:: PredefinedFlags.SHORT_ALL Короткая версия флага выбора всех элементов: ``-A`` * ``name``: ``"A"`` * ``prefix``: ``"-"`` * ``possible_values``: ``PossibleValues.NEITHER`` ----- Сетевые флаги ~~~~~~~~~~~~~ .. py:attribute:: PredefinedFlags.HOST Флаг для указания IP-адреса хоста: ``--host`` * ``name``: ``"host"`` * ``prefix``: ``"--"`` (по умолчанию) * ``possible_values``: Регулярное выражение для валидации IPv4: ``r"^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$"`` .. py:attribute:: PredefinedFlags.SHORT_HOST Короткая версия флага хоста: ``-H`` * ``name``: ``"H"`` * ``prefix``: ``"-"`` * ``possible_values``: Регулярное выражение для валидации IPv4: ``r"^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$"`` .. py:attribute:: PredefinedFlags.PORT Флаг для указания порта: ``--port`` * ``name``: ``"port"`` * ``prefix``: ``"--"`` (по умолчанию) * ``possible_values``: Регулярное выражение для валидации порта: ``r"^\d{1,5}$"`` .. py:attribute:: PredefinedFlags.SHORT_PORT Короткая версия флага порта: ``-P`` * ``name``: ``"P"`` * ``prefix``: ``"-"`` * ``possible_values``: Регулярное выражение для валидации порта: ``r"^\d{1,5}$"`` ----- **Пример использования:** .. literalinclude:: ../../../code_snippets/flag/predefined_flags.py :linenos: :language: python