.. _root_api_command_validation_status: ValidationStatus ================ `ValidationStatus` — это перечисление (`Enum`), которое определяет состояние валидации флага. Его задача — предоставить стандартные константы для отображения результата проверки. `ValidationStatus` используется в атрибуте `status` класса `InputFlag`, чтобы сообщить, прошла ли валидация успешно. `ValidationStatus` наследуется от `Enum` и содержит три значения: `VALID` (корректный флаг), `INVALID` (некорректный) и `UNDEFINED` (незарегистрированный). .. note:: Статус валидации устанавливается автоматически при создании экземпляра `InputFlag` на основе правил, заданных в соответствующем `Flag`. .. seealso:: Документация по :ref:`InputFlag ` — класс введённого флага, использующий `ValidationStatus`. Документация по :ref:`Flag ` — класс флага с правилами валидации. Документация по :ref:`PossibleValues ` — типы допустимых значений. ----- Значения enum ------------- VALID ~~~~~ .. code-block:: python :linenos: ValidationStatus.VALID = 'VALID' Указывает, что флаг и его значение **прошли** валидацию. Флаги с этим статусом соответствуют правилам, заданным в `possible_values` соответствующего `Flag`. Их можно безопасно использовать в логике приложения без дополнительных проверок. **Условия получения статуса** ``VALID``: * Флаг с `PossibleValues.NEITHER` передан без значения. * Флаг с `PossibleValues.ALL` передан с любым значением или без него. * Значение флага входит в список разрешённых. * Значение флага соответствует регулярному выражению. **Пример использования:** .. literalinclude:: ../../../code_snippets/validation_status/valid.py :linenos: :language: python ----- INVALID ~~~~~~~ .. code-block:: python :linenos: ValidationStatus.INVALID = 'INVALID' Указывает, что флаг или его значение **не прошли** валидацию. Флаги с этим статусом нарушают правила, заданные в `possible_values` соответствующего `Flag`. Их следует обрабатывать как ошибочные. **Условия получения статуса** ``INVALID``: * Флаг с `PossibleValues.NEITHER` передан со значением. * Значение флага не входит в список разрешённых. * Значение флага не соответствует регулярному выражению. * Флаг требует значение, но передан без него. **Пример использования:** .. literalinclude:: ../../../code_snippets/validation_status/invalid.py :linenos: :language: python ----- UNDEFINED ~~~~~~~~~ .. code-block:: python :linenos: ValidationStatus.UNDEFINED = 'UNDEFINED' Указывает, что введённый флаг не был зарегистрирован в команде. **Условия получения статуса** ``UNDEFINED``: * Введённый флаг не найден среди зарегистрированных для данной команды. ----- Практические примеры -------------------- Комплексный пример валидации ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Пример демонстрирует использование всех статусов в реальном сценарии. .. literalinclude:: ../../../code_snippets/validation_status/comprehensive.py :linenos: :language: python