Errors¶
Error classes and utilities for validation error handling.
Classes¶
BridgeValidationError
¶
BridgeValidationError(
message: str | list[Any] | dict[str, Any],
field_name: str = "_schema",
data: Any | None = None,
valid_data: dict[str, Any] | None = None,
**kwargs: Any,
)
Bases: ValidationError
Validation error that bridges Marshmallow and Pydantic error formats.
Extends Marshmallow's ValidationError to track partially valid data, enabling graceful handling of multi-field validation failures.
| ATTRIBUTE | DESCRIPTION |
|---|---|
messages |
Dict of field -> error messages (Marshmallow format)
|
valid_data |
Dict of successfully validated fields
|
data |
Original input data
|
Usage¶
Catching Validation Errors¶
from pydantic_marshmallow import schema_for, BridgeValidationError
UserSchema = schema_for(User)
schema = UserSchema()
try:
user = schema.load({
"name": "",
"email": "invalid",
"age": -5
})
except BridgeValidationError as e:
# Error messages by field
print(e.messages)
# {'name': ['String should have at least 1 character'],
# 'email': ['value is not a valid email address'],
# 'age': ['Input should be greater than or equal to 0']}
# Original input data
print(e.data)
# {'name': '', 'email': 'invalid', 'age': -5}
# Fields that passed validation
print(e.valid_data)
# {}
Marshmallow Compatibility¶
BridgeValidationError extends Marshmallow's ValidationError, so standard exception handling works:
from marshmallow import ValidationError
try:
user = schema.load(invalid_data)
except ValidationError as e:
# Works with both Marshmallow and Bridge errors
print(e.messages)
Partial Validation¶
When using partial loading, valid_data contains fields that passed: