Quick Start

This guide will help you get started with Serilux in just a few minutes.

Creating Your First Serializable Class

Let’s create a simple Person class that can be serialized:

from serilux import Serializable, register_serializable

@register_serializable
class Person(Serializable):
    def __init__(self):
        super().__init__()
        self.name = ""
        self.age = 0
        # Register fields to serialize
        self.add_serializable_fields(["name", "age"])

That’s it! Your class is now serializable.

Using Serializable Objects

Create and use objects:

# Create an object
person = Person()
person.name = "Alice"
person.age = 30

# Serialize to dictionary
data = person.serialize()
print(data)
# {'_type': 'Person', 'name': 'Alice', 'age': 30}

Deserializing

Deserialize from a dictionary:

# Deserialize from dictionary
new_person = Person()
new_person.deserialize(data)
print(new_person.name)  # "Alice"
print(new_person.age)    # 30

Nested Objects

Serilux automatically handles nested Serializable objects:

@register_serializable
class Address(Serializable):
    def __init__(self):
        super().__init__()
        self.street = ""
        self.city = ""
        self.add_serializable_fields(["street", "city"])

@register_serializable
class Person(Serializable):
    def __init__(self):
        super().__init__()
        self.name = ""
        self.address = None
        self.add_serializable_fields(["name", "address"])

# Create nested objects
person = Person()
person.name = "Alice"
person.address = Address()
person.address.street = "123 Main St"
person.address.city = "New York"

# Serialize - nested objects are automatically handled
data = person.serialize()

Lists and Dictionaries

Serilux also handles lists and dictionaries:

@register_serializable
class Team(Serializable):
    def __init__(self):
        super().__init__()
        self.name = ""
        self.members = []  # List of Person objects
        self.add_serializable_fields(["name", "members"])

team = Team()
team.name = "Engineering"
team.members = [person1, person2, person3]

# Serialize - list items are automatically serialized
data = team.serialize()

Callable Serialization

Serilux can also serialize callable objects (functions, methods, lambda expressions):

from serilux import serialize_callable, deserialize_callable

def process_data(data):
    return data.upper()

# Serialize a function
serialized = serialize_callable(process_data)

# Deserialize it
restored = deserialize_callable(serialized)
result = restored("hello")  # Returns "HELLO"

For more details on callable serialization, see the Callable Serialization guide.

Next Steps