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
+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: