#python #validation #dsl #cerberus
Вопрос:
Я использую Cerberus для построения логики проверки какого-то DSL, которая определяет список различных объектов. Например (с использованием YAML):
items:
- name: shape1
type: Circle
radius: 2
- name: shape2
type: Rectangle
length: 2
width: 1
Как я могу использовать Cerberus для проверки различных атрибутов для разных типов? Я попытался использовать схему(список) любые правила , и это не работает. Пример схемы выглядит примерно так:
items:
type: list
anyof:
- schema:
name:
type: string
required: true
type:
type: string
required: true
radius:
type: int
required: true
- schema:
name:
type: string
required: true
type:
type: string
required: true
length:
type: int
required: true
width:
type: int
required: true
Ошибка выборки:
самость = Объект валидатора в 0x00000270F16E5040>, домен = ‘проверка’, правило = ‘тип’
def __get_rule_handler(self, domain, rule): methodname = '_{0}_{1}'.format(domain, rule.replace(' ', '_')) result = getattr(self, methodname, None) if result is None:
raise RuntimeError(
"There's no handler for '{}' in the '{}' " "domain.".format(rule, domain) ) E RuntimeError: There's no handler for 'type' in the 'validate' domain.