pydantic-validation
Record-level data validation using Pydantic models. Field validators, model validators, and batch validation patterns.
Installation
Follow the repository instructions for this skill and your agent. Review the files and dependencies before adding it to your workflow.
View source ↗GuidesSkill instructions
Pydantic Validation
Audience: Data engineers validating records in ETL pipelines.
Goal: Provide reusable Pydantic patterns for record-level validation.
Scripts
Execute validation functions from scripts/validators.py:
from scripts.validators import (
UserRecord,
Customer,
Order,
Address,
validate_records,
print_validation_errors,
PositiveInt,
Email
)
Usage Examples
Basic Model Validation
from scripts.validators import UserRecord
# Validate single record
user = UserRecord(
id=1,
email="USER@example.com",
status="active",
created_at="2024-01-15",
age=25
)
print(user.email) # user@example.com (lowercased)
Batch Validation
from scripts.validators import validate_records, print_validation_errors
raw_data = [
{"id": 1, "email": "a@b.com", "status": "active", "created_at": "2024-01-01", "age": 25},
{"id": -1, "email": "invalid", "status": "bad", "created_at": "2024-01-01", "age": 200},
]
valid, invalid = validate_records(raw_data)
if invalid:
print_validation_errors(invalid)
Nested Models
from scripts.validators import Customer, Address
customer = Customer(
id=1,
name="John Doe",
billing_address=Address(
street="123 Main St",
city="NYC",
postal_code="10001"
)
)
# shipping_address defaults to billing_address
Field Constraints Reference
| Constraint | Example | Description |
|---|---|---|
gt, ge |
Field(gt=0) |
Greater than / greater-equal |
lt, le |
Field(le=100) |
Less than / less-equal |
pattern |
Field(pattern=r'^\d+$') |
Regex match |
min_length, max_length |
Field(min_length=1) |
String length |
JSON/Dict Conversion
# Parse from dict
customer = Customer(**data_dict)
# Parse from JSON
customer = Customer.model_validate_json(json_string)
# Export to dict/JSON
data = customer.model_dump()
json_str = customer.model_dump_json()
When to Use Pydantic
| Use Case | Pydantic | Alternative |
|---|---|---|
| API request/response | ✓ | FastAPI integration |
| Record-by-record ETL | ✓ | - |
| Full DataFrame validation | - | pandera |
| Pipeline expectations | - | Great Expectations |
Dependencies
pydantic>=2.0
pydantic-settings # For config validation
Examples
Read the usage examples in the source repository.
View source ↗Source history
- Indexed on
- 2026-01-20
- Index updated
- 2026-02-04
- Branch
- main
Index and sync dates describe this directory. View the source repository for code history.
GitHub ↗chat Comments (0)
Sign in to join the discussion and leave a comment.
No comments yet. Be the first to share your thoughts!