@@ -57,17 +57,16 @@ def make_engine_value_decoder(
5757 f"Type mismatch for `{ '' .join (field_path )} `: "
5858 f"passed in { src_type_kind } , declared { dst_annotation } ({ dst_type_info .kind } )" )
5959
60- if dst_type_info .dataclass_type is not None or dst_type_info .namedtuple_type is not None :
61- struct_type = dst_type_info .dataclass_type or dst_type_info .namedtuple_type
60+ if dst_type_info .struct_type is not None :
6261 return _make_engine_struct_value_decoder (
63- field_path , src_type ['fields' ], struct_type )
62+ field_path , src_type ['fields' ], dst_type_info . struct_type )
6463
6564 if src_type_kind in TABLE_TYPES :
6665 field_path .append ('[*]' )
6766 elem_type_info = analyze_type_info (dst_type_info .elem_type )
68- if elem_type_info .dataclass_type is None and elem_type_info . namedtuple_type is None :
67+ if elem_type_info .struct_type is None :
6968 raise ValueError (f"Type mismatch for `{ '' .join (field_path )} `: "
70- f"declared `{ dst_type_info .kind } `, a dataclass or namedtuple type expected" )
69+ f"declared `{ dst_type_info .kind } `, a dataclass or NamedTuple type expected" )
7170 engine_fields_schema = src_type ['row' ]['fields' ]
7271 if elem_type_info .key_type is not None :
7372 key_field_schema = engine_fields_schema [0 ]
@@ -76,16 +75,14 @@ def make_engine_value_decoder(
7675 field_path , key_field_schema ['type' ], elem_type_info .key_type )
7776 field_path .pop ()
7877 value_decoder = _make_engine_struct_value_decoder (
79- field_path , engine_fields_schema [1 :],
80- elem_type_info .dataclass_type or elem_type_info .namedtuple_type )
78+ field_path , engine_fields_schema [1 :], elem_type_info .struct_type )
8179 def decode (value ):
8280 if value is None :
8381 return None
8482 return {key_decoder (v [0 ]): value_decoder (v [1 :]) for v in value }
8583 else :
8684 elem_decoder = _make_engine_struct_value_decoder (
87- field_path , engine_fields_schema ,
88- elem_type_info .dataclass_type or elem_type_info .namedtuple_type )
85+ field_path , engine_fields_schema , elem_type_info .struct_type )
8986 def decode (value ):
9087 if value is None :
9188 return None
@@ -144,12 +141,8 @@ def make_closure_for_value(name: str, param: inspect.Parameter) -> Callable[[lis
144141 make_closure_for_value (name , param )
145142 for (name , param ) in parameters .items ()]
146143
147- if is_dataclass :
148- return lambda values : dst_struct_type (
149- * (decoder (values ) for decoder in field_value_decoder ))
150- else : # namedtuple
151- return lambda values : dst_struct_type (
152- * (decoder (values ) for decoder in field_value_decoder ))
144+ return lambda values : dst_struct_type (
145+ * (decoder (values ) for decoder in field_value_decoder ))
153146
154147def dump_engine_object (v : Any ) -> Any :
155148 """Recursively dump an object for engine. Engine side uses `Pythonized` to catch."""
0 commit comments