Skip to main content

Serialize and deserialize using type hints

Project description

serializepy: typed deserialization

example workflow PyPI version serializepy

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

serializepy-0.0.2.tar.gz (6.1 kB view details)

Uploaded Source

Built Distribution

serializepy-0.0.2-py3-none-any.whl (9.4 kB view details)

Uploaded Python 3

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

Hashes for serializepy-0.0.2.tar.gz
Algorithm Hash digest
SHA256 8ed3566a10ee7a2bfb08e25630f62be27175d99acdf2123d7893fdff664ae48a
MD5 c5494533758f478da30e2e521fb806c5
BLAKE2b-256 770ac27de5cbd5600a484a0e2091d00d23ca225e7ec313e9f4e7e9d871f8f169

See more details on using hashes here.

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

Hashes for serializepy-0.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 5ac69dfb329ab63128f4b290aebeaaa3b9ffe225162c86aa7512f1f981216bd9
MD5 ab456852998d0719fd15a56d5e800558
BLAKE2b-256 f8535beb5ce130aa81b6e1e78739a42c816d0df3726cd177ed4e24b4666dcc0f

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page