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)