Validation API
Schema
Base schema class.
Constructor
class Schema(metaclass=SchemaMeta)
Class Methods
load
@classmethod
def load(cls, data: Any) -> Schema
Load and validate data from a dictionary.
Methods
to_dict
def to_dict(self) -> dict[str, Any]
to_json
def to_json(self) -> dict[str, Any]
validate
def validate(self) -> None
Fields
StrField
StrField(
*,
required: bool = False,
default: Any = None,
nullable: bool = False,
min_length: int | None = None,
max_length: int | None = None,
strip: bool = True,
pattern: str | None = None,
)
IntField
IntField(
*,
required: bool = False,
default: Any = None,
nullable: bool = False,
minimum: int | None = None,
maximum: int | None = None,
)
FloatField
FloatField(
*,
required: bool = False,
default: Any = None,
nullable: bool = False,
minimum: float | None = None,
maximum: float | None = None,
)
BoolField
BoolField(
*,
required: bool = False,
default: Any = None,
nullable: bool = False,
)
ChoiceField
ChoiceField(
choices: list[Any] | tuple[Any, ...] | set[Any],
*,
required: bool = False,
default: Any = None,
nullable: bool = False,
)
EmailField
EmailField(
*,
required: bool = False,
default: Any = None,
nullable: bool = False,
min_length: int | None = None,
max_length: int | None = None,
)
DateField
DateField(
*,
required: bool = False,
default: Any = None,
nullable: bool = False,
format: str = "%Y-%m-%d",
)
DateTimeField
DateTimeField(
*,
required: bool = False,
default: Any = None,
nullable: bool = False,
format: str = "%Y-%m-%dT%H:%M:%S",
)
UUIDField
UUIDField(
*,
required: bool = False,
default: Any = None,
nullable: bool = False,
)
ListField
ListField(
item_field: Field | None = None,
*,
required: bool = False,
default: Any = None,
nullable: bool = False,
min_items: int | None = None,
max_items: int | None = None,
)
NestedField
NestedField(
schema_class: type[Schema],
*,
required: bool = False,
default: Any = None,
nullable: bool = False,
)
Validators
required_validator(value, field)— Value must not be Nonelength_validator(min_length, max_length)— String/list lengthmin_validator(min_value)— Minimum valuemax_validator(max_value)— Maximum valuerange_validator(min_value, max_value)— Rangeemail_validator()— Email formaturl_validator()— URL formatpattern_validator(pattern)— Regex patternand_validators(*validators)— Combine with ANDor_validators(*validators)— Combine with ORcustom_validator(func)— Custom validator function
Exceptions
ValidationError
ValidationError(fields: dict[str, list[str]])
FieldError
FieldError(message: str)
Example
class CreateUser(Schema):
name = fields.String(required=True, min_length=2)
email = fields.Email(required=True)
@app.post("/users")
async def create_user(data: CreateUser):
return {"user": data.to_dict()}