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¶
Registry for serializers and deserializers. |
Functions¶
|
Deserialize an object from stored data. |
|
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.
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:
- 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:
type_name (str) – Fully qualified type name
serializer (collections.abc.Callable) – Function to serialize objects of this type
deserializer (collections.abc.Callable | None) – Function to deserialize objects of this type
- 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.