a
    hbòf$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 )NZ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© úd/home/httpd/docs/test/DocsMgr/lib/python3.9/site-packages/pip/_vendor/html5lib/treebuilders/etree.pyÚ__init__   s    
ÿz)getETreeBuilder.<locals>.Element.__init__c                 S   s   |d u r|}nd||f }|S )Nú{%s}%sr   )r   r   r   Z	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,   s    z)getETreeBuilder.<locals>.Element._setNamec                 S   s   | j S r!   )r   ©r   r   r   r   Ú_getName0   s    z)getETreeBuilder.<locals>.Element._getNamec                 S   s   || _ |  | j| j ¡| j_d S r!   )r   r   r   r   r"   )r   r   r   r   r   Ú_setNamespace5   s    z.getETreeBuilder.<locals>.Element._setNamespacec                 S   s   | j S r!   )r   r$   r   r   r   Ú_getNamespace9   s    z.getETreeBuilder.<locals>.Element._getNamespacec                 S   s   | j jS r!   )r   Úattribr$   r   r   r   Ú_getAttributes>   s    z/getETreeBuilder.<locals>.Element._getAttributesc                 S   sV   | j j}| ¡  |rR| ¡ D ]4\}}t|tƒrDd|d |d f }n|}|||< qd S )Nr    r	   r   )r   r(   ÚclearÚitemsÚ
isinstanceÚtuple)r   Ú
attributesZ	el_attribÚkeyÚvaluer   r   r   r   Ú_setAttributesA   s    
z/getETreeBuilder.<locals>.Element._setAttributesc                 S   s   | j S r!   )r   r$   r   r   r   Ú_getChildNodesP   s    z/getETreeBuilder.<locals>.Element._getChildNodesc                 S   s*   | j d d …= g | _|D ]}|  |¡ qd S r!   )r   r   ZinsertChild)r   r0   Ú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_   s    z,getETreeBuilder.<locals>.Element.appendChildc                 S   s,   t | jƒ |j¡}| j ||j¡ | |_d S r!   )Úlistr   ÚindexÚinsertr   )r   r;   ÚrefNoder>   r   r   r   ÚinsertBefored   s    z-getETreeBuilder.<locals>.Element.insertBeforec                 S   s$   | j  |¡ | j |j¡ d |_d S r!   )r   Úremover   r   r:   r   r   r   ÚremoveChildi   s    z,getETreeBuilder.<locals>.Element.removeChildc                 S   sÞ   t | jƒs,| jjsd| j_| j j|7  _n®|d u rb| jd jsLd| jd _| jd  j|7  _nxt| jƒ}| |j¡}|dkrº| j|d  js d| j|d  _| j|d   j|7  _n | jjsÊd| j_| j j|7  _d S )NÚ éÿÿÿÿr   r   )r7   r   r6   Útailr=   r>   )r   ÚdatarA   Úchildrenr>   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   r3   r   r   r   Ú	cloneNode…   s    z*getETreeBuilder.<locals>.Element.cloneNodec                 S   sl   |j r"|j d j j| jj7  _n0|jjs2d|j_| jjd urR|j j| jj7  _d| j_tj | |¡ d S )NrE   rD   )Ú
childNodesr   rF   r6   r   ÚNodeÚreparentChildren)r   Ú	newParentr   r   r   rO   ‹   s    z1getETreeBuilder.<locals>.Element.reparentChildren)N)N)Ú__name__Ú
__module__Ú__qualname__r   r   r#   r%   Úpropertyr   r&   r'   r   r)   r1   r.   r2   r4   rM   r8   r<   rA   rC   rI   rL   rO   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   rG   r   r   r   r   —   s    z)getETreeBuilder.<locals>.Comment.__init__c                 S   s   | j jS r!   ©r   r6   r$   r   r   r   Ú_getDataŸ   s    z)getETreeBuilder.<locals>.Comment._getDatac                 S   s   || j _d S r!   rV   ©r   r0   r   r   r   Ú_setData¢   s    z)getETreeBuilder.<locals>.Comment._setDataN)rQ   rR   rS   r   rW   rY   rT   rG   r   r   r   r   rU   –   s   rU   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   r6   ÚpublicIdÚsystemId)r   r   r[   r\   ©r   r   r   r   ¨   s    z.getETreeBuilder.<locals>.DocumentType.__init__c                 S   s   | j  dd¡S )Nr[   rD   ©r   Úgetr$   r   r   r   Ú_getPublicId®   s    z2getETreeBuilder.<locals>.DocumentType._getPublicIdc                 S   s   |d ur| j  d|¡ d S )Nr[   ©r   ÚsetrX   r   r   r   Ú_setPublicId±   s    z2getETreeBuilder.<locals>.DocumentType._setPublicIdc                 S   s   | j  dd¡S )Nr\   rD   r^   r$   r   r   r   Ú_getSystemId·   s    z2getETreeBuilder.<locals>.DocumentType._getSystemIdc                 S   s   |d ur| j  d|¡ d S )Nr\   ra   rX   r   r   r   Ú_setSystemIdº   s    z2getETreeBuilder.<locals>.DocumentType._setSystemIdN)rQ   rR   rS   r   r`   rc   rT   r[   rd   re   r\   r   r]   r   r   ÚDocumentType§   s   
rf   c                       s   e Zd Z‡ fdd„ZdS )z!getETreeBuilder.<locals>.Documentc                    s   ˆ   | d¡ d S )NÚDOCUMENT_ROOT©r   r$   r]   r   r   r   Á   s    z*getETreeBuilder.<locals>.Document.__init__N©rQ   rR   rS   r   r   r]   r   r   ÚDocumentÀ   s   rj   c                       s   e Zd Z‡ fdd„ZdS )z)getETreeBuilder.<locals>.DocumentFragmentc                    s   ˆ   | d¡ d S )NZDOCUMENT_FRAGMENTrh   r$   r]   r   r   r   Å   s    z2getETreeBuilder.<locals>.DocumentFragment.__init__Nri   r   r]   r   r   ÚDocumentFragmentÄ   s   rk   c                    s*   g ‰ d‡‡ ‡fdd„	‰ˆ| dƒ d  ˆ ¡S )Nr   c                    s”  t | dƒs|  ¡ } | jdkrz|  d¡s0|  d¡rd|  d¡p<d}|  d¡pJd}ˆ d| j||f ¡ nˆ d| jf ¡ �nÔ| jdkræˆ d	¡ | jd ur´ˆ d
d|d  | jf ¡ | jd urÆtdƒ‚t | dƒrât| j	ƒrâtdƒ‚�nh| jˆ k�rˆ dd| | jf ¡ �n@t
| jtƒ�s4J dt| jƒ| jf ƒ‚t | j¡}|d u �rR| j}n"| ¡ \}}tj| }d||f }ˆ dd| |f ¡ t | dƒ�r*g }| j	 ¡ D ]T\}}	t |¡}|d u�rä| ¡ \}}tj| }d||f }
n|}
| |
|	f¡ �q¤t|ƒD ]&\}}	ˆ dd|d  ||	f ¡ �q| j�rNˆ d
d|d  | jf ¡ |d7 }| D ]}ˆ||ƒ �qZ| j�r�ˆ d
d|d  | jf ¡ d S )Nr"   rZ   r[   r\   rD   z<!DOCTYPE %s "%s" "%s">ú<!DOCTYPE %s>rg   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"   r_   r9   r6   rF   Ú	TypeErrorr7   r(   r,   r   rJ   Ú
tag_regexpÚmatchÚgroupsr   Úprefixesr+   Úsorted)r3   Úindentr[   r\   Znsmatchr   ÚnsÚprefixr.   r0   Zattr_stringÚchild)ÚElementTreeCommentTypeÚrvÚserializeElementr   r   r~   Ë   sb    


ÿ



ÿ




 zAgetETreeBuilder.<locals>.testSerializer.<locals>.serializeElementÚ
)r   )Újoin©r3   )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¡s2|  d¡rf|  d¡p>d}|  d¡pLd}ˆ d| j||f ¡ nˆ d| jf ¡ �n| jdkrÞ| jd urœˆ | j¡ | jd ur®tdƒ‚t	| d	ƒrÊt
| jƒrÊtd
ƒ‚| D ]}ˆ|ƒ qÎn¬| jˆkrüˆ d| jf ¡ nŽ| j�sˆ dˆ | j¡f ¡ n2d ‡fdd„| j ¡ D ƒ¡}ˆ d| j|f ¡ | j�rdˆ | j¡ | D ]}ˆ|ƒ �qhˆ d| jf ¡ | j�ržˆ | j¡ d S )NrZ   r[   r\   rD   z<!DOCTYPE %s PUBLIC "%s" "%s">rl   rg   rn   r(   ro   z	<!--%s-->z<%s>rm   c                    s"   g | ]\}}d ˆ   |¡|f ‘qS )z%s="%s")ÚfromXmlName)Ú.0r   r0   )Úfilterr   r   Ú
<listcomp>)  s   þ
ÿzOgetETreeBuilder.<locals>.tostring.<locals>.serializeElement.<locals>.<listcomp>z<%s %s>z</%s>)r,   r   rq   r"   r_   r9   r6   rF   rr   rp   r7   r(   rƒ   r€   r+   )r3   r[   r\   r{   Úattr)r   r|   r…   r}   r~   r   r   r~     sD    

ÿ



þz;getETreeBuilder.<locals>.tostring.<locals>.serializeElementrD   )r
   Z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   rK   )r‚   r   r   r‚   D  s    z3getETreeBuilder.<locals>.TreeBuilder.testSerializerc                    s<   ˆ r| j jS | jd ur*| j j d| j ¡S | j j d¡S 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  s    z0getETreeBuilder.<locals>.TreeBuilder.getFragmentN)rQ   rR   rS   ÚdocumentClassÚdoctypeClassÚelementClassÚcommentClassÚfragmentClassÚimplementationr‚   r�   r�   r   )rU   rj   rk   rf   r   ÚElementTreeImplementationrŒ   r‚   r   r   rŽ   <  s   
rŽ   )rU   r"   r   rN   rŽ   Úlocals)r–   rŒ   rˆ   rŽ   r   )
rU   rj   rk   rf   r   r   r|   r–   rŒ   r‚   r   ÚgetETreeBuilder   s    >6$r˜   )F)Ú
__future__r   r   r   Úpip._vendor.sixr   Úrer   rD   r   r
   r   r   Ú_utilsr   Úcompilers   r˜   ÚgetETreeModuler   r   r   r   Ú<module>   s   

  F