Исключение Cerberus при использовании добавленного набора правил

У меня есть следующая часть схемы Cerberus 1.3.2 (которую я храню в виде файла YAML):

members:
    dependencies:
      res_type: gsuite_group
    type: dict
    keysrules:
      allowed:
        - gsuite
        - csod
    schema: gsuite_group_schema

Поскольку правила, которые я использую для members, повторно используются в других частях схемы, я попытался выделить их в отдельный набор правил:

rules_set_registry.add('gsuite_group_ruleset', {
    'dependencies': {'res_type': 'gsuite_group'},
    'type': 'dict',
    'keysrules': {'allowed': ['gsuite', 'csod']},
    'schema': 'gsuite_group_schema'}
)

Затем я меняю бит members на:

members: gsuite_group_ruleset

Выполнение всего этого и вызов validator.validate() приводит к следующему исключению:

File "C:\Users\goncalo.lourenco\.virtualenvs\User_Sync-Zf6-tVvH\lib\site-packages\cerberus\validator.py", line 1440, in __validate_schema_mapping
  allow_unknown = self.schema[field].get('allow_unknown', self.allow_unknown)
AttributeError: 'str' object has no attribute 'get'

Любые идеи относительно того, почему это может происходить?


person Lopson    schedule 28.04.2020    source источник


Ответы (1)


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

person funky-future    schedule 20.06.2020