
    :QgL                     8   d dl mZ d dlZd dlZd dlmZ d dlmZ d dl	m
Z
 d dlmZmZ ej                  j                  d ed       ed	      g      d
        Zd Zd Zd Zd Zej                  j                  dg d      d        Zd Zd Zd Zd Zd Zd Zy)    )mockN)example_doc_path)TableAlignment)TableEvalProcessor)eval_table_transformer_for_fileimage_or_pdf_to_dataframefilename$img/table-multi-row-column-cells.pngz$pdf/table-multi-row-column-cells.pdfc                 >    t        |       }g d|j                  v sJ y )N)Blind514z
34.5%, n=1z1199 sec, n=1)r   values)r	   dfs     k/var/www/html/answerous/venv/lib/python3.12/site-packages/test_unstructured/metrics/test_table_structure.pytest_image_or_pdf_to_dataframer      s      
#8	,BBbiiOOO    c                  `    t        t        d      t        d            } d| cxk  rdk  sJ  J y )Nr
   z'table-multi-row-column-cells-actual.csvg?   )r   r   )scores    r   $test_eval_table_transformer_for_filer      s5    +?@BCE
 ????r   c                  d   dddidg} dddddddd	d
dddddd	ddddddd	ddddddd	gdg}t        | |      }|j                         }|j                  dk(  sJ |j                  dk(  sJ |j                  dk(  sJ |j
                  dk(  sJ |j                  dk(  sJ |j                  dk(  sJ y )NTabletext_as_htmlz<table><thead><tr><th>r1c1</th><th>r1c2</th></tr></thead>
                    <tbody><tr><td>r2c1</td><td>r2c2</td></tr></tbody></table>typemetadata$ee862c7a-d27e-4484-92de-4faa42a63f3br   r   r1c1idxywhcontent$6237ac7b-bfc8-40d2-92f2-d138277205e2r2c1$9d0933a9-5984-4cad-80d9-6752bf9bc4dfr1c2$1152d043-5ead-4ab8-8b88-888d48831ac2r2c2r   text      ?r   process_filetotal_tablestable_level_accelement_row_level_index_accelement_col_level_index_accelement_row_level_content_accelement_col_level_content_acc
predictionground_truthte_processorresults       r    test_table_eval_processor_simpler>   $   s4     !R	
J  A% A% A% A%3!$	
&LP &j,?L&&(F!###!!S(((--444--444//3666//3666r   c                     ddddddddddddddddddddddddd	dgid
g} ddddddddddddddddddddd	ddddddddgdg}t        | |d      }|j                         }|j                  dk(  sJ |j                  dk(  sJ |j                  dk(  sJ |j
                  dk(  sJ |j                  dk(  sJ |j                  dk(  sJ y )Nr   table_as_cellsr   r-   )r#   r$   r%   r&   r'   r   r    r)   r+   r   r   r!   r(   r*   r,   r.   cellssource_typer0   r1   r9   s       r   4test_table_eval_processor_simple_when_input_as_cellsrD   a   s     #) #) #) #)-#"	
$JP  A% A% A% A%3!$	
&LP &j,GTL&&(F!###!!S(((--444--444//3666//3666r   c                      ddg idg} dg dg}t        | |d      }t        j                  t              5  |j	                          d d d        y # 1 sw Y   y xY w)Nr   r@   r   r.   
wrong_typerB   )r   pytestraises
ValueErrorr2   )r:   r;   r<   s      r   0test_table_eval_processor_when_wrong_source_typerJ      sl     )2.	
J 	
L &j,LYL	z	" $!!#$ $ $s   AAr   )a1  
<table>
    <thead>
        <tr>
            <th>r1c1</th>
            <th>r1c2</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>r2c1</td>
            <td>r2c2</td>
        </tr>
        <tr>
            <td>r3c1</td>
            <td>r3c2</td>
        </tr>
    </tbody>
</table>
a  
<table>
    <tr>
        <th>r1c1</th>
        <th>r1c2</th>
    </tr>
    <tbody>
        <tr>
            <td>r2c1</td>
            <td>r2c2</td>
        </tr>
        <tr>
            <td>r3c1</td>
            <td>r3c2</td>
        </tr>
    </tbody>
</table>
a  
<table>
    </tbody>
        <tr>
            <td>r1c1</td>
            <td>r1c2</td>
        </tr>
        <tr>
            <td>r2c1</td>
            <td>r2c2</td>
        </tr>
        <tr>
            <td>r3c1</td>
            <td>r3c2</td>
        </tr>
    </tbody>
</table>
c                    dd| idg}ddddddddd	ddddd
dddddddddddddddddddddddddddddgdg}t        ||      }|j                         }|j                  dk(  sJ |j                  dk(  sJ |j                  dk(  sJ |j
                  dk(  sJ |j                  dk(  sJ |j                  dk(  sJ y )Nr   r   r   r   r   r   r    r!   r(   r)   r*   r+   r,   r-   z$364f4a17-2979-4506-ae77-e8adf8e3f554   r3c1z$30f87503-ac1f-4db1-b924-b316af585702r3c2r.   r0   r1   )r   r:   r;   r<   r=   s        r   7test_table_eval_processor_various_table_html_structuresrO      s_   | #0NOPJ  A% A% A% A% A% A%S14	
6Lp &j,?L&&(F!###!!S(((--444--444//3666//3666r   c                  d   dddidg} dddddddd	d
dddddd	ddddddd	ddddddd	gdg}t        | |      }|j                         }|j                  dk(  sJ |j                  dk(  sJ |j                  dk(  sJ |j
                  dk(  sJ |j                  dk(  sJ |j                  dk(  sJ y )Nr   r   z
<table>
    <thead>
        <tr>
            <th>11</th>
            <th>12</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>21</td>
            <td>22</td>
        </tr>
    </tbody>
</table>r   r   r   r   11r!   r(   21r*   12r,   22r.   r0   r1   r9   s       r   1test_table_eval_processor_non_str_values_in_tablerU   P  s3     !	
J2  A# A# A# A#3!$	
&LP &j,?L&&(F!###!!S(((--444--444//3666//3666r   c                     dddidg} ddddddd	d
ddddddd
ddddddd
ddddddd
ddddddd
ddddddd
ddddddd
ddddddd
ddddddd
ddddddd
ddddddd
gd g}t        | |      }|j                         }|j                  dk(  sJ |j                  d!k(  sJ |j                  d!k(  sJ |j
                  d!k(  sJ |j                  d!k(  sJ |j                  d!k(  sJ y )"Nr   r   a  
<table>
    <thead>
        <tr>
            <th rowspan="2">r1c1</th>
            <th>r1c2</th>
            <th colspan="2">r1c3</th>
        </tr>
        <tr>
            <th>r2c2</th>
            <th>r2c3</th>
            <th>r2c4</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>r3c1</td>
            <td>r3c2</td>
            <td colspan="2" rowspan="2">r3c3</td>
        </tr>
        <tr>
            <td>r4c1</td>
            <td>r4c2</td>
        </tr>
    </tbody>
</table>
r   z$f399ef57-5b88-4509-8971-9cb63246866er   r   rL   r    r!   z$2dfdec2f-e8f3-4be7-a6ac-8ff21c4e8556rM   z$9c771c58-88c7-49d8-9c12-85d0e44b920e   r4c1z$5bd6f3f0-34c5-495b-8a28-c4ac96989ef8r+   z$7b8e6bc2-a310-4dd6-997c-313f951e7f96r-   z$1c152ad4-12fa-4a7b-90de-a992aa6410a4rN   z$55063f64-0003-4217-b6ca-aff5914793ffr4c2z$22852e86-0e22-4d32-b63a-9ba7dd4118a2r1c3z$eae013c5-5597-4a8b-9771-82e28c5c5cbar2c3z$0dea3a42-8523-4d6e-9e70-d65cc2314678r3c3z$60093e2c-d3e2-4146-92b5-97a2fc16c061r2c4r.   r0   r1   r9   s       r   &test_table_eval_processor_merged_cellsr^     s     !	
!JJ  A% A% A% A% A% A% A% A% A% A% A%cY\	
^L@ &j,?L&&(F!###!!S(((--444--444//3666//3666r   c                     dddidg} dddddddd	d
dddddd	ddddddd	ddddddd	gdg}t         j                  j                  t        d      5 }dg|_        t        | |      }|j                         }d d d        j                  dk(  sJ |j                  dk(  sJ |j                  dk(  sJ |j                  dk(  sJ |j                  dk(  sJ |j                  dk(  sJ y # 1 sw Y   pxY w)Nr   r   *<table><tr><td>Some cell</td></tr></table>r   r   r   r   rQ   r!   r(   rR   r*   rS   r,   rT   r.   get_table_level_alignment)r   patchobjectr   return_valuer   r2   r3   r4   r5   r6   r7   r8   )r:   r;   align_fnr<   r=   s        r   1test_table_eval_processor_when_no_match_with_predrg   (  sg    ')YZ	
J  A# A# A# A#3!$	
&LP 
		>+F	G -8!#)*lC**,-
 !###!!Q&&&--222--222//1444//1444- -s   %C''C0c                     i g} i g}t        | |      }|j                         }|j                  dk(  sJ |j                  dk(  sJ t	        j
                  |j                        sJ t	        j
                  |j                        sJ t	        j
                  |j                        sJ t	        j
                  |j                        sJ y )Nr   r   )
r   r2   r3   r4   npisnanr5   r6   r7   r8   r9   s       r   (test_table_eval_processor_when_no_tablesrk   e  s    J4L%j,?L&&(F!###!!Q&&&88F6677788F6677788F8899988F88999r   c                  X   g } dddddddddddddddd	ddddd
ddddddddgdg}t        | |      }|j                         }|j                  dk(  sJ |j                  dk(  sJ |j                  dk(  sJ |j
                  dk(  sJ |j                  dk(  sJ |j                  dk(  sJ y )Nr   r   r   r   rQ   r!   r(   rR   r*   rS   r,   rT   r.   r1   r9   s       r   &test_table_eval_processor_when_only_gtrm   t  s   J  A# A# A# A#3!$	
&LP &j,?L&&(F!###!!Q&&&--222--222//1444//1444r   c                     dddidg} i g}t        | |      }|j                         }|j                  dk(  sJ |j                  dk(  sJ |j                  dk(  sJ |j
                  dk(  sJ |j                  dk(  sJ |j                  dk(  sJ y )Nr   r   r`   r   r   r1   r9   s       r   (test_table_eval_processor_when_only_predro     s     ')YZ	
J 4L%j,?L&&(F!###!!Q&&&--222--222//1444//1444r   )unittestr   numpyri   rG   test_unstructured.unit_utilsr   *unstructured.metrics.table.table_alignmentr   %unstructured.metrics.table.table_evalr   $unstructured.metrics.table_structurer   r   markparametrizer   r   r>   rD   rJ   rO   rU   r^   rg   rk   rm   ro    r   r   <module>ry      s       9 E D ?@?@PP
:7zV7r$( 9<zB7{<zB7JG7TK7\:5z:35l5r   