Say you've got a dictionary from json.loads. Just define your schema and check if what you've got is good:
from voluptuous import Schema, Required, All, Length, Range
schema = Schema({
Required('q'): All(str, Length(min=1)),
Required('per_page', default=5): All(int, Range(min=1, max=20)),
'page': All(int, Range(min=0)),
})
"q" is required:
from voluptuous import MultipleInvalid, Invalid
try:
schema({})
print "MultipleInvalid not raised"
except MultipleInvalid as e:
print e
required key not provided @ data['q']...must be a string:
try:
schema({'q': 123})
print "MultipleInvalid not raised"
except MultipleInvalid as e:
print e
expected str for dictionary value @ data['q']...and must be at least one character long:
try:
schema({'q': ''})
print "MultipleInvalid not raised"
except MultipleInvalid as e:
print e
length of value must be at least 1 for dictionary value @ data['q']Note how per_page is assigned its default value:
try:
s = schema({'q': '#topic'})
print "s = {0}".format(s)
except MultipleInvalid as e:
print e
s = {'q': '#topic', 'per_page': 5}
No comments:
Post a Comment