o
    Ëý°j$2  ã                   @   s�   d dl mZmZmZ d dlmZ d dlZd dlmZ ddlm	Z	 ddlm
Z
 dd	lmZ dd
lmZ ddlmZ e d¡Zddd„ZeeƒZdS )é    )Úabsolute_importÚdivisionÚunicode_literals)Ú	text_typeN)Úcopyé   )Úbaseé   )Ú	_ihatexml)Ú	constants)Ú
namespaces)ÚmoduleFactoryFactoryz{([^}]*)}(.*)Fc              	      sº   ˆ‰ˆ  d¡j‰G ‡fdd„dtjƒ‰G ‡fdd„dˆƒ‰ G ‡fdd„dˆƒ‰G ‡fdd	„d	ˆƒ‰G ‡fd
d„dˆƒ‰‡fdd„‰	‡‡fdd„}G ‡ ‡‡‡‡‡‡‡	fdd„dtjƒ}tƒ S )NÚasdc                       sÄ   e Zd Zd$‡ fdd„	Zdd„ Zdd„ Zdd	„ ZeeeƒZd
d„ Z	dd„ Z
ee
e	ƒZdd„ Zdd„ ZeeeƒZdd„ Zdd„ ZeeeƒZdd„ Zdd„ Zdd„ Zdd„ Zd$dd„Zd d!„ Zd"d#„ ZdS )%z getETreeBuilder.<locals>.ElementNc                    s^   || _ || _ˆ  |  ||¡¡| _|d u rtd | j f| _n| j| j f| _d | _g | _g | _	d S )NÚhtml)
Ú_nameÚ
_namespaceÚElementÚ_getETreeTagÚ_elementr   Ú	nameTupleÚparentÚ_childNodesÚ_flags)ÚselfÚnameÚ	namespace©ÚElementTree© úš/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/pip/_vendor/html5lib/treebuilders/etree.pyÚ__init__   s   
ÿ
z)getETreeBuilder.<locals>.Element.__init__c                 S   s    |d u r|}|S d||f }|S )Nú{%s}%sr   )r   r   r   Ú	etree_tagr   r   r   r   %   s
   ÿz-getETreeBuilder.<locals>.Element._getETreeTagc                 S   s   || _ |  | j | j¡| j_d S ©N)r   r   r   r   Útag)r   r   r   r   r   Ú_setName,   ó   z)getETreeBuilder.<locals>.Element._setNamec                 S   ó   | j S r#   )r   ©r   r   r   r   Ú_getName0   ó   z)getETreeBuilder.<locals>.Element._getNamec                 S   s   || _ |  | j| j ¡| j_d S r#   )r   r   r   r   r$   )r   r   r   r   r   Ú_setNamespace5   r&   z.getETreeBuilder.<locals>.Element._setNamespacec                 S   r'   r#   )r   r(   r   r   r   Ú_getNamespace9   r*   z.getETreeBuilder.<locals>.Element._getNamespacec                 S   ó   | j jS r#   )r   Úattribr(   r   r   r   Ú_getAttributes>   ó   z/getETreeBuilder.<locals>.Element._getAttributesc                 S   sZ   | j j}| ¡  |r)| ¡ D ]\}}t|tƒr"d|d |d f }n|}|||< qd S d S )Nr!   r	   r   )r   r.   ÚclearÚitemsÚ
isinstanceÚtuple)r   Ú
attributesÚ	el_attribÚkeyÚvaluer   r   r   r   Ú_setAttributesA   s   

øz/getETreeBuilder.<locals>.Element._setAttributesc                 S   r'   r#   )r   r(   r   r   r   Ú_getChildNodesP   r*   z/getETreeBuilder.<locals>.Element._getChildNodesc                 S   s*   | j d d …= g | _|D ]}|  |¡ qd S r#   )r   r   ÚinsertChild)r   r8   Úelementr   r   r   Ú_setChildNodesS   s
   ÿz/getETreeBuilder.<locals>.Element._setChildNodesc                 S   s   t | jjp	t| jƒƒS )z,Return true if the node has children or text)Úboolr   ÚtextÚlenr(   r   r   r   Ú
hasContent[   s   z+getETreeBuilder.<locals>.Element.hasContentc                 S   s$   | j  |¡ | j |j¡ | |_d S r#   )r   Úappendr   r   ©r   Únoder   r   r   ÚappendChild_   ó   
z,getETreeBuilder.<locals>.Element.appendChildc                 S   s,   t | jƒ |j¡}| j ||j¡ | |_d S r#   )Úlistr   ÚindexÚinsertr   )r   rD   ÚrefNoderH   r   r   r   ÚinsertBefored   s   
z-getETreeBuilder.<locals>.Element.insertBeforec                 S   s$   | j  |¡ | j |j¡ d |_d S r#   )r   Úremover   r   rC   r   r   r   ÚremoveChildi   rF   z,getETreeBuilder.<locals>.Element.removeChildc                 S   sä   t | jƒs| jjsd| j_| j j|7  _d S |d u r3| jd js'd| jd _| jd  j|7  _d S t| jƒ}| |j¡}|dkr`| j|d  jsRd| j|d  _| j|d   j|7  _d S | jjshd| j_| j j|7  _d S )NÚ éÿÿÿÿr   r   )r@   r   r?   ÚtailrG   rH   )r   ÚdatarK   ÚchildrenrH   r   r   r   Ú
insertTextn   s"   

z+getETreeBuilder.<locals>.Element.insertTextc                 S   s.   t | ƒ| j| jƒ}| jjrt| jjƒ|j_|S r#   )Útyper   r   r   r.   r   ©r   r<   r   r   r   Ú	cloneNode…   s   z*getETreeBuilder.<locals>.Element.cloneNodec                 S   sl   |j r|j d j j| jj7  _n|jjsd|j_| jjd ur)|j j| jj7  _d| j_tj | |¡ d S )NrO   rN   )Ú
childNodesr   rP   r?   r   ÚNodeÚreparentChildren)r   Ú	newParentr   r   r   rY   ‹   s   z1getETreeBuilder.<locals>.Element.reparentChildrenr#   )Ú__name__Ú
__module__Ú__qualname__r    r   r%   r)   Úpropertyr   r+   r,   r   r/   r9   r5   r:   r=   rW   rA   rE   rK   rM   rS   rV   rY   r   r   r   r   r      s,    




r   c                       s2   e Zd Z‡ fdd„Zdd„ Zdd„ ZeeeƒZdS )z getETreeBuilder.<locals>.Commentc                    s"   ˆ   |¡| _d | _g | _g | _d S r#   )ÚCommentr   r   r   r   )r   rQ   r   r   r   r    —   s   
z)getETreeBuilder.<locals>.Comment.__init__c                 S   r-   r#   ©r   r?   r(   r   r   r   Ú_getDataŸ   r0   z)getETreeBuilder.<locals>.Comment._getDatac                 S   s   || j _d S r#   r`   ©r   r8   r   r   r   Ú_setData¢   s   z)getETreeBuilder.<locals>.Comment._setDataN)r[   r\   r]   r    ra   rc   r^   rQ   r   r   r   r   r_   –   s
    r_   c                       sL   e Zd Z‡ fdd„Zdd„ Zdd„ ZeeeƒZdd„ Zd	d
„ Z	eee	ƒZ
dS )z%getETreeBuilder.<locals>.DocumentTypec                    s$   ˆ   | d¡ || j_|| _|| _d S )Nú
<!DOCTYPE>)r    r   r?   ÚpublicIdÚsystemId)r   r   re   rf   ©r   r   r   r    ¨   s   
z.getETreeBuilder.<locals>.DocumentType.__init__c                 S   ó   | j  dd¡S )Nre   rN   ©r   Úgetr(   r   r   r   Ú_getPublicId®   ó   z2getETreeBuilder.<locals>.DocumentType._getPublicIdc                 S   ó   |d ur| j  d|¡ d S d S )Nre   ©r   Úsetrb   r   r   r   Ú_setPublicId±   ó   ÿz2getETreeBuilder.<locals>.DocumentType._setPublicIdc                 S   rh   )Nrf   rN   ri   r(   r   r   r   Ú_getSystemId·   rl   z2getETreeBuilder.<locals>.DocumentType._getSystemIdc                 S   rm   )Nrf   rn   rb   r   r   r   Ú_setSystemIdº   rq   z2getETreeBuilder.<locals>.DocumentType._setSystemIdN)r[   r\   r]   r    rk   rp   r^   re   rr   rs   rf   r   rg   r   r   ÚDocumentType§   s    
rt   c                       ó   e Zd Z‡ fdd„ZdS )z!getETreeBuilder.<locals>.Documentc                    ó   ˆ   | d¡ d S )NÚDOCUMENT_ROOT©r    r(   rg   r   r   r    Á   ó   z*getETreeBuilder.<locals>.Document.__init__N©r[   r\   r]   r    r   rg   r   r   ÚDocumentÀ   ó    r{   c                       ru   )z)getETreeBuilder.<locals>.DocumentFragmentc                    rv   )NÚDOCUMENT_FRAGMENTrx   r(   rg   r   r   r    Å   ry   z2getETreeBuilder.<locals>.DocumentFragment.__init__Nrz   r   rg   r   r   ÚDocumentFragmentÄ   r|   r~   c                    s*   g ‰ d‡‡ ‡fdd„	‰ˆ| dƒ d  ˆ ¡S )Nr   c                    s†  t | dƒs	|  ¡ } | jdkr<|  d¡s|  d¡r2|  d¡pd}|  d¡p%d}ˆ d| j||f ¡ nìˆ d| jf ¡ nâ| jdkrqˆ d	¡ | jd urYˆ d
d|d  | jf ¡ | jd urbtdƒ‚t | dƒrpt| j	ƒrptdƒ‚n­| jˆ krƒˆ dd| | jf ¡ n›t
| jtƒs•J dt| jƒ| jf ƒ‚t | j¡}|d u r£| j}n| ¡ \}}tj| }d||f }ˆ dd| |f ¡ t | dƒ�rg }| j	 ¡ D ](\}}	t |¡}|d urë| ¡ \}}tj| }d||f }
n|}
| |
|	f¡ qÌt|ƒD ]\}}	ˆ dd|d  ||	f ¡ qù| j�rˆ d
d|d  | jf ¡ |d7 }| D ]}ˆ||ƒ �q$| j�rAˆ d
d|d  | jf ¡ d S d S )Nr$   rd   re   rf   rN   z<!DOCTYPE %s "%s" "%s">ú<!DOCTYPE %s>rw   z	#documentz|%s"%s"ú r	   úDocument node cannot have tailr.   ú$Document node cannot have attributesz|%s<!-- %s -->zExpected unicode, got %s, %sz%s %sz|%s<%s>z
|%s%s="%s")ÚhasattrÚgetrootr$   rj   rB   r?   rP   Ú	TypeErrorr@   r.   r3   r   rT   Ú
tag_regexpÚmatchÚgroupsr   Úprefixesr2   Úsorted)r<   Úindentre   rf   Únsmatchr   ÚnsÚprefixr5   r8   Úattr_stringÚchild)ÚElementTreeCommentTypeÚrvÚserializeElementr   r   r“   Ë   sf   


ÿ



€
ÿ


 ÿzAgetETreeBuilder.<locals>.testSerializer.<locals>.serializeElementÚ
)r   )Újoin©r<   )r‘   )r’   r“   r   ÚtestSerializerÈ   s   
7
z'getETreeBuilder.<locals>.testSerializerc                    s2   g ‰t  ¡ ‰ ‡‡‡ ‡‡fdd„‰ˆ| ƒ d ˆ¡S )z4Serialize an element and its child nodes to a stringc                    sœ  t | ˆ jƒr
|  ¡ } | jdkr=|  d¡s|  d¡r3|  d¡pd}|  d¡p&d}ˆ d| j||f ¡ nŽˆ d| jf ¡ n„| jdkrn| jd urMˆ | j¡ | jd urVtdƒ‚t	| d	ƒrdt
| jƒrdtd
ƒ‚| D ]}ˆ|ƒ qfnS| jˆkr}ˆ d| jf ¡ nD| js�ˆ dˆ | j¡f ¡ nd ‡fdd„| j ¡ D ƒ¡}ˆ d| j|f ¡ | jr¯ˆ | j¡ | D ]}ˆ|ƒ q±ˆ d| jf ¡ | jrÌˆ | j¡ d S d S )Nrd   re   rf   rN   z<!DOCTYPE %s PUBLIC "%s" "%s">r   rw   r�   r.   r‚   z	<!--%s-->z<%s>r€   c                    s"   g | ]\}}d ˆ   |¡|f ‘qS )z%s="%s")ÚfromXmlName)Ú.0r   r8   )Úfilterr   r   Ú
<listcomp>)  s
    þ

ÿzOgetETreeBuilder.<locals>.tostring.<locals>.serializeElement.<locals>.<listcomp>z<%s %s>z</%s>)r3   r   r„   r$   rj   rB   r?   rP   r…   rƒ   r@   r.   r˜   r•   r2   )r<   re   rf   r�   Úattr)r   r‘   rš   r’   r“   r   r   r“     sH   

ÿ



ÿ
þ
ÿz;getETreeBuilder.<locals>.tostring.<locals>.serializeElementrN   )r
   ÚInfosetFilterr•   r–   )r   r‘   )rš   r’   r“   r   Útostring  s
   -
z!getETreeBuilder.<locals>.tostringc                       sD   e Zd Z”Z”Z”Z” Z”Z”Z‡fdd„Z	‡fdd„Z
dd„ ZdS )z$getETreeBuilder.<locals>.TreeBuilderc                    s   ˆ |ƒS r#   r   rU   )r—   r   r   r—   D  r0   z3getETreeBuilder.<locals>.TreeBuilder.testSerializerc                    s8   ˆ r| j jS | jd ur| j j d| j ¡S | j j d¡S )Nz{%s}htmlr   )Údocumentr   ÚdefaultNamespaceÚfindr(   )ÚfullTreer   r   ÚgetDocumentG  s   
ÿz0getETreeBuilder.<locals>.TreeBuilder.getDocumentc                 S   s   t j | ¡jS r#   )r   ÚTreeBuilderÚgetFragmentr   r(   r   r   r   r¥   Q  rl   z0getETreeBuilder.<locals>.TreeBuilder.getFragmentN)r[   r\   r]   ÚdocumentClassÚdoctypeClassÚelementClassÚcommentClassÚfragmentClassÚimplementationr—   r£   r¥   r   )r_   r{   r~   rt   r   ÚElementTreeImplementationr¢   r—   r   r   r¤   <  s    
r¤   )r_   r$   r   rX   r¤   Úlocals)r¬   r¢   rž   r¤   r   )
r_   r{   r~   rt   r   r   r‘   r¬   r¢   r—   r   ÚgetETreeBuilder   s   >$6r®   )F)Ú
__future__r   r   r   Úpip._vendor.sixr   Úrer   rN   r   r
   r   r   Ú_utilsr   Úcompiler†   r®   ÚgetETreeModuler   r   r   r   Ú<module>   s    

  F