validation

Page actions AI-ready formats and sharing
Open LLM text
Share with AI
Ask Claude Ask ChatGPT Ask Gemini Ask Copilot

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],…

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

validation

Name Type Default Description
type
qualified_name
element_type
description
source_file
line_number
is_autodoc
autodoc_element
_autodoc_template
_autodoc_url_path
_autodoc_page_type
title
doc_content_hash

Symbols on this page

validate
function
def validate(data: Mapping[str, str] | dict[str, str], rules: dict[str, list[Validator]]) -> ValidationResult

Validate data against a set of rules.

Parameters

Name Type Default 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, or ``None`` on success.

View source · /home/runner/work/chirp/chirp/site/../src/chirp/validation/__init__.py:1