可缓存架构描述和验证

conformit的Python项目详细描述


https://api.travis-ci.org/eventbrite/conformity.svghttps://img.shields.io/pypi/v/conformity.svghttps://img.shields.io/pypi/l/conformity.svg

一个低级的声明性模式验证库。

声明架构:

fromconformity.fieldsimportDictionary,Float,Integer,List,UnicodeStringperson=Dictionary({"name":UnicodeString(),"height":Float(gte=0),"event_ids":List(Integer(gt=0)),})

检查数据是否有效:

data={"name":"Andrew","height":180.3,"event_ids":[1,"3"]}errors=person.errors(data)# Key event_ids: Index 1: Not an integer

以及包装函数以在进出过程中进行验证:

kwargs=Dictionary({"name":UnicodeString(),"score":Integer(),},optional_keys=["score"])@validate_call(kwargs,UnicodeString())defgreet(name,score=0):ifscore>10:return"So nice to meet you, {}!".format(name)else:return"Hello, {}.".format(name)

它支持基本字符串、数字、地理、时间、网络和其他字段类型,包括 易于扩展(可选通过子类化)。

错误总是conformity.error:Error的实例,每个错误都有一个message、一个code和一个 pointer

  • message是对问题的简单语言(英语)解释。
  • code是一个机器可读的代码,在大多数情况下,它是INVALID(使用常量 conformity.error:ERROR_CODE_INVALID)。在Dictionary中,错误代码是MISSINGERROR_CODE_MISSING) 对于不存在的必需密钥,UNKNOWN对于不允许的额外密钥。在Constant中,错误 对于与允许值不匹配的值,代码为UNKNOWN。在Polymorph中,错误代码是 UNKNOWN表示不存在__default__时的未知开关值。
  • pointer对于大多数字段类型中的错误是None。但是,对于数据结构字段类型(ListDictionarySchemalessDictionaryTuplepointer是一个字符串,表示指向 结构中的违规值。

接口

只要遵循此接口,任何内容都可以是一致性验证程序:

  • 一个errors(value)方法,为每个错误或空返回一个conformity.error:Error对象列表 如果值为clean,则为list或None
  • 返回描述字段的字典的introspect()方法。这本词典的格式必须有所不同 但是它应该反映传入构造函数的关键字参数的名称,并提供足够的 完全按原样重新创建字段的信息。为结构声明的任何子字段都应使用 他们自己的introspect()输出。字典还必须包含一个type键,该键包含 类型,但这应该使用小写和下划线,而不是类名。它还可以包含description 应该解释为字段的可读原因的键。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java我能在这个程序中更好地使用内存吗?   为什么我的Java while循环迭代了一半   java IntelliJ IDEA不在构建时复制资源   socket仅在Java TCP服务器输出上检查客户端断开连接   java游戏物理摩擦   java片段onClick调用方法   symja数学分析器中无法识别java Abs[x]   java在使用泛型时创建二进制搜索树类的实例?   java在外键约束表上的添加和删除   语法java表达式的含义,如果有条件   java创建内联对象并作为参数传递   是否有相当于Redis排序集(zset)的Java数据结构   java找不到适合的方法(无参数)   音频文件操作给定字节帧的音量Java   Eclipse4不以JavaWebStart启动   java如何使用org在JSON对象中获取嵌套的键元素。json?   java与Jackson的反序列化:“org.codehaus.Jackson.map.JsonMappingException:无法反序列化[projectname]的实例。”   字符串的Java正则表达式   spring集成上的java检测缺火指令