
    kh                     r   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 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_pathsc                 0    t        | d   | d         S )Nr   r   )notescommentsr   )_read_document)	referentsr   read_part_with_bodyzip_files    Q/var/www/teggl/fontify/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$   s    @@@r%   readr0      sv    %H!(+J0& ??'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%   r2   r2   '   sP     FLLNMv||~Hv||~HIIV\\^Fr'   r2   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    r9   r:   r;   r<   )r8   r    r9   r:   r;   r<   )_read_relationships_find_document_filename_find_relationships_path_forr2   )r$   package_relationshipsrI   rG   rH   s   `  @@r%   r(   r(   1   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)rA   rC   rB   zKCould not find main document part. Are you sure this is a valid .docx file?)rD   existsIOError)r$   r@   paths      r%   rK   rK   M   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)rP   )targetr$   s    r%   r&   z!_find_part_path.<locals>.<lambda>`   s    xv/F r'   r   )find_targets_by_typer   	join_pathlstriplistfilterlen)r$   r@   rA   rC   rB   rW   targetsvalid_targetss   `       r%   rD   rD   [   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   rootrd   s     r%   r&   z_read_notes.<locals>.<lambda>j   s    "<T{"[ r'   defaultc                     t        | |      S rb   )r   re   s     r%   r&   z_read_notes.<locals>.<lambda>o       ";Dk"Z r'   )r:   _empty_resultr9   r   r+   mapr   flatten)r#   r   r:   r9   s       r%   r,   r,   g   s[    #[I
 #ZH ??Ix0155emmDDr'   c                 6     | |j                   d t              S )Nc                     t        | |      S rb   r   re   s     r%   r&   z _read_comments.<locals>.<lambda>y   rj   r'   rg   )r    rk   )r#   r   s     r%   r-   r-   v   s    Z r'   c                 H     ||j                   t        t        ||            S )N)r   r    )r8   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        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'   rg   c                 ,   t        	t        |             }t        j                  |	t	        d nt
        j                  j                                    }|t        u rt        	| t        ||            S t        	| t        ||      |      S )N)r;   content_typesr@   r<   	docx_filefilesrc   rg   )rJ   rL   r   readerr   osrR   dirname
_undefined_read_entryr   _try_read_entry_or_default)
r   rx   rh   r@   rd   ru   document_pathr;   r<   r$   s
        r%   	read_partz)_part_with_body_reader.<locals>.read_part   s    +H6RSW6XYoo'' 5277??=;YZ
 j xwv;/WXX-hgfZe>fpwxxr'   )
r}   r   r
   r<   r   r   EMPTYr;   r   r{   )r~   r$   r   r   ru   r;   r<   s   ``  @@@r%   r)   r)      sv    .&	M (	F +J	I )3 y y" r'   c                 f    t        j                  |       \  }}t        j                  |d|dz         S )N_relsz.rels)r   rF   rY   )r   rz   basenames      r%   rL   rL      s-    -GX>>'7Hw,>??r'   c                 D    t        | |t        t        j                        S )Nrg   )r}   r   r   r   )r$   r   s     r%   rJ   rJ      s!    %&##	 r'   c                 B    | j                  |      rt        | ||      S |S rV   )rP   r|   )r$   r   rx   rh   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rV   )openr   r0   )r$   r   rx   r/   s       r%   r|   r|      s6    	t	 0joog./0 0 0s	   7A )2	functoolsr   ry   r6   rO   r   r   r   document_xmlr	   content_types_xmlr
   r   relationships_xmlr   r   numbering_xmlr   r   
styles_xmlr   r   	notes_xmlr   r   comments_xmlr   rw   r   r   r   r   successrk   r0   dataobjectr2   r(   rK   rD   r,   r-   r!   r)   rL   rJ   r}   r|   r{   r=   r'   r%   <module>r      s     	  # # 3 R L @ 7 L 3  "   #"   8e	 E'V@
0
 X
r'   