U ��.e�1�@s�ddlmZmZmZddlmZddlZddlmZddlm Z ddlm Z dd l m Z dd l m Z e�d �Zdd d�Ze e�ZdS)�)�absolute_import�division�unicode_literals)� text_typeN�)�base�)� _ihatexml)� constants)� namespaces)�moduleFactoryFactoryz {([^}]*)}(.*)Fc s�����d�j�G�fdd�dtj��G�fdd�d���G�fdd�d���G�fdd �d ���G�fd d �d ����fd d �� ��fdd�}G�������� fdd�dtj�}t�S)NZasdcs�eZdZd$�fdd� Zdd�Zdd�Zdd �Zeee�Zd d �Z d d �Z ee e �Z dd�Z dd�Z ee e �Zdd�Zdd�Zeee�Zdd�Zdd�Zdd�Zdd�Zd%dd�Zd d!�Zd"d#�ZdS)&z getETreeBuilder..ElementNcs^||_||_��|�||��|_|dkr:td|jf|_n|j|jf|_d|_g|_g|_ dS)N�html) �_name� _namespace�Element� _getETreeTag�_elementr Z nameTuple�parent� _childNodes�_flags)�self�name� namespace�� ElementTree��K/usr/lib/python3.8/site-packages/pip/_vendor/html5lib/treebuilders/etree.py�__init__s �z)getETreeBuilder..Element.__init__cSs|dkr|}n d||f}|S)N�{%s}%sr)rrrZ etree_tagrrrr#s z-getETreeBuilder..Element._getETreeTagcSs||_|�|j|j�|j_dS�N)rrrr�tag)rrrrr�_setName*sz)getETreeBuilder..Element._setNamecSs|jSr)r�rrrr�_getName.sz)getETreeBuilder..Element._getNamecSs||_|�|j|j�|j_dSr)rrrrr )rrrrr� _setNamespace3sz.getETreeBuilder..Element._setNamespacecSs|jSr)rr"rrr� _getNamespace7sz.getETreeBuilder..Element._getNamespacecSs|jjSr)r�attribr"rrr�_getAttributes<sz/getETreeBuilder..Element._getAttributescSsht|jj���D]}|jj|=q|��D]:\}}t|t�rPd|d|df}n|}|j�||�q(dS)Nrrr)�listrr&�keys�items� isinstance�tuple�set)r� attributes�key�valuerrrr�_setAttributes?s  z/getETreeBuilder..Element._setAttributescSs|jSr)rr"rrr�_getChildNodesMsz/getETreeBuilder..Element._getChildNodescSs*|jdd�=g|_|D]}|�|�qdSr)rrZ insertChild)rr0�elementrrr�_setChildNodesPs z/getETreeBuilder..Element._setChildNodescSst|jjpt|j��S)z,Return true if the node has children or text)�boolr�text�lenr"rrr� hasContentXsz+getETreeBuilder..Element.hasContentcSs$|j�|�|j�|j�||_dSr)r�appendrr�r�noderrr� appendChild\s z,getETreeBuilder..Element.appendChildcSs,t|j��|j�}|j�||j�||_dSr)r(r�index�insertr)rr;ZrefNoder=rrr� insertBeforeasz-getETreeBuilder..Element.insertBeforecSs$|j�|�|j�|j�d|_dSr)r�removerrr:rrr� removeChildfs z,getETreeBuilder..Element.removeChildcSs�t|j�s,|jjsd|j_|jj|7_n�|dkrb|jdjsLd|jd_|jdj|7_nxt|j�}|�|j�}|dkr�|j|djs�d|j|d_|j|dj|7_n |jjs�d|j_|jj|7_dS)N������rr)r7rr6�tailr(r=)r�datar?Zchildrenr=rrr� insertTextks"     z+getETreeBuilder..Element.insertTextcSs4t|�|j|j�}|j��D]\}}||j|<q|Sr)�typerrr.r*)rr3rr0rrr� cloneNode�s z*getETreeBuilder..Element.cloneNodecSsl|jr"|jdjj|jj7_n0|jjs2d|j_|jjdk rR|jj|jj7_d|j_tj�||�dS)NrCrB)� childNodesrrDr6r�Node�reparentChildren)rZ newParentrrrrK�s z1getETreeBuilder..Element.reparentChildren)N)N)�__name__� __module__� __qualname__rrr!r#�propertyrr$r%rr'r1r.r2r4rIr8r<r?rArFrHrKrrrrrs*      rcs2eZdZ�fdd�Zdd�Zdd�Zeee�ZdS)z getETreeBuilder..Commentcs"��|�|_d|_g|_g|_dSr)�Commentrrrr)rrErrrr�s z)getETreeBuilder..Comment.__init__cSs|jjSr�rr6r"rrr�_getData�sz)getETreeBuilder..Comment._getDatacSs ||j_dSrrQ�rr0rrr�_setData�sz)getETreeBuilder..Comment._setDataN)rLrMrNrrRrTrOrErrrrrP�s rPcsLeZdZ�fdd�Zdd�Zdd�Zeee�Zdd�Zd d �Z eee �Z d S) z%getETreeBuilder..DocumentTypecs$��|d�||j_||_||_dS)N� )rrr6�publicId�systemId)rrrVrW�rrrr�s z.getETreeBuilder..DocumentType.__init__cSs|j�dd�S)NrVrB�r�getr"rrr� _getPublicId�sz2getETreeBuilder..DocumentType._getPublicIdcSs|dk r|j�d|�dS)NrV�rr-rSrrr� _setPublicId�sz2getETreeBuilder..DocumentType._setPublicIdcSs|j�dd�S)NrWrBrYr"rrr� _getSystemId�sz2getETreeBuilder..DocumentType._getSystemIdcSs|dk r|j�d|�dS)NrWr\rSrrr� _setSystemId�sz2getETreeBuilder..DocumentType._setSystemIdN) rLrMrNrr[r]rOrVr^r_rWrrXrr� DocumentType�s  r`cseZdZ�fdd�ZdS)z!getETreeBuilder..Documentcs��|d�dS)N� DOCUMENT_ROOT�rr"rXrrr�sz*getETreeBuilder..Document.__init__N�rLrMrNrrrXrr�Document�srdcseZdZ�fdd�ZdS)z)getETreeBuilder..DocumentFragmentcs��|d�dS)NZDOCUMENT_FRAGMENTrbr"rXrrr�sz2getETreeBuilder..DocumentFragment.__init__NrcrrXrr�DocumentFragment�srecs*g�d���fdd� ��|d�d���S)Nrc s�t|d�s|��}|jdkrz|�d�s0|�d�rd|�d�p� raz #documentz|%s"%s"� r�Document node cannot have tailr&�$Document node cannot have attributesz|%szExpected unicode, got %s, %sz%s %sz|%s<%s>z |%s%s="%s")�hasattr�getrootr rZr9r6rD� TypeErrorr7r&r+r�AssertionErrorrG� tag_regexp�match�groupsr �prefixesr*�sorted) r3�indentrVrWZnsmatchr�ns�prefixr.r0Z attr_string�child)�ElementTreeCommentType�rv�serializeElementrrry�sb   �      �           zAgetETreeBuilder..testSerializer..serializeElement� )r)�join�r3)rw)rxryr�testSerializer�s7 z'getETreeBuilder..testSerializercs2g�t��������fdd���|�d���S)z4Serialize an element and its child nodes to a stringcs�t|�j�r|��}|jdkr||�d�s2|�d�rf|�d�p>d}|�d�pLd}��d|j||f�n��d|jf��n|jdkr�|jdk r���|j�|jdk r�td��t |d �r�t |j �r�td ��|D] }�|�q�n�|j�kr���d |jf�n�|j �s��d �� |j�f�n2d � �fdd�|j ��D��}��d|j|f�|j�rd��|j�|D]}�|��qh��d|jf�|j�r���|j�dS)NrUrVrWrBzrfrarhr&riz z<%s>rgcs"g|]\}}d��|�|f�qS)z%s="%s")� fromXmlName)�.0rr0)�filterrr� &s ��zOgetETreeBuilder..tostring..serializeElement..z<%s %s>z)r+rrkr rZr9r6rDrlrjr7r&r~r{r*)r3rVrWrv�attr)rrwr�rxryrrrysD   �      �  z;getETreeBuilder..tostring..serializeElementrB)r Z InfosetFilterr{r|)rrw)r�rxryr�tostrings -z!getETreeBuilder..tostringcsDeZdZ�Z�Z�Z�Z�Z�Z�fdd�Z �fdd�Z dd�Z dS)z$getETreeBuilder..TreeBuildercs�|�Srr)rr3)r}rrr}Asz3getETreeBuilder..TreeBuilder.testSerializercs<�r |jjS|jdk r*|jj�d|j�S|jj�d�SdS)Nz{%s}htmlr )ZdocumentrZdefaultNamespace�findr")�fullTreerr� getDocumentDs �z0getETreeBuilder..TreeBuilder.getDocumentcSstj�|�jSr)r� TreeBuilder� getFragmentrr"rrrr�Nsz0getETreeBuilder..TreeBuilder.getFragmentN) rLrMrNZ documentClassZ doctypeClassZ elementClassZ commentClassZ fragmentClass�implementationr}r�r�r)rPrdrer`r�ElementTreeImplementationr�r}rrr�9s  r�)rPr rrJr��locals)r�r�r�r�r) rPrdrer`rrrwr�r�r}r�getETreeBuilders ~ >6$r�)F)Z __future__rrrZpip._vendor.sixr�rerBrr r r Z_utilsr �compilernr�ZgetETreeModulerrrr�s        E