Module

validation

Form validation — composable rules, clean results.

Usage::

from chirp.validation import validate, required, max_length, email

async def create_post(request: Request):
    form = await request.form()
    result = validate(form, {
        "title": [required, max_length(200)],
        "body": [required],
        "email": [required, email],
    })
    if not result:
        return Template("form.html", form=form, errors=result.errors)
    # result.data has cleaned values

Functions

validate 2 ValidationResult
Validate data against a set of rules.
def validate(data: Mapping[str, str] | dict[str, str], rules: dict[str, list[Validator]]) -> ValidationResult
Parameters
Name Type Description
data Mapping[str, str] | dict[str, str]

Any mapping of field names to string values —FormData, QueryParams, or a plain dict.

rules dict[str, list[Validator]]

A dict mapping field names to lists of validator functions. Each validator returns an error message string on failure, orNoneon success.

Returns
ValidationResult