用于创建输入算法的瘦dsl
input_algorithms的Python项目详细描述
为什么叫这个名字?
当一个角色说 大意是“如果我们有更好的投入 算法”。
安装
使用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