
    :QgO                        d Z ddlmZ ddlZddlZddlZddlZddlm	Z	m
Z
 ddlZddlmZmZmZmZ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  G d d	      Z G d
 d      Z G d d      Zd Z y)z?Test-suite for `unstructured.partition.common.metadata` module.    )annotationsN)AnyCallable)	CheckBoxElementElementMetadataFigureCaptionHeaderListItemNarrativeTextTextTitle)FileType)_assign_hash_idsapply_metadataget_last_modified_dateset_element_hierarchyc                      e Zd ZddZddZy)Describe_get_last_modified_datec                    t        j                  dddddd      j                         }|dz  }|j                  d	       t	        j
                  |||f       t        t        |            }|d
k(  sJ y )Ni           +   (   )yearmonthdayhourminutesecondzsome_file.txtabcdefgz2024-03-05T17:43:40)dtdatetime	timestamp
write_textosutimer   str)selftmp_pathmodified_timestamp	file_pathlast_modified_dates        m/var/www/html/answerous/venv/lib/python3.12/site-packages/test_unstructured/partition/common/test_metadata.py8it_gets_the_modified_time_of_a_file_identified_by_a_pathzXDescribe_get_last_modified_date.it_gets_the_modified_time_of_a_file_identified_by_a_path(   st    [[QABr"

)+ 	 .	Y'
/1CDE3C	NC!%::::    c                >    |dz  }t        t        |            }|J y )Nz!some_file_that_does_not_exist.txt)r   r)   )r*   r+   r-   r.   s       r/   6but_it_returns_None_when_there_is_no_file_at_that_pathzVDescribe_get_last_modified_date.but_it_returns_None_when_there_is_no_file_at_that_path4   s(    BB	3C	NC!)))r1   N)r+   zpathlib.Path)__name__
__module____qualname__r0   r3    r1   r/   r   r   '   s    
;*r1   r   c                  0    e Zd Zd Zd Zd Zd Zd Zd Zy)Describe_set_element_hierarchyc           	     
   t        dd      t        dd      t        dd      t        dd	      t        d
d      t        dd      g}t        |      }|d   j                  j
                  J |d   j                  j
                  dk(  sJ |d   j                  j
                  J |d   j                  j
                  dk(  sJ |d   j                  j
                  dk(  sJ |d   j                  j
                  d
k(  sJ y )N0Title0
element_idtext1Text02Header03Text14Title15Text2r         r      r   )r   r   r
   r   metadata	parent_idr*   elementsresults      r/   it_applies_default_rulesetz9Describe_set_element_hierarchy.it_applies_default_rulesetC   s   Sx0Cg.c	2Cg.Sx0Cg.
 'x0ay!!++333ay!!++s222ay!!++333ay!!++s222ay!!++s222ay!!++s222r1   c           
        t        ddt        d            t        ddt        d            t        d	d
t        d            t        ddt        d            g}t        |      }|d   j                  j
                  J |d   j                  j
                  dk(  sJ |d   j                  j
                  dk(  sJ |d   j                  j
                  dk(  sJ y )Nr;   r<   rJ   category_depthr>   r?   rM   r@   	ListItem0r   rB   	ListItem1rD   	ListItem2rK   r   )r   r   r   r   rM   rN   rO   s      r/   ;it_applies_category_depth_when_element_category_is_the_samezZDescribe_set_element_hierarchy.it_applies_category_depth_when_element_category_is_the_sameV   s    Sx/YZ:[\+_`@ab+_`@ab+_`@ab	
 'x0ay!!++333ay!!++s222ay!!++s222ay!!++s222r1   c                   t        ddt        d            t        ddt        d            t        d	d
t        d            t        ddt        d            t	        ddt        d            t        ddt        d            g}t        |      }|d   j                  j                  J |d   j                  j                  dk(  sJ |d   j                  j                  J |d   j                  j                  d	k(  sJ |d   j                  j                  d	k(  sJ |d   j                  j                  d	k(  sJ y )Nr;   r   rK   rT   rV   r@   r   r   rB   r
   rD   rF   r   rJ   rH    r   rL   r   )	r   r   r   r
   r   r   r   rM   rN   rO   s      r/   Gbut_it_ignores_category_depth_when_elements_are_of_different_categorieszfDescribe_set_element_hierarchy.but_it_ignores_category_depth_when_elements_are_of_different_categoriese   s1   SwXY9Z[CfVW7XYc?Z[;\]CfVW7XY*^_?`aSrO[\<]^
 'x0ay!!++333ay!!++s222ay!!++333ay!!++s222ay!!++s222ay!!++s222r1   c                *   t        ddt        d            t        dd      t        dd	      g}t        |      }|d
   j                  j
                  dk(  sJ |d   j                  j
                  J |d   j                  j
                  dk(  sJ y )Nr;   r   10)rN   rV   r@   r=   rB   r   r   rJ   rK   )r   r   r   r   rM   rN   rO   s      r/   -it_skips_elements_with_pre_existing_parent_idzLDescribe_set_element_hierarchy.it_skips_elements_with_pre_existing_parent_idx   s    SwSW9XYSw/Cf-
 'x0 ay!!++t333ay!!++333ay!!++s222r1   c                   t        d      t        d      t        d      t        d      t        dt	        d            t        dt	        d            t        d      t        d	d
      t        d      t        d      t        d      t        d      g}t        |      }|d   j                  j                  |d   j                  k(  sJ d       |d   j                  j                  |d   j                  k(  sJ d       |d   j                  j                  |d   j                  k(  sJ d       |d   j                  j                  |d   j                  k(  sJ d       |d   j                  j                  |d   j                  k(  sJ d       |d   j                  j                  |d   j                  k(  sJ d       |d   j                  j                  J d       |d   j                  j                  |d   j                  k(  sJ d       |d   j                  j                  |d   j                  k(  sJ d       |d   j                  j                  |d   j                  k(  sJ d       y )Nr   r?   r   r	   r   rJ   rT   r?   rM   z	some-id-1T)r>   checkedTitle 2r   r   &NarrativeText should be child of TitlerK   z&FigureCaption should be child of Titler   z!ListItem should be child of TitlerL   r         zTitle 2 should be child of None	   z#ListItem should be child of Title 2
      zText should be child of Title 2)r   r   r	   r   r   r   r   r   rM   rN   id)r*   elements_to_setrP   s      r/   .it_sets_parent_id_for_each_element_in_elementszMDescribe_set_element_hierarchy.it_sets_parent_id_for_each_element_in_elements   sK   w//*%*a/PQ*a/PQ*%T:y!*%*%f
 )9 QK  **hqknn<	43	4< QK  **hqknn<	43	4<{##--!?dAdd?{##--!?dAdd?{##--!?dAdd?{##--!?dAdd? {##--5X7XX5QK  **hqknn<	10	1< RL!!++x{~~=	10	1=|$$..(1+..@cBcc@r1   c                   t        d      t        d      t        d      t        d      t        d      t	        d      g}ddgg dd	}t        ||
      }|d   j                  j                  |d   j                  k(  sJ d       |d   j                  j                  |d   j                  k(  sJ d       |d   j                  j                  |d   j                  k(  sJ d       |d   j                  j                  |d   j                  k(  sJ d       |d   j                  j                  |d   j                  k(  sJ d       y )Nr
   rb   r   r   r   re   r	   )r   UncategorizedTextr	   )r
   r   )rP   rulesetrJ   r   zTitle should be child of HeaderrK   rf   r   zText should be child of TitlerL   z!Title 2 should be child of Headerr   z(FigureCaption should be child of Title 2)	r
   r   r   r   r	   r   rM   rN   rl   )r*   rm   custom_rule_setrP   s       r/   it_applies_custom_rule_setz9Describe_set_element_hierarchy.it_applies_custom_rule_set   sE   !w/fy!/
 'L

 )$#

 {##--!?bAbb?QK  **hqknn<	43	4<{##--!?`A``?{##--!?dAdd?QK  **hqknn<	65	6<r1   N)	r4   r5   r6   rR   rZ   r]   r`   rn   rs   r7   r1   r/   r9   r9   A   s"    3&33&3'dR6r1   r9   c                  8   e Zd ZdZd Zd Z	 	 ddZ	 	 ddZ	 	 ddZddZ	ddZ
	 	 dd	Z	 	 dd
Z	 	 ddZ	 	 ddZ	 	 ddZ	 	 ddZ	 	 ddZej&                  j)                  di ddig      	 	 	 	 dd       Z	 	 ddZ	 	 ddZej0                  dd       Zy)Describe_apply_metadatazXUnit-test suite for `unstructured.partition.common.metadata.apply_metadata()` decorator.c                X   t        dt        dd            dfd} t               |      } |       }t        |D ch c]  }t	        |       c}      t        |      k(  sJ t        |D ch c]  }t	        |j
                         c}      t        |      k(  sJ y c c}w c c}w )Nr   foo.barrJ   filenamepage_numberrc   c                     gS Nr7   )kwargselements    r/   fake_partitionerz~Describe_apply_metadata.it_produces_unique_elements_and_metadata_when_input_reuses_element_instances.<locals>.fake_partitioner   s    Wg..r1   r}   r   returnzlist[Element])r   r   r   lenrl   rM   )r*   r   	partitionrP   er~   s        @r/   Lit_produces_unique_elements_and_metadata_when_input_reuses_element_instanceszdDescribe_apply_metadata.it_produces_unique_elements_and_metadata_when_input_reuses_element_instances   s    I`a0bc	/ %N$%56	; 8,aBqE,-X>>>H5qBqzzN56#h-GGG -5s    B"0B'c                B   t        dd      dfd} t               |      } |       }t        |D ch c]  }t        |       c}      t        |      k(  sJ t        |D ch c]  }t        |j                         c}      t        |      k(  sJ y c c}w c c}w )Nrw   rJ   rx   c                 P    t        d      t        d      t        d      gS )Nfoorc   barbaz)r   )r}   rM   s    r/   r   zDescribe_apply_metadata.and_it_produces_unique_elements_and_metadata_when_input_reuses_metadata_instances.<locals>.fake_partitioner   s+    %(3%(3%(3 r1   r   )r   r   r   rl   rM   )r*   r   r   rP   r   rM   s        @r/   Qand_it_produces_unique_elements_and_metadata_when_input_reuses_metadata_instancesziDescribe_apply_metadata.and_it_produces_unique_elements_and_metadata_when_input_reuses_metadata_instances   s    "I1E	 %N$%56	; 8,aBqE,-X>>>H5qBqzzN56#h-GGG -5s   B%Bc                     t               |      } |       } |       }t        d |D              sJ t        d |D              sJ t        d t        ||      D              sJ y )Nc              3  L   K   | ]  }t        |j                        d k(    yw    Nr   rl   .0r   s     r/   	<genexpr>zkDescribe_apply_metadata.it_assigns_hash_element_ids_when_unique_ids_arg_is_not_specified.<locals>.<genexpr>       5q3qtt9?5   "$c              3  8   K   | ]  }d |j                   v  yw-Nrl   r   s     r/   r   zkDescribe_apply_metadata.it_assigns_hash_element_ids_when_unique_ids_arg_is_not_specified.<locals>.<genexpr>       5q3add?5   c              3  T   K   | ]   \  }}|j                   |j                   k(   " y wr|   r   r   r   e2s      r/   r   zkDescribe_apply_metadata.it_assigns_hash_element_ids_when_unique_ids_arg_is_not_specified.<locals>.<genexpr>        HUQ144255=H   &(r   allzipr*   r   r   rP   
elements_2s        r/   @it_assigns_hash_element_ids_when_unique_ids_arg_is_not_specifiedzXDescribe_apply_metadata.it_assigns_hash_element_ids_when_unique_ids_arg_is_not_specified   sg     %N$%56	;[
 5H55555H5555Hc(J.GHHHHr1   c                     t               |      } |d      } |d      }t        d |D              sJ t        d |D              sJ t        d t        ||      D              sJ y )NFunique_element_idsc              3  L   K   | ]  }t        |j                        d k(    ywr   r   r   s     r/   r   zcDescribe_apply_metadata.it_assigns_hash_element_ids_when_unique_ids_arg_is_False.<locals>.<genexpr>  r   r   c              3  8   K   | ]  }d |j                   v  ywr   r   r   s     r/   r   zcDescribe_apply_metadata.it_assigns_hash_element_ids_when_unique_ids_arg_is_False.<locals>.<genexpr>  r   r   c              3  T   K   | ]   \  }}|j                   |j                   k(   " y wr|   r   r   s      r/   r   zcDescribe_apply_metadata.it_assigns_hash_element_ids_when_unique_ids_arg_is_False.<locals>.<genexpr>  r   r   r   r   s        r/   8it_assigns_hash_element_ids_when_unique_ids_arg_is_FalsezPDescribe_apply_metadata.it_assigns_hash_element_ids_when_unique_ids_arg_is_False
  sm     %N$%56	6%8
 5H55555H5555Hc(J.GHHHHr1   c                     t               |      } |d      } |d      }t        d |D              sJ t        d |D              sJ t        d t        ||      D              sJ y )NTr   c              3  L   K   | ]  }t        |j                        d k(    yw$   Nr   r   s     r/   r   zaDescribe_apply_metadata.it_leaves_UUID_element_ids_when_unique_ids_arg_is_True.<locals>.<genexpr>!  r   r   c              3  X   K   | ]"  }|j                   j                  d       dk(   $ yw)r   rL   N)rl   countr   s     r/   r   zaDescribe_apply_metadata.it_leaves_UUID_element_ids_when_unique_ids_arg_is_True.<locals>.<genexpr>"  s!     :A144::c?a':s   (*c              3  T   K   | ]   \  }}|j                   |j                   k7   " y wr|   r   r   s      r/   r   zaDescribe_apply_metadata.it_leaves_UUID_element_ids_when_unique_ids_arg_is_True.<locals>.<genexpr>$  r   r   r   r   s        r/   6it_leaves_UUID_element_ids_when_unique_ids_arg_is_TruezNDescribe_apply_metadata.it_leaves_UUID_element_ids_when_unique_ids_arg_is_True  sm     %N$%56	5$7
 5H5555:::::Hc(J.GHHHHr1   c                     t               |      } |       }|d   }|j                  j                  dk(  sJ |d   }|j                  j                  |j                  k(  sJ y )Nr   rJ   )r   rM   rU   rN   rl   )r*   r   r   rP   title	narr_texts         r/   !it_computes_and_assigns_parent_idz9Describe_apply_metadata.it_computes_and_assigns_parent_id(  sa    $N$%56	;~~,,111QK	!!++uxx777r1   c                b     t               |      } |dgd      }t        d |D              sJ y )NautoT)	languagesdetect_language_per_elementc              3  P   K   | ]  }|j                   j                  d gk(     yw)engN)rM   r   r   s     r/   r   zGDescribe_apply_metadata.it_applies_language_metadata.<locals>.<genexpr>9  s!     Eq1::''E72Es   $&r   r   r*   r   r   rP   s       r/   it_applies_language_metadataz4Describe_apply_metadata.it_applies_language_metadata4  s4    $N$%56	xTREHEEEEr1   c                     t        t        j                        |      } |t        j                        }t	        d |D              sJ y)a  A `metadata_file_type` arg overrides the file-type specified in the decorator.

        This is used for example by a delegating partitioner to preserve the original file-type in
        the metadata, like EPUB instead of the HTML that partitioner converts the .epub file to.
        	file_type)metadata_file_typec              3  N   K   | ]  }|j                   j                  d k(    yw)z'application/vnd.oasis.opendocument.textNrM   filetyper   s     r/   r   zmDescribe_apply_metadata.it_assigns_the_value_of_a_metadata_file_type_arg_when_there_is_one.<locals>.<genexpr>I  s%      
QRAJJ#LL
   #%N)r   r   DOCXODTr   r   s       r/   Bit_assigns_the_value_of_a_metadata_file_type_arg_when_there_is_onezZDescribe_apply_metadata.it_assigns_the_value_of_a_metadata_file_type_arg_when_there_is_one=  sG     <NX]];<LM	= 
V^
 
 	
 
r1   c                     t        t        j                        |      } |       }dt        fd|D              sJ y)zThe `file_type=...` decorator arg is the "normal" way to specify the file-type.

        This is used for principal (non-delegating) partitioners.
        r   zGapplication/vnd.openxmlformats-officedocument.wordprocessingml.documentc              3  P   K   | ]  }|j                   j                  k(    y wr|   r   )r   r   DOCX_MIME_TYPEs     r/   r   z|Describe_apply_metadata.and_it_assigns_the_decorator_file_type_when_the_metadata_file_type_arg_is_omitted.<locals>.<genexpr>Y  s      KQ1::&&.8K   #&N)r   r   r   r   )r*   r   r   rP   r   s       @r/   Qand_it_assigns_the_decorator_file_type_when_the_metadata_file_type_arg_is_omittedziDescribe_apply_metadata.and_it_assigns_the_decorator_file_type_when_the_metadata_file_type_arg_is_omittedM  s;     <NX]];<LM	;bK(KKKKr1   c                Z     t               |      } |       }t        d |D              sJ y)zA partitioner can elect to assign `.metadata.filetype` for itself.

        This is done in `partition_image()` for example where the same partitioner is used for
        multiple file-types.
        c              3  N   K   | ]  }|j                   j                  d k(    yw)
image/jpegNr   r   s     r/   r   zjDescribe_apply_metadata.and_it_does_not_assign_file_type_metadata_when_both_are_omitted.<locals>.<genexpr>g       I11::&&,6Ir   Nr   r   s       r/   ?and_it_does_not_assign_file_type_metadata_when_both_are_omittedzWDescribe_apply_metadata.and_it_does_not_assign_file_type_metadata_when_both_are_omitted[  s/     %N$%56	;IIIIIr1   c                     t               |      } |d      }t        d |D              sJ t        d |D              sJ y)z6A `metadata_filename` arg overrides all other sources.	a/b/c.xyz)metadata_filenamec              3  N   K   | ]  }|j                   j                  d k(    ywzc.xyzNrM   ry   r   s     r/   r   z[Describe_apply_metadata.it_uses_metadata_filename_arg_value_when_present.<locals>.<genexpr>s       Da1::&&'1Dr   c              3  N   K   | ]  }|j                   j                  d k(    ywza/bNrM   file_directoryr   s     r/   r   z[Describe_apply_metadata.it_uses_metadata_filename_arg_value_when_present.<locals>.<genexpr>t       H!1::,,5Hr   Nr   r   s       r/   0it_uses_metadata_filename_arg_value_when_presentzHDescribe_apply_metadata.it_uses_metadata_filename_arg_value_when_presentk  sF     %N$%56	{;D8DDDDHxHHHHr1   c                     t               |      } |d      }t        d |D              sJ t        d |D              sJ y )Nr   )ry   c              3  N   K   | ]  }|j                   j                  d k(    ywr   r   r   s     r/   r   zpDescribe_apply_metadata.and_it_uses_filename_arg_value_when_metadata_filename_arg_not_present.<locals>.<genexpr>}  r   r   c              3  N   K   | ]  }|j                   j                  d k(    ywr   r   r   s     r/   r   zpDescribe_apply_metadata.and_it_uses_filename_arg_value_when_metadata_filename_arg_not_present.<locals>.<genexpr>~  r   r   r   r   s       r/   Eand_it_uses_filename_arg_value_when_metadata_filename_arg_not_presentz]Describe_apply_metadata.and_it_uses_filename_arg_value_when_metadata_filename_arg_not_presentv  sF     %N$%56	k2D8DDDDHxHHHHr1   c                     t               |      } |       }t        d |D              sJ t        d |D              sJ y )Nc              3  N   K   | ]  }|j                   j                  d k(    yw)
image.jpegNr   r   s     r/   r   zlDescribe_apply_metadata.and_it_does_not_assign_filename_metadata_when_neither_are_present.<locals>.<genexpr>  r   r   c              3  N   K   | ]  }|j                   j                  d k(    yw)
x/y/imagesNr   r   s     r/   r   zlDescribe_apply_metadata.and_it_does_not_assign_filename_metadata_when_neither_are_present.<locals>.<genexpr>  s     O1::,,<Or   r   r   s       r/   Aand_it_does_not_assign_filename_metadata_when_neither_are_presentzYDescribe_apply_metadata.and_it_does_not_assign_filename_metadata_when_neither_are_present  sC     %N$%56	;IIIIIOhOOOOr1   c                h     t               |      }d |      }t        fd|D              sJ y)z;A `metadata_last_modified` arg overrides all other sources.z2024-09-26T15:17:53)metadata_last_modifiedc              3  P   K   | ]  }|j                   j                  k(    y wr|   rM   last_modified)r   r   r   s     r/   r   z`Describe_apply_metadata.it_uses_metadata_last_modified_arg_value_when_present.<locals>.<genexpr>  s!     X!1::++/EEXr   Nr   )r*   r   r   rP   r   s       @r/   5it_uses_metadata_last_modified_arg_value_when_presentzMDescribe_apply_metadata.it_uses_metadata_last_modified_arg_value_when_present  s:     %N$%56	!64JKXxXXXXr1   r}   r   Nc                \     t               |      } |di |}t        d |D              sJ y )Nc              3  N   K   | ]  }|j                   j                  d k(    yw)2020-01-06T05:07:03Nr   r   s     r/   r   z~Describe_apply_metadata.but_it_does_not_update_last_modified_when_metadata_last_modified_arg_absent_or_None.<locals>.<genexpr>  s      W1::++/DDWr   r7   r   )r*   r}   r   r   rP   s        r/   Sbut_it_does_not_update_last_modified_when_metadata_last_modified_arg_absent_or_NonezkDescribe_apply_metadata.but_it_does_not_update_last_modified_when_metadata_last_modified_arg_absent_or_None  s5     %N$%56	&v&WhWWWWr1   c                ^     t               |      } |d      }t        d |D              sJ y )Nhttps://adobe.com/stock/54321)urlc              3  N   K   | ]  }|j                   j                  d k(    yw)r   NrM   r   r   s     r/   r   z`Describe_apply_metadata.it_assigns_url_metadata_field_when_url_arg_is_present.<locals>.<genexpr>  s     W1::>>%DDWr   r   r   s       r/   5it_assigns_url_metadata_field_when_url_arg_is_presentzMDescribe_apply_metadata.it_assigns_url_metadata_field_when_url_arg_is_present  s3     %N$%56	!@AWhWWWWr1   c                Z     t               |      } |       }t        d |D              sJ y )Nc              3  N   K   | ]  }|j                   j                  d k(    yw)http://images.comNr   r   s     r/   r   zjDescribe_apply_metadata.and_it_does_not_assign_url_metadata_when_url_arg_is_not_present.<locals>.<genexpr>  s     KQ1::>>%88Kr   r   r   s       r/   ?and_it_does_not_assign_url_metadata_when_url_arg_is_not_presentzWDescribe_apply_metadata.and_it_does_not_assign_url_metadata_when_url_arg_is_not_present  s/     %N$%56	;K(KKKKr1   c                    dd}|S )Nc                    t        d      }d|j                  _        d|j                  _        d|j                  _        d|j                  _        d|j                  _        d|j                  _        t        d      }d|j                  _        d|j                  _        d|j                  _        d|j                  _        d|j                  _        ||gS )	NIntroductionrJ   r   r   r   r   r  z0To understand bar you must first understand foo.)	r   rM   rU   r   ry   r   r   r   r   )r}   r   r   s      r/   r   zBDescribe_apply_metadata.fake_partitioner.<locals>.fake_partitioner  s    .)E,-ENN),8ENN)&2ENN#&2ENN#+@ENN(!4ENN%&XYI0<I-*6I'*6I'/DI,%8I"9%%r1   r   r7   )r*   r   s     r/   r   z(Describe_apply_metadata.fake_partitioner  s    	&$  r1   )r   Callable[..., list[Element]])r}   zdict[str, Any]r   r  )r   r  )r4   r5   r6   __doc__r   r   r   r   r   r   r   r   r   r   r   r   r   r   pytestmarkparametrizer   r   r  fixturer   r7   r1   r/   ru   ru      s+   bHH*I <II <II <I 8F
 <
 L <LJ <J 	I <	II <IP <P	Y <	Y [[X-Et,L'MNX$X8TX OXX <XL <L ^^   r1   ru   c            	        t        dt        dd            t        dt        dd            t        dt        dd            g} t        d | D              sJ t        t	        j
                  |             } t        t	        j
                  |             }| D cg c]  }|j                   }}t        d | D              sJ t        |      t        t        |            k(  sJ t        d t        | |      D              sJ y c c}w )	Nr   rw   rJ   rx   rc   c              3  L   K   | ]  }t        |j                        d k(    ywr   r   r   s     r/   r   zntest_assign_hash_ids_produces_unique_and_deterministic_SHA1_ids_even_for_duplicate_elements.<locals>.<genexpr>       11s144yB1r   c              3  L   K   | ]  }t        |j                        d k(    ywr   r   r   s     r/   r   zntest_assign_hash_ids_produces_unique_and_deterministic_SHA1_ids_even_for_duplicate_elements.<locals>.<genexpr>  r  r   c              3  T   K   | ]   \  }}|j                   |j                   k(   " y wr|   r   r   s      r/   r   zntest_assign_hash_ids_produces_unique_and_deterministic_SHA1_ids_even_for_duplicate_elements.<locals>.<genexpr>  s      DBqttruu}Dr   )
r   r   r   r   copydeepcopyrl   r   setr   )rP   r   r   idss       r/   [test_assign_hash_ids_produces_unique_and_deterministic_SHA1_ids_even_for_duplicate_elementsr    s    )oyVW&XY)oyVW&XY)oyVW&XYH 11111h 78H!$--"9:J!
"A144
"C
"11111s8s3s8}$$$D#h
*CDDDD #s   D)!r  
__future__r   r  r$   r#   r'   pathlibtypingr   r   r  unstructured.documents.elementsr   r   r   r	   r
   r   r   r   r   unstructured.file_utils.modelr   &unstructured.partition.common.metadatar   r   r   r   r   r9   ru   r  r7   r1   r/   <module>r     sg    E #   	    
 
 
 3 * *4J6 J6dx  x @Er1   