3
g$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j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   j 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^   || _ || _ j| j||| _|d k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 e/var/www/tester-filtro-web/env/lib/python3.6/site-packages/pip/_vendor/html5lib/treebuilders/etree.py__init__   s    

z)getETreeBuilder.<locals>.Element.__init__c             S   s   |d kr|}nd||f }|S )Nz{%s}%sr   )r   r   r   Z	etree_tagr   r   r   r   %   s    z-getETreeBuilder.<locals>.Element._getETreeTagc             S   s   || _ | j| 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 )N)r   )r   r   r   r   _getName0   s    z)getETreeBuilder.<locals>.Element._getNamec             S   s   || _ | j| j| j | j_d S )N)r   r   r   r   r   )r   r   r   r   r   _setNamespace5   s    z.getETreeBuilder.<locals>.Element._setNamespacec             S   s   | j S )N)r   )r   r   r   r   _getNamespace9   s    z.getETreeBuilder.<locals>.Element._getNamespacec             S   s   | j jS )N)r   attrib)r   r   r   r   _getAttributes>   s    z/getETreeBuilder.<locals>.Element._getAttributesc             S   sZ   | j j}|j  |rVx@|j D ]4\}}t|trFd|d |d f }n|}|||< qW d S )Nz{%s}%sr	   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 )N)r   )r   r   r   r   _getChildNodesP   s    z/getETreeBuilder.<locals>.Element._getChildNodesc             S   s.   | j d d = g | _x|D ]}| j| qW d S )N)r   r   ZinsertChild)r   r,   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len)r   r   r   r   
hasContent[   s    z+getETreeBuilder.<locals>.Element.hasContentc             S   s$   | j j| | jj|j | |_d S )N)r   appendr   r   )r   noder   r   r   appendChild_   s    z,getETreeBuilder.<locals>.Element.appendChildc             S   s,   t | jj|j}| jj||j | |_d S )N)listr   indexinsertr   )r   r6   refNoder9   r   r   r   insertBefored   s    z-getETreeBuilder.<locals>.Element.insertBeforec             S   s$   | j j| | jj|j d |_d S )N)r   remover   r   )r   r6   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 krb| jd jsLd| jd _| jd  j|7  _nxt| j}|j|j}|dkr| j|d  jsd| j|d  _| j|d   j|7  _n | jjsd| j_| j j|7  _d S )N r   r   r@   r@   )r3   r   r2   tailr8   r9   )r   datar<   childrenr9   r   r   r   
insertTextn   s"    

z+getETreeBuilder.<locals>.Element.insertTextc             S   s.   t | | j| j}| jjr*t| jj|j_|S )N)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  _n0|jjs2d|j_| jjd k	rR|j j| jj7  _d| j_tjj| | d S )Nr   r?   r@   )
childNodesr   rA   r2   r   NodereparentChildren)r   	newParentr   r   r   rI      s    z1getETreeBuilder.<locals>.Element.reparentChildren)N)N)__name__
__module____qualname__r   r   r    r!   propertyr   r"   r#   r   r%   r-   r*   r.   r0   rG   r4   r7   r<   r>   rD   rF   rI   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"    j || _d | _g | _g | _d S )N)Commentr   r   r   r   )r   rB   )r   r   r   r      s    z)getETreeBuilder.<locals>.Comment.__init__c             S   s   | j jS )N)r   r2   )r   r   r   r   _getData   s    z)getETreeBuilder.<locals>.Comment._getDatac             S   s   || j _d S )N)r   r2   )r   r,   r   r   r   _setData   s    z)getETreeBuilder.<locals>.Comment._setDataN)rK   rL   rM   r   rP   rQ   rN   rB   r   )r   r   r   rO      s   rO   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$    j | d || j_|| _|| _d S )Nz
<!DOCTYPE>)r   r   r2   publicIdsystemId)r   r   rR   rS   )r   r   r   r      s    z.getETreeBuilder.<locals>.DocumentType.__init__c             S   s   | j jddS )NrR   r?   )r   get)r   r   r   r   _getPublicId   s    z2getETreeBuilder.<locals>.DocumentType._getPublicIdc             S   s   |d k	r| j jd| d S )NrR   )r   set)r   r,   r   r   r   _setPublicId   s    z2getETreeBuilder.<locals>.DocumentType._setPublicIdc             S   s   | j jddS )NrS   r?   )r   rT   )r   r   r   r   _getSystemId   s    z2getETreeBuilder.<locals>.DocumentType._getSystemIdc             S   s   |d k	r| j jd| d S )NrS   )r   rV   )r   r,   r   r   r   _setSystemId   s    z2getETreeBuilder.<locals>.DocumentType._setSystemIdN)rK   rL   rM   r   rU   rW   rN   rR   rX   rY   rS   r   )r   r   r   DocumentType   s   
rZ   c                   s   e Zd Z fddZdS )z!getETreeBuilder.<locals>.Documentc                s    j | d d S )NDOCUMENT_ROOT)r   )r   )r   r   r   r      s    z*getETreeBuilder.<locals>.Document.__init__N)rK   rL   rM   r   r   )r   r   r   Document   s   r\   c                   s   e Zd Z fddZdS )z)getETreeBuilder.<locals>.DocumentFragmentc                s    j | d d S )NZDOCUMENT_FRAGMENT)r   )r   )r   r   r   r      s    z2getETreeBuilder.<locals>.DocumentFragment.__init__N)rK   rL   rM   r   r   )r   r   r   DocumentFragment   s   r]   c                s*   g  d fdd	| d dj  S )Nr   c                s  t | ds| j } | jdkrz| jds0| jdrd| jdp<d}| jdpJd}jd| j||f  njd| jf  n| jdkrjd	 | jd k	rjd
d|d  | jf  | jd k	rtdt | drt| j	rtdnp| j krjdd| | jf  nHt
| jts4tdt| j| jf tj| j}|d krR| j}n"|j \}}tj| }d||f }jdd| |f  t | dr2g }xb| j	j D ]T\}}	tj|}|d k	r|j \}}tj| }d||f }
n|}
|j|
|	f qW x2t|D ]&\}}	jdd|d  ||	f  qW | jrVjd
d|d  | jf  |d7 }x| D ]}|| qdW | jrjd
d|d  | jf  d S )Nr   z
<!DOCTYPE>rR   rS   r?   z<!DOCTYPE %s "%s" "%s">z<!DOCTYPE %s>r[   z	#documentz|%s"%s" r	   zDocument node cannot have tailr$   z$Document node cannot have attributesz|%s<!-- %s -->zExpected unicode, got %s, %sz%s %sz|%s<%s>z
|%s%s="%s")hasattrgetrootr   rT   r5   r2   rA   	TypeErrorr3   r$   r(   r   AssertionErrorrE   
tag_regexpmatchgroupsr   prefixesr'   sorted)r/   indentrR   rS   Znsmatchr   nsprefixr*   r,   Zattr_stringchild)ElementTreeCommentTypervserializeElementr   r   rn      s^    










"
zAgetETreeBuilder.<locals>.testSerializer.<locals>.serializeElement
)r   )join)r/   )rl   )rm   rn   r   testSerializer   s    7
z'getETreeBuilder.<locals>.testSerializerc                s2   g t j   fdd|  djS )z4Serialize an element and its child nodes to a stringc                s  t |  jr| j } | jdkr|| jds2| jdrf| jdp>d}| jdpLd}jd| j||f  njd| jf  n| jdkr| jd k	rj| j | jd k	rtdt	| d	rt
| jrtd
x| D ]}| qW n| jkrjd| jf  n| js$jdj| jf  n2djfdd| jj D }jd| j|f  | jrjj| j x| D ]}| qpW jd| jf  | jrj| j d S )Nz
<!DOCTYPE>rR   rS   r?   z<!DOCTYPE %s PUBLIC "%s" "%s">z<!DOCTYPE %s>r[   zDocument node cannot have tailr$   z$Document node cannot have attributesz	<!--%s-->z<%s>r^   c                s"   g | ]\}}d  j ||f qS )z%s="%s")fromXmlName).0r   r,   )filterr   r   
<listcomp>)  s   zOgetETreeBuilder.<locals>.tostring.<locals>.serializeElement.<locals>.<listcomp>z<%s %s>z</%s>)r(   r   r`   r   rT   r5   r2   rA   ra   r_   r3   r$   rr   rp   r'   )r/   rR   rS   rk   attr)r   rl   rt   rm   rn   r   r   rn     s@    





z;getETreeBuilder.<locals>.tostring.<locals>.serializeElementr?   )r
   ZInfosetFilterrp   )r/   )r   rl   )rt   rm   rn   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 )Nr   )r   r/   )rq   r   r   rq   D  s    z3getETreeBuilder.<locals>.TreeBuilder.testSerializerc                s<    r| j jS | jd k	r*| j jjd| j S | j jjdS d S )Nz{%s}htmlr   )documentr   defaultNamespacefind)r   )fullTreer   r   getDocumentG  s    
z0getETreeBuilder.<locals>.TreeBuilder.getDocumentc             S   s   t jj| jS )N)r   TreeBuildergetFragmentr   )r   r   r   r   r~   Q  s    z0getETreeBuilder.<locals>.TreeBuilder.getFragmentN)rK   rL   rM   documentClassdoctypeClasselementClasscommentClassfragmentClassimplementationrq   r|   r~   r   )rO   r\   r]   rZ   r   ElementTreeImplementationr{   rq   r   r   r}   <  s   
r}   )rO   r   r   rH   r}   locals)r   r{   rw   r}   r   )
rO   r\   r]   rZ   r   r   rl   r   r{   rq   r   getETreeBuilder   s    >6$r   )F)
__future__r   r   r   Zpip._vendor.sixr   rer   r?   r   r
   r   r   _utilsr   compilerc   r   getETreeModuler   r   r   r   <module>   s   

  F