This commit is contained in:
2025-11-02 00:17:28 +03:00
parent acddb1fbc6
commit df7313912c
26 changed files with 501 additions and 566 deletions
+23 -23
View File
@@ -3,13 +3,13 @@
Flag
=====
Объект ``Flag`` представляет собой сущность флага, регистрируемого для последующей обработки в приложении ``Argenta``. Его основная задача — определить параметры флага команды, включая имя, префикс и допустимые значения. ``Flag`` используется при создании команд с флагами и предоставляет механизм валидации входящих значений от пользователя.
``Flag`` — это сущность, описывающая флаг команды. Её основная задача — определить параметры флага, включая его имя, префикс и правила валидации. `Flag` используется при создании команд и предоставляет механизм для проверки значений, введённых пользователем.
.. seealso::
Документация по :ref:`PossibleValues <root_api_command_possible_values>`сущность, определяющая допустимые значения флага.
Документация по :ref:`PossibleValues <root_api_command_possible_values>`перечисление, определяющее типы допустимых значений.
Документация по :ref:`InputFlag <root_api_command_input_flag>` — объект распаршенного введённого флага.
Документация по :ref:`InputFlag <root_api_command_input_flag>` — объект обработанного флага, введённого пользователем.
:ref:`Общая информация <root_flags>` о флагах и их использовании в приложении ``Argenta``
@@ -27,11 +27,11 @@ Flag
possible_values: list[str] | Pattern[str] | PossibleValues = PossibleValues.ALL,
) -> None
Создает новый флаг для регистрации в команде.
Создаёт новый флаг для регистрации в команде.
* ``name`` : Имя флага (обязательный параметр)
* ``prefix`` : Префикс флага. По умолчанию ``"--"``. Возможные значения: ``"-"``, ``"--"``, ``"---"``
* ``possible_values`` : Допустимые значения флага. По умолчанию ``PossibleValues.ALL``. Может быть списком строк, регулярным выражением или значением из enum ``PossibleValues``
* ``name``: Имя флага (обязательный параметр).
* ``prefix``: Префикс флага (``-``, ``--``, ``---``). По умолчанию ``--``.
* ``possible_values``: Правила валидации значения. Может быть списком строк, регулярным выражением или значением из `PossibleValues`. По умолчанию `PossibleValues.ALL`.
**Атрибуты:**
@@ -45,12 +45,12 @@ Flag
.. py:attribute:: possible_values
Определяет допустимые значения для флага. Может быть:
* Списком строк флаг принимает только значения из этого списка
* Регулярным выражением (``Pattern[str]``) — значение проверяется на соответствие паттерну
* Значением ``PossibleValues.ALL`` флаг принимает любое значение
* Значением ``PossibleValues.NEITHER`` флаг не должен иметь значения
Определяет допустимые значения для флага:
* Список строк: флаг принимает только значения из этого списка.
* Регулярное выражение (`Pattern[str]`): значение проверяется на соответствие паттерну.
* `PossibleValues.ALL`: флаг принимает любое значение.
* `PossibleValues.NEITHER`: флаг не должен иметь значения.
**Пример использования:**
@@ -72,11 +72,11 @@ string_entity
@property
string_entity(self) -> str
Возвращает строковое представление флага в формате ``prefix + name``.
Возвращает строковое представление флага в формате `prefix + name`.
:return: Строковое представление флага
Это свойство объединяет префикс и имя флага в единую строку, которая представляет, как флаг будет выглядеть в командной строке.
Это свойство объединяет префикс и имя в единую строку, которая представляет флаг так, как он выглядел бы в командной строке.
**Пример использования:**
@@ -97,7 +97,7 @@ __str__
__str__(self) -> str
Возвращает строковое представление флага (аналогично ``string_entity``).
Возвращает строковое представление флага (аналогично `string_entity`).
:return: Строковое представление флага
@@ -117,9 +117,9 @@ __repr__
__repr__(self) -> str
Возвращает отладочное представление объекта флага.
Возвращает отладочное представление объекта.
:return: Строка в формате ``Flag<prefix=..., name=...>``
:return: Строка в формате `Flag<prefix=..., name=...>`.
**Пример использования:**
@@ -137,13 +137,13 @@ __eq__
__eq__(self, other: object) -> bool
Сравнивает два флага на равенство по их строковому представлению.
Сравнивает два флага на равенство по их строковому представлению (`string_entity`).
:param other: Объект для сравнения
:return: ``True``, если флаги равны, иначе ``False``
:raises NotImplementedError: Если ``other`` не является экземпляром ``Flag``
:raises NotImplementedError: Если `other` не является экземпляром `Flag`.
Два флага считаются равными, если их ``string_entity`` идентичны.
Два флага считаются равными, если их `string_entity` идентичны.
**Пример использования:**
@@ -160,9 +160,9 @@ PredefinedFlags
``argenta.command.flag.defaults.PredefinedFlags``
Класс ``PredefinedFlags`` предоставляет набор предопределенных флагов, которые можно использовать в приложениях без необходимости их ручного создания. Эти флаги покрывают наиболее распространенные сценарии использования и следуют общепринятым соглашениям командной строки.
Класс `PredefinedFlags` предоставляет набор готовых флагов для использования в приложениях без их ручного создания. Эти флаги покрывают наиболее распространённые сценарии и следуют общепринятым соглашениям.
Все предопределенные флаги являются атрибутами класса и представляют собой готовые экземпляры ``Flag``.
Все предопределённые флаги являются атрибутами класса и представляют собой готовые экземпляры `Flag`.
-----
+24 -23
View File
@@ -3,15 +3,15 @@
Flags
======
Объект ``Flags`` представляет собой коллекцию флагов команды в приложении ``Argenta``. Его основная задача — группировать и управлять набором флагов, зарегистрированных для конкретной команды. ``Flags`` служит контейнером, который позволяет удобно добавлять, извлекать и итерировать флаги, а также проверять их наличие.
`Flags` — это коллекция флагов команды. Её основная задача — группировать и управлять набором флагов, зарегистрированных для конкретной команды. `Flags` служит контейнером, который позволяет удобно добавлять, извлекать, итерировать флаги и проверять их наличие.
``Flags`` наследуется от базового класса ``BaseFlags`` и специализируется для работы с объектами типа ``Flag``. Этот класс используется при создании команд с множественными флагами и предоставляет интерфейс для управления ими.
`Flags` наследуется от базового класса `BaseFlags` и специализируется на работе с объектами типа `Flag`. Этот класс используется при создании команд с несколькими флагами и предоставляет интерфейс для управления ими.
.. seealso::
Документация по отдельным флагам (:ref:`Flag <root_api_command_flag>`, :ref:`InputFlag <root_api_command_input_flag>`)
Документация по :ref:`InputFlags <root_api_command_input_flags>` — коллекции распаршенных флагов пользователя
Документация по :ref:`InputFlags <root_api_command_input_flags>` — коллекция обработанных флагов, введённых пользователем.
:ref:`Общая информация <root_flags>` о флагах и их использовании в приложении ``Argenta``
@@ -25,15 +25,16 @@ Flags
__init__(self, flags: list[Flag] | None = None) -> None
Создает новую коллекцию флагов.
Создаёт новую коллекцию флагов.
* ``flags`` : Необязательный список флагов типа ``Flag`` для инициализации коллекции. Если не указан, создается пустая коллекция.
* ``flags``: Необязательный список флагов типа `Flag` для инициализации коллекции. Если не указан, создаётся пустая коллекция.
**Атрибуты:**
.. py:attribute:: flags
:no-index:
Список всех зарегистрированных флагов типа ``Flag``. Пустой список, если флаги не были переданы при инициализации.
Список всех зарегистрированных флагов типа `Flag`. Пуст, если флаги не были переданы при инициализации.
**Пример использования:**
@@ -54,12 +55,12 @@ add_flag
add_flag(self, flag: Flag) -> None
Добавляет один флаг в коллекцию.
Добавляет флаг в коллекцию.
:param flag: Флаг типа ``Flag`` для добавления в коллекцию
:return: None
:param flag: Флаг типа `Flag` для добавления.
:return: None.
Метод добавляет переданный флаг в конец списка ``flags``. Используется для динамического расширения набора флагов после создания коллекции.
Метод добавляет флаг в конец списка `flags`. Используется для динамического расширения набора флагов.
**Пример использования:**
@@ -77,12 +78,12 @@ add_flags
add_flags(self, flags: list[Flag]) -> None
Добавляет список флагов в коллекцию.
Добавляет в коллекцию список флагов.
:param flags: Список флагов типа ``Flag`` для добавления
:return: None
:param flags: Список флагов типа `Flag` для добавления.
:return: None.
Метод расширяет текущую коллекцию, добавляя все флаги из переданного списка. Эффективен для пакетного добавления множества флагов.
Метод расширяет коллекцию, добавляя в неё все флаги из переданного списка. Эффективен для пакетного добавления.
**Пример использования:**
@@ -100,12 +101,12 @@ get_flag_by_name
get_flag_by_name(self, name: str) -> Flag | None
Получает флаг по его имени.
Возвращает флаг по имени.
:param name: Имя искомого флага
:return: Объект ``Flag`` с указанным именем или ``None``, если флаг не найден
:param name: Имя искомого флага.
:return: Объект `Flag` или `None`, если флаг не найден.
Метод выполняет поиск по списку ``flags`` и возвращает первый флаг с соответствующим именем. Если флаг не найден, возвращается ``None``.
Метод выполняет поиск по списку `flags` и возвращает первый флаг с соответствующим именем. Если флаг не найден, возвращается `None`.
**Пример использования:**
@@ -126,9 +127,9 @@ __iter__
__iter__(self) -> Iterator[Flag]
Делает коллекцию итерируемой, позволяя использовать её в циклах.
Делает коллекцию итерируемой для использования в циклах.
:return: Итератор по списку флагов
:return: Итератор по списку флагов.
**Пример использования:**
@@ -146,10 +147,10 @@ __getitem__
__getitem__(self, flag_index: int) -> Flag
Позволяет получать флаги по индексу.
Позволяет получать флаг по индексу.
:param flag_index: Индекс флага в списке
:return: Флаг с указанным индексом
:param flag_index: Индекс флага в списке.
:return: Флаг по указанному индексу.
**Пример использования:**
+21 -23
View File
@@ -3,9 +3,9 @@
Command
=======
Объект ``Command`` представляет собой основную единицу функциональности в приложении ``Argenta``. Каждая команда определяет конкретное действие, которое пользователь может выполнить, введя соответствующий триггер. Команды регистрируются в роутерах и образуют интерфейс взаимодействия с приложением.
``Command`` — это основная единица функциональности в приложении. Каждая команда определяет действие, которое пользователь может выполнить, введя соответствующий триггер. Команды регистрируются в роутерах и формируют интерфейс взаимодействия с приложением.
``Command`` инкапсулирует всю необходимую информацию о команде: её триггер (ключевое слово для вызова), описание, набор флагов для настройки поведения и список псевдонимов для альтернативных способов вызова.
``Command`` инкапсулирует всю информацию о команде: её триггер (ключевое слово для вызова), описание, набор флагов и список псевдонимов.
-----
@@ -20,33 +20,30 @@ Command
flags: Flag | Flags = DEFAULT_WITHOUT_FLAGS,
aliases: list[str] | None = None) -> None
Создает новую команду для регистрации в роутере.
Создаёт новую команду для регистрации в роутере.
* ``trigger`` : Строковый триггер команды, который пользователь должен ввести для её вызова. Это основной идентификатор команды в системе.
* ``description`` : Необязательное описание команды, объясняющее её назначение. Если не указано, используется значение по умолчанию ``"Command without description"``. Отображается в справке и списке доступных команд.
* ``flags`` : Набор флагов команды для настройки её поведения. Может быть одиночным объектом ``Flag`` или коллекцией ``Flags``. По умолчанию команда создается без флагов.
* ``aliases`` : Список строковых синонимов для основного триггера. Позволяет вызывать команду альтернативными способами. По умолчанию список пуст.
* ``trigger``: Строковый триггер, который пользователь вводит для вызова команды. Является основным идентификатором.
* ``description``: Необязательное описание, объясняющее назначение команды. Отображается в справке.
* ``flags``: Набор флагов для настройки поведения. Может быть одиночным объектом `Flag` или коллекцией `Flags`.
* ``aliases``: Список строковых псевдонимов для основного триггера.
**Атрибуты:**
.. py:attribute:: trigger
Основной триггер команды в виде строки. Используется для идентификации команды при парсинге пользовательского ввода.
Основной триггер команды. Используется для её идентификации при обработке пользовательского ввода.
.. py:attribute:: description
Текстовое описание команды. Если не было передано при инициализации, содержит значение ``"Command without description"``.
Текстовое описание команды. Если не передано, используется значение по умолчанию.
.. py:attribute:: registered_flags
Объект ``Flags``, содержащий все зарегистрированные флаги команды. Автоматически конвертируется из одиночного ``Flag`` в коллекцию при инициализации.
Объект `Flags`, содержащий все зарегистрированные флаги. Автоматически конвертируется из одиночного `Flag` в коллекцию при инициализации.
.. py:attribute:: aliases
Список строк с альтернативными триггерами команды. Пустой список, если псевдонимы не заданы.
Список строковых псевдонимов. Пуст, если псевдонимы не заданы.
**Пример использования:**
@@ -61,7 +58,7 @@ Command
Регистрация команд
------------------
Команды регистрируются в роутерах с помощью декоратора ``@router.command()``. После регистрации команда становится доступной пользователям для вызова.
Команды регистрируются в роутерах с помощью декоратора ``@router.command()``, после чего становятся доступными для вызова.
**Базовый пример:**
@@ -78,7 +75,7 @@ Command
Работа с псевдонимами
---------------------
Псевдонимы позволяют вызывать один и тот же хэндлер разными триггерами, сохраняя при этом флаги команды и описание.
Псевдонимы позволяют вызывать один и тот же обработчик разными триггерами, сохраняя флаги и описание команды.
**Пример с псевдонимами:**
@@ -115,26 +112,27 @@ Command
InputCommand
------------
Класс ``InputCommand`` представляет собой распаршенную команду, введенную пользователем. Это внутренний класс, который создается автоматически при парсинге пользовательского ввода. Непосредственная работа с данным классом возможна при создании кастомного хэндлера для обработки неизвестных команд.
``InputCommand`` представляет собой обработанную команду, введённую пользователем. Этот внутренний класс создаётся автоматически при обработке пользовательского ввода. Прямая работа с ним возможна при создании пользовательского обработчика для неизвестных команд.
.. seealso ::
Подробнее про кастомные хэндлеры обработки исключений ввода :ref:`тут <root_error_handling>`
Подробнее о пользовательских обработчиках исключений см. :ref:`здесь <root_error_handling>`.
Создает экземпляр распарсенной команды.
Создаёт экземпляр обработанной команды.
:param trigger: Триггер команды, извлеченный из пользовательского ввода
:param input_flags: Флаги, переданные пользователем при вызове команды
:param trigger: Триггер команды, извлечённый из пользовательского ввода.
:param input_flags: Флаги, переданные пользователем.
**Атрибуты:**
.. py:attribute:: trigger
:no-index:
Строковый триггер команды, введенный пользователем.
Строковый триггер, введённый пользователем.
.. py:attribute:: input_flags
:no-index:
Объект ``InputFlags``, содержащий все флаги, переданные с командой. Автоматически конвертируется из одиночного ``InputFlag`` в коллекцию.
Объект `InputFlags`, содержащий все переданные с командой флаги. Автоматически конвертируется из одиночного `InputFlag` в коллекцию.
.. toctree ::
:hidden:
+23 -22
View File
@@ -3,11 +3,11 @@
InputFlag
=========
Объект ``InputFlag`` представляет собой сущность флага введённой команды. Он создаётся в результате парсинга пользовательского ввода и содержит информацию о распознанном флаге, включая его имя, префикс, введённое значение и статус валидации.
Объект `InputFlag` представляет собой флаг, введённый пользователем. Он создаётся в результате обработки пользовательского ввода и содержит информацию о распознанном флаге: его имя, префикс, значение и статус валидации.
.. seealso::
Документация по :ref:`Flag <root_api_command_flag>`сущность флага, регистрируемого для последующей обработки.
Документация по :ref:`Flag <root_api_command_flag>`класс для регистрации флага.
Документация по :ref:`ValidationStatus <root_api_command_validation_status>` — статусы валидации флагов.
@@ -28,33 +28,34 @@ InputFlag
Создаёт новый объект введённого флага.
* ``name`` : Имя введённого флага (обязательный параметр)
* ``prefix`` : Префикс флага. По умолчанию ``"--"``. Возможные значения: ``"-"``, ``"--"``, ``"---"``
* ``input_value`` : Значение введённого флага. Может быть ``None`` если флаг не принимает значения
* ``status`` : Статус валидации флага из перечисления ``ValidationStatus``
* ``name``: Имя введённого флага.
* ``prefix``: Префикс флага (``-``, ``--``, ``---``). По умолчанию ``--``.
* ``input_value``: Значение, переданное с флагом. Может быть `None`.
* ``status``: Статус валидации из перечисления `ValidationStatus`.
.. warning ::
Экземпляры класса не предназначены для их прямого создания, они содержаться в контейнере :ref:`Response <root_api_response>`
Экземпляры этого класса не предназначены для прямого создания. Они содержатся в объекте :ref:`Response <root_api_response>`.
**Атрибуты:**
.. py:attribute:: name
:no-index:
Имя введённого флага в виде строки.
Имя введённого флага.
.. py:attribute:: prefix
:no-index:
Префикс флага. Один из: ``"-"``, ``"--"``, ``"---"``.
Префикс флага: ``-``, ``--`` или ``---``.
.. py:attribute:: input_value
Значение, переданное с флагом в командной строке. Может быть ``None`` для флагов без значений.
Значение, переданное с флагом. Может быть `None` для флагов без значений.
.. py:attribute:: status
:no-index:
Статус валидации флага. Один из: ``ValidationStatus.VALID``, ``ValidationStatus.INVALID``, ``ValidationStatus.UNDEFINED``.
Статус валидации флага: `ValidationStatus.VALID`, `ValidationStatus.INVALID` или `ValidationStatus.UNDEFINED`.
**Пример использования:**
@@ -76,11 +77,11 @@ string_entity
@property
string_entity(self) -> str
Возвращает строковое представление флага в формате ``prefix + name``.
Возвращает строковое представление флага в формате `prefix + name`.
:return: Строковое представление флага
Это свойство объединяет префикс и имя флага в единую строку, которая представляет, как флаг был введён в командной строке.
Это свойство объединяет префикс и имя в строку, представляющую флаг так, как он был введён в командной строке.
**Пример использования:**
@@ -101,9 +102,9 @@ __str__
__str__(self) -> str
Возвращает строковое представление введённого флага вместе с его значением.
Возвращает строковое представление флага вместе с его значением.
:return: Строка в формате ``флаг значение``
:return: Строка в формате `флаг значение`.
**Пример использования:**
@@ -121,9 +122,9 @@ __repr__
__repr__(self) -> str
Возвращает отладочное представление объекта введённого флага.
Возвращает отладочное представление объекта.
:return: Строка в формате ``InputFlag<prefix=..., name=..., value=..., status=...>``
:return: Строка в формате `InputFlag<prefix=..., name=..., value=..., status=...>`.
**Пример использования:**
@@ -141,13 +142,13 @@ __eq__
__eq__(self, other: object) -> bool
Сравнивает два введённых флага на равенство по их имени.
Сравнивает два введённых флага на равенство по имени.
:param other: Объект для сравнения
:return: ``True``, если имена флагов совпадают, иначе ``False``
:raises NotImplementedError: Если ``other`` не является экземпляром ``InputFlag``
:param other: Объект для сравнения.
:return: `True`, если имена флагов совпадают, иначе `False`.
:raises NotImplementedError: Если `other` не является экземпляром `InputFlag`.
Два введённых флага считаются равными, если их имена идентичны.
Два введённых флага считаются равными, если их имена совпадают.
**Пример использования:**
+44 -43
View File
@@ -3,18 +3,18 @@
InputFlags
==========
Объект ``InputFlags`` представляет собой коллекцию введённых флагов команды в приложении ``Argenta``. Его основная задача — группировать и управлять набором флагов, которые были введены пользователем вместе с командой. ``InputFlags`` служит контейнером, который позволяет удобно извлекать, итерировать и проверять наличие введённых флагов, а также работать с их значениями и статусами валидации.
`InputFlags` — это коллекция флагов, введённых пользователем. Её основная задача — группировать и управлять набором флагов, переданных вместе с командой. `InputFlags` служит контейнером, который позволяет удобно извлекать, итерировать и проверять наличие флагов, а также работать с их значениями и статусами валидации.
``InputFlags`` наследуется от базового класса ``BaseFlags`` и специализируется для работы с объектами типа ``InputFlag``. Этот класс автоматически создаётся системой при парсинге пользовательского ввода и передаётся в обработчики команд через объект ``Response``.
`InputFlags` наследуется от `BaseFlags` и специализируется на работе с объектами типа `InputFlag`. Этот класс создаётся автоматически при обработке пользовательского ввода и передаётся в обработчики команд через объект `Response`.
.. seealso::
Документация по отдельным флагам (:ref:`Flag <root_api_command_flag>`, :ref:`InputFlag <root_api_command_input_flag>`)
Документация по :ref:`Flags <root_api_command_flags>` — коллекции зарегистрированных флагов команды
Документация по :ref:`InputFlags <root_api_command_input_flags>` — коллекция обработанных флагов, введённых пользователем.
Документация по :ref:`Response <root_api_response>` — объект ответа, содержащий ``InputFlags``
:ref:`Общая информация <root_flags>` о флагах и их использовании в приложении ``Argenta``
-----
@@ -27,18 +27,19 @@ InputFlags
__init__(self, flags: list[InputFlag] | None = None) -> None
Создает новую коллекцию введённых флагов.
Создаёт новую коллекцию введённых флагов.
* ``flags`` : Необязательный список введённых флагов типа ``InputFlag`` для инициализации коллекции. Если не указан, создается пустая коллекция.
* ``flags``: Необязательный список флагов типа `InputFlag` для инициализации коллекции. Если не указан, создаётся пустая коллекция.
.. warning ::
Экземпляры класса обычно не создаются напрямую. Они автоматически формируются системой при парсинге пользовательского ввода и доступны через атрибут ``input_flags`` объекта ``Response`` в обработчиках команд.
Экземпляры этого класса обычно не создаются напрямую. Они автоматически формируются системой при обработке пользовательского ввода и доступны через атрибут `input_flags` объекта `Response`.
**Атрибуты:**
.. py:attribute:: flags
:no-index:
Список всех введённых флагов типа ``InputFlag``. Пустой список, если флаги не были переданы при инициализации или пользователь не ввёл флагов с командой.
Список всех введённых флагов типа `InputFlag`. Пуст, если флаги не были переданы при инициализации или пользователь не ввёл их с командой.
**Пример использования:**
@@ -59,12 +60,12 @@ get_flag_by_name
get_flag_by_name(self, name: str) -> InputFlag | None
Получает введённый флаг по его имени.
Возвращает введённый флаг по имени.
:param name: Имя искомого флага (без префикса)
:return: Объект ``InputFlag`` с указанным именем или ``None``, если флаг не найден
:param name: Имя искомого флага (без префикса).
:return: Объект `InputFlag` или `None`, если флаг не найден.
Метод выполняет поиск по списку ``flags`` и возвращает первый флаг с соответствующим именем. Поиск происходит по атрибуту ``name`` объекта ``InputFlag``, сравнивая только имена флагов, без учёта префикса.
Метод выполняет поиск по списку `flags` и возвращает первый флаг с соответствующим именем (без учёта префикса).
**Пример использования:**
@@ -82,15 +83,15 @@ add_flag
add_flag(self, flag: InputFlag) -> None
Добавляет один введённый флаг в коллекцию.
Добавляет введённый флаг в коллекцию.
:param flag: Флаг типа ``InputFlag`` для добавления в коллекцию
:return: None
:param flag: Флаг типа `InputFlag` для добавления.
:return: None.
Метод добавляет переданный флаг в конец списка ``flags``. Используется для динамического расширения набора флагов после создания коллекции.
Метод добавляет флаг в конец списка `flags`. Используется для динамического расширения коллекции.
.. note::
Этот метод используется редко, так как ``InputFlags`` обычно создаётся автоматически системой при парсинге пользовательского ввода. Однако он может быть полезен для тестирования или ручного создания коллекций флагов.
Этот метод используется редко, так как `InputFlags` обычно создаётся автоматически. Однако он может быть полезен для тестирования или ручного создания коллекций.
**Пример использования:**
@@ -108,12 +109,12 @@ add_flags
add_flags(self, flags: list[InputFlag]) -> None
Добавляет список введённых флагов в коллекцию.
Добавляет в коллекцию список введённых флагов.
:param flags: Список флагов типа ``InputFlag`` для добавления
:return: None
:param flags: Список флагов типа `InputFlag` для добавления.
:return: None.
Метод расширяет текущую коллекцию, добавляя все флаги из переданного списка. Эффективен для пакетного добавления множества флагов.
Метод расширяет коллекцию, добавляя в неё все флаги из переданного списка. Эффективен для пакетного добавления.
**Пример использования:**
@@ -134,11 +135,11 @@ __iter__
__iter__(self) -> Iterator[InputFlag]
Делает коллекцию итерируемой, позволяя использовать её в циклах.
Делает коллекцию итерируемой для использования в циклах.
:return: Итератор по списку введённых флагов
:return: Итератор по списку введённых флагов.
Позволяет перебирать все введённые флаги команды, что особенно полезно для проверки статусов валидации или обработки всех флагов.
Позволяет перебирать все введённые флаги, что полезно для проверки их статусов или пакетной обработки.
**Пример использования:**
@@ -156,12 +157,12 @@ __getitem__
__getitem__(self, flag_index: int) -> InputFlag
Позволяет получать введённые флаги по индексу.
Позволяет получать введённый флаг по индексу.
:param flag_index: Индекс флага в списке
:return: Флаг с указанным индексом
:param flag_index: Индекс флага в списке.
:return: Флаг по указанному индексу.
Позволяет обращаться к флагам по их позиции в списке, что может быть полезно для обработки флагов в определённом порядке.
Позволяет обращаться к флагам по их позиции, что может быть полезно для их обработки в определённом порядке.
**Пример использования:**
@@ -179,11 +180,11 @@ __bool__
__bool__(self) -> bool
Определяет, содержит ли коллекция какие-либо флаги.
Определяет, содержит ли коллекция флаги.
:return: ``True``, если в коллекции есть хотя бы один флаг, иначе ``False``
:return: `True`, если в коллекции есть хотя бы один флаг, иначе `False`.
Позволяет проверять наличие флагов в команде, что удобно для условной логики.
Позволяет проверять наличие флагов в команде для условной логики.
**Пример использования:**
@@ -203,11 +204,11 @@ __eq__
Сравнивает две коллекции введённых флагов на равенство.
:param other: Объект для сравнения
:return: ``True``, если коллекции равны, иначе ``False``
:raises NotImplementedError: Если ``other`` не является экземпляром ``InputFlags``
:param other: Объект для сравнения.
:return: `True`, если коллекции равны, иначе `False`.
:raises NotImplementedError: Если `other` не является экземпляром `InputFlags`.
Две коллекции считаются равными, если они содержат одинаковое количество флагов и все соответствующие флаги равны (сравнение происходит по правилам ``InputFlag.__eq__``, то есть по имени).
Две коллекции считаются равными, если они содержат одинаковое количество флагов и все соответствующие флаги равны (сравнение по имени, см. `InputFlag.__eq__`).
**Пример использования:**
@@ -225,13 +226,13 @@ __contains__
__contains__(self, ingressable_item: object) -> bool
Проверяет, содержится ли указанный введённый флаг в коллекции.
Проверяет, содержится ли введённый флаг в коллекции.
:param ingressable_item: Объект ``InputFlag`` для проверки
:return: ``True``, если флаг найден в коллекции, иначе ``False``
:raises TypeError: Если ``ingressable_item`` не является экземпляром ``InputFlag``
:param ingressable_item: Объект `InputFlag` для проверки.
:return: `True`, если флаг найден, иначе `False`.
:raises TypeError: Если `ingressable_item` не является экземпляром `InputFlag`.
Позволяет использовать оператор ``in`` для проверки наличия флага в коллекции.
Позволяет использовать оператор `in` для проверки наличия флага в коллекции.
**Пример использования:**
@@ -247,7 +248,7 @@ __contains__
Обработка всех флагов с проверкой статусов
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Пример демонстрирует, как итерироваться по всем введённым флагам и проверять их статусы валидации:
Пример демонстрирует итерацию по всем введённым флагам с проверкой их статусов валидации:
.. literalinclude:: ../../../code_snippets/input_flags/snippet10.py
:linenos:
+15 -15
View File
@@ -4,18 +4,18 @@
PossibleValues
==============
Enum ``PossibleValues`` представляет собой перечисление, определяющее специальные режимы валидации значений флагов в приложении ``Argenta``. Его основная задача — предоставить стандартизированные константы для управления поведением флагов в отношении допустимых значений. ``PossibleValues`` используется в параметре ``possible_values`` класса ``Flag`` для определения того, может ли флаг принимать значения и какие ограничения на них накладываются.
`PossibleValues` — это перечисление (`Enum`), которое определяет специальные режимы валидации для значений флагов. Его задача — предоставить стандартные константы для управления поведением флагов. `PossibleValues` используется в параметре `possible_values` класса `Flag`, чтобы указать, может ли флаг принимать значения и какие ограничения на них накладываются.
``PossibleValues`` наследуется от стандартного класса ``Enum`` и содержит два основных значения: ``NEITHER`` для флагов без значений и ``ALL`` для флагов, принимающих любые значения. Этот enum используется совместно со списками строк и регулярными выражениями для создания гибкой системы валидации флагов.
`PossibleValues` наследуется от `Enum` и содержит два основных значения: `NEITHER` (для флагов без значений) и `ALL` (для флагов, принимающих любые значения). Это перечисление используется вместе со списками строк и регулярными выражениями для создания гибкой системы валидации.
.. note::
Результат валидации значений введенных флагов можно получить через атрибут ``status`` у экземпляра ``InputFlag``. Подробнее :ref:`тут <root_api_command_input_flag>`
Результат валидации доступен через атрибут `status` у экземпляра `InputFlag`. Подробнее см. :ref:`здесь <root_api_command_input_flag>`.
.. seealso::
Документация по :ref:`Flag <root_api_command_flag>`сущности флага, использующей ``PossibleValues``
Документация по :ref:`Flag <root_api_command_flag>`класс флага, использующий `PossibleValues`.
Документация по :ref:`PredefinedFlags <root_api_command_flag_predefined_flags>`предопределенным флагам с примерами использования ``PossibleValues``
Документация по :ref:`PredefinedFlags <root_api_command_flag_predefined_flags>`готовые флаги с примерами использования `PossibleValues`.
:ref:`Общая информация <root_flags>` о флагах и их использовании в приложении ``Argenta``
@@ -34,7 +34,7 @@ NEITHER
Указывает, что флаг **не должен** иметь значения.
Флаги с этим значением работают как булевы переключатели их наличие в командной строке само по себе является информацией. Попытка передать значение такому флагу приведёт к ошибке валидации.
Флаги с этим значением работают как булевы переключатели: их наличие в командной строке само по себе является информацией. Попытка передать такому флагу значение приведёт к ошибке валидации.
**Примеры флагов с** ``NEITHER``:
@@ -59,9 +59,9 @@ ALL
PossibleValues.ALL = 'ALL'
Указывает, что флаг может принимать **любое** значение без ограничений.
Указывает, что флаг может принимать **любое** значение.
Флаги с этим значением являются универсальными и не накладывают никаких ограничений на передаваемые данные. Валидация всегда успешна для любой строки или её отсутствия.
Флаги с этим значением универсальны и не накладывают ограничений на передаваемые данные. Валидация всегда будет успешной.
**Примеры флагов с** ``ALL``:
@@ -84,14 +84,14 @@ ALL
Параметр possible_values
~~~~~~~~~~~~~~~~~~~~~~~~~
``PossibleValues`` используется в качестве одного из возможных типов для параметра ``possible_values`` при создании экземпляра ``Flag``.
`PossibleValues` используется как один из возможных типов для параметра `possible_values` при создании экземпляра `Flag`.
**Доступные типы для** ``possible_values``:
**Доступные типы для** `possible_values`:
1. ``PossibleValues.NEITHER`` флаг без значения
2. ``PossibleValues.ALL`` флаг с любым значением (по умолчанию)
3. ``list[str]`` флаг с ограниченным набором допустимых значений
4. ``Pattern[str]`` флаг со значением, проверяемым регулярным выражением
1. `PossibleValues.NEITHER`: флаг без значения.
2. `PossibleValues.ALL`: флаг с любым значением (по умолчанию).
3. `list[str]`: флаг с ограниченным набором значений.
4. `Pattern[str]`: флаг со значением, проверяемым по регулярному выражению.
**Пример комбинированного использования:**
@@ -104,7 +104,7 @@ ALL
Использование в PredefinedFlags
-------------------------------
Многие предопределенные флаги используют ``PossibleValues.NEITHER``:
Многие предопределённые флаги используют `PossibleValues.NEITHER`:
.. literalinclude:: ../../../code_snippets/possible_values/predefined.py
:linenos:
+20 -20
View File
@@ -3,21 +3,21 @@
ValidationStatus
================
Enum ``ValidationStatus`` представляет собой перечисление, определяющее состояние валидации значений флагов в приложении ``Argenta``. Его основная задача — предоставить стандартизированные константы для отображения результата проверки введённых пользователем флагов и их значений. ``ValidationStatus`` используется в атрибуте ``status`` класса ``InputFlag`` для информирования о том, прошёл ли флаг валидацию успешно.
`ValidationStatus` — это перечисление (`Enum`), которое определяет состояние валидации флага. Его задача — предоставить стандартные константы для отображения результата проверки. `ValidationStatus` используется в атрибуте `status` класса `InputFlag`, чтобы сообщить, прошла ли валидация успешно.
``ValidationStatus`` наследуется от стандартного класса ``Enum`` и содержит три основных значения: ``VALID`` для корректных флагов, ``INVALID`` для некорректных флагов и ``UNDEFINED`` для незарегистрированных флагов.
`ValidationStatus` наследуется от `Enum` и содержит три значения: `VALID` (корректный флаг), `INVALID` (некорректный) и `UNDEFINED` (незарегистрированный).
.. note::
Статус валидации устанавливается автоматически при создании экземпляра ``InputFlag`` на основе проверки через соответствующий ``Flag``.
Статус валидации устанавливается автоматически при создании экземпляра `InputFlag` на основе правил, заданных в соответствующем `Flag`.
.. seealso::
Документация по :ref:`InputFlag <root_api_command_input_flag>`сущности входного флага, использующей ``ValidationStatus``
Документация по :ref:`InputFlag <root_api_command_input_flag>`класс введённого флага, использующий `ValidationStatus`.
Документация по :ref:`Flag <root_api_command_flag>`сущности флага с методом валидации
Документация по :ref:`Flag <root_api_command_flag>`класс флага с правилами валидации.
Документация по :ref:`PossibleValues <root_api_command_possible_values>` — типам допустимых значений флагов
Документация по :ref:`PossibleValues <root_api_command_possible_values>` — типы допустимых значений.
-----
@@ -32,16 +32,16 @@ VALID
ValidationStatus.VALID = 'VALID'
Указывает, что флаг и его значение **прошли** валидацию успешно.
Указывает, что флаг и его значение **прошли** валидацию.
Флаги с этим статусом полностью соответствуют правилам, заданным в параметре ``possible_values`` соответствующего ``Flag``. Такие флаги могут быть безопасно использованы в логике приложения без дополнительных проверок.
Флаги с этим статусом соответствуют правилам, заданным в `possible_values` соответствующего `Flag`. Их можно безопасно использовать в логике приложения без дополнительных проверок.
**Условия получения статуса** ``VALID``:
* Флаг с ``PossibleValues.NEITHER`` передан без значения
* Флаг с ``PossibleValues.ALL`` передан с любым значением или без него
* Флаг со списком значений передан с одним из допустимых значений
* Флаг с регулярным выражением передан со значением, соответствующим паттерну
* Флаг с `PossibleValues.NEITHER` передан без значения.
* Флаг с `PossibleValues.ALL` передан с любым значением или без него.
* Значение флага входит в список разрешённых.
* Значение флага соответствует регулярному выражению.
**Пример использования:**
@@ -61,14 +61,14 @@ INVALID
Указывает, что флаг или его значение **не прошли** валидацию.
Флаги с этим статусом нарушают правила, установленные в ``possible_values`` соответствующего ``Flag``. Такие флаги должны быть обработаны как ошибочные, и их использование может привести к некорректной работе приложения.
Флаги с этим статусом нарушают правила, заданные в `possible_values` соответствующего `Flag`. Их следует обрабатывать как ошибочные.
**Условия получения статуса** ``INVALID``:
* Флаг с ``PossibleValues.NEITHER`` передан со значением
* Флаг со списком значений передан с недопустимым значением
* Флаг с регулярным выражением передан со значением, не соответствующим паттерну
* Флаг требует значение, но передан без него (для определённых типов валидации)
* Флаг с `PossibleValues.NEITHER` передан со значением.
* Значение флага не входит в список разрешённых.
* Значение флага не соответствует регулярному выражению.
* Флаг требует значение, но передан без него.
**Пример использования:**
@@ -86,11 +86,11 @@ UNDEFINED
ValidationStatus.UNDEFINED = 'UNDEFINED'
Указывает, что флаг был введён, но не зарегистрирован.
Указывает, что введённый флаг не был зарегистрирован в команде.
**Условия получения статуса** ``UNDEFINED``:
* Флаг был введён с любым значением, но не зарегистрирован
* Введённый флаг не найден среди зарегистрированных для данной команды.
-----
@@ -101,7 +101,7 @@ UNDEFINED
Комплексный пример валидации
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Пример демонстрирует использование всех статусов в реальном сценарии:
Пример демонстрирует использование всех статусов в реальном сценарии.
.. literalinclude:: ../../../code_snippets/validation_status/comprehensive.py
:linenos: