Deeply allow you to make your dataclasses more functional
Project description
Using this package you can do a deep conversion of your dataclass to a dictionary and initialize it from dict.
Getting it
To download deeply, either fork this github repo or simply use PyPI via pip.
$ pip install deeply
Usage
1 - Import
from deeply import Deeply
from dataclasses import dataclass
2 - Define your data classes with the following inheritance:
@dataclass
class A(Deeply):
a1: int
a2: int
@dataclass
class B(Deeply):
b1: str
b2: str
@dataclass
class C(Deeply):
a: A
b: B
3 - Create an instance of the class and you can already use it:
c = C(A(1, 2), B('foo', 'bar'))
c.to_web()
# {'a': {'a1': 1, 'a2': 2}, 'b': {'b1': 'foo', 'b2': 'bar'}}
4 - You can also initialize your class from a dictionary:
c = C.init_from_dict({
'a': {
'a1': 1,
'a2': 2
},
'b': {
'b1': 'foo',
'b2': 'bar'
}
})
# C(a=A(a1=1, a2=2), b=B(b1='foo', b2='bar'))
5 - And finally: you can set your own conversion rules in deep dict.
Deeply.rules: List[Tuple[Callable[[T], bool], Callable[[T], Any]]] = [
(lambda obj: hasattr(obj, 'isoformat'), lambda obj: obj.isoformat()),
]
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
deeply-1.0.3.tar.gz
(2.4 kB
view details)
File details
Details for the file deeply-1.0.3.tar.gz
.
File metadata
- Download URL: deeply-1.0.3.tar.gz
- Upload date:
- Size: 2.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.12.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.8.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | aa77d3fe99db85a9d98f2183fd2d1d081390e6d3341b7a86f73626cc1f7605ec |
|
MD5 | 478941d5506ebfe65444b5a63f448b10 |
|
BLAKE2b-256 | ef02fed8a68a97b7887cf8cd468c29e5c3418799f2fbfff7e66a98fb9d6314d6 |