Ë
    \Rði	  ã                  óð   — d Z ddlmZ ddlmZmZmZmZ ddlm	Z	 ddl
mZmZ erddlmZ  e	j                  «       Z e	j"                  dd¬	«      Zej'                  e«       dd
„Zdd„Z	 	 d	 	 	 	 	 	 	 dd„Zy)zXML parser for python-docx.é    )Úannotations)ÚTYPE_CHECKINGÚDictÚTypeÚcast)Úetree)ÚNamespacePrefixedTagÚnsmap)ÚBaseOxmlElementTF)Úremove_blank_textÚresolve_entitiesc                óJ   — t        dt        j                  | t        «      «      S )z·Root lxml element obtained by parsing XML character string `xml`.

    The custom parser is used, so custom element classes are produced for elements in
    `xml` that have them.
    r   )r   r   Ú
fromstringÚoxml_parser)Úxmls    úK/var/www/html/Extract/venv/lib/python3.12/site-packages/docx/oxml/parser.pyÚ	parse_xmlr      s   € ô Ð!¤5×#3Ñ#3°C¼Ó#EÓFÐFó    c                ón   — | j                  d«      \  }}t        j                  t        |   «      }|||<   y)zóRegister an lxml custom element-class to use for `tag`.

    A instance of `cls` to be constructed when the oxml parser encounters an element
    with matching `tag`. `tag` is a string of the form `nspfx:tagroot`, e.g.
    `'w:document'`.
    ú:N)ÚsplitÚelement_class_lookupÚget_namespacer
   )ÚtagÚclsÚnspfxÚtagrootÚ	namespaces        r   Úregister_element_clsr       s3   € ð —Y‘Y˜s“^�N€Eˆ7Ü$×2Ñ2´5¸±<Ó@€IØ€IˆgÒr   Nc                óx   — t        | «      }|€|j                  }t        j                  |j                  ||¬«      S )al  Return a 'loose' lxml element having the tag specified by `nsptag_str`.

    The tag in `nsptag_str` must contain the standard namespace prefix, e.g. `a:tbl`.
    The resulting element is an instance of the custom element class for this tag name
    if one is defined. A dictionary of attribute values may be provided as `attrs`; they
    are set if present. All namespaces defined in the dict `nsdecls` are declared in the
    element using the key as the prefix and the value as the namespace name. If
    `nsdecls` is not provided, a single namespace declaration is added based on the
    prefix on `nsptag_str`.
    )Úattribr
   )r	   r
   r   ÚmakeelementÚ
clark_name)Ú
nsptag_strÚattrsÚnsdeclsÚnsptags       r   ÚOxmlElementr(   ,   s:   € ô " *Ó-€FØ€Ø—,‘,ˆÜ×"Ñ" 6×#4Ñ#4¸UÈ'Ð"ÓRÐRr   )r   zstr | bytesÚreturnz'BaseOxmlElement')r   Ústrr   zType['BaseOxmlElement'])NN)r$   r*   r%   úDict[str, str] | Noner&   r+   r)   z BaseOxmlElement | etree._Element)Ú__doc__Ú
__future__r   Útypingr   r   r   r   Úlxmlr   Údocx.oxml.nsr	   r
   Údocx.oxml.xmlchemyr   ÚElementNamespaceClassLookupr   Ú	XMLParserr   Úset_element_class_lookupr   r   r(   © r   r   ú<module>r6      s”   ðñ "å "ç 2Ó 2å ç 4áÝ2ð 9�u×8Ñ8Ó:Ð Øˆe�o‰o°ÀuÔM€Ø × $Ñ $Ð%9Ô :óGó	ð $(Ø%)ðSØðSà ðSð #ðSð &ô	Sr   