hmxustin / aval

Abstract Validator
MIT License
0 stars 0 forks source link

Проблема с типизацией (аннотацией) параметров #1

Open hmxustin opened 1 month ago

hmxustin commented 1 month ago

При использовании валидации с параметрами, сами параметры подчеркиваются встроенным линтером PyCharm.

import aval as v

def is_string(obj: v.VObj, params: v.VParams) -> None:
    t = type(obj)
    if t != str:
        raise v.ValError(
            f'Полученный объект {repr(obj)} имеет некорректный тип {t}. '
            f'Требуется строка'
        )

def correct_length(obj: v.VObj, params: v.VParams) -> None:
    mn = params.get('min_length', 1)
    mx = params.get('max_length', 32)
    ln = len(obj)
    if not mn <= ln <= mx:
        raise v.ValError(
            f'Некорректная длина строки. Требуется строка длинной в пределах '
            f'от {mn} до {mx} (включительно). '
            f'Фактическая длина полученной строки составляет {ln}'
        )

val = v.AVal([
    is_string,
    correct_length
])

val.validate('Очень длинная строка, длина которой, явно и ощутимо '
             'больше 32 символов', min_length=2, max_length=256)

Сообщение: Expected type 'dict[str, Any] | None', got 'int' instead

image

hmxustin commented 1 month ago

image