diff --git a/sdk/diffgram/file/file_constructor.py b/sdk/diffgram/file/file_constructor.py index 9b49edf..c52ffe8 100644 --- a/sdk/diffgram/file/file_constructor.py +++ b/sdk/diffgram/file/file_constructor.py @@ -301,6 +301,8 @@ def __validate_and_format_frame_packet_map( raise Exception("frame_packet_map is not a dict") for frame, instance_list in frame_packet_map.items(): + if instance_list is None: + raise Exception("instance_list cannot be None") if type(frame) != int: raise Exception("frame is not a integer. The key should be the integer frame number.") @@ -312,7 +314,8 @@ def __validate_and_format_frame_packet_map( frame_packet_map[frame] = self.__validate_and_format_instance_list( instance_list = instance_list, assume_new_instances_machine_made = assume_new_instances_machine_made, - convert_names_to_label_files = convert_names_to_label_files + convert_names_to_label_files = convert_names_to_label_files, + check_frame_number = True ) return frame_packet_map @@ -321,7 +324,8 @@ def __validate_and_format_instance_list( self, instance_list: list, assume_new_instances_machine_made: bool, - convert_names_to_label_files: bool): + convert_names_to_label_files: bool, + check_frame_number: bool = False ): FileConstructor.sanity_check_instance_list(instance_list) @@ -334,6 +338,11 @@ def __validate_and_format_instance_list( instance_list = instance_list ) + if check_frame_number: + for elm in instance_list: + if elm.get('frame_number') is None: + raise Exception('All instances must have a "frame_number" key.') + return instance_list def instance_list_label_strings_to_ids(self, instance_list: list): @@ -368,6 +377,10 @@ def sanity_check_instance_list(instance_list: list): if len(instance_list) == 0: raise Warning("'instance_list' is empty") + for elm in instance_list: + if elm is None: + raise Exception("instance_list elements cannot be None") + FileConstructor.__check_for_duplicates_on_instance_list(instance_list) return