This module aids in serializing and deserializing objects.
The implicit method is especially useful if you don’t know in advance which subclass of a base class your serialization might point to. e.g. if you require some type of Quadrilateral, a serialization from your collaborator might point to a Square, Rhombus, or Rectangle, and you might not know which one in advance...
The FW serialization is compatible with pymatgen’s MSONable interface when the serialize_fw decorator is used on the to_dict() methods.
To create a serializable object within FireWorks, you should subclass this class and implement the to_dict() and from_dict() methods.
See documentation of load_object() for more details.
The use of @classmethod for from_dict allows you to define a superclass that implements the to_dict() and from_dict() for all its subclasses.
For an example of serialization, see the class QueueAdapterBase.
Load a serialization of this object from a file :param filename: filename to read :param f_format: serialization format, default checks the filename extension
convert from a String representation to its Object :param f_str: the String representation :param f_format: serialization format of the String (default json)
Write a serialization of this object to a file :param filename: filename to write to :param f_format: serialization format, default checks the filename extension
returns a String representation in the given format :param f_format: the format to output to (default json)
Creates an instantiation of a class based on a dictionary representation. We implicitly determine the Class through introspection along with information in the dictionary.
We search for a class with the _fw_name property equal to obj_dict[‘_fw_name’] If the @module key is set, that module is checked first for a matching class to improve speed of lookup. Afterwards, the modules in the USER_PACKAGES global parameter are checked.
Refactoring class names, module names, etc. will not break object loading as long as:
You can get around these limitations if you really want: i) If you want to change the fw_name of an object you can set the FW_NAME_UPDATES key ii) If you want to put a refactored module in a new place add an entry to USER_PACKAGES
Parameters: | obj_dict – the dict representation of the class |
---|
implicitly load an object from a file. just a friendly wrapper to load_object()
Parameters: |
|
---|
a decorator to add FW serializations keys see documentation of FWSerializable for more details
Convenience method to return a logger.
Parameters: |
|
---|
A shortcut wrapper around log_fancy for exceptions :param m_logger: The logger object :param msgs: An iterable of Strings, will be joined by newlines
A wrapper around the logger messages useful for multi-line logs. Just helps to group log messages by adding a fancy border around it, which hopefully enhances readability of log lines meant to be read together as a unit.
Parameters: |
|
---|