
    j                     t   d dl mZ d dlZd dlZddlmZmZmZ ddlm	Z	 ddl
mZmZ ddlmZmZ dd	lmZmZ dd
lmZmZ ddlmZmZ ddlmZ ddlmZ ddlmZmZ ddlmZ  ej@                  g       Z!ddZ"ejF                   G d de$             Z%d Z&d Z'd Z(d Z)d Z*d Z+d Z,d Z-d Z.d Z/d Z0 e$       Z1y)    )partialN   )resultslistszips   )read_document_xml_element)empty_content_typesread_content_types_xml_element)read_relationships_xml_elementRelationships)read_numbering_xml_element	Numbering)read_styles_xml_elementStyles)read_endnotes_xml_elementread_footnotes_xml_elementread_comments_xml_element)Files)body_xml
office_xml)open_zipc                     t        | d      t              t        t        | dd       |      t	        j
                  t              t              g      j                  fd      S )Nrname)
part_pathsexternal_file_accessc                 0    t        | d   | d         S )Nr   r   )notescommentsr   )_read_document)	referentsr   read_part_with_bodyzip_files    V/root/aria/tools/markitdown-venv/lib/python3.12/site-packages/mammoth/docx/__init__.py<lambda>zread.<locals>.<lambda>#   s%    x!4IaLS\]^S_lvw     )	r   _find_part_paths_part_with_body_readergetattrr   combine_read_notes_read_commentsbind)fileobjr   r   r$   r%   s     @@@r&   readr1      sy    %H!(+J0&1	 ??'4*J7  t x r(   c                       e Zd Z ej                         Z ej                         Z ej                         Z ej                         Z ej                         Z	 ej                         Z
y)
_PartPathsN)__name__
__module____qualname__cobblefieldmain_documentr!   endnotes	footnotes	numberingstyles r(   r&   r3   r3   (   sP     FLLNMv||~Hv||~HIIV\\^Fr(   r3   c           
           t         d      }t         |      t         t                     fd}t         |d       |d       |d       |d       |d            S )	Nz_rels/.relsc           	      t    t        d| z   dj                  |       t        j                        d         S )NzDhttp://schemas.openxmlformats.org/officeDocument/2006/relationships/zword/{0}.xmlr   )r%   relationshipsrelationship_typefallback_path	base_path)_find_part_pathformatr   
split_path)r   document_filenamedocument_relationshipsr%   s    r&   findz_find_part_paths.<locals>.find;   s?    0dgkk(//5oo&78;
 	
r(   r!   r:   r;   r<   r=   )r9   r!   r:   r;   r<   r=   )_read_relationships_find_document_filename_find_relationships_path_forr3   )r%   package_relationshipsrJ   rH   rI   s   `  @@r&   r)   r)   2   ss    /-H/:OP0$%67

 'j!j!{#{#H~ r(   c                 ^    t        | |ddd      }| j                  |      r|S t        d      )NzRhttp://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument zword/document.xml)rB   rD   rC   zKCould not find main document part. Are you sure this is a valid .docx file?)rE   existsIOError)r%   rA   paths      r&   rL   rL   N   s:    n)D tcddr(   c                      |j                  |      D cg c]'  }t        j                  ||      j                  d      ) }}t	        t         fd|            }t        |      dk(  r|S |d   S c c}w )N/c                 &    j                  |       S N)rQ   )targetr%   s    r&   r'   z!_find_part_path.<locals>.<lambda>a   s    xv/F r(   r   )find_targets_by_typer   	join_pathlstriplistfilterlen)r%   rA   rB   rD   rC   rX   targetsvalid_targetss   `       r&   rE   rE   \   s{     $889JK 	y&)005G   FPQM
=QQs   ,A0c                      | |j                   d t              } | |j                  d t              }t        j                  ||g      j                  t        j                        S )Nc                     t        | |      S Nbody_reader)r   rootre   s     r&   r'   z_read_notes.<locals>.<lambda>k   s    "<T{"[ r(   defaultc                     t        | |      S rc   )r   rf   s     r&   r'   z_read_notes.<locals>.<lambda>p       ";Dk"Z r(   )r;   _empty_resultr:   r   r,   mapr   flatten)r$   r   r;   r:   s       r&   r-   r-   h   s[    #[I
 #ZH ??Ix0155emmDDr(   c                 6     | |j                   d t              S )Nc                     t        | |      S rc   r   rf   s     r&   r'   z _read_comments.<locals>.<lambda>z   rk   r(   rh   )r!   rl   )r$   r   s     r&   r.   r.   w   s    Z r(   c                 H     ||j                   t        t        ||            S )N)r    r!   )r9   r   r	   )r%   r$   r    r!   r   s        r&   r"   r"      s)      %	
 r(   c                 ^   t        dt        t              t        |j                  t        t
        j                        t        |j                  fdt        j                        t        | d nt        j                  j                  |       |      t        ffd	}|S )Nz[Content_Types].xmlc                     t        |       S )N)r=   )r   )elementr=   s    r&   r'   z(_part_with_body_reader.<locals>.<lambda>   s    276J r(   rh   )r   c                     t        	t        |             }t        j                  |	      }|t        u rt        	| t        ||            S t        	| t        ||      |      S )N)r<   content_typesrA   r=   	docx_filefilesrd   rh   )rK   rM   r   reader
_undefined_read_entryr   _try_read_entry_or_default)
r   ry   ri   rA   re   rv   rx   r<   r=   r%   s
        r&   	read_partz)_part_with_body_reader.<locals>.read_part   sp    +H6RSW6XYoo''
 j xwv;/WXX-hgfZe>fpwxxr(   )r|   r   r
   r=   r   r   EMPTYr<   r   r   osrS   dirnamerz   )	document_pathr%   r   r   r}   rv   rx   r<   r=   s	    `   @@@@r&   r*   r*      s    .&	M (	F +J	I %277??=+I1E
 )3 y y" r(   c                 f    t        j                  |       \  }}t        j                  |d|dz         S )N_relsz.rels)r   rG   rZ   )r   r   basenames      r&   rM   rM      s-    -GX>>'7Hw,>??r(   c                 D    t        | |t        t        j                        S )Nrh   )r|   r   r   r~   )r%   r   s     r&   rK   rK      s!    %&##	 r(   c                 B    | j                  |      rt        | ||      S |S rW   )rQ   r{   )r%   r   ry   ri   s       r&   r|   r|      s"    t8T622r(   c                     | j                  |      5 } |t        j                  |            cd d d        S # 1 sw Y   y xY wrW   )openr   r1   )r%   r   ry   r0   s       r&   r{   r{      s6    	t	 0joog./0 0 0s	   7A )F)2	functoolsr   r   r7   rP   r   r   r   document_xmlr	   content_types_xmlr
   r   relationships_xmlr   r   numbering_xmlr   r   
styles_xmlr   r   	notes_xmlr   r   comments_xmlr   rx   r   r   r   r   successrl   r1   dataobjectr3   r)   rL   rE   r-   r.   r"   r*   rM   rK   r|   r{   rz   r>   r(   r&   <module>r      s     	  # # 3 R L @ 7 L 3  "   #$   8e	 E,`@
0
 X
r(   