Ошибка типа при попытке проверки рекурсивной схемы в цербере - PullRequest
0 голосов
/ 22 января 2019

Я пытаюсь построить рекурсивную схему с использованием цербера, но, похоже, упускаю суть того, как она должна работать. Может ли кто-нибудь помочь мне?

В документации и старых проблемах в репозитории объясняется, что способ обработки рекурсии заключается в использовании реестров схемы для создания схемы со ссылками, в противном случае мы достигаем пределов глубины рекурсии.

Однако попытка чего-то очень простого приводит к ошибке TypeError.

Было бы здорово получить пример рекурсии схемы в документации, пожалуйста! Я был бы рад помочь представить его, как только я пойму, что происходит.

cerberus.schema_registry.add(
    'user_schema', 
    {
        'uid': {
            'type': 'integer'
        }, 
        'next': {
            'type': 'list',
            'schema': 'user_schema'
        }
    }
)

schema = {'sender': {'schema': 'user_schema'}}

v = cerberus.Validator(schema=schema)

v.validate({
    'sender': {
        'uid': 1,
        'next': [
            {
                'uid': 1,
            }
        ]
    }
})

Запуск вышеуказанного приводит к следующему необработанному исключению:

TypeError: argument of type 'NoneType' is not iterable

Помощь будет очень признателен!

1 Ответ

0 голосов
/ 22 января 2019

Хорошо, через несколько минут после публикации я понял, что просто написал свою схему неправильно.Я тупой человек.

cerberus.schema_registry.add(
'user_schema', 
{
    'uid': {
        'type': 'integer'
    }, 
    'next': {
        'type': 'list',
        'schema': {
            'type': 'dict',
            'schema': 'user_schema'
        }
    }
}
)

Выше работает.-_-

...