163163 ('("quick"; "brown"; "fox"; "jumps"; "over"; "a lazy"; "dog")' ,
164164 {'data' : pandas .Series (['quick' , 'brown' , 'fox' , 'jumps' , 'over' , 'a lazy' , 'dog' ]),
165165 'meta' : MetaData (qtype = QSTRING_LIST ) }),
166+ ('`the`quick`brown`fox' , ({'data' : pandas .Series (numpy .array (['the' , 'quick' , 'brown' , 'fox' ])),
167+ 'meta' : MetaData (qtype = QSYMBOL_LIST ) },
168+ {'data' : pandas .Series (['the' , 'quick' , 'brown' , 'fox' ]),
169+ 'meta' : MetaData (qtype = QSYMBOL_LIST ) },
170+ pandas .Series (['the' , 'quick' , 'brown' , 'fox' ])
171+ )),
172+ ('flip `name`iq!(`Dent`Beeblebrox`Prefect;98 42 126)' ,
173+ pandas .DataFrame (OrderedDict ((('name' , pandas .Series (['Dent' , 'Beeblebrox' , 'Prefect' ])),
174+ ('iq' , pandas .Series (numpy .array ([98 , 42 , 126 ], dtype = numpy .int64 ))),
175+ ))),
176+ ),
166177 ))
167178
168179 def arrays_equal (left , right ):
@@ -203,7 +214,7 @@ def compare(left, right):
203214 for c in left :
204215 if not arrays_equal (left [c ], right [c ]):
205216 return False
206-
217+
207218 return True
208219 elif type (left ) == QFunction :
209220 return type (right ) == QFunction
@@ -226,7 +237,7 @@ def init():
226237 break
227238
228239 BINARY [query ] = binary
229-
240+
230241
231242 def test_reading_pandas ():
232243 print ('Deserialization (pandas)' )
@@ -263,9 +274,9 @@ def test_reading_pandas():
263274
264275 def test_writing_pandas ():
265276 w = qwriter .QWriter (None , 3 )
266-
277+
267278 for query , value in PANDAS_EXPRESSIONS .iteritems ():
268- sys .stdout .write ( '%-75s' % query )
279+ sys .stdout .write ('%-75s' % query )
269280 if isinstance (value , dict ):
270281 data = value ['data' ]
271282 if 'index' in value :
@@ -275,25 +286,29 @@ def test_writing_pandas():
275286 else :
276287 data = value
277288 serialized = binascii .hexlify (w .write (data , 1 ))[16 :].lower ()
278- assert serialized == BINARY [query ].lower (), 'serialization failed: %s, expected: %s actual: %s' % (value , BINARY [query ].lower (), serialized )
279- sys .stdout .write ( '.' )
280-
289+ assert serialized == BINARY [query ].lower (), 'serialization failed: %s, expected: %s actual: %s' % (value , BINARY [query ].lower (), serialized )
290+ sys .stdout .write ('.' )
291+
281292 print ('' )
282-
283- for query , value in PANDAS_EXPRESSIONS_ALT .iteritems ():
284- sys .stdout .write ( '%-75s' % query )
285- if isinstance (value , dict ):
286- data = value ['data' ]
287- if 'index' in value :
288- data .reset_index (drop = True )
289- data = data .set_index (value ['index' ])
290- data .meta = value ['meta' ]
291- else :
292- data = value
293- serialized = binascii .hexlify (w .write (data , 1 ))[16 :].lower ()
294- assert serialized == BINARY [query ].lower (), 'serialization failed: %s, expected: %s actual: %s' % (value , BINARY [query ].lower (), serialized )
295- sys .stdout .write ( '.' )
296-
293+
294+ for query , variants in PANDAS_EXPRESSIONS_ALT .iteritems ():
295+ sys .stdout .write ('%-75s' % query )
296+ variants = [variants ] if not isinstance (variants , tuple ) else variants
297+
298+ for value in variants :
299+ if isinstance (value , dict ):
300+ data = value ['data' ]
301+ if 'index' in value :
302+ data .reset_index (drop = True )
303+ data = data .set_index (value ['index' ])
304+ data .meta = value ['meta' ]
305+ else :
306+ data = value
307+ serialized = binascii .hexlify (w .write (data , 1 ))[16 :].lower ()
308+ assert serialized == BINARY [query ].lower (), 'serialization failed: %s, expected: %s actual: %s' % (value , BINARY [query ].lower (), serialized )
309+
310+ sys .stdout .write ('.' )
311+
297312 print ('' )
298313
299314
0 commit comments