o
    j	                     @  s   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	 Ze	jddd	Zee dddZdddZ		d d!ddZdS )"zXML parser for python-docx.    )annotations)TYPE_CHECKINGDictTypecast)etree)NamespacePrefixedTagnsmap)BaseOxmlElementTF)Zremove_blank_textZresolve_entitiesxmlstr | bytesreturn'BaseOxmlElement'c                 C  s   t dt| tS )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   Z
fromstringoxml_parser)r    r   Q/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/docx/oxml/parser.py	parse_xml   s   r   tagstrclsType['BaseOxmlElement']c                 C  s(   |  d\}}tt| }|||< dS )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_lookupZget_namespacer	   )r   r   ZnspfxZtagroot	namespacer   r   r   register_element_cls    s   r   N
nsptag_strattrsDict[str, str] | Nonensdecls BaseOxmlElement | etree._Elementc                 C  s(   t | }|du r|j}tj|j||d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`.
    N)Zattribr	   )r   r	   r   ZmakeelementZ
clark_name)r   r   r   Znsptagr   r   r   OxmlElement,   s   r!   )r   r   r   r   )r   r   r   r   )NN)r   r   r   r   r   r   r   r    )__doc__
__future__r   typingr   r   r   r   Zlxmlr   Zdocx.oxml.nsr   r	   Zdocx.oxml.xmlchemyr
   ZElementNamespaceClassLookupr   Z	XMLParserr   Zset_element_class_lookupr   r   r!   r   r   r   r   <module>   s   


	