Pythonish object scheme validator
Project description
Data validation library for Python without complex schemas. It’s how you write Python code:
🐍 Works with 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']
})
What can be easier?
Install
pip3 install pythonish-validator
Error messages
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)"
]
Features
🗣️ Speak the language of Python classes:
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'}",
]
🎓 And even custom validation:
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'},
]
})
If you find any mistake – please write to the issue list 🐨 (https://github.com/bugov/pythonish-validator/issues).
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Close
Hashes for pythonish-validator-0.4.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | cc6206a1e69c1fbec9729811de5bc51669bcf3d30810074efc7e90ec6c225d29 |
|
MD5 | 5f4ffb86d2a552f289375b6009745721 |
|
BLAKE2b-256 | 123b08c1bacdac39ca4f01a8f71cf268637f79cfb1ea0274f61fa984d213ae1a |