Я пытаюсь построить схему, в которой оператор может быть одним словарем или списком словарей. Бывший:
{'Document': {'key': 'value'}}
Или несколько ключей:
{'Document': [ {'key1': 'value1'}, {'key2': 'value2'}, {'key3': 'value3'}]}
Следуя документации, которую я тестировал с этой схемой:
v.schema = {'Document': {'type': ['dict', 'list'], 'schema': {'type': 'dict'}}}
Вот результат:
>>> v.schema = {'Document': {'type': ['dict', 'list'], 'schema': {'type': 'dict'}}}
>>> v.validate({'Document': [{'key1': 'value1'}, {'key2': 'value2'}, {'key3': 'value3'}]})
True
>>> v.validate({'Document': {'key': 'value'} })
False
>>> v.errors
{'Document': ['must be of dict type']}
Тестовый код:
import cerberus
if __name__ == '__main__':
v = cerberus.Validator()
v.schema = {'Document': {'type': ['dict', 'list'], 'schema': {'type': 'dict'}}}
print(v.validate({'Document': [{'key1': 'value1'}, {'key2': 'value2'}, {'key3': 'value3'}]}))
print(v.validate({'Document': {'key': 'value'}}))
print(v.errors)
Во втором случае значение является типом dict, но я получаю эту ошибку вместо того, чтобы правильно интерпретировать схему.