pythonish对象方案验证程序
pythonish-validator的Python项目详细描述
没有复杂模式的python数据验证库。 这就是编写python代码的方式:
适用于python>;=3.7
from pythonish_validator.common import Validator validator= Validator({'name': str, 'age': int, 'skills': [str]}) validator.is_valid({'name': 'Georgy', 'age': 29, 'skills': ['Python', 'Perl', 'C']})
什么更容易?
安装
pip3 install pythonish-validator
错误消息
from pythonish_validator.common import validate validator= validate({'name': str, 'age': int, 'skills': [str]}, {'name': 'Georgy', 'age': None, 'skills': ['Python', 'Perl', 42]}) assert validator.repr_errors()==["{'age'}->NoneType(None)", "{'skills'}->[2]->int(42)"]
功能
使用python类的语言:
from pythonish_validator.common import Validator class User: __validation_schema__={'id': int, 'name': str }validator= Validator({"users": [User]})# valid structure validator.is_valid({"users": [{'id': 1, 'name': 'Alice'}, {'id': 2, 'name': 'Bob'}, ]})# invalid structure validator.is_valid({"users": [{'id': '1', 'name': 'Alice'}, {'id': 2}, ]}) assert validator.repr_errors()==["{'users'}->[0]->{'id'}->str('1')", "{'users'}->[1]->{'name'}", ]
甚至自定义验证:
import re from pythonish_validator.common import Validator class EmailType: @staticmethod def __validation_schema__(data): if not isinstance(data, str): return False if re.match(r'\w+@\w+.\w{2,5}', data) is None: return False return True class User: __validation_schema__={'id': int, 'name': str, 'email': EmailType, }validator= Validator({"users": [User]}) validator.is_valid({"users": [{'id': 1, 'name': 'Alice', 'email': 'alice@example.com'}, {'id': 2, 'name': 'Bob', 'email': 'bob@example.com'}, ]})
如果您发现任何错误,请写信给问题列表(https://github.com/bugov/pythonish-validator/issues)。