@@ -40,7 +40,7 @@ def __init__(
4040 self ._metadata : Metadata = Metadata ()
4141 self ._is_predef_metadata : bool = False
4242 self ._rows : Deque [Tuple [Any ]] = deque ()
43- self ._errors : List [Dict [str , str ]] = list ()
43+ self ._errors : List [Dict [str , str ]] = []
4444 self ._kwargs = kwargs
4545 self .pre_execute ()
4646
@@ -205,7 +205,7 @@ def process_rows(self, response: Dict[str, Any]) -> None:
205205 if rows is None :
206206 raise DataError ("KeyError `Items`" )
207207
208- processed_rows = list ()
208+ processed_rows = []
209209 for row in rows :
210210 if self ._is_predef_metadata :
211211 row_ = self ._process_predef_row_item (row )
@@ -217,14 +217,14 @@ def process_rows(self, response: Dict[str, Any]) -> None:
217217 self ._next_token = response .get ("NextToken" , None )
218218
219219 def _process_undef_row_item (self , row ) -> Optional [Tuple ]:
220- row_ = dict ()
220+ row_ = {}
221221 for col , val in row .items ():
222222 type_ = next (iter (val .keys ()))
223223 val_ = self ._converter .deserialize (val )
224224 col_index = self ._process_metadata (col , type_ )
225225 row_ [col_index ] = val_
226226
227- row__ = list ()
227+ row__ = []
228228 for i in range (len (self ._metadata )):
229229 row__ .append (None )
230230 for i , v in row_ .items ():
@@ -309,27 +309,33 @@ def __init__(
309309 ** kwargs ,
310310 )
311311
312- def process_rows (self , response : Dict [str , Any ]) -> None :
313- rows = response .get ("Items" , None )
314- if rows is None :
315- raise DataError ("KeyError `Items`" )
316-
317- processed_rows = list ()
318- for row in rows :
319- row_ = self ._process_row_item (row )
320- processed_rows .append (row_ )
321-
322- self ._rows .extend (processed_rows )
323- self ._next_token = response .get ("NextToken" , None )
324-
325- def _process_row_item (self , row ) -> Optional [Dict [str , Any ]]:
326- row_ = dict ()
312+ def _process_undef_row_item (self , row ) -> Optional [Dict [str , Any ]]:
313+ row_ = {}
327314 for col , val in row .items ():
328315 val_ = self ._converter .deserialize (val )
329316 row_ [col ] = val_
330317
331318 return row_
332319
320+ def _process_predef_row_item (self , row ) -> Optional [Dict [str , Any ]]:
321+ row_ = {}
322+ for col , val in row .items ():
323+ col_info = self .metadata .get (col , None )
324+ if col_info :
325+ if col_info .function :
326+ val_ = self ._converter .deserialize (
327+ val ,
328+ function = col_info .function .name ,
329+ function_params = col_info .function .params ,
330+ )
331+ else :
332+ val_ = self ._converter .deserialize (val )
333+
334+ col_name_ = col if col_info .alias is None else col_info .alias
335+ row_ [col_name_ ] = val_
336+
337+ return row_
338+
333339
334340class DmlBatchExecutor (DmlStatementExecutor ):
335341 def __init__ (
@@ -364,8 +370,8 @@ def process_rows(self, response: Dict[str, Any]) -> None:
364370 if rows is None :
365371 raise DataError ("KeyError `Responses` in BatchStatementResponse" )
366372
367- processed_error_rows = list ()
368- processed_rows = list ()
373+ processed_error_rows = []
374+ processed_rows = []
369375 for row in rows :
370376 error = row .get ("Error" , None )
371377 if error :
0 commit comments