django_evolution.serialization
Serialization and deserialization.
These classes are responsible for converting objects/values to signature data or to Python code (for evolution hints), and for converting signature data back to objects.
The classes in this file are considered private API. The only public API is:
deserialize_from_python()
Added in version 2.2.
Functions
|
Deserialize a value from the signature. |
|
Serialize a value to a Python code string. |
|
Serialize a value to the signature. |
Classes
Base class for iterable types. |
|
Base class for serialization. |
|
Base class for serialization for classes. |
|
Base class for serialization for CombinedExpression objects. |
|
Base class for serialization for objects supporting deconstruction. |
|
Base class for serialization for dictionaries. |
|
Serialization for enums. |
|
Base class for serialization for lists. |
|
Base class for serialization for a placeholder object. |
|
Base class for serialization for Python primitives. |
|
Base class for serialization for Q objects. |
|
Base class for serialization for sets. |
|
Base class for serialization for strings. |
|
Base class for serialization for tuples. |
- class django_evolution.serialization.BaseSerialization
Bases:
objectBase class for serialization.
Subclasses should override the methods within this class to provide serialization and deserialization logic specific to one or more types.
Added in version 2.2.
- classmethod serialize_to_signature(value)
Serialize a value to JSON-compatible signature data.
- classmethod serialize_to_python(value)
Serialize a value to a Python code string.
- classmethod deserialize_from_signature(payload)
Deserialize signature data to a value.
- classmethod deserialize_from_deconstructed(type_cls, args, kwargs)
Deserialize an object from deconstructed object information.
- class django_evolution.serialization.BaseIterableSerialization
Bases:
BaseSerializationBase class for iterable types.
This will handle the signature-related serialization/deserialization automatically, based on
iterable_type.Added in version 2.2.
- classmethod serialize_to_signature(value)
Serialize a value to JSON-compatible signature data.
- classmethod deserialize_from_signature(payload)
Deserialize signature data to a value.
- __annotations__ = {}
- class django_evolution.serialization.PrimitiveSerialization
Bases:
BaseSerializationBase class for serialization for Python primitives.
This will wrap simple values, deep-copying them when storing as signature data, returning a
repr()result when converting to Python code, and using the value as-is when deserializing.Added in version 2.2.
- classmethod serialize_to_signature(value)
Serialize a value to JSON-compatible signature data.
- classmethod serialize_to_python(value)
Serialize a value to a Python code string.
- classmethod deserialize_from_signature(payload)
Deserialize signature data to a value.
This will just return the value as-is.
- __annotations__ = {}
- class django_evolution.serialization.ClassSerialization
Bases:
BaseSerializationBase class for serialization for classes.
This is able to serialize a class name to Python. It cannot be used for signature data.
Added in version 2.2.
- classmethod serialize_to_python(value)
Serialize a value to a Python code string.
- __annotations__ = {}
- class django_evolution.serialization.DictSerialization
Bases:
BaseSerializationBase class for serialization for dictionaries.
This will be used for plain
dictinstances and forcollections.OrderedDict.Added in version 2.2.
- classmethod serialize_to_signature(value)
Serialize a dictionary to JSON-compatible signature data.
- classmethod serialize_to_python(value)
Serialize a dictionary to a Python code string.
- classmethod deserialize_from_signature(payload)
Deserialize dictionary signature data to a value.
- __annotations__ = {}
- class django_evolution.serialization.EnumSerialization
Bases:
BaseSerializationSerialization for enums.
Added in version 2.2.
- classmethod serialize_to_signature(value)
Serialize a value to JSON-compatible signature data.
- classmethod serialize_to_python(value)
Serialize an enum value to a Python code string.
- classmethod deserialize_from_signature(payload)
Deserialize signature data to a value.
This will just return the value as-is.
- __annotations__ = {}
- class django_evolution.serialization.ListSerialization
Bases:
BaseIterableSerializationBase class for serialization for lists.
Added in version 2.2.
- classmethod serialize_to_python(value)
Serialize a list to a Python code string.
- __annotations__ = {}
- class django_evolution.serialization.TupleSerialization
Bases:
BaseIterableSerializationBase class for serialization for tuples.
Added in version 2.2.
- classmethod serialize_to_python(value)
Serialize a tuple to a Python code string.
- __annotations__ = {}
- class django_evolution.serialization.SetSerialization
Bases:
BaseIterableSerializationBase class for serialization for sets.
Added in version 2.2.
- classmethod serialize_to_python(value)
Serialize a set to a Python code string.
- __annotations__ = {}
- class django_evolution.serialization.StringSerialization
Bases:
PrimitiveSerializationBase class for serialization for strings.
This will encode to a string, and ensure the results are consistent across Python 2 and 3.
Added in version 2.2.
- classmethod serialize_to_signature(value)
Serialize a string to JSON-compatible string.
- classmethod serialize_to_python(value)
Serialize a string to a Python code string.
- __annotations__ = {}
- class django_evolution.serialization.DeconstructedSerialization
Bases:
BaseSerializationBase class for serialization for objects supporting deconstruction.
This is used for Django objects that support a
deconstruct()method. It will convert to/from deconstructed signature data, and provide a suitable representation in Python.Added in version 2.2.
- classmethod serialize_to_signature(value)
Serialize a value to JSON-compatible signature data.
This will deconstruct the object and return a dictionary containing the deconstructed information and a flag noting that it must be reconstructed.
- classmethod serialize_to_python(value)
Serialize an object to a Python code string.
This will generate code that constructs an instance of the object.
- classmethod deserialize_from_signature(payload)
Deserialize deconstructed dictionary signature data to an object.
This will attempt to re-construct an object from the deconstructed signature data. This may fail if there is any issue looking up or instantiating the object.
- Parameters:
payload (
dict) – The payload to deserialize.- Returns:
The resulting value.
- Return type:
- Raises:
Exception – An unexpected error occurred when instantiating the object.
ImportError – The class specified in the signature data could not be imported.
- __annotations__ = {}
- class django_evolution.serialization.PlaceholderSerialization
Bases:
BaseSerializationBase class for serialization for a placeholder object.
Added in version 2.2.
- classmethod serialize_to_python(value)
Serialize a placeholder object to a Python code string.
- Parameters:
value (
django_evolution.placeholders.BasePlaceholder) – The object to serialize.- Returns:
The resulting Python code.
- Return type:
- __annotations__ = {}
- class django_evolution.serialization.CombinedExpressionSerialization
Bases:
DeconstructedSerializationBase class for serialization for CombinedExpression objects.
This ensures a consistent representation of
django.db.models.CombinedExpressionobjects across all supported versions of Django.Note that while this can technically be used in version of Django prior to 2.0, many of the objects nested within won’t be supported. In practice, database features really start to make use of this in a way that impacts serialization code in Django 2.0 and higher.
Added in version 2.2.
- classmethod serialize_to_python(value)
Serialize a CombinedExpression object to a Python code string.
- __annotations__ = {}
- class django_evolution.serialization.QSerialization
Bases:
DeconstructedSerializationBase class for serialization for Q objects.
This ensures a consistent representation of
django.db.models.Qobjects across all supported versions of Django.Django 1.7 through 3.1 encode the data in a different form than 3.2+. This ensures serialized data in a form closer to 3.2+’s version, while providing compatibility with older versions.
Added in version 2.2.
- child_separators = {'AND': ' & ', 'OR': ' | '}
- classmethod serialize_to_signature(q)
Serialize a Q object to JSON-compatible signature data.
- classmethod serialize_to_python(value)
Serialize a Q object to a Python code string.
This will generate code that constructs an instance of the object, handling negation, AND/OR connections, and children.
- classmethod deserialize_from_deconstructed(type_cls, args, kwargs)
Deserialize an object from deconstructed object information.
- __annotations__ = {}
- django_evolution.serialization.serialize_to_signature(value)
Serialize a value to the signature.
Added in version 2.2.
- django_evolution.serialization.serialize_to_python(value)
Serialize a value to a Python code string.
Added in version 2.2.
- django_evolution.serialization.deserialize_from_signature(payload)
Deserialize a value from the signature.
Added in version 2.2.