Convert dicts into dataclasses. Supports lists, dicts and unions.
Project description
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
FromDictandToDictclasses 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
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file dict2dataclass-0.4.0.tar.gz.
File metadata
- Download URL: dict2dataclass-0.4.0.tar.gz
- Upload date:
- Size: 7.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.3 CPython/3.9.23 Linux/6.11.0-1015-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0f13cc288e3e57c50ae2b20dc9eeb6ba48ba3816b6561f9218dad10625abb855
|
|
| MD5 |
dbf4a20f7338669aa7fbc6adff0d3b43
|
|
| BLAKE2b-256 |
d6ce5470adc844af4f4d15afef6279f36648181f92311cbdc39219fcfc3e2f1a
|
File details
Details for the file dict2dataclass-0.4.0-py3-none-any.whl.
File metadata
- Download URL: dict2dataclass-0.4.0-py3-none-any.whl
- Upload date:
- Size: 9.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.3 CPython/3.9.23 Linux/6.11.0-1015-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5c0f8c0640f52dd37620f1a523e805b6ddd90fe980a7d8ec8ff74842d0937cdc
|
|
| MD5 |
52e81fcdc8fdc85b25513640251c76d7
|
|
| BLAKE2b-256 |
5c0208cbb15f81a878fd1c636b94f08d97cd60a4fa22cd9b1011b88877236610
|