Приведение Цербера во вложенный список - PullRequest
0 голосов
/ 09 декабря 2018

Я получаю непредвиденное поведение для следующего кода:

import cerberus
v = cerberus.Validator()
schema = {'list_of_values': {'type': 'list',
                             'schema': {'items': [{'type': 'string', 'coerce': str},
                                                  {'type': 'integer', 'coerce': int}]}}
                             }
document = {'list_of_values': [['hello', 100], [123, "122"]]}
v.validate(document, schema)
v.errors

Я ожидаю, что не будет ошибок, так как принудительное использование должно заботиться о типах.Но я получаю

{'list_of_values': [{1: [{0: ['must be of string type'],
     1: ['must be of integer type']}]}]}

Это ошибка?Я неправильно понимаю, как работает принуждение?

1 Ответ

0 голосов
/ 15 марта 2019

@ funky-future

Что-то не так с вашей стороны, я действительно могу воспроизвести проблему, просто скопировав пример в приглашение:

>>> import cerberus
>>> v = cerberus.Validator()
>>> schema = {'list_of_values': {'type': 'list',
...                              'schema': {'items': [{'type': 'string', 'coerce': str},
...                                                   {'type': 'integer', 'coerce': int}]}}
...                              }
>>> document = {'list_of_values': [['hello', 100], [123, "122"]]}
>>> v.validate(document, schema)
False
>>> v.errors
{'list_of_values': [{1: [{0: ['must be of string type'], 1: ['must be of integer type']}]}]}

Python3.5.2, cerberus10,2

...