
    li                       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rdd
lmZ ej<                  ej>                  ej@                  dZ!	 	 	 d	 	 	 	 	 	 	 	 	 d dZ"	 	 	 d!	 	 	 	 	 	 	 d"dZ#d#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.    )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rNc                4    t        j                  | |||      S N)encodingpretty_print
standaloner   tostring)elementr   r   r   s       K/var/www/html/eduruby.in/venv/lib/python3.12/site-packages/pptx/opc/oxml.pyoxml_to_encoded_bytesr"   $   s     >>(*     c                4    t        j                  | |||      S r   r   )elmr   r   r   s       r!   oxml_tostringr&   /   s     >>#|Xbccr#   c                2    t        j                  | 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   )part_elms    r!   serialize_part_xmlr+   8   s    
 >>(WFFr#   c                  J    e Zd ZU dZ ede      Zded<    ede      Z	ded<   y)
CT_Defaultzw`<Default>` element.

    Specifies the default content type to be applied to a part with the specified extension.
    	Extensionstr	extensionContentTypecontentTypeN)
__name__
__module____qualname____doc__r   r   r0   __annotations__r   r2    r#   r!   r-   r-   @   s7    
 '\Is  )~K r#   r-   c                  J    e Zd ZU dZ ede      Zded<    ede      Z	ded<   y)CT_Overridezp`<Override>` element.

    Specifies the content type to be applied for a part with the specified partname.
    PartNamer/   partNamer1   r2   N)
r3   r4   r5   r6   r   r   r<   r7   r   r2   r8   r#   r!   r:   r:   N   s7    
 &IHc  )~K r#   r:   c                      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                  
      Zded<   eej                  f	 	 	 	 	 	 	 	 	 dd       Zy)CT_Relationshipzd`<Relationship>` element.

    Represents a single relationship from a source to a target part.
    Idr/   rIdTypereltypeTarget
target_ref
TargetMode)default
targetModec                    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@   rB   rD   rG   )clsr@   rB   rD   target_moderelationships         r!   newzCT_Relationship.newk   sK     OY9NuUY{m[^7_-`a&","-r#   N)
r@   r/   rB   r/   rD   r/   rL   r/   returnr>   )r3   r4   r5   r6   r   r   r@   r7   r   rB   rD   r   r   RTMINTERNALrG   classmethodrN   r8   r#   r!   r>   r>   \   s    
 !u-C-$VY7GS7')J  (mS\\J  IL #14CF	 r#   r>   c                  x    e Zd ZU dZded<   ded<    ed      Z	 d	 	 	 	 	 	 	 	 	 ddZedd       Z	e
dd	       Zy
)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:Relationshipc                    |rt         j                  nt         j                  }t        j	                  ||||      }| j                  |      S )zFAdd a child `<Relationship>` element with attributes set as specified.)rP   EXTERNALrQ   r>   rN   rV   )selfr@   rB   targetis_externalrL   rM   s          r!   add_relzCT_Relationships.add_rel   s<     '2clls||&**3M((66r#   c                J    t        t        t        dt        d    d            S )z'Return a new `<Relationships>` element.z<Relationships xmlns="r   rI   )r   rT   r
   rJ   rK   s    r!   rN   zCT_Relationships.new   s&     $i2HtUX0Y&Z[[r#   c                    t        | 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"   )rZ   s    r!   xml_file_byteszCT_Relationships.xml_file_bytes   s     %TGMMr#   N)F)
r@   r/   rB   r/   r[   r/   r\   boolrO   r>   )rO   rT   )rO   bytes)r3   r4   r5   r6   r7   r   rM   r]   rR   rN   propertyra   r8   r#   r!   rT   rT   {   s|    F++FF/0L HM77!$7.17@D7	7 \ \ N Nr#   rT   c                  |    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ZddZ	e
dd       Zy)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:Overridec                (    | j                  ||      S )zHAdd a child `<Default>` element with attributes set to parameter values.)r0   r2   )ri   )rZ   extcontent_types      r!   add_defaultzCT_Types.add_default   s      3L IIr#   c                (    | j                  ||      S )zIAdd a child `<Override>` element with attributes set to parameter values.)r<   r2   )rj   )rZ   partnamero   s      r!   add_overridezCT_Types.add_override   s    !!8!NNr#   c                J    t        t        t        dt        d    d            S )zReturn a new `<Types>` element.z<Types xmlns="r   rI   )r   rf   r
   rJ   r_   s    r!   rN   zCT_Types.new   s#     Hi.tS(IJKKr#   N)rn   r/   ro   r/   rO   r-   )rr   r   ro   r/   rO   r:   )rO   rf   )r3   r4   r5   r6   r7   r   rF   overriderp   rs   rR   rN   r8   r#   r!   rf   rf      sW    
 "!##++--&G-(HJO L Lr#   rf   rk   rl   zct:TypesrW   zpr:Relationships)zutf-8FN)
r    r   r   r/   r   rb   r   bool | NonerO   rc   )NFN)r%   r   r   z
str | Noner   rb   r   rv   )r*   r   rO   rc   )*r6   
__future__r   typingr   r   r   lxmlr   pptx.opc.constantsr   NSr	   rP   	pptx.oxmlr
   r   pptx.oxml.simpletypesr   r   r   r   r   pptx.oxml.xmlchemyr   r   r   r   pptx.opc.packurir   OPC_CONTENT_TYPESOPC_RELATIONSHIPSOFC_RELATIONSHIPSrJ   r"   r&   r+   r-   r:   r>   rT   rf   r8   r#   r!   <module>r      sQ   S " 0 0  . > 5   ( 




				 "	  	
   "	d	dd d 	dG / o >N N>L L: \: . ]K 0 Z * & 8 ')9 :r#   