Source code for openalea.core.control.serialization


from .control import Control
from .pyserial import serialize_controls
from openalea.core.serialization import AbstractSaver, AbstractLoader, AbstractDeserializer


[docs] class ControlSerializer(object):
[docs] def serialize(self, obj, protocol=None, **kwds): if isinstance(obj, Control): obj = [obj] return serialize_controls(obj)
[docs] class ControlDeserializer(AbstractDeserializer):
[docs] def deserialize(self, lines, protocol=None, **kwds): ns = {} for l in lines: try: exec(l, ns) except: pass controls = ns.get('controls', []) return controls
[docs] class ControlSaver(AbstractSaver): dtype = 'IControl' protocols = ['text/x-python'] def _serialize(self, obj, protocol, **kwds): serializer = ControlSerializer() return serializer.serialize(obj, protocol=protocol, **kwds)
[docs] class ControlLoader(AbstractLoader): dtype = 'IControl' protocols = ['text/x-python'] def _deserialize(self, lines, protocol, **kwds): serializer = ControlDeserializer() return serializer.deserialize(lines, protocol=protocol, **kwds)