register_deserialization#

pymc_marketing.deserialize.register_deserialization(is_type, deserialize)[source]#

Register an arbitrary deserialization.

Use the deserialize() function to then deserialize data using all registered deserialize functions.

Classes from PyMC-Marketing have their deserialization mappings registered automatically. However, custom classes will need to be registered manually using this function before they can be deserialized.

Parameters:
is_typeCallable[[Any], bool]

Function to determine if the data is of the correct type.

deserializeCallable[[dict], Any]

Function to deserialize the data of that type.

Examples

Register a custom class deserialization:

from pymc_marketing.deserialize import register_deserialization

class MyClass:
    def __init__(self, value: int):
        self.value = value

    def to_dict(self) -> dict:
        # Example of what the to_dict method might look like.
        return {"value": self.value}

register_deserialization(
    is_type=lambda data: data.keys() == {"value"} and isinstance(data["value"], int),
    deserialize=lambda data: MyClass(value=data["value"]),
)

Use that custom class deserialization:

from pymc_marketing.deserialize import deserialize

data = {"value": 42}
obj = deserialize(data)
assert isinstance(obj, MyClass)