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 hashes)

Uploaded Source

Built Distribution

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

Uploaded Python 3

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