快速函数序列化程序
pystrainer的Python项目详细描述
过滤器是python中序列化和验证的另一种方式。它在类上使用函数样式。
过滤器正式支持Python2.6-2.7&3.4-3.5,在Pypy上运行良好。
功能
- 功能性
- 复杂的python对象序列化
- 数据反序列化
- 数据验证
- Speed
序列化示例
importdatetimefromstrainerimport(serializer,field,child,formatters,validators,ValidationException)artist_serializer=serializer(field('name',validators=[validators.required()]))album_schema=serializer(field('title',validators=[validators.required()]),field('release_date',validators=[validators.required(),validators.datetime()],formatters=[formatters.format_datetime()]),child('artist',serializer=artist_serializer,validators=[validators.required()]))classArtist(object):def__init__(self,name):self.name=nameclassAlbum(object):def__init__(self,title,release_date,artist):self.title=titleself.release_date=release_dateself.artist=artistbowie=Artist(name='David Bowie')album=Album(artist=bowie,title='Hunky Dory',release_date=datetime.datetime(1971,12,17))
现在我们可以序列化、反序列化和验证数据
>>>album_schema.serialize(album){'artist':{'name':'David Bowie'},'release_date':'1971-12-17T00:00:00','title':'Hunky Dory'}>>>album_schema.deserialize(album_schema.serialize(album)){'artist':{'name':'David Bowie'},'release_date':datetime.datetime(1971,12,17,0,0,tzinfo=<iso8601.Utc>),'title':'Hunky Dory'}>>>input=album_schema.serialize(album)>>>delinput['artist']>>>album_schema.deserialize(input)ValidationException:{'artist':['This field is required']}
这个例子是从Marshmallow中借用并修改的。
安装
要安装过滤器,只需:
$ pip install pystrainer ✨?✨
满意,保证。
发布历史记录
1.0.1
- 精炼验证器
- 为child添加了attr getter和many
1.0.0
- 更新文档
- 正式发布
0.0.9
- < >修复Python 3发行版< < > >
0.0.8
- 删除了错误的打印语句
0.0.7
- 修复了日期时间验证器的错误
0.0.6
- 修复了指向正确索引的多次验证错误
- 修复了在多个而不是元素中对整个数组应用vlaidation的错误
- 如果源是dict,则添加一个dict_字段,而不是对象
- 增加了将验证器传递给子元素的能力,许多实例在移动到子元素之前应用了验证
- 添加了有关捕获嵌套验证错误的测试
- 添加了格式化程序,因此可以在退出时对内容进行格式化
- 去掉了编码器,而不是这个项目的域
- 所有内容都可以从一个名称空间导入
- 将API从“内部”更改为“表示”以序列化/反序列化
0.0.5(2016-11-29)
- 充实的文档
- 添加了日期时间验证器
- 加速BU减少回路
0.0.4(2016-11-23)
- 添加一些验证器
0.0.1(2016-11-23)
- 出生