声明性模式框架。

scheme的Python项目详细描述


https://badge.fury.io/py/scheme.svg

主页:https://github.com/arterial-io/scheme

scheme是python的声明性通用数据模式框架。它提供了一种定义数据模式的简单方法,通过这些模式,可以在各种数据格式之间进行序列化和非序列化,使用描述性错误处理进行丰富的验证,分层变量插值,以及其他与数据交互的有趣方式。

scheme可用于需要定义和验证的任何传入和传出结构化数据:api、配置文件、复杂的用户输入、工作流和流程用户案例等。

>>>fromschemeimport*>>>fromdatetimeimportdate>>>account=Structure({'name':Text(nonempty=True),'email':Email(nonempty=True),'role':Enumeration('guest user admin',required=True,default='user'),'active':Boolean(required=True,default=True),'interests':Sequence(Text(nonempty=True),unique=True),'logins':Integer(minimum=0,default=0),'birthday':Date(),},name='account')>>>json='{"name": "Johnny Doe", "email": "johnny.doe@something.com","interests":["baseball","basketball"],"birthday":"1980-03-05"}'>>>account.unserialize(json,'json'){'name':'Johnny Doe','email':'johnny.doe@something.com','role':'user','active':True,'interests':['baseball','basketball'],'logins':0,'birthday':datetime.date(1980,3,5)}>>>suzy={'name':'Suzy Queue','email':'suzy.queue@something.com','role':'admin','active':False,'logins':324,'birthday':date(1985,12,2)}>>>print(account.serialize(suzy,'yaml'))active:falsebirthday:1985-12-02email:suzy.queue@something.comlogins:324name:SuzyQueuerole:admin>>>account.unserialize('{}','json')Traceback(mostrecentcalllast):...scheme.exceptions.ValidationError:validationfailed[01]Requiredfielderrorat(structure):accountismissingrequiredfield'name'Field:Structure(name='account',...)[02]Requiredfielderrorat(structure):accountismissingrequiredfield'email'Field:Structure(name='account',...)>>>account.serialize({'name':'Johnny Doe','email':'johnny.doe@something.com','logins':-34},'json')Traceback(mostrecentcalllast):...scheme.exceptions.ValidationError:validationfailed[01]Requiredfielderrorat(structure):accountismissingrequiredfield'active'Field:Structure(name='account',...)[02]Minimumvalueerrorat(structure).logins:loginsmustbegreaterthenorequalto0Field:Integer(name='logins',minimum=0,default=0)Value:-34[03]Invalidvalueerrorat(structure).role:rolemustbeoneof'guest','user','admin'Field:Enumeration(name='role',...)Value:'invalid'

功能

  • 简单的声明性模式定义
  • 丰富的字段类型集:binary,boolean,date,date time,decimal,email,枚举,float integer,map,object,sequence,structure,text,time,token,tuple,uuid
  • 支持各种序列化格式:csv、json、结构化文本、xml、yaml
  • 具有描述性错误报告的丰富验证:^ {EM1}$最小/最大长度/值,模式匹配等。
  • 分层变量插值
  • 模式介导的从任意对象中提取值
  • 支持基于模式的对象
  • 模式的序列化和非序列化,用于动态用例

得到它

$ pip install -U scheme

要求

python 2.6+或3.3+

许可证

BSD许可。有关详细信息,请参见LICENSE

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

推荐PyPI第三方库


热门话题
java从JSP或HTML向servlet发送多个参数   java方法来查看字符是否在字符数组中   使用带有java的MAC地址连接到设备   java如何将csv文件中的数据打印到secondactivity?   java如何从netbean 7.0.1连接到数据库   java考虑所有可能的类值,用于输出测试分割的预测值。   java我的actionListener调用有什么问题   swing在Java中实现粒子过滤器最有效的方法是什么?   java运行。getFontFamily()为返回null。使用apachepoi的docx文件   一个事务中的java领域循环与每个步骤循环中的一个事务   java日期格式与Spring Boot不兼容   java类冲突。处理   java GridBagLayout不工作   java将图像发送到另一个应用程序