Skip to content

Pydantic

Install

Install using uv

uv add pydantic

Quick Start

from typing import List, Dict, Optional
from datetime import datetime
import json

from pydantic import BaseModel, Field

class User(BaseModel):
    id: int
    name: str
    email_address: str = Field(
        alias="emailAddress", default=""
    )  # Field alias for mapping non-exact matches to variables
    age: int = 18  # Variables with default values are also optional
    marks: List[float] = []
    created_at: datetime = Field(default_factory=datetime.now)


# Instantiate object
user = User(id=1, name="Alice", emailAddress="alice@example.com")  # Use alias name
print(user)

# Model → dict
user_dict = user.model_dump()
# Model → JSON
user_json = user.model_dump_json()

# JSON → Model
json_data = '{"id": 2, "name": "John", "emailAddress": "john@example.com"}'
user = User.model_validate_json(json_data)