Serialization¶
Workflow has several methods for storing persistent data to your workflow’s data and cache directories. By default these are stored as Python pickle objects using CPickleSerializer (with the file extension .cpickle).
You may, however, want to serialize your data in a different format, e.g. JSON, to make it user-readable/-editable or to interface with other software, and the SerializerManager and data storage/caching APIs enable you to do this.
For more information on how to change the default serializers, specify alternative ones and register new ones, see Persistent data and Serialization of stored/cached data in the User Manual.
API¶
- class workflow.workflow.SerializerManager¶
Contains registered serializers.
New in version 1.8.
A configured instance of this class is available at workflow.manager.
Use register() to register new (or replace existing) serializers, which you can specify by name when calling Workflow data storage methods.
See Serialization of stored/cached data and Persistent data for further information.
- register(name, serializer)¶
Register serializer object under name.
Raises AttributeError if serializer in invalid.
Note
name will be used as the file extension of the saved files.
Parameters: - name (unicode or str) – Name to register serializer under
- serializer – object with load() and dump() methods
- serializer(name)¶
Return serializer object for name or None if no such serializer is registered
Parameters: name (unicode or str) – Name of serializer to return Returns: serializer object or None
- serializers¶
Return names of registered serializers
- unregister(name)¶
Remove registered serializer with name
Raises a ValueError if there is no such registered serializer.
Parameters: name (unicode or str) – Name of serializer to remove Returns: serializer object
- class workflow.workflow.JSONSerializer¶
Wrapper around json. Sets indent and encoding.
New in version 1.8.
Use this serializer if you need readable data files. JSON doesn’t support Python objects as well as cPickle/pickle, so be careful which data you try to serialize as JSON.
- classmethod dump(obj, file_obj)¶
Serialize object obj to open JSON file.
New in version 1.8.
Parameters: - obj (JSON-serializable data structure) – Python object to serialize
- file_obj (file object) – file handle
- classmethod load(file_obj)¶
Load serialized object from open JSON file.
New in version 1.8.
Parameters: file_obj (file object) – file handle Returns: object loaded from JSON file Return type: object
- class workflow.workflow.CPickleSerializer¶
Wrapper around cPickle. Sets protocol.
New in version 1.8.
This is the default serializer and the best combination of speed and flexibility.
- classmethod dump(obj, file_obj)¶
Serialize object obj to open pickle file.
New in version 1.8.
Parameters: - obj (Python object) – Python object to serialize
- file_obj (file object) – file handle
- classmethod load(file_obj)¶
Load serialized object from open pickle file.
New in version 1.8.
Parameters: file_obj (file object) – file handle Returns: object loaded from pickle file Return type: object
- class workflow.workflow.PickleSerializer¶
Wrapper around pickle. Sets protocol.
New in version 1.8.
Use this serializer if you need to add custom pickling.
- classmethod dump(obj, file_obj)¶
Serialize object obj to open pickle file.
New in version 1.8.
Parameters: - obj (Python object) – Python object to serialize
- file_obj (file object) – file handle
- classmethod load(file_obj)¶
Load serialized object from open pickle file.
New in version 1.8.
Parameters: file_obj (file object) – file handle Returns: object loaded from pickle file Return type: object