A powerfull schema validator
Project description
kohi
A powerfull schema validator
Instalation
Via Poetry:
poetry add kohi
Via PIP:
pip install kohi
Via GitHub (recommended only in dev env):
git clone https://github.com/natanfeitosa/kohi.git && cd kohi && pip install .
Quickstart
To validate a type you can import your schema validator from kohi
or from kohi.<type> import <type>Schema
e.g.
Let's check if a person's date of birth is a positive integer less than the current date — 2023 — and greater than or equal to 2005
from kohi import NumberSchema
# from kohi.number import NumberSchema
n = NumberSchema().int().positive().lt(2023).gte(2005)
print(n.validate(2005)) # True
print(n.validate(2022)) # True
print(n.validate(2004)) # False
print(n.validate(2023)) # False
# You can see the errors generated in the last `validate` call just by accessing the `errors` property
# print(n.errors) # ['number must be less than 2022']
Validators
Only one base class for all schema validators
or
kohi.NumberSchema
or
kohi.StringSchema
or
kohi.EnumSchema
or
kohi.DictSchema
Methods
BaseSchema
add_validator(name, func): Self
Add a custom data validator
validate(data): bool
The method to be called when we validate the schema
reset(): None
Reset error list
throw(): Self
By default no errors are thrown, but when this method is chained a
ValidationError
will be thrownadd_mutation(): Self
Add a mutation function than will run after the
validate
method. P.S. Will only be executed in theparse
methodparse(data): typeof data
Run the
validate
method, the mutations and return a deep clone of datadefault(data): Self
Set a default value for when the validator receives None and you don't want to generate an error
optional(): Self
Allow values None
required(error_message=None): Self
Mark the schema as required. Does not allow values None
NumberSchema
inherits from BaseSchema
By default validates int and float
float(): Self
Validate only
float
int(): Self
Validate only
int
lt(num): Self
Validates if the data is less than
num
gt(num): Self
Validates if the data is greater than
num
lte(num): Self
Validates if the data is less than or equal to
num
gte(num): Self
Validates if the data is greater than or equal to
num
min(num): Self
Just an alias for
gte(num)
max(num): Self
Just an alias for
lte(nun)
positive(): Self
Just an alias for
gt(0)
negative(): Self
Just an alias for
lt(0)
nonpositive(): Self
Just an alias for
lte(0)
nonnegative(): Self
Just an alias for
gte(0)
StringSchema
inherits from BaseSchema
min(min_length): Self
Validate if the data len is greater than or equal to min_length
length(length): Self
Validate if the data len equal to length
max(max_length): Self
Validate if the data len is less than or equal to max_length
url(): Self
Validate if the data is an url
uuid(): Self
Validate if the data is a valid uuid
starts_with(text): Self
Validate if the data starts with text
ends_with(text): Self
Validate if the data ends with text
EnumSchema
inherits from BaseSchema
one_of(opts): Self
Validate if the data is in opts
not_one_of(opts): Self
Validate that data is different from the values in opts
DictSchema
inherits from BaseSchema
props(**props): Self
Defines the structure of the dictionary in the format
[key]: ClassValidator
Dev env
- install development dependencies
- check types using
mypy
- run all tests using
pytest
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
Built Distribution
File details
Details for the file kohi-0.4.0.tar.gz
.
File metadata
- Download URL: kohi-0.4.0.tar.gz
- Upload date:
- Size: 8.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.14 CPython/3.8.13 Linux/5.4.0-137-generic
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f8d968ace0bf45d512058bdeb9b6e2f48a562463aed5d8731d22b7fbb8c65f33 |
|
MD5 | a736689cab40d6f3e397dd0095bc0fe6 |
|
BLAKE2b-256 | db3d7ecf6bd1b8eee5c821cb032eb73bbe74f7de1a5f71ab17077b972bf85206 |
File details
Details for the file kohi-0.4.0-py3-none-any.whl
.
File metadata
- Download URL: kohi-0.4.0-py3-none-any.whl
- Upload date:
- Size: 8.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.14 CPython/3.8.13 Linux/5.4.0-137-generic
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 860c5ed5144c49067628ffff4f3a7f418473683b6674edc5a0e3ea5be6b4a67e |
|
MD5 | 4cc80bc26f9415007b2d0718004a5371 |
|
BLAKE2b-256 | 8ebf6fd20c134ba2425790b498600c00ab6b2a739d4c33079569394660783489 |