验证和分析库

trafaret的Python项目详细描述


Build statusGitterDownloadsDownloads

支持验证、上下文和aiohttp的最终转换库。

trafaret是一个刚性和强大的lib,用于处理外部数据、配置等。 它提供了一种简单的方法来检查任何东西,并根据需要进行相应的转换。

它具有快捷语法和表达任何可以编码的内容的能力:

>>>fromtrafaret.constructorimportconstruct>>>validator=construct({'a':int,'b':[str]})>>>validator({'a':5,'b':['lorem','ipsum']}){'a':5,'b':['lorem','ipsum']}>>>validator({'a':5,'b':['gorky',9]})Traceback(mostrecentcalllast):File"<console>",line1,in<module>File"/Users/mkrivushin/w/trafaret/trafaret/__init__.py",line204,in__call__returnself.check(val)File"/Users/mkrivushin/w/trafaret/trafaret/__init__.py",line144,incheckreturnself._convert(self.check_and_return(value))File"/Users/mkrivushin/w/trafaret/trafaret/__init__.py",line1105,incheck_and_returnraiseDataError(error=errors,trafaret=self)trafaret.DataError:{'b':DataError({1:DataError(valueisnotastring)})}

阅读文档宿主文档http://trafaret.readthedocs.org/en/latest/ 或者从docs/intro.rst开始。

trafaret甚至可以生成trafarets实例来从json构建转换器, 就像在json模式实现中一样Trafaret Schema

新的

  • 转换器和convert=False被删除,取而代之的是And&
  • String参数regex已删除,以支持RegexpRegexpRaw用法
  • 新的OnError用于自定义错误消息
  • context=something参数用于__call__checktrafaret方法。 由OrAndForward等支持。
  • 新的可自定义方法transform类似于change_and_return,但采用context=arg
  • 使用await
  • 的新trafaret_instance.async_check方法

文档

举个简单的例子:

importdatetimeimporttrafaretastdate=t.Dict(year=t.Int,month=t.Int,day=t.Int)>>(lambdad:datetime.datetime(**d))assertdate.check({'year':2012,'month':1,'day':12})==datetime.datetime(2012,1,12)

使用正则表达式:

>>>c=t.RegexpRaw(r'^name=(\w+)$')>>(lambdam:m.group(1))>>>c.check('name=Jeff')'Jeff'

重命名dict键:

>>>c=t.Dict(t.Key('uNJ')>>'user_name':t.String})>>>c.check({'uNJ':'Adam'}){'user_name':'Adam'}

Arrow日期检查:

importarrowdefcheck_datetime(str):try:returnarrow.get(str).naiveexceptarrow.parser.ParserError:returnt.DataError('value is not in proper date/time format')

是的,你可以这么简单地写trafarets。

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

推荐PyPI第三方库


热门话题
无gc io的垃圾收集Java   java hibernate与@Any和@JoinTable的映射   哈希映射中的java哈希映射尝试插入某些内容   Java:KeyListeners确实可以工作,但只在我键入空格时工作   通过Ansible安装Jenkins时发现Java版本不正确   Arch Linux上的openjdk Neo4j启动超时   java jpa本机查询因union all和date字段org而失败。冬眠MappingException:没有JDBC类型1111的方言映射   维特斯。io java+twitter4j事件循环集成   eclipse Jar文件作为java中的代理   Micronaut中需要java异步编程吗?   java如何将JCIFS与apache VFS结合使用来访问SMB URL?   部署在heroku上的Java Maven项目无法启动并崩溃。应用程序错误H10   java RESTful API身份验证和进一步请求   java如何创建多个级别的子类,以便参数是子类的参数?   多线程Java FX画布在完成之前不会显示   对main()中的函数进行java JUnit测试   另一个类中的java变量访问   从java更新mySQL数据库上的int   java因超时而安全取消线程