@@ -1017,57 +1017,69 @@ def check_append(field_data: Any, row_data: Dict):
10171017
10181018def get_array_length (array_item : Any ) -> int :
10191019 """Get the length of an array field from its data."""
1020- if hasattr (array_item , "string_data" ) and array_item .string_data :
1021- return len (array_item .string_data .data )
1022- if hasattr (array_item , "int_data" ) and array_item .int_data :
1023- return len (array_item .int_data .data )
1024- if hasattr (array_item , "long_data" ) and array_item .long_data :
1025- return len (array_item .long_data .data )
1026- if hasattr (array_item , "float_data" ) and array_item .float_data :
1027- return len (array_item .float_data .data )
1028- if hasattr (array_item , "double_data" ) and array_item .double_data :
1029- return len (array_item .double_data .data )
1030- if hasattr (array_item , "bool_data" ) and array_item .bool_data :
1031- return len (array_item .bool_data .data )
1020+ if hasattr (array_item , "string_data" ) and hasattr (array_item .string_data , "data" ):
1021+ length = len (array_item .string_data .data )
1022+ if length > 0 :
1023+ return length
1024+ if hasattr (array_item , "int_data" ) and hasattr (array_item .int_data , "data" ):
1025+ length = len (array_item .int_data .data )
1026+ if length > 0 :
1027+ return length
1028+ if hasattr (array_item , "long_data" ) and hasattr (array_item .long_data , "data" ):
1029+ length = len (array_item .long_data .data )
1030+ if length > 0 :
1031+ return length
1032+ if hasattr (array_item , "float_data" ) and hasattr (array_item .float_data , "data" ):
1033+ length = len (array_item .float_data .data )
1034+ if length > 0 :
1035+ return length
1036+ if hasattr (array_item , "double_data" ) and hasattr (array_item .double_data , "data" ):
1037+ length = len (array_item .double_data .data )
1038+ if length > 0 :
1039+ return length
1040+ if hasattr (array_item , "bool_data" ) and hasattr (array_item .bool_data , "data" ):
1041+ length = len (array_item .bool_data .data )
1042+ if length > 0 :
1043+ return length
10321044 return 0
10331045
10341046
10351047def get_array_value_at_index (array_item : Any , idx : int ) -> Any :
10361048 """Get the value at a specific index from an array field."""
10371049 if (
10381050 hasattr (array_item , "string_data" )
1039- and array_item .string_data
1040- and idx < len (array_item .string_data .data )
1051+ and hasattr ( array_item .string_data , "data" )
1052+ and len (array_item .string_data .data ) > idx
10411053 ):
10421054 return array_item .string_data .data [idx ]
10431055 if (
10441056 hasattr (array_item , "int_data" )
1045- and array_item .int_data
1046- and idx < len (array_item .int_data .data )
1057+ and hasattr ( array_item .int_data , "data" )
1058+ and len (array_item .int_data .data ) > idx
10471059 ):
10481060 return array_item .int_data .data [idx ]
10491061 if (
10501062 hasattr (array_item , "long_data" )
1051- and array_item .long_data
1052- and idx < len (array_item .long_data .data )
1063+ and hasattr ( array_item .long_data , "data" )
1064+ and len (array_item .long_data .data ) > idx
10531065 ):
10541066 return array_item .long_data .data [idx ]
10551067 if (
10561068 hasattr (array_item , "float_data" )
1057- and array_item .float_data
1058- and idx < len (array_item .float_data .data )
1069+ and hasattr ( array_item .float_data , "data" )
1070+ and len (array_item .float_data .data ) > idx
10591071 ):
10601072 return array_item .float_data .data [idx ]
10611073 if (
10621074 hasattr (array_item , "double_data" )
1063- and array_item .double_data
1064- and idx < len (array_item .double_data .data )
1075+ and hasattr ( array_item .double_data , "data" )
1076+ and len (array_item .double_data .data ) > idx
10651077 ):
10661078 return array_item .double_data .data [idx ]
10671079 if (
10681080 hasattr (array_item , "bool_data" )
1069- and array_item .bool_data
1070- and idx < len (array_item .bool_data .data )
1081+ and hasattr ( array_item .bool_data , "data" )
1082+ and len (array_item .bool_data .data ) > idx
10711083 ):
10721084 return array_item .bool_data .data [idx ]
10731085 return None
0 commit comments