Files
Argenta/docs/code_snippets/validation_status/comprehensive.py
T
2025-11-02 01:04:31 +03:00

40 lines
1.8 KiB
Python

import re
from argenta.command.flag import Flag, InputFlag, PossibleValues, ValidationStatus
# Создаём различные типы флагов
verbose_flag = Flag("verbose", possible_values=PossibleValues.NEITHER)
output_flag = Flag("output", possible_values=PossibleValues.ALL)
level_flag = Flag("level", possible_values=["1", "2", "3"])
pattern_flag = Flag("pattern", possible_values=re.compile(r"^[a-zA-Z]+$"))
# Создаём входные флаги с различными статусами
input_flags = [
# Валидные флаги
InputFlag("verbose", input_value=None, status=ValidationStatus.VALID),
InputFlag("output", input_value="result.txt", status=ValidationStatus.VALID),
InputFlag("level", input_value="2", status=ValidationStatus.VALID),
InputFlag("pattern", input_value="onlyletters", status=ValidationStatus.VALID),
# Невалидные флаги
InputFlag("verbose", input_value="true", status=ValidationStatus.INVALID),
InputFlag("level", input_value="4", status=ValidationStatus.INVALID),
InputFlag("pattern", input_value="123", status=ValidationStatus.INVALID),
# Неопределённые флаги
InputFlag("unknown", input_value="value", status=ValidationStatus.UNDEFINED),
]
# Обрабатываем все флаги
valid_count = invalid_count = undefined_count = 0
for flag in input_flags:
if flag.status == ValidationStatus.VALID:
valid_count += 1
elif flag.status == ValidationStatus.INVALID:
invalid_count += 1
elif flag.status == ValidationStatus.UNDEFINED:
undefined_count += 1
print(f"Валидных флагов: {valid_count}")
print(f"Невалидных флагов: {invalid_count}")
print(f"Неопределённых флагов: {undefined_count}")