Serialize¶
Collection of serializers that transform Python data into a BSON-compatible form.
-
class
vivarium.core.serialize.DictDeserializer[source]¶ Bases:
vivarium.core.registry.SerializerIterates through dictionaries and applies deserializers.
-
class
vivarium.core.serialize.FunctionSerializer[source]¶ Bases:
vivarium.core.registry.SerializerSerializer for function objects.
-
serialize(data: collections.abc.Callable) → str[source]¶
-
-
class
vivarium.core.serialize.NumpyFallbackSerializer[source]¶ Bases:
vivarium.core.registry.SerializerOrjson does not handle Numpy arrays with strings
-
class
vivarium.core.serialize.ProcessSerializer[source]¶ Bases:
vivarium.core.registry.SerializerSerializer for processes if
emit_processis enabled.-
serialize(data: vivarium.core.process.Process) → str[source]¶
-
-
class
vivarium.core.serialize.QuantitySerializer[source]¶ Bases:
vivarium.core.registry.SerializerSerializes data with units into strings of the form
!units[...], where...is the result of callingstr(data). Deserializes strings of this form back into data with units.
-
class
vivarium.core.serialize.SequenceDeserializer[source]¶ Bases:
vivarium.core.registry.SerializerIterates through lists and applies deserializers.
-
class
vivarium.core.serialize.SetSerializer[source]¶ Bases:
vivarium.core.registry.SerializerSerializer for set objects.
-
class
vivarium.core.serialize.UnitsSerializer[source]¶ Bases:
vivarium.core.registry.SerializerSerializes data with units into strings of the form
!units[...], where...is the result of callingstr(data). Deserializes strings of this form back into data with units.-
deserialize(data: str, unit: Optional[pint.unit.Unit] = None) → pint.quantity.Quantity[source]¶ Deserialize data with units from a human-readable string.
- Parameters
data – The data to deserialize. Providing a list here is deprecated. You should use
deserialize_valueinstead, which uses a separate list deserializer.unit – The units to convert
datato after deserializing. If omitted, no conversion occurs. This option is deprecated.
- Returns
A single deserialized object or, if
datais a list, a list of deserialized objects.
-
-
vivarium.core.serialize.deserialize_value(value: Any) → Any[source]¶ Find and apply the correct serializer for a value by calling each registered serializer’s
vivarium.core.registry.Serializer.can_deserialize()method. Returns the value as is if no compatible serializer is found.- Parameters
value (Any) – Data to be deserialized
- Raises
ValueError – Only one serializer should apply for any given value
- Returns
Deserialized data
- Return type
Any
-
vivarium.core.serialize.find_numpy_and_non_strings(d: dict, curr_path: tuple = (), saved_paths: Optional[List[tuple]] = None) → List[tuple][source]¶ Return list of paths which terminate in a non-string or Numpy string dictionary key. Orjson does not handle these types of keys by default.
-
vivarium.core.serialize.make_fallback_serializer_function() → collections.abc.Callable[source]¶ Creates a fallback function that is called by orjson on data of types that are not natively supported. Define and register instances of
vivarium.core.registry.Serializer()with serialization routines for the types in question.
-
vivarium.core.serialize.serialize_value(value: Any, default: Optional[collections.abc.Callable] = None) → Any[source]¶ Apply orjson-based serialization routine on
value.- Parameters
value (Any) – Data to be serialized. All keys must be strings. Notably, Numpy strings (
np.str_) are not acceptable keys.default (Callable) – A function that is called on any data of a type that is not natively supported by orjson. Returns an object that can be handled by default up to 254 times before an exception is raised.
- Returns
Serialized data
- Return type
Any