@@ -365,11 +365,11 @@ async def _upsert_multiple(
365365 f"alternate_keys and records must have the same length " f"({ len (alternate_keys )} != { len (records )} )"
366366 )
367367 logical_name = table_schema_name .lower ()
368- lowered_records = [self ._lowercase_keys (r ) for r in records ]
369- converted = [await self ._convert_labels_to_ints (table_schema_name , r ) for r in lowered_records ]
370368 targets : List [Dict [str , Any ]] = []
371- for alt_key , record_processed in zip (alternate_keys , converted ):
369+ for alt_key , record in zip (alternate_keys , records ):
372370 alt_key_lower = self ._lowercase_keys (alt_key )
371+ record_processed = self ._lowercase_keys (record )
372+ record_processed = await self ._convert_labels_to_ints (table_schema_name , record_processed )
373373 conflicting = {
374374 k for k in set (alt_key_lower ) & set (record_processed ) if alt_key_lower [k ] != record_processed [k ]
375375 }
@@ -1475,11 +1475,8 @@ async def _delete_columns(
14751475 deleted : List [str ] = []
14761476 needs_picklist_flush = False
14771477
1478- attr_metas = [
1479- await self ._get_attribute_metadata (metadata_id , col , extra_select = "@odata.type,AttributeType" )
1480- for col in names
1481- ]
1482- for column_name , attr_meta in zip (names , attr_metas ):
1478+ for column_name in names :
1479+ attr_meta = await self ._get_attribute_metadata (metadata_id , column_name , extra_select = "@odata.type,AttributeType" )
14831480 if not attr_meta :
14841481 raise MetadataError (
14851482 f"Column '{ column_name } ' not found on table '{ entity_schema } '." ,
@@ -1535,12 +1532,13 @@ async def _build_create_multiple(
15351532 if not all (isinstance (r , dict ) for r in records ):
15361533 raise TypeError ("All items for multi-create must be dicts" )
15371534 logical_name = table .lower ()
1538- lowered = [self ._lowercase_keys (r ) for r in records ]
1539- converted = [await self ._convert_labels_to_ints (table , r ) for r in lowered ]
1540- enriched = [
1541- {** r , "@odata.type" : f"Microsoft.Dynamics.CRM.{ logical_name } " } if "@odata.type" not in r else r
1542- for r in converted
1543- ]
1535+ enriched = []
1536+ for r in records :
1537+ r = self ._lowercase_keys (r )
1538+ r = await self ._convert_labels_to_ints (table , r )
1539+ if "@odata.type" not in r :
1540+ r = {** r , "@odata.type" : f"Microsoft.Dynamics.CRM.{ logical_name } " }
1541+ enriched .append (r )
15441542 return _RawRequest (
15451543 method = "POST" ,
15461544 url = f"{ self .api } /{ entity_set } /Microsoft.Dynamics.CRM.CreateMultiple" ,
@@ -1588,12 +1586,13 @@ async def _build_update_multiple_from_records(
15881586 :meth:`_build_update_multiple` (which assembles from ids + changes).
15891587 """
15901588 logical_name = table .lower ()
1591- lowered = [self ._lowercase_keys (r ) for r in records ]
1592- converted = [await self ._convert_labels_to_ints (table , r ) for r in lowered ]
1593- enriched = [
1594- {** r , "@odata.type" : f"Microsoft.Dynamics.CRM.{ logical_name } " } if "@odata.type" not in r else r
1595- for r in converted
1596- ]
1589+ enriched = []
1590+ for r in records :
1591+ r = self ._lowercase_keys (r )
1592+ r = await self ._convert_labels_to_ints (table , r )
1593+ if "@odata.type" not in r :
1594+ r = {** r , "@odata.type" : f"Microsoft.Dynamics.CRM.{ logical_name } " }
1595+ enriched .append (r )
15971596 return _RawRequest (
15981597 method = "POST" ,
15991598 url = f"{ self .api } /{ entity_set } /Microsoft.Dynamics.CRM.UpdateMultiple" ,
@@ -1658,11 +1657,11 @@ async def _build_upsert_multiple(
16581657 subcode = "upsert_length_mismatch" ,
16591658 )
16601659 logical_name = table .lower ()
1661- lowered_records = [self ._lowercase_keys (r ) for r in records ]
1662- converted = [await self ._convert_labels_to_ints (table , r ) for r in lowered_records ]
16631660 targets : List [Dict [str , Any ]] = []
1664- for alt_key , record_processed in zip (alternate_keys , converted ):
1661+ for alt_key , record in zip (alternate_keys , records ):
16651662 alt_key_lower = self ._lowercase_keys (alt_key )
1663+ record_processed = self ._lowercase_keys (record )
1664+ record_processed = await self ._convert_labels_to_ints (table , record_processed )
16661665 conflicting = {
16671666 k for k in set (alt_key_lower ) & set (record_processed ) if alt_key_lower [k ] != record_processed [k ]
16681667 }
0 commit comments