# State Savers

Different methods to save the state, this allows for more modularity than just having a big switch statement in the main code. Note that these classes are not subclasses of a more generic class, as this allows these classes to save data in a completely different manner from each other. Furthermore, it avoids (slow) inheritance.

class pypdevs.statesavers.AssignState(time_last, time_next, state, activity, my_input, elapsed)

  Class to save the state using a simple assignment, is unsafe for most situations…

  __init__(time_last, time_next, state, activity, my_input, elapsed)

    Constructor

    Parameters

      - time_last – time_last to save

      - time_next – time_next to save

      - state – state to save

      - activity – the activity of the computation

      - my_input – the state input to save for memorisation

      - elapsed – the time elapsed

  __weakref__

    list of weak references to the object (if defined)

  loadState()

    Load the state from the class, this will make a copy

    Returns

      state - copy of the state that was saved

class pypdevs.statesavers.CopyState(time_last, time_next, state, activity, my_input, elapsed)

  Class to save the state using the Python ‘copy’ library

  __init__(time_last, time_next, state, activity, my_input, elapsed)

    Constructor

    Parameters

      - time_last – time_last to save

      - time_next – time_next to save

      - state – state to save

      - activity – the activity of the computation

      - my_input – the state input to save for memorisation

      - elapsed – the time elapsed

  __weakref__

    list of weak references to the object (if defined)

  loadState()

    Load the state from the class, this will make a copy

    Returns

      state - copy of the state that was saved

class pypdevs.statesavers.CustomState(time_last, time_next, state, activity, my_input, elapsed)

  Class to save the state using a manually defined copy() function of the state. If no such method is provided, an error is raised.

  __init__(time_last, time_next, state, activity, my_input, elapsed)

    Constructor

    Parameters

      - time_last – time_last to save

      - time_next – time_next to save

      - state – state to save

      - activity – the activity of the computation

      - my_input – the state input to save for memorisation

      - elapsed – the time elapsed

  __weakref__

    list of weak references to the object (if defined)

  loadState()

    Load the state from the class, this will make a copy

    Returns

      state - copy of the state that was saved

class pypdevs.statesavers.DeepCopyState(time_last, time_next, state, activity, my_input, elapsed)

  Class to save the state using the Python ‘deepcopy’ library

  __init__(time_last, time_next, state, activity, my_input, elapsed)

    Constructor

    Parameters

      - time_last – time_last to save

      - time_next – time_next to save

      - state – state to save

      - activity – the activity of the computation

      - my_input – the state input to save for memorisation

      - elapsed – the time elapsed

  __weakref__

    list of weak references to the object (if defined)

  loadState()

    Load the state from the class, this will make a copy

    Returns

      state - copy of the state that was saved

class pypdevs.statesavers.MarshalState(time_last, time_next, state, activity, my_input, elapsed)

  Class to save the state using the Python ‘marshal’ library.

  __init__(time_last, time_next, state, activity, my_input, elapsed)

    Constructor

    Parameters

      - time_last – time_last to save

      - time_next – time_next to save

      - state – state to save

      - activity – the activity of the computation

      - my_input – the state input to save for memorisation

      - elapsed – the time elapsed

  __weakref__

    list of weak references to the object (if defined)

  loadState()

    Load the state from the class, this will make a copy

    Returns

      state - copy of the state that was saved

class pypdevs.statesavers.PickleHighestState(time_last, time_next, state, activity, my_input, elapsed)

  Class to save the state using the Python ‘pickle’ library, with the option to use the highest available pickling protocol.

  __init__(time_last, time_next, state, activity, my_input, elapsed)

    Constructor

    Parameters

      - time_last – time_last to save

      - time_next – time_next to save

      - state – state to save

      - activity – the activity of the computation

      - my_input – the state input to save for memorisation

      - elapsed – the time elapsed

  __weakref__

    list of weak references to the object (if defined)

  loadState()

    Load the state from the class, this will make a copy

    Returns

      state - copy of the state that was saved

class pypdevs.statesavers.PickleZeroState(time_last, time_next, state, activity, my_input, elapsed)

  Class to save the state using the Python ‘pickle’ library, with the option to use the pickling protocol 0.

  __init__(time_last, time_next, state, activity, my_input, elapsed)

    Constructor

    Parameters

      - time_last – time_last to save

      - time_next – time_next to save

      - state – state to save

      - activity – the activity of the computation

      - my_input – the state input to save for memorisation

      - elapsed – the time elapsed

  __weakref__

    list of weak references to the object (if defined)

  loadState()

    Load the state from the class, this will make a copy

    Returns

      state - copy of the state that was saved