@@ -1033,57 +1033,69 @@ def check_append(field_data: Any, row_data: Dict):
10331033
10341034def get_array_length (array_item : Any ) -> int :
10351035 """Get the length of an array field from its data."""
1036- if hasattr (array_item , "string_data" ) and array_item .string_data :
1037- return len (array_item .string_data .data )
1038- if hasattr (array_item , "int_data" ) and array_item .int_data :
1039- return len (array_item .int_data .data )
1040- if hasattr (array_item , "long_data" ) and array_item .long_data :
1041- return len (array_item .long_data .data )
1042- if hasattr (array_item , "float_data" ) and array_item .float_data :
1043- return len (array_item .float_data .data )
1044- if hasattr (array_item , "double_data" ) and array_item .double_data :
1045- return len (array_item .double_data .data )
1046- if hasattr (array_item , "bool_data" ) and array_item .bool_data :
1047- return len (array_item .bool_data .data )
1036+ if hasattr (array_item , "string_data" ) and hasattr (array_item .string_data , "data" ):
1037+ length = len (array_item .string_data .data )
1038+ if length > 0 :
1039+ return length
1040+ if hasattr (array_item , "int_data" ) and hasattr (array_item .int_data , "data" ):
1041+ length = len (array_item .int_data .data )
1042+ if length > 0 :
1043+ return length
1044+ if hasattr (array_item , "long_data" ) and hasattr (array_item .long_data , "data" ):
1045+ length = len (array_item .long_data .data )
1046+ if length > 0 :
1047+ return length
1048+ if hasattr (array_item , "float_data" ) and hasattr (array_item .float_data , "data" ):
1049+ length = len (array_item .float_data .data )
1050+ if length > 0 :
1051+ return length
1052+ if hasattr (array_item , "double_data" ) and hasattr (array_item .double_data , "data" ):
1053+ length = len (array_item .double_data .data )
1054+ if length > 0 :
1055+ return length
1056+ if hasattr (array_item , "bool_data" ) and hasattr (array_item .bool_data , "data" ):
1057+ length = len (array_item .bool_data .data )
1058+ if length > 0 :
1059+ return length
10481060 return 0
10491061
10501062
10511063def get_array_value_at_index (array_item : Any , idx : int ) -> Any :
10521064 """Get the value at a specific index from an array field."""
10531065 if (
10541066 hasattr (array_item , "string_data" )
1055- and array_item .string_data
1056- and idx < len (array_item .string_data .data )
1067+ and hasattr ( array_item .string_data , "data" )
1068+ and len (array_item .string_data .data ) > idx
10571069 ):
10581070 return array_item .string_data .data [idx ]
10591071 if (
10601072 hasattr (array_item , "int_data" )
1061- and array_item .int_data
1062- and idx < len (array_item .int_data .data )
1073+ and hasattr ( array_item .int_data , "data" )
1074+ and len (array_item .int_data .data ) > idx
10631075 ):
10641076 return array_item .int_data .data [idx ]
10651077 if (
10661078 hasattr (array_item , "long_data" )
1067- and array_item .long_data
1068- and idx < len (array_item .long_data .data )
1079+ and hasattr ( array_item .long_data , "data" )
1080+ and len (array_item .long_data .data ) > idx
10691081 ):
10701082 return array_item .long_data .data [idx ]
10711083 if (
10721084 hasattr (array_item , "float_data" )
1073- and array_item .float_data
1074- and idx < len (array_item .float_data .data )
1085+ and hasattr ( array_item .float_data , "data" )
1086+ and len (array_item .float_data .data ) > idx
10751087 ):
10761088 return array_item .float_data .data [idx ]
10771089 if (
10781090 hasattr (array_item , "double_data" )
1079- and array_item .double_data
1080- and idx < len (array_item .double_data .data )
1091+ and hasattr ( array_item .double_data , "data" )
1092+ and len (array_item .double_data .data ) > idx
10811093 ):
10821094 return array_item .double_data .data [idx ]
10831095 if (
10841096 hasattr (array_item , "bool_data" )
1085- and array_item .bool_data
1086- and idx < len (array_item .bool_data .data )
1097+ and hasattr ( array_item .bool_data , "data" )
1098+ and len (array_item .bool_data .data ) > idx
10871099 ):
10881100 return array_item .bool_data .data [idx ]
10891101 return None
0 commit comments