Используя библиотеку cerberus
для проверки, мне интересно, как может выглядеть настраиваемое правило, которое проверяет, является ли ввод списком только с ОДНИМ элементом. В этом случае значение должно быть изменено на одно значение (Value Coercion).
Вот моя попытка, которая не работает.
from cerberus import Validator
class MyValidator(Validator):
def _validate_is_one_elem_list(self, is_one_elem_list, field, value):
"""{'type': 'boolean'}"""
if is_one_elem_list and isinstance(value, list) and len(value) == 1:
self.value = value[0] # self.value doesn't exist, so that's wrong. How to do better?
v = MyValidator()
schema = {"amount": {"is_one_elem_list": True, "type": "list"}}
print(v.validated({"amount": [10]}, schema))
Результат: {'amount': [10]}
.
Однако должно читаться {'amount': 10}