Dataclass Wizard

0.39.1 · active · verified Thu Apr 09

Dataclass Wizard is a fast, lightweight, and pure Python serialization library for extending native Python dataclasses. It provides elegant tools for marshalling dataclass instances to and from JSON, Python dictionary objects, and environment variables, along with support for field properties with default values. The library is actively maintained, with frequent updates and a recently introduced opt-in v1 engine offering enhanced features and improved performance.

Warnings

Install

Imports

Quickstart

This quickstart demonstrates basic JSON serialization and deserialization using the `DataclassWizard` mixin, as well as loading configuration from environment variables using `EnvWizard`.

import os
from dataclasses import dataclass
from dataclass_wizard import DataclassWizard, EnvWizard

# --- JSON Serialization/Deserialization ---
@dataclass
class User(DataclassWizard):
    id: int
    name: str
    email: str

json_data = '{"id": 1, "name": "Ritvik", "email": "test@example.com"}'
user = User.from_json(json_data)
print(f"Deserialized User: {user!r}")
# Expected: User(id=1, name='Ritvik', email='test@example.com')

user_dict = user.to_dict()
print(f"User to dict: {user_dict}")
# Expected: {'id': 1, 'name': 'Ritvik', 'email': 'test@example.com'}

# --- Environment Variable Loading ---
os.environ['APP_NAME'] = 'MyEnvApp'
os.environ['DEBUG_MODE'] = 'true'

@dataclass
class AppConfig(EnvWizard):
    app_name: str
    debug_mode: bool

config = AppConfig.from_env()
print(f"App Config: {config!r}")
# Expected: AppConfig(app_name='MyEnvApp', debug_mode=True)

view raw JSON →