验证和分析库

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第三方库


热门话题
Java重写   java有一种制作jre1的方法。8作为jre1运行。7.   java从Android应用程序向AWS S3上传文件   java是一种正确的匿名子类化TimerTask的方法,在run方法中保留对“this”的引用   c#应用程序开发:我应该检查表上的primarykey还是假设它应该在那里?   swing在Java中绘制二叉树如何调用函数   网络编程在Java中通过按钮终止服务器程序   mysql从java创建SQL函数导致异常   java文件系统找不到指定的路径   JavaSpring安全性可用于GET,但不能用于其他方法   带有PDFBox的java标记PDF   Java swing,JButton在第一次按下按钮时不会调整大小,但在第二次按下按钮时会调整大小   java是我的PropertyLoader单例线程安全吗?   java如何在kafka consumer中按内容设置主题?   java优化jtable   从java包创建可执行jar文件   getLastKnownLocation()上的java Android应用程序崩溃   java RestTemplate:如何发送多部分?   JavaDropWizard:从同一个类生成html和json