← ClaudeAtlas

pydanticlisted

Python data validation using type hints and runtime type checking with Pydantic v2's Rust-powered core.
Jartan-LLC/grimoire · ★ 2 · AI & Automation · score 71
Install: claude install-skill Jartan-LLC/grimoire
# Pydantic Validation Skill ## Quick Start ```python from pydantic import BaseModel, Field, EmailStr from datetime import datetime class User(BaseModel): id: int name: str = Field(..., min_length=1, max_length=100) email: EmailStr created_at: datetime = Field(default_factory=datetime.now) is_active: bool = True # Validate data user = User(id=1, name="Alice", email="alice@example.com") print(user.model_dump()) # {'id': 1, 'name': 'Alice', ...} # Automatic type coercion user2 = User(id="2", name="Bob", email="bob@example.com") assert user2.id == 2 # String "2" coerced to int # Validation error try: User(id=3, name="", email="invalid") except ValidationError as e: print(e.errors()) ``` --- ## Core Concepts ### BaseModel Foundation ```python from pydantic import BaseModel, ConfigDict class Product(BaseModel): model_config = ConfigDict( str_strip_whitespace=True, validate_assignment=True, use_enum_values=True, arbitrary_types_allowed=False ) name: str price: float quantity: int = 0 # Usage product = Product(name=" Widget ", price=19.99) assert product.name == "Widget" # Whitespace stripped # Validate on assignment product.price = "29.99" # Auto-converts to float ``` ### Field Configuration ```python from pydantic import Field, field_validator from typing import Annotated class Item(BaseModel): # Field constraints sku: str = Field(pattern=r'^[A-Z]{3}-\d{4}$') price: fl