o
    7 h                     @  sb  d Z ddlmZ ddlmZmZm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mZmZmZmZ dd	lmZmZmZmZ erNdd
lmZ ejejej dZ!			d1d2ddZ"			d3d4ddZ#d5d d!Z$G d"d# d#eZ%G d$d% d%eZ&G d&d' d'eZ'G d(d) d)eZ(G d*d+ d+eZ)ed,e% ed-e& ed.e) ed/e' ed0e( dS )6zMOPC-local oxml module to handle OPC-local concerns like relationship parsing.    )annotations)TYPE_CHECKINGCallablecast)etree)	NAMESPACE)RELATIONSHIP_TARGET_MODE)	parse_xmlregister_element_cls)ST_ContentTypeST_ExtensionST_TargetMode	XsdAnyUriXsdId)BaseOxmlElementOptionalAttributeRequiredAttribute
ZeroOrMore)PackURI)ctprrutf-8FNelementr   encodingstrpretty_printbool
standalonebool | Nonereturnbytesc                 C     t j| |||dS N)r   r   r   r   tostring)r   r   r   r    r&   U/var/www/html/figdemos/bartoux_crm/venv/lib/python3.10/site-packages/pptx/opc/oxml.pyoxml_to_encoded_bytes$   s   r(   elm
str | Nonec                 C  r"   r#   r$   )r)   r   r   r   r&   r&   r'   oxml_tostring/   s   r+   part_elmc                 C  s   t j| dddS )zProduce XML-file bytes for `part_elm`, suitable for writing directly to a `.xml` file.

    Includes XML-declaration header.
    UTF-8Tr   r   r$   )r,   r&   r&   r'   serialize_part_xml8   s   r/   c                   @  6   e Zd ZU dZedeZded< edeZ	ded< dS )
CT_Defaultzw`<Default>` element.

    Specifies the default content type to be applied to a part with the specified extension.
    	Extensionr   	extensionContentTypecontentTypeN)
__name__
__module____qualname____doc__r   r   r3   __annotations__r   r5   r&   r&   r&   r'   r1   @      
 r1   c                   @  r0   )CT_Overridezp`<Override>` element.

    Specifies the content type to be applied for a part with the specified partname.
    ZPartNamer   partNamer4   r5   N)
r6   r7   r8   r9   r   r   r=   r:   r   r5   r&   r&   r&   r'   r<   N   r;   r<   c                   @  st   e Zd ZU dZedeZded< edeZ	ded< edeZ
ded< ed	eejd
Zded< eejfdddZdS )CT_Relationshipzd`<Relationship>` element.

    Represents a single relationship from a source to a target part.
    ZIdr   rIdTypereltypeZTarget
target_refZ
TargetMode)default
targetModetarget_moder    c                 C  s6   t ttdtd  d}||_||_||_||_|S )zdReturn a new `<Relationship>` element.

        `target_ref` is either a partname or a URI.
        z<Relationship xmlns="r   "/>)r   r>   r	   nsmapr?   rA   rB   rD   )clsr?   rA   rB   rE   relationshipr&   r&   r'   newk   s   zCT_Relationship.newN)
r?   r   rA   r   rB   r   rE   r   r    r>   )r6   r7   r8   r9   r   r   r?   r:   r   rA   rB   r   r   RTMINTERNALrD   classmethodrJ   r&   r&   r&   r'   r>   \   s   
 r>   c                   @  sT   e Zd ZU dZded< ded< edZ	ddddZedddZ	e
dddZdS )CT_Relationshipsz<`<Relationships>` element, the root element in a .rels file.zlist[CT_Relationship]relationship_lstz,Callable[[CT_Relationship], CT_Relationship]_insert_relationshippr:RelationshipFr?   r   rA   targetis_externalr   r    r>   c                 C  s*   |rt jnt j}t||||}| |S )zFAdd a child `<Relationship>` element with attributes set as specified.)rK   EXTERNALrL   r>   rJ   rP   )selfr?   rA   rR   rS   rE   rI   r&   r&   r'   add_rel   s   
zCT_Relationships.add_relc                 C     t ttdtd  dS )z'Return a new `<Relationships>` element.z<Relationships xmlns="r   rF   )r   rN   r	   rG   rH   r&   r&   r'   rJ         zCT_Relationships.newr!   c                 C  s   t | dddS )zReturn XML bytes, with XML-declaration, for this `<Relationships>` element.

        Suitable for saving in a .rels stream, not pretty printed and with an XML declaration at
        the top.
        r-   Tr.   )r(   )rU   r&   r&   r'   xml_file_bytes   s   zCT_Relationships.xml_file_bytesN)F)
r?   r   rA   r   rR   r   rS   r   r    r>   )r    rN   )r    r!   )r6   r7   r8   r9   r:   r   rI   rV   rM   rJ   propertyrZ   r&   r&   r&   r'   rN   {   s   
 rN   c                   @  sd   e Zd ZU dZded< ded< ded< ded	< ed
ZedZdddZdddZ	e
dddZdS )CT_Typeszl`<Types>` element.

    The container element for Default and Override elements in [Content_Types].xml.
    zlist[CT_Default]default_lstzlist[CT_Override]override_lstzCallable[..., CT_Default]_add_defaultzCallable[..., CT_Override]_add_override
ct:Defaultct:Overrideextr   content_typer    r1   c                 C     | j ||dS )zHAdd a child `<Default>` element with attributes set to parameter values.)r3   r5   )r_   )rU   rc   rd   r&   r&   r'   add_default      zCT_Types.add_defaultpartnamer   r<   c                 C  re   )zIAdd a child `<Override>` element with attributes set to parameter values.)r=   r5   )r`   )rU   rh   rd   r&   r&   r'   add_override   rg   zCT_Types.add_overridec                 C  rW   )zReturn a new `<Types>` element.z<Types xmlns="r   rF   )r   r\   r	   rG   rX   r&   r&   r'   rJ      rY   zCT_Types.newN)rc   r   rd   r   r    r1   )rh   r   rd   r   r    r<   )r    r\   )r6   r7   r8   r9   r:   r   rC   overriderf   ri   rM   rJ   r&   r&   r&   r'   r\      s   
 

r\   ra   rb   zct:TypesrQ   zpr:Relationships)r   FN)
r   r   r   r   r   r   r   r   r    r!   )NFN)r)   r   r   r*   r   r   r   r   )r,   r   r    r!   )*r9   
__future__r   typingr   r   r   Zlxmlr   pptx.opc.constantsr   ZNSr   rK   	pptx.oxmlr	   r
   Zpptx.oxml.simpletypesr   r   r   r   r   pptx.oxml.xmlchemyr   r   r   r   pptx.opc.packurir   OPC_CONTENT_TYPESOPC_RELATIONSHIPSOFC_RELATIONSHIPSrG   r(   r+   r/   r1   r<   r>   rN   r\   r&   r&   r&   r'   <module>   sD    	
	



