Skip to main content

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

Metadata

Release files for kohi 0.4.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for kohi 0.4.0
File Size Uploaded
kohi-0.4.0.tar.gz 8.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for kohi 0.4.0
File Interpreter ABI Platform
kohi-0.4.0-py3-none-any.whl Python 3 none any Details

Total release size: 16.9 kB

Release files / kohi-0.4.0.tar.gz

Download URL kohi-0.4.0.tar.gz
Size 8.5 kB
Tags Source
SHA-256 checksum
How to use checksums
f8d968ace0bf45d512058bdeb9b6e2f48a562463aed5d8731d22b7fbb8c65f33
BLAKE2b-256 checksum
How to use checksums
db3d7ecf6bd1b8eee5c821cb032eb73bbe74f7de1a5f71ab17077b972bf85206
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.1.14 CPython/3.8.13 Linux/5.4.0-137-generic

Release files / kohi-0.4.0-py3-none-any.whl

Download URL kohi-0.4.0-py3-none-any.whl
Size 8.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
860c5ed5144c49067628ffff4f3a7f418473683b6674edc5a0e3ea5be6b4a67e
BLAKE2b-256 checksum
How to use checksums
8ebf6fd20c134ba2425790b498600c00ab6b2a739d4c33079569394660783489
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.1.14 CPython/3.8.13 Linux/5.4.0-137-generic

Release history Release notifications | RSS feed

This release

0.4.0 This release

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page