.. _root_api_command_validation_status:

ValidationStatus
================

``ValidationStatus`` — это перечисление, которое определяет состояние валидации флага. Его задача — предоставить стандартные константы для отображения результата проверки. ``ValidationStatus`` используется в атрибуте ``status`` класса ``InputFlag``.

``ValidationStatus`` содержит три значения: **VALID** (корректный флаг), **INVALID** (некорректный) и **UNDEFINED** (незарегистрированный).

.. note::

   Статус валидации устанавливается автоматически при создании экземпляра ``InputFlag`` на основе правил, заданных в соответствующем ``Flag``.

.. seealso::

   Документация по :ref:`InputFlag <root_api_command_input_flag>` — класс введённого флага, использующий ``ValidationStatus``.
   
   Документация по :ref:`Flag <root_api_command_flag>` — класс флага с правилами валидации.
   
   Документация по :ref:`PossibleValues <root_api_command_possible_values>` — типы допустимых значений.

-----

VALID
~~~~~

.. code-block:: python
   :linenos:

   ValidationStatus.VALID = 'VALID'

Указывает, что флаг и его значение **прошли** валидацию.

Флаги с этим статусом соответствуют правилам, заданным в ``possible_values`` соответствующего ``Flag``. Их можно безопасно использовать в логике приложения без дополнительных проверок.

**Условия получения статуса** ``VALID``:

*   Флаг с ``PossibleValues.NEITHER`` передан без значения.
*   Флаг с ``PossibleValues.ALL`` передан с любым значением или без него.
*   Значение флага входит в список разрешённых.
*   Значение флага соответствует регулярному выражению.

-----

INVALID
~~~~~~~

.. code-block:: python
   :linenos:

   ValidationStatus.INVALID = 'INVALID'

Указывает, что флаг или его значение **не прошли** валидацию.

Флаги с этим статусом нарушают правила, заданные в ``possible_values`` соответствующего ``Flag``. Их следует обрабатывать как ошибочные.

**Условия получения статуса** ``INVALID``:

*   Флаг с ``PossibleValues.NEITHER`` передан со значением.
*   Значение флага не входит в список разрешённых.
*   Значение флага не соответствует регулярному выражению.
*   Флаг требует значение, но передан без него.

-----

UNDEFINED
~~~~~~~~~

.. code-block:: python
   :linenos:

   ValidationStatus.UNDEFINED = 'UNDEFINED'

Указывает, что введённый флаг не был зарегистрирован в команде.

**Условия получения статуса** ``UNDEFINED``:

*   Введённый флаг не найден среди зарегистрированных для данной команды.
