3 Pf1@sddlmZmZmZddlmZddlZddlmZddlm Z ddlm Z dd l m Z dd l m Z ejd Zdd dZe eZdS))absolute_importdivisionunicode_literals) text_typeN)base) _ihatexml) constants) namespaces)moduleFactoryFactoryz {([^}]*)}(.*)Fc sjdjGfdddtjGfdddGfdddGfdd d Gfd d d fd d  fdd}G fdddtj}tS)NZasdcseZdZd$fdd ZddZddZdd ZeeeZd d Z d d Z ee e Z ddZ ddZ ee e ZddZddZeeeZddZddZddZddZd%ddZd d!Zd"d#ZdS)&z getETreeBuilder..ElementNcs^||_||_j|j|||_|dkr:td|jf|_n|j|jf|_d|_g|_g|_ dS)Nhtml) _name _namespaceElement _getETreeTag_elementr Z nameTupleparent _childNodes_flags)selfname 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)rrrrtag)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)rattrib)rrrr_getAttributes<sz/getETreeBuilder..Element._getAttributescSspx"t|jjjD]}|jj|=qWxF|jD]:\}}t|trVd|d|df}n|}|jj||q.WdS)Nz{%s}%srr)listrr"keysitems isinstancetupleset)r attributeskeyvaluerrrr_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|jS)z,Return true if the node has children or text)boolrtextlen)rrrr hasContentXsz+getETreeBuilder..Element.hasContentcSs$|jj||jj|j||_dS)N)rappendrr)rnoderrr appendChild\s z,getETreeBuilder..Element.appendChildcSs,t|jj|j}|jj||j||_dS)N)r$rindexinsertr)rr6ZrefNoder8rrr insertBeforeasz-getETreeBuilder..Element.insertBeforecSs$|jj||jj|jd|_dS)N)rremoverr)rr6rrr removeChildfs z,getETreeBuilder..Element.removeChildcSst|js,|jjsd|j_|jj|7_n|dkrb|jdjsLd|jd_|jdj|7_nxt|j}|j|j}|dkr|j|djsd|j|d_|j|dj|7_n |jjsd|j_|jj|7_dS)Nrrr>r>)r3rr2tailr$r8)rdatar:Zchildrenr8rrr insertTextks"     z+getETreeBuilder..Element.insertTextcSs8t||j|j}x |jjD]\}}||j|<qW|S)N)typerrr*r&)rr/rr,rrr cloneNodesz*getETreeBuilder..Element.cloneNodecSsl|jr"|jdjj|jj7_n0|jjs2d|j_|jjdk rR|jj|jj7_d|j_tjj||dS)Nrr=r>) childNodesrr?r2rNodereparentChildren)rZ newParentrrrrFs z1getETreeBuilder..Element.reparentChildren)N)N)__name__ __module__ __qualname__rrrrpropertyrr r!rr#r-r*r.r0rDr4r7r:r<rArCrFr)rrrrs*      rcs2eZdZfddZddZddZeeeZdS)z getETreeBuilder..Commentcs"j||_d|_g|_g|_dS)N)Commentrrrr)rr@)rrrrs z)getETreeBuilder..Comment.__init__cSs|jjS)N)rr2)rrrr_getDatasz)getETreeBuilder..Comment._getDatacSs ||j_dS)N)rr2)rr,rrr_setDatasz)getETreeBuilder..Comment._setDataN)rGrHrIrrLrMrJr@r)rrrrKs rKcsLeZdZfddZddZddZeeeZddZd d Z eee Z d S) z%getETreeBuilder..DocumentTypecs$j|d||j_||_||_dS)Nz )rrr2publicIdsystemId)rrrNrO)rrrrs z.getETreeBuilder..DocumentType.__init__cSs|jjddS)NrNr=)rget)rrrr _getPublicIdsz2getETreeBuilder..DocumentType._getPublicIdcSs|dk r|jjd|dS)NrN)rr))rr,rrr _setPublicIdsz2getETreeBuilder..DocumentType._setPublicIdcSs|jjddS)NrOr=)rrP)rrrr _getSystemIdsz2getETreeBuilder..DocumentType._getSystemIdcSs|dk r|jjd|dS)NrO)rr))rr,rrr _setSystemIdsz2getETreeBuilder..DocumentType._setSystemIdN) rGrHrIrrQrRrJrNrSrTrOr)rrr DocumentTypes  rUcseZdZfddZdS)z!getETreeBuilder..Documentcsj|ddS)N DOCUMENT_ROOT)r)r)rrrrsz*getETreeBuilder..Document.__init__N)rGrHrIrr)rrrDocumentsrWcseZdZfddZdS)z)getETreeBuilder..DocumentFragmentcsj|ddS)NZDOCUMENT_FRAGMENT)r)r)rrrrsz2getETreeBuilder..DocumentFragment.__init__N)rGrHrIrr)rrrDocumentFragmentsrXcs*gdfdd |ddjS)Nrc szt|ds|j}|jdkrz|jds0|jdrd|jdpW|jrvjd d |d |jfdS)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")hasattrgetrootrrPr5r2r? TypeErrorr3r" tag_regexpmatchgroupsr prefixesr&sorted) r/indentrNrOZnsmatchrnsprefixr*r,Z attr_stringchild)ElementTreeCommentTypervserializeElementrrrhsZ                  " zAgetETreeBuilder..testSerializer..serializeElement )r)join)r/)rf)rgrhrtestSerializers7 z'getETreeBuilder..testSerializercs2gtjfdd|djS)z4Serialize an element and its child nodes to a stringcst|jr|j}|jdkr||jds2|jdrf|jdp>d}|jdpLd}jd|j||fnjd|jfn|jdkr|jdk rj|j|jdk rtdt |d rt |j rtd x|D] }|qWn|jkrjd |jfn|j s$jd j |jfn2d j fdd|j jD}jd|j|f|jrjj|jx|D]}|qpWjd|jf|jrj|jdS)Nz rNrOr=zz rVzDocument node cannot have tailr"z$Document node cannot have attributesz z<%s>rYcs"g|]\}}dj||fqS)z%s="%s") fromXmlName).0rr,)filterrr &szOgetETreeBuilder..tostring..serializeElement..z<%s %s>z)r'rr[rrPr5r2r?r\rZr3r"rlrjr&)r/rNrOreattr)rrfrnrgrhrrrhs@          z;getETreeBuilder..tostring..serializeElementr=)r Z InfosetFilterrj)r/)rrf)rnrgrhrtostrings -z!getETreeBuilder..tostringcsDeZdZZZZZZZfddZ fddZ ddZ dS)z$getETreeBuilder..TreeBuildercs|S)Nr)rr/)rkrrrkAsz3getETreeBuilder..TreeBuilder.testSerializercs<r |jjS|jdk r*|jjjd|jS|jjjdSdS)Nz{%s}htmlr )ZdocumentrZdefaultNamespacefind)r)fullTreerr getDocumentDs   z0getETreeBuilder..TreeBuilder.getDocumentcSstjj|jS)N)r TreeBuilder getFragmentr)rrrrrvNsz0getETreeBuilder..TreeBuilder.getFragmentN) rGrHrIZ documentClassZ doctypeClassZ elementClassZ commentClassZ fragmentClassimplementationrkrtrvr)rKrWrXrUrElementTreeImplementationrsrkrrru9s  ru)rKrrrErulocals)rxrsrqrur) rKrWrXrUrrrfrxrsrkrgetETreeBuilders ~ >6$rz)F)Z __future__rrrZpip._vendor.sixrrer=rr r r Z_utilsr compiler]rzZgetETreeModulerrrrs        E