
    ,h                        d 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mZmZmZ ddlmZmZmZmZ ej,                  ej.                  ej0                  d	ZddZd Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z  e
de        e
de        e
de         e
de        e
de       y
)zMOPC-local oxml module to handle OPC-local concerns like relationship parsing.    )etree   )	NAMESPACERELATIONSHIP_TARGET_MODE   )	parse_xmlregister_element_cls)ST_ContentTypeST_ExtensionST_TargetMode	XsdAnyUriXsdId)BaseOxmlElementOptionalAttributeRequiredAttribute
ZeroOrMore)ctprrNc                 4    t        j                  | |||      S )N)encodingpretty_print
standaloner   tostring)elmr   r   r   s       O/var/www/html/Resume-Scraper/venv/lib/python3.12/site-packages/pptx/opc/oxml.pyoxml_tostringr      s    >>h\j     c                 6    t        j                  | dd      }|S )NUTF-8Tr   r   r   )part_elmxmls     r   serialize_part_xmlr%   %   s    
..G
ECJr   c                   4    e Zd ZdZ ede      Z ede      Zy)
CT_Defaultz~
    ``<Default>`` element, specifying the default content type to be applied
    to a part with the specified extension.
    	ExtensionContentTypeN)	__name__
__module____qualname____doc__r   r   	extensionr
   contentType r   r   r'   r'   *   s!    
 "+|<I#M>BKr   r'   c                   4    e Zd ZdZ ede      Z ede      Zy)CT_Overridezw
    ``<Override>`` element, specifying the content type to be applied for a
    part with the specified partname.
    PartNamer)   N)	r*   r+   r,   r-   r   r   partNamer
   r/   r0   r   r   r2   r2   4   s!    
 !Y7H#M>BKr   r2   c                       e Zd ZdZ ede      Z ede      Z ede      Z	 e
deej                        Zeej                  fd       Zy)	CT_Relationshipzl
    ``<Relationship>`` element, representing a single relationship from a
    source to a target part.
    IdTypeTarget
TargetMode)defaultc                 l    dt         d   z  }t        |      }||_        ||_        ||_        ||_        |S )z:
        Return a new ``<Relationship>`` element.
        z<Relationship xmlns="%s"/>r   )nsmapr   rIdreltype
target_ref
targetMode)clsr>   r?   targettarget_moder$   relationships          r   newzCT_Relationship.newI   sA    
 +U4[8 ~&"("-r   N)r*   r+   r,   r-   r   r   r>   r   r?   r@   r   r   RTMINTERNALrA   classmethodrF   r0   r   r   r6   r6   >   sX    
 D%
(C	2G"8Y7J"<UJ36<< 
 
r   r6   c                   H    e Zd ZdZ ed      ZddZed        Ze	d        Z
y)CT_Relationshipsz<`<Relationships>` element, the root element in a .rels file.pr:Relationshipc                     |rt         j                  nt         j                  }t        j	                  ||||      }| j                  |       y)zs
        Add a child ``<Relationship>`` element with attributes set according
        to parameter values.
        N)rG   EXTERNALrH   r6   rF   _insert_relationship)selfr>   r?   rC   is_externalrD   rE   s          r   add_relzCT_Relationships.add_rel\   s9    
 '2clls||&**3M!!,/r   c                 ,    t        dt        d   z        S )z)Return a new ``<Relationships>`` element.z<Relationships xmlns="%s"/>r   )r   r=   )rB   s    r   rF   zCT_Relationships.newe   s     6tDEEr   c                     t        | dd      S )z
        Return XML string for this element, suitable for saving in a .rels
        stream, not pretty printed and with an XML declaration at the top.
        r!   Tr"   )r   )rP   s    r   r$   zCT_Relationships.xmlj   s     TGEEr   N)F)r*   r+   r,   r-   r   rE   rR   rI   rF   propertyr$   r0   r   r   rK   rK   W   sA    F/0L0 F F F Fr   rK   c                   L    e Zd ZdZ ed      Z ed      Zd Zd Ze	d        Z
y)CT_Typeszr
    ``<Types>`` element, the container element for Default and Override
    elements in [Content_Types].xml.
    
ct:Defaultct:Overridec                 (    | j                  ||      S )zd
        Add a child ``<Default>`` element with attributes set to parameter
        values.
        )r.   r/   )_add_default)rP   extcontent_types      r   add_defaultzCT_Types.add_default|   s    
   3L IIr   c                 (    | j                  ||      S )ze
        Add a child ``<Override>`` element with attributes set to parameter
        values.
        )r4   r/   )_add_override)rP   partnamer]   s      r   add_overridezCT_Types.add_override   s    
 !!8!NNr   c                 4    dt         d   z  }t        |      }|S )z3
        Return a new ``<Types>`` element.
        z<Types xmlns="%s"/>r   )r=   r   )rB   r$   typess      r   rF   zCT_Types.new   s     
 $eDk1#r   N)r*   r+   r,   r-   r   r;   overrider^   rb   rI   rF   r0   r   r   rW   rW   s   s=    
 &G-(HJO  r   rW   rX   rY   zct:TypesrL   zpr:Relationships)NFN)!r-   lxmlr   	constantsr   NSr   rG   oxmlr   r	   oxml.simpletypesr
   r   r   r   r   oxml.xmlchemyr   r   r   r   OPC_CONTENT_TYPESOPC_RELATIONSHIPSOFC_RELATIONSHIPSr=   r   r%   r'   r2   r6   rK   rW   r0   r   r   <module>ro      s    T  G 2   




				
C CC/ Co 2F F8 B \: . ]K 0 Z * & 8 ')9 :r   