@@ -248,10 +248,16 @@ def pandas_verify(cur, data, deserialize):
248248 value = json .loads (value )
249249 if isinstance (value , numpy .ndarray ):
250250 value = value .tolist ()
251+
251252 # Numpy nans have to be checked with isnan. nan != nan according to numpy
252253 if isinstance (value , float ) and numpy .isnan (value ):
253254 assert datum is None or numpy .isnan (datum ), "nan values should return nan."
254255 else :
256+ if isinstance (value , dict ):
257+ value = {
258+ k : v .tolist () if isinstance (v , numpy .ndarray ) else v
259+ for k , v in value .items ()
260+ }
255261 assert (
256262 value == datum or value is datum
257263 ), f"Result value { value } should match input example { datum } ."
@@ -340,11 +346,14 @@ def test_map(key_type, datatype, examples, iceberg, pandas, conn_cnx):
340346
341347 if datatype == "VARIANT" :
342348 data = {k : dumps (v ) if v else v for k , v in data .items ()}
349+ if pandas :
350+ data = list (data .items ())
343351 elif pandas :
344352 examples = PANDAS_STRUCTURED_REPRS .get (datatype , examples )
345- data = {
346- str (i ) if key_type == "varchar" else i : ex for i , ex in enumerate (examples )
347- }
353+ data = [
354+ (str (i ) if key_type == "varchar" else i , ex )
355+ for i , ex in enumerate (examples )
356+ ]
348357
349358 query = f"""
350359 SELECT
@@ -431,6 +440,14 @@ def test_nested_types(conn_cnx, iceberg, pandas):
431440 SELECT
432441 parse_json('{ json_string } ') :: object(child array(map (varchar, object(struct_field varchar)))) as col
433442 """
443+ if pandas :
444+ data = {
445+ "child" : [
446+ [
447+ ("key1" , {"struct_field" : "value" }),
448+ ]
449+ ]
450+ }
434451 verify_datatypes (
435452 conn_cnx ,
436453 query ,
0 commit comments