
    h	                        S r SSKJr  SSKJrJrJrJr  SSKJ	r	  SSK
JrJr  \(       a  SSKJr  \	R                  " 5       r\	R"                  " SSS	9r\R'                  \5        SS
 jrSS jr  S       SS jjrg)zXML parser for python-docx.    )annotations)TYPE_CHECKINGDictTypecast)etree)NamespacePrefixedTagnsmap)BaseOxmlElementTF)remove_blank_textresolve_entitiesc                L    [        S[        R                  " U [        5      5      $ )zRoot 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    B/var/www/html/env/lib/python3.13/site-packages/docx/oxml/parser.py	parse_xmlr      s     !5#3#3C#EFF    c                j    U R                  S5      u  p#[        R                  [        U   5      nXU'   g)zRegister 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       s/     YYs^NE$225<@Igr   Nc                r    [        U 5      nUc  UR                  n[        R                  UR                  XS9$ )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(   ,   s8     "*-F,,""6#4#4U"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 88: oouM  $ $%9 :G	 $(%)SS S #S &	Sr   