使用添加的规则集时 Cerberus 抛出异常
Cerberus throwing exception when using added rule set
我在 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'
关于为什么会发生这种情况有什么想法吗?
您正在使用规则集作为 schema
规则的约束,但它需要一个完整的架构,其中顶级键是键引用,而不是键。
我在 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'
关于为什么会发生这种情况有什么想法吗?
您正在使用规则集作为 schema
规则的约束,但它需要一个完整的架构,其中顶级键是键引用,而不是键。