ds_common_serde_py_lib.serializable

File: serializable.py Region: ds_common_serde_py_lib

Description

Defines the public Serializable mixin for dataclasses, providing serialize() and deserialize().

Example

from dataclasses import dataclass
from dataclasses import field

from ds_common_serde_py_lib import Serializable

@dataclass
class Child(Serializable):
    count: int


payload = Child(count=1).serialize()
obj = Child.deserialize(payload)
assert obj == Child(count=1)

Field omission

You can omit specific dataclass fields from serialization by setting field metadata:

@dataclass
class Example(Serializable):
    a: int
    secret: str = field(metadata={"serialize": False})

assert Example(a=1, secret="shh").serialize() == {"a": 1}

Attributes

T

logger

Classes

Serializable

Mixin providing serialize/deserialize for dataclasses.

Module Contents

ds_common_serde_py_lib.serializable.T
ds_common_serde_py_lib.serializable.logger
class ds_common_serde_py_lib.serializable.Serializable[source]

Mixin providing serialize/deserialize for dataclasses.

__deserializers__: ClassVar[dict[str, Any]]
serialize() dict[str, Any][source]

Return a JSON-serializable representation of the dataclass.

Returns:

A dictionary representing the serialized data.

Raises:

SerializationError – If serialization fails or does not produce a mapping.

classmethod deserialize(data: collections.abc.Mapping[str, Any]) T[source]

Create an instance from a mapping.

Parameters:

data – A dictionary representing the serialized data.

Returns:

An instance of the dataclass.

Raises:

DeserializationError – If data cannot be converted into an instance.