Serialize and deserialize using type hints
Project description
serializepy: typed deserialization
File issues here: Issues tracker
Motivation
serializepy inspects the type-hints of self-assignments in class-constructors, and constructs the type from a given dictionary. The goal is to support this work recursively for large and complex (typed) hierarchies.
Installation
Install serializepy with pip:
$ python3 -m pip install serializepy
Usage
# Example class hierarchy
class B():
def __init__(self, b: int) -> None:
self.b: int = b
class A():
def __init__(self, a: int, b: B) -> None:
self.a: int = a
self.b: B = b
# Data that we want to fit the above hierarchy, possibly from json.load(..)
d = {
'a': 1,
'b': {
'b': 2
}
}
# Deserialization and assertion
obj: A = deserialize(A, d)
assert isinstance(obj, A)
assert obj.a == 1
assert isinstance(obj.b, B)
assert obj.b.b == 2
Inheritance:
class A():
def __init__(self, a: int) -> None:
self.a: int = a
class B(A):
def __init__(self, a: int, b: int) -> None:
super().__init__(a)
self.b: int = b
d = {
'a': 5,
'b': 7
}
obj: B = deserialize(B, d)
assert isinstance(obj, B)
assert obj.a == 5
assert obj.b == 7
License
serializepy is licensed under the terms of the MIT License (see the LICENSE file).
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
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 serializepy-0.0.2.tar.gz.
File metadata
- Download URL: serializepy-0.0.2.tar.gz
- Upload date:
- Size: 6.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/4.4.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.0 CPython/3.6.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8ed3566a10ee7a2bfb08e25630f62be27175d99acdf2123d7893fdff664ae48a
|
|
| MD5 |
c5494533758f478da30e2e521fb806c5
|
|
| BLAKE2b-256 |
770ac27de5cbd5600a484a0e2091d00d23ca225e7ec313e9f4e7e9d871f8f169
|
File details
Details for the file serializepy-0.0.2-py3-none-any.whl.
File metadata
- Download URL: serializepy-0.0.2-py3-none-any.whl
- Upload date:
- Size: 9.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/4.4.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.0 CPython/3.6.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5ac69dfb329ab63128f4b290aebeaaa3b9ffe225162c86aa7512f1f981216bd9
|
|
| MD5 |
ab456852998d0719fd15a56d5e800558
|
|
| BLAKE2b-256 |
f8535beb5ce130aa81b6e1e78739a42c816d0df3726cd177ed4e24b4666dcc0f
|