快速函数序列化程序

pystrainer的Python项目详细描述


https://img.shields.io/pypi/v/pystrainer.svghttps://readthedocs.org/projects/strainer/badge/?version=latesthttps://travis-ci.org/voidfiles/strainer.svg?branch=master

过滤器是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)

  • 出生

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

推荐PyPI第三方库


热门话题
从PHP代码调用使用Axis创建的Java web服务   java空白“存储库视图”,带有新的EclipseRCP4.16和EGIT5.8   java我可以通过hadoop中的代码提前完成映射任务吗?   java将ZoneDateTime从Dropwizard保存到MySQL时出现问题   java如何在方法中返回中断或继续?   java如何在JAXWS客户机上指定客户机证书和客户机证书身份验证   java IOException:权限被拒绝   如何在Java中处理XML从XML数据库检索数据   java删除数组列表中的第二个元素   未注册java方案“ttps”   如何使用Selenium和Java从自动建议中选择选项?   java8可选如何正确使用它?   java存储过程无法从Hibernate调用   java为什么惰性抓取不起作用JPA   java如何从多个图像选择可用条件中划分一个图像选择案例?   java将数组定义为类变量,用户输入维度   java截图例外:截图已拍摄   非常简单的Android应用程序中的java内存泄漏   java facebook是否要求可信应用程序的身份验证?