Error Reporting¶
Pandera raises SchemaError for individual validation failures
and SchemaErrors when lazy=True.
Non-lazy validation (fail-fast)¶
By default, validation stops on the first error:
import torch
from tensordict import TensorDict
import pandera.tensordict as pa
schema = pa.TensorDictSchema(
keys={"x": pa.Tensor(dtype=torch.float32, shape=(None, 10))},
batch_size=(32,),
)
td = TensorDict({"x": torch.randn(16, 10)}, batch_size=[16])
try:
schema.validate(td)
except pa.errors.SchemaError as exc:
print(f"Error: {exc}")
print(f"Reason: {exc.reason_code}")
Error: Expected batch_size[0]=32, got batch_size[0]=16
Reason: SchemaErrorReason.WRONG_DATATYPE
Lazy validation¶
Set lazy=True to collect all errors:
td_invalid = TensorDict(
{"x": torch.randn(16, 10), "y": torch.randn(16, 10)},
batch_size=[16],
)
try:
schema.validate(td_invalid, lazy=True)
except pa.errors.SchemaErrors as exc:
print(f"Found {len(exc.schema_errors)} errors")
for err in exc.schema_errors:
print(f" - {str(err)}")
print(f"\nError counts: {exc.error_counts}")
Found 1 errors
- Expected batch_size[0]=32, got batch_size[0]=16
Error counts: {'WRONG_DATATYPE': 1}
Error reason codes¶
WRONG_DATATYPE— tensor dtype mismatchCOLUMN_NOT_IN_DATAFRAME— missing keyCHECK_ERROR— value check failure
See also¶
Validating with Checks — Check API
TensorDictSchema — TensorDictSchema
Lazy Validation — general lazy validation guide