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 details)

Uploaded Source

Built Distribution

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

Uploaded Python 3

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

Hashes for kohi-0.4.0.tar.gz
Algorithm Hash digest
SHA256 f8d968ace0bf45d512058bdeb9b6e2f48a562463aed5d8731d22b7fbb8c65f33
MD5 a736689cab40d6f3e397dd0095bc0fe6
BLAKE2b-256 db3d7ecf6bd1b8eee5c821cb032eb73bbe74f7de1a5f71ab17077b972bf85206

See more details on using hashes here.

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

Hashes for kohi-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 860c5ed5144c49067628ffff4f3a7f418473683b6674edc5a0e3ea5be6b4a67e
MD5 4cc80bc26f9415007b2d0718004a5371
BLAKE2b-256 8ebf6fd20c134ba2425790b498600c00ab6b2a739d4c33079569394660783489

See more details on using hashes here.

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