def ExecuteTableValidations()

in src-python/trp/t_tables.py [0:0]


def ExecuteTableValidations(t_doc: t2.TDocument, header_footer_type: HeaderFooterType, accuracy_percentage: float):
    """
    Invoke validations for first and last tables on all pages recursively
    """
    page_compare_proc = 0
    table_ids_to_merge = {}
    table_ids_merge_list = []
    from trp.t_pipeline import order_blocks_by_geo
    ordered_doc = order_blocks_by_geo(t_doc)
    trp_doc = trp.Document(TDocumentSchema().dump(ordered_doc))

    for current_page in trp_doc.pages:

        if (page_compare_proc >= len(trp_doc.pages) - 1):
            break
        if (len(current_page.tables) == 0 or len(current_page.tables) == 0):
            page_compare_proc += 1
            break
        current_page_table = current_page.tables[len(current_page.tables) - 1]
        next_page = trp_doc.pages[page_compare_proc + 1]
        next_page_table = next_page.tables[0]
        result_1 = __validate_objects_between_tables(current_page, current_page_table, next_page, next_page_table,
                                                     header_footer_type)
        if (result_1):
            result_2_1 = __compare_table_column_numbers(current_page_table, next_page_table)
            result_2_2 = __compare_table_headers(current_page_table, next_page_table)
            if (result_2_1 or result_2_2):
                result3 = __compare_table_dimensions(current_page_table, next_page_table, accuracy_percentage)
                if (result3):
                    table_ids_to_merge[next_page_table.id] = current_page_table.id
                    if (table_ids_merge_list):
                        if (any(merge_pairs[1] == current_page_table.id for merge_pairs in table_ids_merge_list)):
                            table_ids_merge_list[len(table_ids_merge_list) - 1].append(next_page_table.id)
                        else:
                            table_ids_merge_list.append([current_page_table.id, next_page_table.id])
                    else:
                        table_ids_merge_list.append([current_page_table.id, next_page_table.id])
        page_compare_proc += 1
    return table_ids_merge_list