SerializationFormat Enum

Overview

The SerializationFormat enum defines available serialization formats for data interchange and storage.

Package: keychain.constants

from keychain.constants import SerializationFormat

Class Definition

class SerializationFormat(IntEnum):
    """String serialization format."""

Values

XML

Value: 1

XML format (deprecated as of 3.0 and will be removed as an option in 3.1).

PROTOBUF

Value: 2

Protocol Buffers format (default and recommended).

JSON

Value: 3

JSON format (coming soon).

Usage Example

from keychain.constants import SerializationFormat, DEFAULT_SERIALIZATION_FORMAT

# Use default format (Protocol Buffers)
default_format = DEFAULT_SERIALIZATION_FORMAT
print(f"Default format: {default_format.name}")

# Serialize data in different formats
data = some_serializable_object

# Protocol Buffers (recommended)
protobuf_data = data.serialize(SerializationFormat.PROTOBUF)

# XML (deprecated, for legacy compatibility only)
if need_legacy_support:
    xml_data = data.serialize(SerializationFormat.XML)

# Check format capabilities
def is_deprecated_format(fmt: SerializationFormat) -> bool:
    return fmt == SerializationFormat.XML

def get_recommended_format() -> SerializationFormat:
    return SerializationFormat.PROTOBUF

Migration Notes

From XML to Protocol Buffers

XML format is deprecated and should be migrated to Protocol Buffers:

# Legacy XML serialization (deprecated)
# xml_data = object.serialize(SerializationFormat.XML)

# Modern Protocol Buffers serialization (recommended)
protobuf_data = object.serialize(SerializationFormat.PROTOBUF)

# For reading legacy XML data
if is_xml_format(legacy_data):
    object = MyClass.deserialize(legacy_data, SerializationFormat.XML)
    # Re-serialize in modern format
    modern_data = object.serialize(SerializationFormat.PROTOBUF)

See Also