Я считаю Цербер очень надежным, с отличной документацией и простым в использовании.
Вот базовый пример реализации:
my_yaml.yaml
:
name: 'my_name'
date: 2017-10-01
metrics:
percentage:
value: 87
trend: stable
Определение схемы проверки в schema.py
:
{
'name': {
'required': True,
'type': 'string'
},
'date': {
'required': True,
'type': 'date'
},
'metrics': {
'required': True,
'type': 'dict',
'schema': {
'percentage': {
'required': True,
'type': 'dict',
'schema': {
'value': {
'required': True,
'type': 'number',
'min': 0,
'max': 100
}
'trend': {
'type': 'string',
'nullable': True,
'regex': '^(?i)(down|equal|up)$'
}
}
}
}
}
}
Использование PyYaml для загрузки документа yaml
:
def __load_doc():
with open(__yaml_path, 'r') as stream:
try:
return yaml.load(stream)
except yaml.YAMLError as exception:
raise exception
Оценить файл yaml очень просто:
schema = eval(open('PATH_TO/schema.py', 'r').read())
v = Validator(schema)
doc = __load_doc()
print v.validate(doc, schema)
print v.errors
Имейте в виду, что Cerberus - это инструмент для независимой проверки данных, что означает, что он может поддерживать форматы, отличные от YAML, такие как JSON, XML и т. Д.