dataflow.registry.serialization¶

Serialization utilities for the Haive Registry System.

This module provides tools for serializing and deserializing complex Python objects for storage in the registry database. It handles the conversion of objects that aren’t natively JSON-serializable, such as classes, functions, and custom types.

The serialization system uses a registry of custom serializers and deserializers for specific types, allowing for extensible handling of different object types. This enables the storage and retrieval of complex objects while preserving their structure and relationships.

Classes:

SerializationRegistry: Registry for managing custom serializers and deserializers

Functions:

serialize_object: Convert a complex object to a JSON-serializable format deserialize_object: Restore an object from its serialized representation

Example

Basic serialization and deserialization:

>>> from haive.dataflow.registry.serialization import serialize_object, deserialize_object
>>>
>>> # Create a complex object
>>> class CustomObject:
...     def __init__(self, name, value):
...         self.name = name
...         self.value = value
>>>
>>> obj = CustomObject("test", 42)
>>>
>>> # Serialize it
>>> serialized = serialize_object(obj)
>>> print(f"Serialized: {serialized}")
>>>
>>> # Deserialize it
>>> restored = deserialize_object(serialized)
>>> print(f"Restored: {restored.name}, {restored.value}")

Example

Registering custom serializers:

>>> from haive.dataflow.registry.serialization import SerializationRegistry
>>>
>>> # Register serializer and deserializer for a custom type
>>> SerializationRegistry.register(
...     type_name="my_module.CustomType",
...     serializer=lambda obj: {"data": obj.to_dict()},
...     deserializer=lambda data: CustomType.from_dict(data["data"])
... )

Classes¶

SerializationRegistry

Registry for serializers and deserializers.

Functions¶

deserialize_object(data)

Deserialize an object from stored data.

serialize_object(obj)

Serialize an object to a format suitable for storage.

Module Contents¶

class dataflow.registry.serialization.SerializationRegistry¶

Registry for serializers and deserializers.

This registry allows the system to handle complex Python objects by registering custom serializers and deserializers for specific types. It maintains mappings from type names to serializer and deserializer functions, enabling consistent conversion of complex objects to and from serializable formats.

The registry is used by the serialize_object and deserialize_object functions to handle types that aren’t natively JSON-serializable.

_serializers¶

Mapping from type names to serializer functions

Type:

dict

_deserializers¶

Mapping from type names to deserializer functions

Type:

dict

Example

>>> from haive.dataflow.registry.serialization import SerializationRegistry
>>>
>>> # Define a custom type
>>> class CustomType:
...     def __init__(self, name, value):
...         self.name = name
...         self.value = value
...
...     def to_dict(self):
...         return {"name": self.name, "value": self.value}
...
...     @classmethod
...     def from_dict(cls, data):
...         return cls(data["name"], data["value"])
>>>
>>> # Register serializer and deserializer
>>> SerializationRegistry.register(
...     type_name="__main__.CustomType",
...     serializer=lambda obj: {"data": obj.to_dict()},
...     deserializer=lambda data: CustomType.from_dict(data["data"])
... )
classmethod can_serialize(obj)¶

Check if the object can be serialized with a registered serializer.

Parameters:

obj (Any) – Object to check

Returns:

True if a serializer is available, False otherwise

Return type:

bool

classmethod deserialize(data)¶

Deserialize an object using registered deserializers.

Parameters:

data (Any) – Serialized data

Returns:

Deserialized object

Return type:

Any

classmethod register(type_name, serializer, deserializer=None)¶

Register serializer and deserializer for a type.

Parameters:
classmethod serialize(obj)¶

Serialize an object using registered serializers.

Parameters:

obj (Any) – Object to serialize

Returns:

Serialized representation of the object

Return type:

Any

dataflow.registry.serialization.deserialize_object(data)¶

Deserialize an object from stored data.

Parameters:

data (dict[str, Any]) – Serialized representation

Returns:

Deserialized object

Return type:

Any

dataflow.registry.serialization.serialize_object(obj)¶

Serialize an object to a format suitable for storage.

Parameters:

obj (Any) – Object to serialize

Returns:

Serialized representation as a JSON-compatible dict

Return type:

dict[str, Any]