Metadata-Version: 2.1
Name: koda-validate
Version: 3.1.2
Summary: Typesafe, composable validation
Home-page: https://github.com/keithasaurus/koda-validate
License: MIT
Keywords: validation,type hints,asyncio,serialization,typesafe,validate,validators,predicate,processor
Author: Keith Philpott
Requires-Python: >=3.8.1,<4.0.0
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Console
Classifier: Environment :: MacOS X
Classifier: Environment :: Web Environment
Classifier: Framework :: Hypothesis
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: MacOS
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: POSIX :: Linux
Classifier: Operating System :: Unix
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Utilities
Classifier: Typing :: Typed
Requires-Dist: koda (==1.4.0)
Project-URL: Documentation, https://koda-validate.readthedocs.io/en/stable/
Description-Content-Type: text/markdown

# Koda Validate

Build typesafe validators automatically or explicitly -- or write your own. Combine them to
build validators of arbitrary complexity. Koda Validate is async-friendly, pure Python, and
1.5x - 12x faster than Pydantic.

Docs: [https://koda-validate.readthedocs.io/en/stable/](https://koda-validate.readthedocs.io/en/stable/)

```python

from typing import TypedDict 
from koda_validate import (StringValidator, MaxLength, MinLength, 
                           ListValidator, TypedDictValidator)
from koda_validate.signature import validate_signature

# Explicit Validators
string_validator = StringValidator(MinLength(8), MaxLength(20))

list_string_validator = ListValidator(string_validator)


# Derived Validators
class Person(TypedDict):
    name: str
    hobbies: list[str] 

person_validator = TypedDictValidator(Person)


# Runtime type checking
@validate_signature
def add(a: int, b: int) -> int:
    return a + b

```

There's much, much more... Check out the [Docs](https://koda-validate.readthedocs.io/en/stable/).


## Something's Missing Or Wrong 
Open an [issue on GitHub](https://github.com/keithasaurus/koda-validate/issues) please!

