Skip to main content

Dict 2 Dataclass

A lightweight Python utility to seamlessly convert between dictionaries and dataclasses. This is useful when you want to access dictionary values as class attributes or serialize dataclasses back to dictionaries.

Features

  • 🚀 Easy Conversion: Convert dictionaries to dataclasses and vice versa.
  • 🔗 Nested Support: Handles nested dataclasses effortlessly.
  • 🧩 Intuitive API: Simple and clean syntax for integration.

Installation

pip install dict2dataclass

Usage

Note The FromDict and ToDict classes are compatible. You can use both in the same dataclass for full bidirectional conversion.

Convert Dictionary to Dataclass

from dict2dataclass import FromDict
from dataclasses import dataclass

@dataclass
class Address(FromDict):
    street: str
    city: str
    state: str

@dataclass
class Person(FromDict):
    name: str
    age: int
    address: Address

# Example dictionary
data = {
    "name": "John Doe",
    "age": 30,
    "address": {
        "street": "123 Main St",
        "city": "Springfield",
        "state": "IL"
    }
}

# Convert to dataclass
person = Person.from_dict(data)
print(person.name)      # Output: John Doe
print(person.address.city)  # Output: Springfield

Convert Dataclass to Dictionary

from dict2dataclass import ToDict
from dataclasses import dataclass

@dataclass
class Address(ToDict):
    street: str
    city: str
    state: str

@dataclass
class Person(ToDict):
    name: str
    age: int
    address: Address

# Create a dataclass instance
person = Person(
    name="John Doe",
    age=30,
    address=Address(
        street="123 Main St",
        city="Springfield",
        state="IL"
    )
)

# Convert to dictionary
data = person.to_dict()
print(data)
# Output: {'name': 'John Doe', 'age': 30, 'address': {'street': '123 Main St', 'city': 'Springfield', 'state': 'IL'}}

Combining FromDict and ToDict

For full bidirectional support, you can inherit from both FromDict and ToDict:

from dict2dataclass import FromDict, ToDict
from dataclasses import dataclass

@dataclass
class Address(FromDict, ToDict):
    street: str
    city: str
    state: str

@dataclass
class Person(FromDict, ToDict):
    name: str
    age: int
    address: Address

Metadata

Release files for dict2dataclass 0.4.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for dict2dataclass 0.4.0
File Size Uploaded
dict2dataclass-0.4.0.tar.gz 7.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for dict2dataclass 0.4.0
File Interpreter ABI Platform
dict2dataclass-0.4.0-py3-none-any.whl Python 3 none any Details

Total release size: 16.8 kB

Release files / dict2dataclass-0.4.0.tar.gz

Download URL dict2dataclass-0.4.0.tar.gz
Size 7.6 kB
Tags Source
SHA-256 checksum
How to use checksums
0f13cc288e3e57c50ae2b20dc9eeb6ba48ba3816b6561f9218dad10625abb855
BLAKE2b-256 checksum
How to use checksums
d6ce5470adc844af4f4d15afef6279f36648181f92311cbdc39219fcfc3e2f1a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.1.3 CPython/3.9.23 Linux/6.11.0-1015-azure

Release files / dict2dataclass-0.4.0-py3-none-any.whl

Download URL dict2dataclass-0.4.0-py3-none-any.whl
Size 9.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5c0f8c0640f52dd37620f1a523e805b6ddd90fe980a7d8ec8ff74842d0937cdc
BLAKE2b-256 checksum
How to use checksums
5c0208cbb15f81a878fd1c636b94f08d97cd60a4fa22cd9b1011b88877236610
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.1.3 CPython/3.9.23 Linux/6.11.0-1015-azure

Release history Release notifications | RSS feed

This release

0.4.0 This release

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page