Python-eve Cerberus продолжает выдавать ошибку «неизвестное правило» для встроенного словаря?Python

Программы на Python
Ответить
Anonymous
 Python-eve Cerberus продолжает выдавать ошибку «неизвестное правило» для встроенного словаря?

Сообщение Anonymous »

Производственный сервер не работает из-за устаревших драйверов, поэтому я обновляю пакеты, чтобы он снова заработал. Я думаю, что я очень близок, но Ева доставляет мне некоторые неприятности. У меня есть следующая схема для проверки. Для ясности удалены некоторые поля;
survey.py

Код: Выделить всё

from . import question
from . import building_data
from . import address

schema = {
'buildingAddress': {
'type': 'dict',
'schema': address.schema,
},

'surveyType': {
'type': 'string',
'allowed': [
"local",
"global",
],
},

'questions': {
'type': 'list',
'schema': {
'type': 'dict',
'schema': question.embedded_schema,
}
},
}
questions.py

Код: Выделить всё

import copy

schema = {

'name': {
'type': 'string',
'required': True
},

'type': {
'type': 'string',
'allowed': [
'boolean',
'shortText',
],
'required': True,
},

'group': {
'type': 'string'
},
'title': {
'type': 'string',
'required': True
},

'oldCode': {
'type': 'string'
},

'questionSets': {
'type': 'list',
'schema': {
'type': 'string'
},
},

'min': {
'type': 'number',
'nullable': True,
},
'max': {
'type': 'number',
'nullable': True,
},

'range': {
'type': 'number',
'nullable': True,
'min': 1,
},
'minValue': {
'type': 'string',
},
'maxValue': {
'type': 'string',
},

# single / multiple choice
'choices': {
'type': 'dict',
'propertyschema': {
'type': 'string',
'regex': '\d+'
}
},

}

embedded_schema = copy.deepcopy(schema)

embedded_schema.update(
{
'_id': {
'type': 'objectid',
'data_relation': {
'resource': 'questions',
'field': '_id',
'embeddable': False
}
},
}
)
По какой-то причине при выполнении почтового вызова возникает исключение SchemaError(self.schema_validator.errors). Ошибка, по-видимому, связана с полем «вопросы», а остальная часть исключения выглядит следующим образом. Остальное обрезал для удобства чтения.

Код: Выделить всё

{'questions': [{'schema': ['no definitions validate', {'anyof definition 0': [{'schema': [{'_id': ['unknown rule'], '_version': ['unknown rule'], 'choices': ['unknown rule'], 'group': ['unknown rule'], 'maxValue': ['unknown rule'], 'minValue': ['unknown rule'], 'name': ['unknown rule'], 'oldCode': ['unknown rule'], 'questionSets': ['unknown rule'], 'range': ['unknown rule'], 'title': ['unknown rule'], 'type': ["must be of ['string', 'list'] type"]}], 'type': ['null value not allowed']}], 'anyof definition 1': [{'schema': ['no definitions validate', {'anyof definition 0': [{'choices': [{'propertyschema': ['unknown rule']}]}] ...
Я пробовал несколько разных комбинаций Евы и Цербера, но безуспешно. Я просмотрел репозиторий и обнаружил, что Cerberus не импортируется нигде в коде, так что это, должно быть, используемая версия Cerberus.
Буду признателен за любую помощь/предложения.

Подробнее здесь: https://stackoverflow.com/questions/793 ... dictionary
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»