
    Ng0]                       d Z ddlmZ ddlZddlZddlZddlmZ ddlZ	ddl
mZ ddlZddlmZ ddlmZmZmZ ddlmZmZmZmZmZ ddlmZ dd	lmZmZmZm Z  dd
l!m"Z"m#Z#m$Z$m%Z% dZ&dZ'd Z(d Z)d Z*d Z+ej,        -                    dddg          d/d            Z.d Z/d Z0d Z1d Z2d Z3d0dZ4d Z5d0dZ6d  Z7d! Z8d" Z9d# Z:d$ Z;d% Z<d& Z=d' Z>d( Z? G d) d*          Z@ G d+ d,          ZA G d- d.          ZBdS )1z8Test-suite for the `unstructured.partition.xlsx` module.    )annotationsN)Any)MockerFixture)EXPECTED_TABLE_XLSXEXPECTED_TEXT_XLSXEXPECTED_TITLE)FixtureRequestMockassert_round_trips_through_JSONexample_doc_pathfunction_mock)clean_extra_whitespace)ListItemTableTextTitle)_ConnectedComponent_SubtableParser_XlsxPartitionerOptionspartition_xlsxzAapplication/vnd.openxmlformats-officedocument.spreadsheetml.sheetzStanley Cupsc                 2   t          dd          } t          d | D                       dk    sJ t          |           dk    sJ t          | d         j                  t
          k    sJ t          | d         j                  t          k    sJ | d         j        j        t          k    sJ | d         j        j
        dk    sJ | d         j        j        t          k    sJ | d         j        j        t          k    sJ | d         j        j        d	k    sJ d S )
Nexample-docs/stanley-cups.xlsxFinclude_headerc              3  @   K   | ]}t          |t                    V  d S N
isinstancer   .0elements     a/var/www/html/ai-engine/env/lib/python3.11/site-packages/test_unstructured/partition/test_xlsx.py	<genexpr>z4test_partition_xlsx_from_filename.<locals>.<genexpr>6   ,      BBgz'5))BBBBBB          r      stanley-cups.xlsx)r   sumlenr   textr   r   metadatatext_as_htmlr   page_numberfiletypeEXPECTED_FILETYPE	page_nameEXCEPTED_PAGE_NAMEfilenameelementss    r"   !test_partition_xlsx_from_filenamer7   3   s&   >uUUUHBBBBBBBaGGGGx==A!(1+"233~EEEE!(1+"2337IIIIIA;,0CCCCCA;+q0000A;(,=====A;)-?????A;(,???????r%   c                    t          j                    } t          dd          5 }|                     |                                           d d d            n# 1 swxY w Y   t          | d          }t          d |D                       dk    sJ t          |          dk    sJ t          |d         j	                  dk    sJ d S )	Nzexample-docs/emoji.xlsxrbFfiler   c              3  @   K   | ]}t          |t                    V  d S r   )r   r   r   s     r"   r#   zKtest_partition_xlsx_from_SpooledTemporaryFile_with_emoji.<locals>.<genexpr>G   s,      AAWz'4((AAAAAAr%   r(   r   u   🤠😅)
tempfileSpooledTemporaryFileopenwritereadr   r*   r+   r   r,   )fgr6   s      r"   8test_partition_xlsx_from_SpooledTemporaryFile_with_emojirD   B   s   %''A	'	.	. !	              1U;;;HAAAAAAAQFFFFx==A!(1+"233zAAAAAAs   (AAAc                     t          j        t          d          5  t                       d d d            d S # 1 swxY w Y   d S )Nz3Either 'filename' or 'file' argument must be specif)match)pytestraises
ValueErrorr    r%   r"   6test_partition_xlsx_raises_on_no_file_or_path_providedrK   L   s    	z)^	_	_	_                   s   8<<c                 j   t          ddd          } t          d | D                       dk    sJ t          d | D                       dk    sJ t          | d         j                  t          k    sJ t          | d	         j                  t
          k    sJ | d         j        j        dk    sJ d S )
Nr   testF)metadata_filenamer   c              3  @   K   | ]}t          |t                    V  d S r   r   r   s     r"   r#   zKtest_partition_xlsx_from_filename_with_metadata_filename.<locals>.<genexpr>V   r$   r%   r&   c              3  @   K   | ]}t          |t                    V  d S r   )r   r   r   s     r"   r#   zKtest_partition_xlsx_from_filename_with_metadata_filename.<locals>.<genexpr>W   r$   r%   r   r(   )r   r*   r   r,   r   r   r-   r4   r5   s    r"   8test_partition_xlsx_from_filename_with_metadata_filenamerQ   Q   s    (FSX  H BBBBBBBaGGGGBBBBBBBaGGGG!(1+"233~EEEE!(1+"2337IIIIIA;(F222222r%   infer_table_structureTFboolc                    t          d|           }d |D             }|D ]-}t          |j        d          o|j        j        d u}|| k    sJ .d S )Nr   )rR   c                <    g | ]}t          |t                    |S rJ   r   r    es     r"   
<listcomp>z=test_partition_xlsx_infer_table_structure.<locals>.<listcomp>b   s'    BBBAZ5-A-ABaBBBr%   r.   )r   hasattrr-   r.   )rR   r6   table_elementstable_element$table_element_has_text_as_html_fields        r"   )test_partition_xlsx_infer_table_structurer]   ]   s    (@U  H CBBBBN' M MM*N;; @&34? 	- 47LLLLLLM Mr%   c                     t          dd          } t          |           dk    sJ t          d | D                       sJ | d         }|j        dt          z   k    sJ |j        j        J d S )Nr   Tr   r&   c              3  @   K   | ]}t          |t                    V  d S r   r   rV   s     r"   r#   z@test_partition_xlsx_from_filename_with_header.<locals>.<genexpr>o   ,      66z!U##666666r%   r   #Stanley Cups Unnamed: 1 Unnamed: 2 )r   r+   allr,   r   r-   r.   )r6   rW   s     r"   -test_partition_xlsx_from_filename_with_headerrc   k   s    >tTTTHx==A66X66666666A6:=OOOOOO:".....r%   c                 z   t          dd          5 } t          | d          }d d d            n# 1 swxY w Y   t          d |D                       dk    sJ t          |          dk    sJ t	          |d         j                  t          k    sJ t	          |d	         j                  t          k    sJ |d	         j        j	        t          k    sJ |d	         j        j        d	k    sJ |d	         j        j        t          k    sJ |d	         j        j        t          k    sJ |d	         j        j        J d S )
Nr   r9   Fr:   c              3  @   K   | ]}t          |t                    V  d S r   r   r   s     r"   r#   z0test_partition_xlsx_from_file.<locals>.<genexpr>y   r$   r%   r&   r'   r   r(   )r?   r   r*   r+   r   r,   r   r   r-   r.   r   r/   r0   r1   r2   r3   r4   rB   r6   s     r"   test_partition_xlsx_from_filerg   u   s   	.	5	5 @!q???@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ BBBBBBBaGGGGx==A!(1+"233~EEEE!(1+"2337IIIIIA;,0CCCCCA;+q0000A;(,=====A;)-?????A;(00000   /33c                    t          dd          5 } t          j        |                                           }d d d            n# 1 swxY w Y   d|_        t          |d          }t          d |D                       dk    sJ t          |          dk    sJ t          |d	         j	                  t          k    sJ t          |d
         j	                  t          k    sJ |d
         j        j        t          k    sJ |d
         j        j        d
k    sJ |d
         j        j        t"          k    sJ |d
         j        j        t&          k    sJ d S )Nr   r9   z)stanley-cups-downloaded-from-network.xlsxFr:   c              3  @   K   | ]}t          |t                    V  d S r   r   r   s     r"   r#   zFtest_partition_xlsx_from_file_like_object_with_name.<locals>.<genexpr>   r$   r%   r&   r'   r   r(   )r?   ioBytesIOrA   namer   r*   r+   r   r,   r   r   r-   r.   r   r/   r0   r1   r2   r3   )rB   r;   r6   s      r"   3test_partition_xlsx_from_file_like_object_with_namern      s   	.	5	5 $z!&&((##$ $ $ $ $ $ $ $ $ $ $ $ $ $ $;DI4>>>HBBBBBBBaGGGGx==A!(1+"233~EEEE!(1+"2337IIIIIA;,0CCCCCA;+q0000A;(,=====A;)-???????s   'AAAc                 2   t          dd          5 } t          | dd          }d d d            n# 1 swxY w Y   t          d |D                       dk    sJ t          |d         j                  t
          k    sJ |d         j        j        dk    sJ d S )	Nr   r9   rM   F)r;   rN   r   c              3  @   K   | ]}t          |t                    V  d S r   r   r   s     r"   r#   zGtest_partition_xlsx_from_file_with_metadata_filename.<locals>.<genexpr>   r$   r%   r&   r(   )r?   r   r*   r   r,   r   r-   r4   rf   s     r"   4test_partition_xlsx_from_file_with_metadata_filenamerq      s    	.	5	5 Z!qFSXYYYZ Z Z Z Z Z Z Z Z Z Z Z Z Z Z BBBBBBBaGGGG!(1+"2337IIIIIA;(F222222s   044c                 .   t          dd          5 } t          | d          }d d d            n# 1 swxY w Y   t          |          dk    sJ t          d |D                       sJ |d         }|j        dt
          z   k    sJ |j        j        J d S )	Nr   r9   Tr:   r&   c              3  @   K   | ]}t          |t                    V  d S r   r   rV   s     r"   r#   z<test_partition_xlsx_from_file_with_header.<locals>.<genexpr>   r`   r%   r   ra   )r?   r   r+   rb   r,   r   r-   r.   )rB   r6   rW   s      r"   )test_partition_xlsx_from_file_with_headerrt      s    	.	5	5 ?!q>>>? ? ? ? ? ? ? ? ? ? ? ? ? ? ? x==A66X66666666A6:=OOOOOO:".....rh   mockerr   c                    d|                      d           t          t          d                    }t          fd|D                       sJ d S )N2024-05-01T15:37:282unstructured.partition.xlsx.get_last_modified_datereturn_valuer)   c              3  8   K   | ]}|j         j        k    V  d S r   r-   last_modified)r    rW   filesystem_last_modifieds     r"   r#   zXtest_partition_xlsx_from_file_path_gets_last_modified_from_filesystem.<locals>.<genexpr>   s.      VVqz'+CCVVVVVVr%   patchr   r   rb   )ru   r6   r~   s     @r"   Etest_partition_xlsx_from_file_path_gets_last_modified_from_filesystemr      sr    4
LL<Kc     ./BCCDDHVVVVXVVVVVVVVVVr%   c                     t          t          d          d          5 } t          |           }d d d            n# 1 swxY w Y   t          d |D                       sJ d S )Nr)   r9   )r;   c              3  2   K   | ]}|j         j        d u V  d S r   r|   rV   s     r"   r#   zHtest_partition_xlsx_from_file_gets_last_modified_None.<locals>.<genexpr>   s,      BBAqz'4/BBBBBBr%   r?   r   r   rb   rf   s     r"   5test_partition_xlsx_from_file_gets_last_modified_Noner      s    	233T	:	: *a!q)))* * * * * * * * * * * * * * * BBBBBBBBBBBBs   ;??c                    d}d|                      d|           t          t          d                    }t          fd|D                       sJ d S )Nrw   2020-07-05T09:24:28rx   ry   r)   )metadata_last_modifiedc              3  8   K   | ]}|j         j        k    V  d S r   r|   r    rW   r   s     r"   r#   zTtest_partition_xlsx_from_file_path_prefers_metadata_last_modified.<locals>.<genexpr>   .      TTaqz'+AATTTTTTr%   r   )ru   r~   r6   r   s      @r"   Atest_partition_xlsx_from_file_path_prefers_metadata_last_modifiedr      s    42
LL<Kc     ,--F\  H TTTT8TTTTTTTTTTr%   c                     dt          t          d          d          5 } t          |           }d d d            n# 1 swxY w Y   t          fd|D                       sJ d S )Nr   r)   r9   )r;   r   c              3  8   K   | ]}|j         j        k    V  d S r   r|   r   s     r"   r#   zOtest_partition_xlsx_from_file_prefers_metadata_last_modified.<locals>.<genexpr>   r   r%   r   )rB   r6   r   s     @r"   <test_partition_xlsx_from_file_prefers_metadata_last_modifiedr      s    2	233T	:	: Ya!qAWXXXY Y Y Y Y Y Y Y Y Y Y Y Y Y Y TTTT8TTTTTTTTTTs   ?AAc                 `    t          t          d          d          } t          |            d S )Nr)   Fr   )r   r   r   r5   s    r"   test_partition_xlsx_with_jsonr      s3    ./BCCTYZZZH#H-----r%   c                     t          dd          } t          d | D                       dk    sJ t          |           dk    sJ | d         j        j        dgk    sJ d S )	Nr   Fr   c              3  @   K   | ]}t          |t                    V  d S r   r   r   s     r"   r#   zFtest_partition_xlsx_metadata_language_from_filename.<locals>.<genexpr>   r$   r%   r&   r'   r   eng)r   r*   r+   r-   	languagesr5   s    r"   3test_partition_xlsx_metadata_language_from_filenamer      sw    >uUUUHBBBBBBBaGGGGx==AA;)eW444444r%   c                 ,   t          d          g t          d          t          d          t          d          t          d          t          d          t          d          t          d          t          d          t          d	          t          d          t          d
          t          d          t          d          t          d          t          d          t          d          t          d          t          d          t          d          t          d          t          d          t          d          t          d          t          d          t          d          t          d          t          d          t          d          t          d          t          d          t          d          t          d          t          d          t          d
          k    sJ d S )Nz%example-docs/xlsx-subtable-cases.xlsxz	a b c d erB   azb c d ebzc d e fza b c dz2. erW   rC   hza b czb c dd)r   r   r   r   rJ   r%   r"   test_partition_xlsx_subtablesr      s   ABB #Gk#G#G 	c

#G 	i	#G
 	c

#G 	c

#G 	i#G 	i#G 	#G 	i#G 	c

#G 	c

#G 	c

#G 	i#G 	c

#G  	c

!#G" 	c

##G$ 	i%#G& 	c

'#G( 	c

)#G* 	i+#G, 	c

-#G. 	c

/#G0 	c

1#G2 	c

3#G4 	i5#G6 	c

7#G8 	c

9#G: 	g;#G< 	c

=#G> 	g?#G@ 	gA#GB 	c

C#GD 	c

E#G # # # # # #r%   c                 V    t          d          } | d         j        j        dgk    sJ d S )Nr   r   r   )r   r-   r   r5   s    r"   2test_partition_xlsx_element_metadata_has_languagesr     s3    >??HA;)eW444444r%   c                 X    t          dd          } d | D             }d|v sJ d|v sJ d S )Nz'example-docs/language-docs/eng_spa.xlsxT)detect_language_per_elementc                J    h | ] }|j         j        |j         j        d          !S )r   )r-   r   rV   s     r"   	<setcomp>zJtest_partition_eml_respects_detect_language_per_element.<locals>.<setcomp>  s,    OOO!*:NOQZ!!$OOOr%   r   spa)r   )r6   langss     r"   7test_partition_eml_respects_detect_language_per_elementr     sO    1t  H POhOOOEE>>>>E>>>>>>r%   c                     t          j                    } 	 t          j        d           t          d           t          j        |            d S # t          j        |            w xY w)Ni  z$example-docs/more-than-1k-cells.xlsx)sysgetrecursionlimitsetrecursionlimitr   )old_recursion_limits    r"   +test_partition_xlsx_with_more_than_1k_cellsr     sf    /113d###=>>>12222212222s   #A A$c                 p    t          dd          } | t          d          t          d          gk    sJ d S )Nr   F)find_subtableSStanley Cups Team Location Stanley Cups Blues STL 1 Flyers PHI 2 Maple Leafs TOR 13[Stanley Cups Since 67 Team Location Stanley Cups Blues STL 1 Flyers PHI 2 Maple Leafs TOR 0)r   r   r5   s    r"   Stest_partition_xlsx_with_find_subtables_False_emits_one_Table_element_per_worksheetr   ,  s_    >eTTTHa	
 	
 		
 	
	      r%   c                     t          ddd          } | t          d          t          d          gk    sJ t          d | D                       sJ d S )Nr   F)r   rR   r   r   c              3  2   K   | ]}|j         j        d u V  d S r   )r-   r.   rV   s     r"   r#   zftest_partition_xlsx_with_find_subtables_False_and_infer_table_structure_False_works.<locals>.<genexpr>F  s,      AA1qz&$.AAAAAAr%   )r   r   rb   r5   s    r"   Stest_partition_xlsx_with_find_subtables_False_and_infer_table_structure_False_worksr   9  s    (UZ  H a	
 	
 		
 	
	     AAAAAAAAAAAAr%   c                     e Zd ZdZej                            dddg          dd            Zej                            d	d
dg          dd            Zej                            dddg          dd            Z	ej                            dddg          dd            Z
ddZddZddZ ej                    d d            Z ej                    d!d            ZdS )"Describe_XlsxPartitionerOptionszRUnit-test suite for `unstructured.partition.xlsx._XlsxPartitionerOptions` objects.	arg_valueTFrS   	opts_argsdict[str, Any]c                >    ||d<   t          di |}|j        |u sJ d S )Nr   rJ   )r   r   selfr   r   optss       r"   Vit_knows_whether_to_find_subtables_within_each_worksheet_or_return_table_per_worksheetzvDescribe_XlsxPartitionerOptions.it_knows_whether_to_find_subtables_within_each_worksheet_or_return_table_per_worksheetT  s;     &/	/"&3333!Y......r%   )r   expected_value)Tr   )FNr   
int | Nonec                B    ||d<   t          di |}|j        |k    sJ d S Nr   rJ   )r   header_row_idx)r   r   r   r   r   s        r"   (it_knows_the_header_row_index_for_PandaszHDescribe_XlsxPartitionerOptions.it_knows_the_header_row_index_for_Pandas]  s<     '0	"#&3333"n444444r%   c                >    ||d<   t          di |}|j        |u sJ d S r   )r   r   r   s       r"   Ait_knows_whether_to_include_column_headings_in_Table_text_as_htmlzaDescribe_XlsxPartitionerOptions.it_knows_whether_to_include_column_headings_in_Table_text_as_htmlf  s<     '0	"#&3333"i//////r%   c                >    ||d<   t          di |}|j        |u sJ d S )NrR   rJ   )r   rR   r   s       r"   :it_knows_whether_to_include_text_as_html_in_Table_metadatazZDescribe_XlsxPartitionerOptions.it_knows_whether_to_include_text_as_html_in_Table_metadatao  s<     .7	)*&3333)Y666666r%   get_last_modified_date_r
   c                    d}d|d<   ||_         t          di |}|j        }|                    d           ||k    sJ d S )Nz2024-04-02T20:32:35za/b/spreadsheet.xlsx	file_pathrJ   )rz   r   r}   assert_called_once_with)r   r   r   r~   r   r}   s         r"   Ait_gets_last_modified_from_the_filesystem_when_a_path_is_providedzaDescribe_XlsxPartitionerOptions.it_gets_last_modified_from_the_filesystem_when_a_path_is_providedz  se     $9 !7	+/G,&3333*778NOOO 8888888r%   c                f    t          j        d          }||d<   t          di |}|j        }|J d S )Ns   abcdefgr;   rJ   )rk   rl   r   r}   )r   r   r;   r   r}   s        r"   Rbut_it_falls_back_to_None_for_the_last_modified_date_when_no_file_path_is_providedzrDescribe_XlsxPartitionerOptions.but_it_falls_back_to_None_for_the_last_modified_date_when_no_file_path_is_provided  sJ     z*%% 	&&3333*$$$$$r%   c                B    d|d<   t          di |}|j        dk    sJ d S )Nz
x/y/z.xlsxr   rJ   )r   metadata_file_path)r   r   r   s      r"   ,it_uses_the_file_path_argument_when_providedzLDescribe_XlsxPartitionerOptions.it_uses_the_file_path_argument_when_provided  s9    !-	+&3333&,666666r%   requestr	   c                "    t          |d          S )Nrx   )r   )r   r   s     r"   r   z7Describe_XlsxPartitionerOptions.get_last_modified_date_  s    W&Z[[[r%   returnc                    ddddddS )zAll default arguments for `_XlsxPartitionerOptions`.

        Individual argument values can be changed to suit each test. Makes construction of opts more
        compact for testing purposes.
        NTF)r   r;   r   r   rR   rJ   )r   s    r"   r   z)Describe_XlsxPartitionerOptions.opts_args  s"     !#%)
 
 	
r%   N)r   rS   r   r   )r   rS   r   r   r   r   )r   r   r   r
   )r   r   )r   r	   )r   r   )__name__
__module____qualname____doc__rG   markparametrizer   r   r   r   r   r   r   fixturer   r   rJ   r%   r"   r   r   Q  s       \\[[4-88/ / / 98/ [<y->XYY5 5 5 ZY5 [[4-880 0 0 980 [[4-887 7 7 9879 9 9 9	% 	% 	% 	%7 7 7 7 V^\ \ \ \ V^
 
 
 
 
 
r%   r   c                  $    e Zd ZdZd Zd Zd ZdS )Describe_ConnectedComponentzNUnit-test suite for `unstructured.partition.xlsx._ConnectedComponent` objects.c                    t          t          j                    h d          }|j        dk    sJ |j        dk    sJ d S )N>   r(   r&   r&   r&   r&      r   r(   r(   r(   r   r&   )r   pd	DataFramemin_xmax_x)r   	components     r"   !it_knows_its_top_and_left_extentsz=Describe_ConnectedComponent.it_knows_its_top_and_left_extents  sJ    '8`8`8`aa	!####!######r%   c                    t          j                    }t          |h d          }t          |h d          }|                    |          }|j        |u sJ |j        h dk    sJ d S )N>   r   r   r&   r   >   r   r'   r(   r   r(   r'   >   r   r   r   r   r   r   )r   r   r   merge
_worksheet_cell_coordinate_set)r   dfr   othermergeds        r"   ;it_can_merge_with_another_component_to_make_a_new_componentzWDescribe_ConnectedComponent.it_can_merge_with_another_component_to_make_a_new_component  s    \^^',D,D,DEE	#B(@(@(@AA'' B&&&&*.^.^.^^^^^^^r%   c           	        t          j        g dg ddgddgd dgg dggg d	          }h d
}t          ||          }|j        }t	          d|           t          j        |t          j        ddgddgd dggg d	                     d S )Nr   r   cr   rW   rB   rC   r   i)r   r(   r&   r   r'         index>   r&   r   r&   r(   r   r   r   r(   r'   r(   z	subtable=)r&   r   r'   )r   r   r   subtableprintpdtassert_frame_equal)r   worksheet_dfcell_coordinate_setr   r  s        r"   Oit_can_extract_the_rectangular_subtable_containing_its_cells_from_the_worksheetzkDescribe_ConnectedComponent.it_can_extract_the_rectangular_subtable_containing_its_cells_from_the_worksheet  s    |__b3*sCj4+rC5Q'''
 
 
 GFF'6IJJ	%nnnblS#Jc
T3K#HPYPYPYZZZ	
 	
 	
 	
 	
r%   N)r   r   r   r   r   r   r  rJ   r%   r"   r   r     sJ        XX$ $ $_ _ _
 
 
 
 
r%   r   c                     e Zd ZdZej                            d ej        ddgddggddg	           ej        ddgddggddg	          f ej        dgddgdd
ggg d	           ej        ddgdd
ggddg	          f ej        ddgddgddgd
dggg d	           ej        ddgd
dggddg	          f ej        ddgddgdd
ggg d	           ej        ddgddggddg	          f ej        ddgddgd
gdggg d	           ej        ddgddggddg	          f ej        dgddgdd
gddggg d	           ej        ddgdd
ggddg	          f ej        dgdgddgd
dgdggg d	           ej        ddgd
dggddg	          f ej        ddgddgdd
gddgddggg d	           ej        ddgdd
ggddg	          f ej        dgdgddgd
dgdgdggg d	           ej        ddgd
dggddg	          f ej        g dgdg	           ej        g dgdg	          f ej        dgg dgddg	           ej        g dgdg	          f ej        g ddgd
ggg d	           ej        g dgdg	          fg          dd            Z	ej                            d ej        ddgddgg          g f ej        dgddgdd
gg          dgf ej        ddgddgddgd
dgg          ddgf ej        ddgddgdd
gg          g f ej        ddgddgd
gdgg          g f ej        dgddgdd
gddgg          dgf ej        dgdgddgd
dgdgg          ddgf ej        ddgddgdd
gddgddgg          dgf ej        dgdgddgd
dgdgdgg          ddgf ej        g dg          g f ej        dgg dg          dgf ej        g ddgd
gg          g fg          dd            Z
ej                            d ej        ddgddgg          g f ej        dgddgdd
gg          g f ej        ddgddgddgd
dgg          g f ej        ddgddgdd
gg          d
gf ej        ddgddgd
gdgg          d
dgf ej        dgddgdd
gddgg          dgf ej        dgdgddgd
dgdgg          dgf ej        ddgddgdd
gddgddgg          ddgf ej        dgdgddgd
dgdgdgg          ddgf ej        g dg          g f ej        dgg dg          g f ej        g ddgd
gg          dd
gfg          dd            ZdS )Describe_SubtableParserzJUnit-test suite for `unstructured.partition.xlsx._SubtableParser` objects.)r  r   r   r   r   r   r   r(   r   rW   )r   r(   r&   r&   NrB   )r   r(   r&   r   r   rC   )r   r(   r&   r   r'   r   )r   r(   r&   r   r'   r   r   )r   r   r   r  pd.DataFramer   c                d    t          |          }|j        }|J t          j        ||           dS )zQcore-table is correctly distinguished from leading and trailing single-cell rows.N)r   
core_tabler  r  )r   r  r   subtable_parserr  s        r"   *it_extracts_the_core_table_from_a_subtablezBDescribe_SubtableParser.it_extracts_the_core_table_from_a_subtable  s?    X *(33$/
%%%z>:::::r%   c                v    t          |          }t          |                                          }||k    sJ d S r   )r   list#iter_leading_single_cell_rows_texts)r   r  r   r  leading_single_cell_row_textss        r"   8it_extracts_the_leading_single_cell_rows_from_a_subtablezPDescribe_SubtableParser.it_extracts_the_leading_single_cell_rows_from_a_subtable)  sB    ( *(33(,_-`-`-b-b(c(c%,>>>>>>r%   c                v    t          |          }t          |                                          }||k    sJ d S r   )r   r  $iter_trailing_single_cell_rows_texts)r   r  r   r  trailing_single_cell_row_textss        r"   9it_extracts_the_trailing_single_cell_rows_from_a_subtablezQDescribe_SubtableParser.it_extracts_the_trailing_single_cell_rows_from_a_subtableA  sI    . *(33)-@@BB*
 *
& .??????r%   )r  r  r   r  )r   r   r   r   rG   r   r   r   r   r  r  r  rJ   r%   r"   r  r    s       TT[& sCj3*5aVDDDsCj3*5aVDDD sec3Z#s<IIINNNsCj3*5aVDDD C[4+SzC:Flll   sCj3*5aVDDD	 sCj3*tSkB)))TTTsCj3*5aVDDD sCj3*secUC<<<XXXsCj3*5aVDDD sec3Z#sdC[IQ]Q]Q]^^^sCj3*5aVDDD secUS#Jc
SEJRaRaRabbbsCj3*5aVDDD C[3*sCj4+c{S)//   sCj3*5aVDDD USEC:SzC53%HPbPbPb   sCj3*5aVDDD	 ooo.qc:::ooo.qc::: se___5aVDDDooo.qc::: ooouse<IIINNNooo.qc:::AD	
G GP	; 	; 	;QG GP	; [&R\C:Sz233R8R\C53*sCj9::SEBR\D#;sc3Z#sLMMPSUXzZR\C:SzD#;?@@"ER\C:SzC53%@AA2FR\C53*sCj4+FGG#OR\C53%#sc3Z#GHH3PS*UR\D#;c
S#JsdTW[YZZ]`\abR\C53%#sc3Z#NOORUWZQ[\R\???+,,b1R\C5///233cU;R\???SEC59::B?	
 "? ? ?# "? [&R\C:Sz233R8R\C53*sCj9::B?R\D#;sc3Z#sLMMrRR\C:SzD#;?@@3%HR\C:SzC53%@AAC:NR\C53*sCj4+FGG#OR\C53%#sc3Z#GHH3%PtSkC:SzD#;QUWZP[\]]c
 R\C53%#sc3Z#NOORUWZQ[\R\???+,,b1R\C5///233R8R\???SEC59::S#JG	
 (	@ 	@ 	@) (	@ 	@ 	@r%   r  )rR   rS   )ru   r   )Cr   
__future__r   rk   r   r=   typingr   pandasr   pandas.testingtestingr  rG   pytest_mockr   *test_unstructured.partition.test_constantsr   r   r   test_unstructured.unit_utilsr	   r
   r   r   r   unstructured.cleaners.corer   unstructured.documents.elementsr   r   r   r   unstructured.partition.xlsxr   r   r   r   r1   r3   r7   rD   rK   rQ   r   r   r]   rc   rg   rn   rq   rt   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  rJ   r%   r"   <module>r'     s   ? > " " " " " " 				 



                   % % % % % %         
              > = = = = = H H H H H H H H H H H H            X # @ @ @B B B  
	3 	3 	3 04-@@
M 
M 
M A@
M/ / /1 1 1@ @ @"3 3 3/ / /W W W WC C CU U U UU U U. . .
5 5 5$ $ $N5 5 5
  3 3 3"
 
 
B B B0\
 \
 \
 \
 \
 \
 \
 \
~ 
  
  
  
  
  
  
  
FK@ K@ K@ K@ K@ K@ K@ K@ K@ K@r%   