def write_data_sequence(self):

        attributes = {"original_idl_file": self.options.input_path}
        output_data_sequence = \
            DataSequence(self.options.output_path, Detections, attributes)

        for detections in self.data_sequence:
            output_data_sequence.write(detections)

        del output_data_sequence  # close the file

        print("Created output file", self.options.output_path)
        return
def open_data_sequence(data_filepath):

    assert os.path.exists(data_filepath)

    the_data_sequence = DataSequence(data_filepath, Detections)

    def data_sequence_reader(data_sequence):
        while True:
            data = data_sequence.read()
            if data is None:
                raise StopIteration
            else:
                yield data

    return data_sequence_reader(the_data_sequence)
    def read_and_check(self):

        self.assertTrue(os.path.exists(self.test_filename))
        self.assertTrue(os.path.getsize(self.test_filename) > 0)

        data_sequence_in = DataSequence(self.test_filename, TestData)

        read_attributes = data_sequence_in.get_attributes()
        read_data1 = data_sequence_in.read()
        read_data2 = data_sequence_in.read()
        read_data3 = data_sequence_in.read()

        self.assertEqual(read_attributes, self.attributes)
        self.assertEqual(read_data1, self.data1)
        self.assertEqual(read_data2, self.data2)
        self.assertEqual(read_data3, self.data3)
        return
    def test_read_write_sequence(self):
        """
        Test data sequence creation and reading
        """

        if os.path.exists(self.test_filename):
            os.remove(self.test_filename)

        data_sequence_out = \
            DataSequence(self.test_filename, TestData, self.attributes)

        data_sequence_out.write(self.data1)
        data_sequence_out.write(self.data2)
        data_sequence_out.write(self.data3)

        data_sequence_out.flush()

        self.read_and_check()
        return