Skip to main content

A powerfull schema validator

Project description

kohi

A powerfull schema validator

GitHub Repo stars GitHub Workflow Status GitHub PyPI - Format PyPI - Python Version PyPI - Package Version PyPI - Downloads Open Source Helpers

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 thrown

  • add_mutation(): Self

    Add a mutation function than will run after the validate method. P.S. Will only be executed in the parse method

  • parse(data): typeof data

    Run the validate method, the mutations and return a deep clone of data

  • default(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

kohi-0.4.0.tar.gz (8.5 kB view hashes)

Uploaded Source

Built Distribution

kohi-0.4.0-py3-none-any.whl (8.4 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page