用于创建输入算法的瘦dsl

input_algorithms的Python项目详细描述


输入算法

帮助编写描述有效数据和测试的规范的dsl 输入的数据符合规定的规格。

https://travis-ci.org/delfick/input_algorithms.png?branch=master

为什么叫这个名字?

当一个角色说 大意是“如果我们有更好的投入 算法”。

安装

使用PIP!:

pip install input_algorithms

或者如果您正在开发它:

pip install -e .
pip install -e ".[tests]"

使用量

下面是一个帮助您使用库的示例。

frominput_algorithms.validatorsimportValidatorfrominput_algorithms.dictobjimportdictobjfrominput_algorithmsimportspec_baseassbfrominput_algorithms.metaimportMetaimportremeta=Meta({},[])# 1. Create a class defining your fields.classPersonDictObj(dictobj):fields=["name","age"]# 2. Create custom validate methods as required.classValidName(Validator):defvalidate(self,meta,val):matcher=re.compile("^[A-Za-z\ ]+$")ifnotmatcher.match(val):raiseException("{0} doesn't look like a name.".format(val))returnvalclassValidAge(Validator):defvalidate(self,meta,val):ifval>120:raiseException("I don't believe you are that old")returnval# 3. Tie together the pieces.person_spec=sb.create_spec(PersonDictObj,name=sb.required(sb.valid_string_spec(ValidName())),age=sb.and_spec(sb.integer_spec(),ValidAge()),)# 4. Have some datadata={"name":"Ralph","age":23}# 5. Normalise the data into your objectnormalised=person_spec.normalise(meta,data)# 6. Use the object!print("Name is {0}".format(normalised.name))print("Age is {0}".format(normalised.age))

测试

要运行此项目中的测试,只需使用有用的脚本:

./test.sh

或运行tox:

tox

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

推荐PyPI第三方库


热门话题
具有x86javapath的x64机器上x86java上的java JNI未满足链接错误   java将Pixmap的一部分上传到GPU   图像Java位图RLE8格式   java Android studio谷歌广告崩溃应用程序   java如何创建包含未知数量对象的变量?   Java计算给定int数组的所有可能组合   java JDBC classnotfound异常   httpclient中的java将HttpEntity转换为字符串的最优雅/正确的方法是什么?   如何从Java程序运行nano?   java在安卓中调用自定义类/方法   调用方法和JOptionPane后,允许代码继续执行所需的java计时器或其他想法   关于侦听器的向量Java并发问题   线程池执行器Java线程池   java配置DTO上的Swagger javax验证约束   Java中用于按钮功能的swing操作命令   ServletOutputStream中的java设置状态代码   java打印输入数组的平均值