3 �Pf�1�@s�ddlmZmZmZddlmZddlZddlmZddlm Z ddlm Z dd l m Z dd l m Z ejd �Zdd d�Ze e�ZdS)�)�absolute_import�division�unicode_literals)� text_typeN�)�base�)� _ihatexml)� constants)� namespaces)�moduleFactoryFactoryz {([^}]*)}(.*)Fc s����jd�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^||_||_�j|j||��|_|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��/usr/lib/python3.6/etree.py�__init__s  z)getETreeBuilder..Element.__init__cSs|dkr|}n d||f}|S)Nz{%s}%sr)rrrZ etree_tagrrrr#s z-getETreeBuilder..Element._getETreeTagcSs||_|j|j|j�|j_dS)N)rrrr�tag)rrrrr�_setName*sz)getETreeBuilder..Element._setNamecSs|jS)N)r)rrrr�_getName.sz)getETreeBuilder..Element._getNamecSs||_|j|j|j�|j_dS)N)rrrrr)rrrrr� _setNamespace3sz.getETreeBuilder..Element._setNamespacecSs|jS)N)r)rrrr� _getNamespace7sz.getETreeBuilder..Element._getNamespacecSs|jjS)N)r�attrib)rrrr�_getAttributes<sz/getETreeBuilder..Element._getAttributescSspx"t|jjj��D]}|jj|=qWxF|j�D]:\}}t|t�rVd|d|df}n|}|jj||�q.WdS)Nz{%s}%srr)�listrr"�keys�items� isinstance�tuple�set)r� attributes�key�valuerrrr�_setAttributes?s z/getETreeBuilder..Element._setAttributescSs|jS)N)r)rrrr�_getChildNodesMsz/getETreeBuilder..Element._getChildNodescSs.|jdd�=g|_x|D]}|j|�qWdS)N)rrZ insertChild)rr,�elementrrr�_setChildNodesPs  z/getETreeBuilder..Element._setChildNodescSst|jjpt|j��S)z,Return true if the node has children or text)�boolr�text�len)rrrr� hasContentXsz+getETreeBuilder..Element.hasContentcSs$|jj|�|jj|j�||_dS)N)r�appendrr)r�noderrr� appendChild\s z,getETreeBuilder..Element.appendChildcSs,t|j�j|j�}|jj||j�||_dS)N)r$r�index�insertr)rr6ZrefNoder8rrr� insertBeforeasz-getETreeBuilder..Element.insertBeforecSs$|jj|�|jj|j�d|_dS)N)r�removerr)rr6rrr� removeChildfs z,getETreeBuilder..Element.removeChildcSs�t|j�s,|jjsd|j_|jj|7_n�|dkrb|jdjsLd|jd_|jdj|7_nxt|j�}|j|j�}|dkr�|j|djs�d|j|d_|j|dj|7_n |jjs�d|j_|jj|7_dS)N�rr�����r>r>)r3rr2�tailr$r8)r�datar:Zchildrenr8rrr� insertTextks"     z+getETreeBuilder..Element.insertTextcSs8t|�|j|j�}x |jj�D]\}}||j|<qW|S)N)�typerrr*r&)rr/rr,rrr� cloneNode�sz*getETreeBuilder..Element.cloneNodecSsl|jr"|jdjj|jj7_n0|jjs2d|j_|jjdk rR|jj|jj7_d|j_tjj||�dS)Nrr=r>)� childNodesrr?r2r�Node�reparentChildren)rZ newParentrrrrF�s z1getETreeBuilder..Element.reparentChildren)N)N)�__name__� __module__� __qualname__rrrr�propertyrr r!rr#r-r*r.r0rDr4r7r:r<rArCrFr)rrrrs*      rcs2eZdZ�fdd�Zdd�Zdd�Zeee�ZdS)z getETreeBuilder..Commentcs"�j|�|_d|_g|_g|_dS)N)�Commentrrrr)rr@)rrrr�s z)getETreeBuilder..Comment.__init__cSs|jjS)N)rr2)rrrr�_getData�sz)getETreeBuilder..Comment._getDatacSs ||j_dS)N)rr2)rr,rrr�_setData�sz)getETreeBuilder..Comment._setDataN)rGrHrIrrLrMrJr@r)rrrrK�s rKcsLeZdZ�fdd�Zdd�Zdd�Zeee�Zdd�Zd d �Z eee �Z d S) z%getETreeBuilder..DocumentTypecs$�j|d�||j_||_||_dS)Nz )rrr2�publicId�systemId)rrrNrO)rrrr�s z.getETreeBuilder..DocumentType.__init__cSs|jjdd�S)NrNr=)r�get)rrrr� _getPublicId�sz2getETreeBuilder..DocumentType._getPublicIdcSs|dk r|jjd|�dS)NrN)rr))rr,rrr� _setPublicId�sz2getETreeBuilder..DocumentType._setPublicIdcSs|jjdd�S)NrOr=)rrP)rrrr� _getSystemId�sz2getETreeBuilder..DocumentType._getSystemIdcSs|dk r|jjd|�dS)NrO)rr))rr,rrr� _setSystemId�sz2getETreeBuilder..DocumentType._setSystemIdN) rGrHrIrrQrRrJrNrSrTrOr)rrr� DocumentType�s  rUcseZdZ�fdd�ZdS)z!getETreeBuilder..Documentcs�j|d�dS)N� DOCUMENT_ROOT)r)r)rrrr�sz*getETreeBuilder..Document.__init__N)rGrHrIrr)rrr�Document�srWcseZdZ�fdd�ZdS)z)getETreeBuilder..DocumentFragmentcs�j|d�dS)NZDOCUMENT_FRAGMENT)r)r)rrrr�sz2getETreeBuilder..DocumentFragment.__init__N)rGrHrIrr)rrr�DocumentFragment�srXcs*g�d���fdd� ��|d�dj��S)Nrc szt|d�s|j�}|jdkrz|jd�s0|jd�rd|jd�pW|j�rv�jd d |d |jf�dS)Nrz rNrOr=zz rVz #documentz|%s"%s"� rzDocument node cannot have tailr"z$Document node cannot have attributesz|%sz%s %sz|%s<%s>z |%s%s="%s")�hasattr�getrootrrPr5r2r?� TypeErrorr3r"� tag_regexp�match�groupsr �prefixesr&�sorted) r/�indentrNrOZnsmatchr�ns�prefixr*r,Z attr_string�child)�ElementTreeCommentType�rv�serializeElementrrrh�sZ                  " zAgetETreeBuilder..testSerializer..serializeElement� )r)�join)r/)rf)rgrhr�testSerializer�s7 z'getETreeBuilder..testSerializercs2g�tj�������fdd���|�dj��S)z4Serialize an element and its child nodes to a stringcs�t|�j�r|j�}|jdkr||jd�s2|jd�rf|jd�p>d}|jd�pLd}�jd|j||f�n�jd|jf��n|jdkr�|jdk r��j|j�|jdk r�td��t |d �r�t |j �r�td ��x�|D] }�|�q�Wn�|j�k�r�jd |jf�n�|j �s$�jd �j |j�f�n2d j �fdd�|j j�D��}�jd|j|f�|j�rj�j|j�x|D]}�|��qpW�jd|jf�|j�r��j|j�dS)Nz rNrOr=zz rVzDocument node cannot have tailr"z$Document node cannot have attributesz z<%s>rYcs"g|]\}}d�j|�|f�qS)z%s="%s")� fromXmlName)�.0rr,)�filterrr� &szOgetETreeBuilder..tostring..serializeElement..z<%s %s>z)r'rr[rrPr5r2r?r\rZr3r"rlrjr&)r/rNrOre�attr)rrfrnrgrhrrrhs@          z;getETreeBuilder..tostring..serializeElementr=)r Z InfosetFilterrj)r/)rrf)rnrgrhr�tostrings -z!getETreeBuilder..tostringcsDeZdZ�Z�Z�Z�Z�Z�Z�fdd�Z �fdd�Z dd�Z dS)z$getETreeBuilder..TreeBuildercs�|�S)Nr)rr/)rkrrrkAsz3getETreeBuilder..TreeBuilder.testSerializercs<�r |jjS|jdk r*|jjjd|j�S|jjjd�SdS)Nz{%s}htmlr )ZdocumentrZdefaultNamespace�find)r)�fullTreerr� getDocumentDs   z0getETreeBuilder..TreeBuilder.getDocumentcSstjj|�jS)N)r� TreeBuilder� getFragmentr)rrrrrvNsz0getETreeBuilder..TreeBuilder.getFragmentN) rGrHrIZ documentClassZ doctypeClassZ elementClassZ commentClassZ fragmentClass�implementationrkrtrvr)rKrWrXrUr�ElementTreeImplementationrsrkrrru9s  ru)rKrrrEru�locals)rxrsrqrur) rKrWrXrUrrrfrxrsrkr�getETreeBuilders ~ >6$rz)F)Z __future__rrrZpip._vendor.sixr�rer=rr r r Z_utilsr �compiler]rzZgetETreeModulerrrr�s        E