本文整理汇总了Python中schema.Schema.keys方法的典型用法代码示例。如果您正苦于以下问题:Python Schema.keys方法的具体用法?Python Schema.keys怎么用?Python Schema.keys使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类schema.Schema
的用法示例。
在下文中一共展示了Schema.keys方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: validate
# 需要导入模块: from schema import Schema [as 别名]
# 或者: from schema.Schema import keys [as 别名]
def validate(self, data):
s = self._schema
e = self._error
if type(s) in (list, tuple, set, frozenset):
data = Schema(type(s), error=e).validate(data)
return type(s)(Or(*s, error=e).validate(d) for d in data)
if type(s) is dict:
data = Schema(dict, error=e).validate(data)
new = type(data)() # new - is a dict of the validated values
x = None
coverage = set() # non-optional schema keys that were matched
# for each key and value find a schema entry matching them, if any
sorted_skeys = list(sorted(s, key=priority))
for key, value in data.items():
valid = False
skey = None
for skey in sorted_skeys:
svalue = s[skey]
try:
nkey = Schema(skey, error=e).validate(key)
except SchemaError:
pass
else:
try:
nvalue = Schema(svalue, error=e).validate(value)
except SchemaError as _x:
x = _x
raise
else:
coverage.add(skey)
valid = True
break
if valid:
new[nkey] = nvalue
elif skey is not None:
if x is not None:
raise SchemaError(["invalid value for key %r" % key] + x.autos, [e] + x.errors)
coverage = set(k for k in coverage if type(k) is not Optional)
required = set(k for k in s if type(k) is not Optional)
if coverage != required:
raise SchemaError("missed keys %r" % (required - coverage), e)
if len(new) != len(data):
wrong_keys = set(data.keys()) - set(new.keys())
s_wrong_keys = ", ".join("%r" % k for k in sorted(wrong_keys))
raise SchemaError("wrong keys %s in %r" % (s_wrong_keys, data), e)
return new
if hasattr(s, "validate"):
try:
return s.validate(data)
except SchemaError as x:
raise SchemaError([None] + x.autos, [e] + x.errors)
except BaseException as x:
raise SchemaError("%r.validate(%r) raised %r" % (s, data, x), self._error)
if issubclass(type(s), type):
if isinstance(data, s):
return data
else:
raise SchemaError("%r should be instance of %r" % (data, s), e)
if callable(s):
f = s.__name__
try:
if s(data):
return data
except SchemaError as x:
raise SchemaError([None] + x.autos, [e] + x.errors)
except BaseException as x:
raise SchemaError("%s(%r) raised %r" % (f, data, x), self._error)
raise SchemaError("%s(%r) should evaluate to True" % (f, data), e)
if s == data:
return data
else:
raise SchemaError("%r does not match %r" % (s, data), e)