用于创建输入算法的瘦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第三方库


热门话题
java如何创建Restful服务并将其部署到OSGi容器?   java如何获取用户在EditText中输入的时间并从中扣除5小时30分钟?   java用户无法注销firebase 安卓   java Undertow始终将字符集添加到ContentType头,即使它不是文本MIME类型   java LocalBroadcastManager未正确接收消息   foreach在Java中有没有比For循环更好的方法可以灵活地遍历集合?   java如何在安卓上移动球   在OSGi下的Log4j中使所有记录器异步时,java ClassNotFoundException   java未知输入字节长度转换为int   java测试工厂在使用前缀命名时抛出NPE   对象的副本(JAVA)   java SP20310:无法打开文件。sql   java Spring安全性仅为一条路径添加安全性   java在idea中获取菱形运算符的编译错误