При использовании валидации с параметрами, сами параметры подчеркиваются встроенным линтером 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
При использовании валидации с параметрами, сами параметры подчеркиваются встроенным линтером PyCharm.
Сообщение:
Expected type 'dict[str, Any] | None', got 'int' instead