Convert between Dataclasses and dict/json
Project description
Dataclass Dict Convert
This library converts between python dataclasses and dicts (and json).
It was created because when using the dataclasses-json library for my use case, I ran into limitations and performance issues. (There's also typed-json-dataclass but I haven't evaluated that library.)
dataclass-dict-convert
supports lists, optionals, dicts, enums, nested dataclasses, etc.
It handles dates using RFC3339 (and enforces timezones and timezone aware datetime
).
Example:
from dataclasses import dataclass
from stringcase import camelcase
from typing import Optional, List
from dataclass_dict_convert import dataclass_dict_convert
@dataclass_dict_convert(dict_letter_case=camelcase)
@dataclass(frozen=True)
class TestB:
an_int: int
a_str: str
a_float: float
a_bool: bool
@dataclass_dict_convert(dict_letter_case=camelcase)
@dataclass(frozen=True)
class Test:
nestedClass: TestB
nestedInOpt: Optional[TestB]
nestedInList: List[TestB]
the_instanceB1 = TestB(1, 'foo', 0.1, True)
the_instanceB2 = TestB(2, 'bar', 0.2, False)
the_instanceB3 = TestB(3, 'baz', 0.3, True)
the_instanceB4 = TestB(4, 'huh', 0.4, False)
the_instance = Test(the_instanceB1, the_instanceB2, [the_instanceB3, the_instanceB4])
the_dict = {
'nestedClass': {'anInt': 1, 'aStr': 'foo', 'aFloat': 0.1, 'aBool': True, },
'nestedInOpt': {'anInt': 2, 'aStr': 'bar', 'aFloat': 0.2, 'aBool': False, },
'nestedInList': [
{'anInt': 3, 'aStr': 'baz', 'aFloat': 0.3, 'aBool': True, },
{'anInt': 4, 'aStr': 'huh', 'aFloat': 0.4, 'aBool': False, },
],
}
expected = the_dict
actual = the_instance.to_dict()
assert actual == expected
expected = the_instance
actual = Test.from_dict(the_dict)
assert actual == expected
The library also includes:
- RFC3339 tools (the default format for converting datetime to string),
- dataclass type checking tools
- dataclass copy method generator
- dataclass multiline repr (replace auto generated repr for dataclasses by a multiline version)
Links:
Project details
Release history Release notifications | RSS feed
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
Close
Hashes for dataclass-dict-convert-1.3.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | fe58f9624ea0a378b79a89a8838076433fac601772f7aca9b452d18b8f379fd3 |
|
MD5 | 9bcc37add4f0a82013c047eeb9f94a4d |
|
BLAKE2b-256 | 425385031d3e48f92836cdfb4a48e98430ae4039abc9c348e5d63b0f76754457 |
Close
Hashes for dataclass_dict_convert-1.3.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a50040f32caecb5d7971d2fc69983804cb3267b493504e7f20666f0895ff1241 |
|
MD5 | 351ae43c00a13bcc289e8bd7bb8b08a4 |
|
BLAKE2b-256 | 7d85f79467a10faeed1d6460e62c096ced08fd467b20a4e43861437dad92a6f1 |