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