Show More
@@ -16,6 +16,8 Authors: | |||
|
16 | 16 | # Imports |
|
17 | 17 | #------------------------------------------------------------------------------- |
|
18 | 18 | |
|
19 | import sys | |
|
20 | ||
|
19 | 21 | from unittest import TestCase |
|
20 | 22 | |
|
21 | 23 | from IPython.testing.decorators import parametric |
@@ -23,6 +25,8 from IPython.utils import newserialized as ns | |||
|
23 | 25 | from IPython.utils.pickleutil import can, uncan, CannedObject, CannedFunction |
|
24 | 26 | from IPython.parallel.tests.clienttest import skip_without |
|
25 | 27 | |
|
28 | if sys.version_info[0] >= 3: | |
|
29 | buffer = memoryview | |
|
26 | 30 | |
|
27 | 31 | class CanningTestCase(TestCase): |
|
28 | 32 | def test_canning(self): |
@@ -88,10 +92,10 class CanningTestCase(TestCase): | |||
|
88 | 92 | self.assertEquals(md['shape'], a.shape) |
|
89 | 93 | self.assertEquals(md['dtype'], a.dtype.str) |
|
90 | 94 | buff = ser1.getData() |
|
91 |
self.assertEquals(buff, |
|
|
95 | self.assertEquals(buff, buffer(a)) | |
|
92 | 96 | s = ns.Serialized(buff, td, md) |
|
93 | 97 | final = ns.unserialize(s) |
|
94 |
self.assertEquals( |
|
|
98 | self.assertEquals(buffer(a), buffer(final)) | |
|
95 | 99 | self.assertTrue((a==final).all()) |
|
96 | 100 | self.assertEquals(a.dtype.str, final.dtype.str) |
|
97 | 101 | self.assertEquals(a.shape, final.shape) |
@@ -35,6 +35,8 if sys.version_info[0] >= 3: | |||
|
35 | 35 | py3k = True |
|
36 | 36 | else: |
|
37 | 37 | py3k = False |
|
38 | if sys.version_info[:2] <= (2,6): | |
|
39 | memoryview = buffer | |
|
38 | 40 | |
|
39 | 41 | #----------------------------------------------------------------------------- |
|
40 | 42 | # Classes and functions |
@@ -101,10 +103,7 class SerializeIt(object): | |||
|
101 | 103 | self.data = None |
|
102 | 104 | self.obj = unSerialized.getObject() |
|
103 | 105 | if numpy is not None and isinstance(self.obj, numpy.ndarray): |
|
104 |
if |
|
|
105 | # FIXME: | |
|
106 | # also use pickle for numpy arrays on py3k, since | |
|
107 | # pyzmq doesn't rebuild from memoryviews properly | |
|
106 | if len(self.obj.shape) == 0: # length 0 arrays are just pickled | |
|
108 | 107 | self.typeDescriptor = 'pickle' |
|
109 | 108 | self.metadata = {} |
|
110 | 109 | else: |
@@ -125,7 +124,7 class SerializeIt(object): | |||
|
125 | 124 | |
|
126 | 125 | def _generateData(self): |
|
127 | 126 | if self.typeDescriptor == 'ndarray': |
|
128 |
self.data = |
|
|
127 | self.data = buffer(self.obj) | |
|
129 | 128 | elif self.typeDescriptor in ('bytes', 'buffer'): |
|
130 | 129 | self.data = self.obj |
|
131 | 130 | elif self.typeDescriptor == 'pickle': |
@@ -158,11 +157,10 class UnSerializeIt(UnSerialized): | |||
|
158 | 157 | typeDescriptor = self.serialized.getTypeDescriptor() |
|
159 | 158 | if numpy is not None and typeDescriptor == 'ndarray': |
|
160 | 159 | buf = self.serialized.getData() |
|
161 | if isinstance(buf, (bytes, buffer)): | |
|
160 | if isinstance(buf, (bytes, buffer, memoryview)): | |
|
162 | 161 | result = numpy.frombuffer(buf, dtype = self.serialized.metadata['dtype']) |
|
163 | 162 | else: |
|
164 | # memoryview | |
|
165 | result = numpy.array(buf, dtype = self.serialized.metadata['dtype']) | |
|
163 | raise TypeError("Expected bytes or buffer/memoryview, but got %r"%type(buf)) | |
|
166 | 164 | result.shape = self.serialized.metadata['shape'] |
|
167 | 165 | elif typeDescriptor == 'pickle': |
|
168 | 166 | result = pickle.loads(self.serialized.getData()) |
General Comments 0
You need to be logged in to leave comments.
Login now