anystore.serialize
Usually, these functions are not called directly by a program but by the higher
level Store.get or Store.put methods.
The store backends assume bytes to be written to and read from. The two main
functions, to_store and from_store (de)serialize given values based on
configuration. See higher level anystore.store.BaseStore for how to use
these serialization options in the stores get, put and stream methods.
Serialization options:
serialization_mode:
- "raw": Return value as is, assuming bytes
- "json": Use
orjsonto (de)serialize - "pickle": Use
cloudpickleto (de)serialize - "auto": Try different serialization methods, see below
serialization_func:
A callable that serializes the input to bytes
deserialization_func:
A callable that deserializes the bytes input to any data
model
A pydantic model class used for (de)serialization
from_store(value, serialization_mode='auto', deserialization_func=None, model=None)
Deserialize the bytes value retrieved from a store backend to any data.
In "auto" mode, this tries to deserialize value in the following ways:
- Try to load a data object via
orjsonfrom the input - Try to deserialize via
cloudpickle - Try to decode the value to
str(use mode="raw" to make sure to getbytesvalues) - Return the unserialized bytes value
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
serialization_mode
|
Mode | None
|
"auto", "pickle", "json", "raw" |
'auto'
|
deserialization_func
|
Callable | None
|
Function to use to deserialize, takes bytes as input |
None
|
model
|
Model | None
|
Pydantic model to use for serialization from a json bytes string |
None
|
Returns:
| Type | Description |
|---|---|
Any
|
The deserialized object |
Source code in anystore/serialize.py
to_store(value, serialization_mode='auto', serialization_func=None, model=None)
Serialize the given value to bytes.
In "auto" mode, this tries to serialize value in the following ways:
- If
valueisbytes, just store it - If
valueisstr, encode tobytes - If
valueis an instance of a pydanticBaseModel, it is dumped to it's json byte string - If it is possible to serialize
valueto json, it is stored as that byte string - Try to cloudpickle or raise an error
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
serialization_mode
|
Mode | None
|
"auto", "pickle", "json", "raw" |
'auto'
|
serialization_func
|
Callable | None
|
Function to use to serialize |
None
|
model
|
Model | None
|
Pydantic model to use for serialization |
None
|