Serialize hooke.experiment.Experiment instances in Curves.
[hooke.git] / hooke / curve.py
index 629e0a8bd5da99ef95e37e150aa6724fe1b28f8c..af572f3cfd1a6794657dc9aca9272e9bbd094e95 100644 (file)
@@ -26,6 +26,7 @@ import os.path
 import numpy
 
 from .command_stack import CommandStack
+from . import experiment
 
 
 class NotRecognized (ValueError):
@@ -195,6 +196,12 @@ class Curve (object):
         dc = state['command_stack']
         if hasattr(dc, '__getstate__'):
             state['command_stack'] = dc.__getstate__()
+        if self.info.get('experiment', None) != None:
+            e = self.info['experiment']
+            assert isinstance(e, experiment.Experiment)
+            # HACK? require Experiment classes to be defined in the
+            # experiment module.
+            self.info['experiment'] = e.__class__.__name__
         return state
 
     def __setstate__(self, state):
@@ -203,6 +210,14 @@ class Curve (object):
             if key == 'path':
                 self.set_path(value)
                 continue
+            elif key == 'info':
+                if 'experiment' not in value:
+                    value['experiment'] = None
+                else:
+                    # HACK? require Experiment classes to be defined in the
+                    # experiment module.
+                    cls = getattr(experiment, value['experiment'])
+                    value['experiment'] = cls()
             elif key == 'command_stack':
                 v = CommandStack()
                 v.__setstate__(value)