Built-in validation rules for chirp forms.
Each validator is a callable with the signature::
def rule(value: str) -> str | None:
'''Return error message, or None if valid.'''
Parameterized validators are factory functions that return a validator::
def max_length(n: int) -> Callable[[str], str | None]:
def check(value: str) -> str | None:
if len(value) > n:
return f"Must be at most {n} characters"
return None
return check
Custom validators follow the same protocol — any callable matching
(str) -> str | None works with validate().
validation.rules
| 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
Field must be present and non-empty.
String must be at most n characters.
String must be at least n characters.
Value must be a valid email address (basic format check).
Value must be a valid URL (http/https).
Value must match the given regex pattern.
Value must be one of the given choices.
Value must be a valid integer.
Value must be a valid number (int or float).
required
function
def required(value: str) -> str | None
Field must be present and non-empty.
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
value
|
str
|
— |
max_length
function
def max_length(n: int) -> Validator
String must be at most n characters.
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
n
|
int
|
— |
min_length
function
def min_length(n: int) -> Validator
String must be at least n characters.
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
n
|
int
|
— |
email
function
def email(value: str) -> str | None
Value must be a valid email address (basic format check).
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
value
|
str
|
— |
url
function
def url(value: str) -> str | None
Value must be a valid URL (http/https).
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
value
|
str
|
— |
matches
function
def matches(pattern: str, message: str | None = None) -> Validator
Value must match the given regex pattern.
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
pattern
|
str
|
— | |
message
|
str | None
|
None
|
one_of
function
def one_of(*choices: str) -> Validator
Value must be one of the given choices.
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
*choices
|
str
|
— |
integer
function
def integer(value: str) -> str | None
Value must be a valid integer.
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
value
|
str
|
— |
number
function
def number(value: str) -> str | None
Value must be a valid number (int or float).
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
value
|
str
|
— |
View source · /home/runner/work/chirp/chirp/site/../src/chirp/validation/rules.py:1