def test_serialized_interfaces(self): us = {'a':10, 'b':range(10)} s = ns.serialize(us) uus = ns.unserialize(s) self.assertTrue(isinstance(s, ns.SerializeIt)) self.assertEquals(uus, us)
def test_serialized_interfaces(self): us = {'a': 10, 'b': range(10)} s = ns.serialize(us) uus = ns.unserialize(s) self.assertTrue(isinstance(s, ns.SerializeIt)) self.assertEquals(uus, us)
def test_serialized_interfaces(self): us = {"a": 10, "b": list(range(10))} s = ns.serialize(us) uus = ns.unserialize(s) self.assertTrue(isinstance(s, ns.SerializeIt)) self.assertEquals(uus, us)
def unpack_apply_message(bufs, g=None, copy=True): """unpack f,args,kwargs from buffers packed by pack_apply_message() Returns: original f,args,kwargs""" bufs = list(bufs) # allow us to pop assert len(bufs) >= 3, "not enough buffers!" if not copy: for i in range(3): bufs[i] = bufs[i].bytes cf = pickle.loads(bufs.pop(0)) sargs = list(pickle.loads(bufs.pop(0))) skwargs = dict(pickle.loads(bufs.pop(0))) # print sargs, skwargs f = uncan(cf, g) for sa in sargs: if sa.data is None: m = bufs.pop(0) if sa.getTypeDescriptor() in ('buffer', 'ndarray'): # always use a buffer, until memoryviews get sorted out sa.data = buffer(m) # disable memoryview support # if copy: # sa.data = buffer(m) # else: # sa.data = m.buffer else: if copy: sa.data = m else: sa.data = m.bytes args = uncanSequence(map(unserialize, sargs), g) kwargs = {} for k in sorted(skwargs.iterkeys()): sa = skwargs[k] if sa.data is None: m = bufs.pop(0) if sa.getTypeDescriptor() in ('buffer', 'ndarray'): # always use a buffer, until memoryviews get sorted out sa.data = buffer(m) # disable memoryview support # if copy: # sa.data = buffer(m) # else: # sa.data = m.buffer else: if copy: sa.data = m else: sa.data = m.bytes kwargs[k] = uncan(unserialize(sa), g) return f, args, kwargs
def unserialize_object(bufs): """reconstruct an object serialized by serialize_object from data buffers.""" bufs = list(bufs) sobj = pickle.loads(bufs.pop(0)) if isinstance(sobj, (list, tuple)): for s in sobj: if s.data is None: s.data = bufs.pop(0) return uncanSequence(map(unserialize, sobj)), bufs elif isinstance(sobj, dict): newobj = {} for k in sorted(sobj.iterkeys()): s = sobj[k] if s.data is None: s.data = bufs.pop(0) newobj[k] = uncan(unserialize(s)) return newobj, bufs else: if sobj.data is None: sobj.data = bufs.pop(0) return uncan(unserialize(sobj)), bufs
def unserialize_object(bufs): """reconstruct an object serialized by serialize_object from data buffers.""" bufs = list(bufs) sobj = pickle.loads(bufs.pop(0)) if isinstance(sobj, (list, tuple)): for s in sobj: if s.data is None: s.data = bufs.pop(0) return uncanSequence(map(unserialize, sobj)), bufs elif isinstance(sobj, dict): newobj = {} for k in sorted(sobj.iterkeys()): s = sobj[k] if s.data is None: s.data = bufs.pop(0) newobj[k] = uncan(unserialize(s)) return newobj, bufs else: if sobj.data is None: sobj.data = bufs.pop(0) return uncan(unserialize(sobj)), bufs
def unpack_apply_message(bufs, g=None, copy=True): """unpack f,args,kwargs from buffers packed by pack_apply_message() Returns: original f,args,kwargs""" bufs = list(bufs) # allow us to pop assert len(bufs) >= 3, "not enough buffers!" if not copy: for i in range(3): bufs[i] = bufs[i].bytes cf = pickle.loads(bufs.pop(0)) sargs = list(pickle.loads(bufs.pop(0))) skwargs = dict(pickle.loads(bufs.pop(0))) # print sargs, skwargs f = uncan(cf, g) for sa in sargs: if sa.data is None: m = bufs.pop(0) if sa.getTypeDescriptor() in ('buffer', 'ndarray'): # always use a buffer, until memoryviews get sorted out sa.data = buffer(m) # disable memoryview support # if copy: # sa.data = buffer(m) # else: # sa.data = m.buffer else: if copy: sa.data = m else: sa.data = m.bytes args = uncanSequence(map(unserialize, sargs), g) kwargs = {} for k in sorted(skwargs.iterkeys()): sa = skwargs[k] if sa.data is None: m = bufs.pop(0) if sa.getTypeDescriptor() in ('buffer', 'ndarray'): # always use a buffer, until memoryviews get sorted out sa.data = buffer(m) # disable memoryview support # if copy: # sa.data = buffer(m) # else: # sa.data = m.buffer else: if copy: sa.data = m else: sa.data = m.bytes kwargs[k] = uncan(unserialize(sa), g) return f,args,kwargs
def test_ndarray_serialized(self): import numpy a = numpy.linspace(0.0, 1.0, 1000) unSer1 = ns.UnSerialized(a) ser1 = ns.SerializeIt(unSer1) td = ser1.getTypeDescriptor() self.assertEquals(td, 'ndarray') md = ser1.getMetadata() self.assertEquals(md['shape'], a.shape) self.assertEquals(md['dtype'], a.dtype.str) buff = ser1.getData() self.assertEquals(buff, numpy.getbuffer(a)) s = ns.Serialized(buff, td, md) final = ns.unserialize(s) self.assertEquals(numpy.getbuffer(a), numpy.getbuffer(final)) self.assertTrue((a==final).all()) self.assertEquals(a.dtype.str, final.dtype.str) self.assertEquals(a.shape, final.shape) # test non-copying: a[2] = 1e9 self.assertTrue((a==final).all())
def test_ndarray_serialized(self): import numpy a = numpy.linspace(0.0, 1.0, 1000) unSer1 = ns.UnSerialized(a) ser1 = ns.SerializeIt(unSer1) td = ser1.getTypeDescriptor() self.assertEquals(td, 'ndarray') md = ser1.getMetadata() self.assertEquals(md['shape'], a.shape) self.assertEquals(md['dtype'], a.dtype.str) buff = ser1.getData() self.assertEquals(buff, numpy.getbuffer(a)) s = ns.Serialized(buff, td, md) final = ns.unserialize(s) self.assertEquals(numpy.getbuffer(a), numpy.getbuffer(final)) self.assertTrue((a == final).all()) self.assertEquals(a.dtype.str, final.dtype.str) self.assertEquals(a.shape, final.shape) # test non-copying: a[2] = 1e9 self.assertTrue((a == final).all())