验证和分析库
trafaret的Python项目详细描述
支持验证、上下文和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已删除,以支持Regexp和RegexpRaw用法
- 新的OnError用于自定义错误消息
- context=something参数用于__call__和checktrafaret方法。 由Or、And、Forward等支持。
- 新的可自定义方法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。