a
    ]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rTddlmZ e	 Ze	jddd	Zee d
ddddZdddddZdddd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_entitieszstr | bytesz'BaseOxmlElement')xmlreturnc                 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   L/var/www/html/assistant/venv/lib/python3.9/site-packages/docx/oxml/parser.py	parse_xml   s    r   strzType['BaseOxmlElement'])tagclsc                 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   NzDict[str, str] | Nonez BaseOxmlElement | etree._Element)
nsptag_strattrsnsdeclsr   c                 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   )NN)__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   
	  