
    :Qg)"                       d Z ddlm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 ddlmZ dd	lmZ dd
lmZ ddlmZ ej*                  j-                  dddg      d$d       Zd Zej*                  j-                  dddg      d$d       Zd Zej*                  j-                  dddg      d$d       Zej*                  j-                  dddg      d$d       Zd Zd Zej*                  j-                  dddg      d$d       Zej*                  j-                  dddg      d$d       Z d Z!d Z"d%dZ#d Z$d%dZ%d Z&ej*                  j-                  dddg      d$d       Z'd  Z(d! Z)d" Z*d# Z+y)&z3Test-suite for `unstructured.partition.xml` module.    )annotationsN)MockerFixture)example_doc_path)chunk_by_title)NarrativeTextTitle)partition_json)#UNSTRUCTURED_INCLUDE_DEBUG_METADATA)partition_xml)elements_to_jsonfilenamefactbook.xmlfactbook-utf-16.xmlc                   t        |       }t        |d      }|d   j                  dk(  sJ |d   j                  j                  | k(  sJ t
        r+|D ch c]  }|j                  j                   c}dhk(  sJ y y c c}w )NFr   xml_keep_tagsr   United Statesxml)r   r   textmetadatar   r
   detection_origin)r   	file_pathelementselements       a/var/www/html/answerous/venv/lib/python3.12/site-packages/test_unstructured/partition/test_xml.py test_partition_xml_from_filenamer      s     *IiuEHA;...A;((H444*AIJg  11JugUUU +Js   A=c                     t        t        d      dd      } | d   j                  dk(  sJ | d   j                  j                  dk(  sJ y )Nr   Ftest)r   metadata_filenamer   r   )r   r   r   r   r   )r   s    r   7test_partition_xml_from_filename_with_metadata_filenamer       sQ    (QWH A;...A;((F222    c                    t        |       }t        |d      5 }t        |d|      }d d d        d   j                  dk(  sJ |d   j                  j
                  | k(  sJ y # 1 sw Y   <xY wNrbFfiler   r   r   r   r   openr   r   r   r   r   r   fr   s       r   test_partition_xml_from_filer+   %   x     *I	i	 [! auPYZ[ A;...A;((H444	[ [   A""A+c                     t        t        d      d      5 } t        | dd      }d d d        d   j                  dk(  sJ |d   j                  j
                  dk(  sJ y # 1 sw Y   <xY w)Nr   r$   Fr   r%   r   r   )r(   r   r   r   r   r   r*   r   s     r   3test_partition_xml_from_file_with_metadata_filenamer0   /   st    	~.	5 X auPVWX A;...A;((F222	X Xs   A  A)c                    t        |       }t        |d      5 }t        |d|      }d d d        d   j                  dk(  sJ |d   j                  j
                  | k(  sJ y # 1 sw Y   <xY wr#   r'   r)   s       r   test_partition_xml_from_file_rbr2   7   r,   r-   c                    t        |       }t        |d      }d|d   j                  v sJ |d   j                  j                  | k(  sJ y )NTr   <leader>Joe Biden</leader>r   )r   r   r   r   r   )r   r   r   s      r   ;test_partition_xml_from_filename_with_tags_default_encodingr5   A   sN     *IitDH'8A;+;+;;;;A;((H444r!   c                     t        t        d            5 } | j                         }d d d        t        d      }d|d   j                  v sJ y # 1 sw Y   *xY w)Nr   T)r   r   r4   r   )r(   r   readr   r   )r*   r   r   s      r   &test_partition_xml_from_text_with_tagsr8   J   sV    	~.	/ 1vvx$d;H'8A;+;+;;;;	 s   AAc                     t        j                  t              5  t        t	        d      dd       d d d        y # 1 sw Y   y xY w)Nr   Tutf-8)r   encoding)pytestraisesUnicodeDecodeErrorr   r    r!   r   @test_partition_xml_from_filename_with_tags_raises_encoding_errorr@   R   s<    	)	* e&'<=T\cde e es	   ;Ac                    t        |       }t        |d      5 }t        |d|      }d d d        dd   j                  v sJ |d   j                  j
                  | k(  sJ y # 1 sw Y   ;xY wNr$   Tr%   r4   r   r'   r)   s       r   7test_partition_xml_from_file_with_tags_default_encodingrC   W   w     *I	i	 Z! atyYZ (8A;+;+;;;;A;((H444	Z Z   A!!A*c                    t        |       }t        |d      5 }t        |d|      }d d d        dd   j                  v sJ |d   j                  j
                  | k(  sJ y # 1 sw Y   ;xY wrB   r'   r)   s       r   :test_partition_xml_from_file_rb_with_tags_default_encodingrG   a   rD   rE   c                     t        j                  t              5  t        t	        d      d      5 } t        | dd       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr   r$   Tr:   )r&   r   r;   )r<   r=   r>   r(   r   r   )r*   s    r   ?test_partition_xml_from_file_rb_with_tags_raises_encoding_errorrI   k   sb    	)	* "#894@ 	A" 	 	 	 s!   AAAA	AA%c                     dt        t        d            } t        fd| D              s-J d dt        | d   j                  j
                                y )Nzapplication/xmlr   c              3  P   K   | ]  }|j                   j                  k(    y w)N)r   filetype).0eXML_MIME_TYPEs     r   	<genexpr>zQtest_partition_xml_gets_the_XML_mime_type_in_metadata_filetype.<locals>.<genexpr>{   s      Fqzz""m3Fs   #&zExpected all elements to have 'z' as their filetype, but got: r   )r   r   allreprr   rL   )r   rO   s    @r   >test_partition_xml_gets_the_XML_mime_type_in_metadata_filetyperS   x   s_    %M-n=>HFXFF 
)- 9!%%../0	2Fr!   c                    d}| j                  d|       t        d      }|d   j                  j                  |k(  sJ y )N2029-07-05T09:24:281unstructured.partition.xml.get_last_modified_datereturn_valueexample-docs/factbook.xml)r   r   patchr   r   last_modified)mockermocked_last_modification_dater   s      r   Dtest_partition_xml_from_file_path_gets_last_modified_from_filesystemr_      sK    $9!
LL;2  
 &ABHA;--1NNNNr!   c                     t        dd      5 } t        |       }d d d        d   j                  j                  J y # 1 sw Y   %xY w)NrY   r$   )r&   r   r(   r   r   r\   r/   s     r   4test_partition_xml_from_file_gets_last_modified_Nonerb      sL    	)4	0 )A a() A;--555) )s	   >Ac                    d}d}| j                  d|       t        d|      }|d   j                  j                  |k(  sJ y )NrU   z2020-07-05T09:24:28rV   rW   rY   )r   metadata_last_modifiedr   rZ   )r]   filesystem_last_modifiedrd   r   s       r   @test_partition_xml_from_file_path_prefers_metadata_last_modifiedrf      sX    42
LL;Jb   ,5H
 A;--1GGGGr!   c                     t        dd      5 } t        | d      }d d d        d   j                  j                  dk(  sJ y # 1 sw Y   (xY w)NrY   r$   rU   )r&   rd   r   ra   r/   s     r   ;test_partition_xml_from_file_prefers_metadata_last_modifiedrh      sV    	)4	0 WA a@UVW A;--1FFFFW Ws   AAc                   t        |       }t        |d      }t        t        |            }t	        |      t	        |      k(  sJ |d   j
                  j                  |d   j
                  j                  k(  sJ |d   j
                  j                  |d   j
                  j                  k(  sJ t        t	        |            D ]  }||   ||   k(  rJ  y )NFr   r   r   )	r   r   r	   r   lenr   page_numberr   range)r   r   r   test_elementsis        r   test_partition_xml_with_jsonrp      s     *IiuEH"(8(BCMx=C....A;++}Q/?/H/H/T/TTTTA;((M!,<,E,E,N,NNNN3x=! /{mA..../r!   c                    d} t        |       }|d   t        d      k(  sJ t        |d   t              sJ t	        |d         j                  d      sJ t	        |d         j                         j                  d      sJ y )Nz<xml>
        <parrot>
            <name>Conure</name>
            <description>A conure is a very friendly bird.
            Conures are feathery and like to dance.
            </description>
        </parrot>
    </xml>rj   r   Conure   z!A conure is a very friendly bird.z'Conures are feathery and like to dance.)r   r   
isinstancer   str
startswithstripendswith)xml_textr   s     r   -test_partition_xml_with_narrative_line_breaksrz      s    H (+HA;%/)))hqk=111x{&&'JKKKx{!!#,,-VWWWr!   c                 |    t        d      } t        |       }t        | d      }t        |      }||k7  sJ ||k(  sJ y )Nr   by_title)chunking_strategy)r   r   r   )r   r   chunk_elementschunkss       r   +test_add_chunking_strategy_on_partition_xmlr      sH     0IY'H"9
KNH%FX%%%V###r!   c                 n    t        d      } t        |       }|d   j                  j                  dgk(  sJ y )Nr   r   eng)r   r   r   	languages)r   r   s     r   1test_partition_xml_element_metadata_has_languagesr      s6     0IY'HA;))eW444r!   c                     t        t        d      d      } | D cg c]  }|j                  j                   }}|dgddgdgdgdggk(  sJ y c c}w )Nzlanguage-docs/eng_spa_mult.xmlT)detect_language_per_elementr   spa)r   r   r   r   )r   r   langss      r   7test_partition_xml_respects_detect_language_per_elementr      se    9:X\H 8@@GW''@E@eWuenugwHHHH As   A)r   ru   )r]   r   ),__doc__
__future__r   r<   pytest_mockr   test_unstructured.unit_utilsr   unstructured.chunking.titler   unstructured.documents.elementsr   r   unstructured.partition.jsonr	   &unstructured.partition.utils.constantsr
   unstructured.partition.xmlr   unstructured.staging.baser   markparametrizer   r    r+   r0   r2   r5   r8   r@   rC   rG   rI   rS   r_   rb   rf   rh   rp   rz   r   r   r   r?   r!   r   <module>r      s   9 "  % 9 6 @ 6 V 4 6 n6K%LMV NV3 n6K%LM5 N53 n6K%LM5 N5 n6K%LM5 N5<e
 n6K%LM5 N5 n6K%LM5 N5
O6H G n6K%LM
/ N
/X"$5Ir!   