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 )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 aC:\Users\bbmin\dev\vps-for-web\.venv\Lib\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   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,      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   
attributesZ	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   ZinsertChild)r   r5   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   r@   refNoderD   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   rB   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;   tailrC   rD   )r   datarG   childrenrD   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   r8   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 )NrK   rJ   )
childNodesr   rL   r;   r   NodereparentChildren)r   	newParentr   r   r   rU      s   z1getETreeBuilder.<locals>.Element.reparentChildrenr!   )__name__
__module____qualname__r   r   r#   r'   propertyr   r)   r*   r   r-   r6   r3   r7   r9   rS   r=   rA   rG   rI   rO   rR   rU   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   rM   r   r   r   r      s   
z)getETreeBuilder.<locals>.Comment.__init__c                 S   r+   r!   r   r;   r&   r   r   r   _getData   r.   z)getETreeBuilder.<locals>.Comment._getDatac                 S   s   || j _d S r!   r\   r   r5   r   r   r   _setData   s   z)getETreeBuilder.<locals>.Comment._setDataN)rW   rX   rY   r   r]   r_   rZ   rM   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   ra   rb   r   r   r   r      s   
z.getETreeBuilder.<locals>.DocumentType.__init__c                 S      | j ddS )Nra   rJ   r   getr&   r   r   r   _getPublicId      z2getETreeBuilder.<locals>.DocumentType._getPublicIdc                 S      |d ur| j d| d S d S )Nra   r   setr^   r   r   r   _setPublicId      z2getETreeBuilder.<locals>.DocumentType._setPublicIdc                 S   rd   )Nrb   rJ   re   r&   r   r   r   _getSystemId   rh   z2getETreeBuilder.<locals>.DocumentType._getSystemIdc                 S   ri   )Nrb   rj   r^   r   r   r   _setSystemId   rm   z2getETreeBuilder.<locals>.DocumentType._setSystemIdN)rW   rX   rY   r   rg   rl   rZ   ra   rn   ro   rb   r   rc   r   r   DocumentType   s    
rp   c                          e Zd Z fddZdS )z!getETreeBuilder.<locals>.Documentc                         | d d S )NDOCUMENT_ROOTr   r&   rc   r   r   r         z*getETreeBuilder.<locals>.Document.__init__NrW   rX   rY   r   r   rc   r   r   Document       rw   c                       rq   )z)getETreeBuilder.<locals>.DocumentFragmentc                    rr   )NZDOCUMENT_FRAGMENTrt   r&   rc   r   r   r      ru   z2getETreeBuilder.<locals>.DocumentFragment.__init__Nrv   r   rc   r   r   DocumentFragment   rx   ry   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  nt
| jtsJ 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 qt|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"   r`   ra   rb   rJ   z<!DOCTYPE %s "%s" "%s"><!DOCTYPE %s>rs   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"   rf   r>   r;   rL   	TypeErrorr<   r,   r1   r   rP   
tag_regexpmatchgroupsr   prefixesr0   sorted)r8   indentra   rb   Znsmatchr   nsprefixr3   r5   Zattr_stringchild)ElementTreeCommentTypervserializeElementr   r   r      sf   










 zAgetETreeBuilder.<locals>.testSerializer.<locals>.serializeElement
)r   )joinr8   )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 )Nr`   ra   rb   rJ   z<!DOCTYPE %s PUBLIC "%s" "%s">rz   rs   r|   r,   r}   z	<!--%s-->z<%s>r{   c                    s"   g | ]\}}d   ||f qS )z%s="%s")fromXmlName).0r   r5   )filterr   r   
<listcomp>)  s
    

zOgetETreeBuilder.<locals>.tostring.<locals>.serializeElement.<locals>.<listcomp>z<%s %s>z</%s>)r1   r   r   r"   rf   r>   r;   rL   r   r~   r<   r,   r   r   r0   )r8   ra   rb   r   attr)r   r   r   r   r   r   r   r     sH   







z;getETreeBuilder.<locals>.tostring.<locals>.serializeElementrJ   )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   rQ   )r   r   r   r   D  r.   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  rh   z0getETreeBuilder.<locals>.TreeBuilder.getFragmentN)rW   rX   rY   documentClassdoctypeClasselementClasscommentClassfragmentClassimplementationr   r   r   r   )r[   rw   ry   rp   r   ElementTreeImplementationr   r   r   r   r   <  s    
r   )r[   r"   r   rT   r   locals)r   r   r   r   r   )
r[   rw   ry   rp   r   r   r   r   r   r   r   getETreeBuilder   s   >$6r   )F)
__future__r   r   r   pip._vendor.sixr   rer   rJ   r   r
   r   r   _utilsr   compiler   r   getETreeModuler   r   r   r   <module>   s    

  F