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.)
Since creating this library, I've discovered Pydentic, which is a much more professional library, that in 99% of cases will be much more suitable than this library.
So I strongly recommend using Pydentic. If you use dataclass-dict-convert, beware that it is poorly maintained, not very well documented, may contain some bugs, and has some strange edge cases where it doesn't work.
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:
Metadata
Release files for dataclass-dict-convert 1.7.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| dataclass-dict-convert-1.7.1.tar.gz | 15.0 kB | Without provenance | Details for dataclass-dict-convert-1.7.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| dataclass_dict_convert-1.7.1-py3-none-any.whl | Python 3 | none | any | Details for dataclass_dict_convert-1.7.1-py3-none-any.whl |
Total release size: 30.5 kB
Release files / dataclass-dict-convert-1.7.1.tar.gz
| Download URL | dataclass-dict-convert-1.7.1.tar.gz |
|---|---|
| Size | 15.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7b9a3846e5fe39565437d23fdb1c3c147476c75295188980bff53b6d1e9e6d47
|
|
BLAKE2b-256 checksum How to use checksums |
5df05e9c066557c40813be27106aaa51cc72050cc61dde168b9b4a4525eb82cd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.27.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.10.6
|
Release files / dataclass_dict_convert-1.7.1-py3-none-any.whl
| Download URL | dataclass_dict_convert-1.7.1-py3-none-any.whl |
|---|---|
| Size | 15.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d4c59884722e4bb6031c7c2c3d85bb4f656d46c90929a68ed44c700f2f6eb435
|
|
BLAKE2b-256 checksum How to use checksums |
8e837a741919cf7e99d53a9c8b1146c823a6ce0b884e01acd7603e10382ea9b1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.27.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.10.6
|
Security for dataclass-dict-convert 1.7.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.