o 7]h$2@sddlmZmZmZddlmZddlZddlmZddlm Z ddlm Z dd lm Z dd l m Z dd l mZed ZdddZeeZdS))absolute_importdivisionunicode_literals) text_typeN)copy)base) _ihatexml) constants) namespaces)moduleFactoryFactoryz {([^}]*)}(.*)Fc sdjGfdddtjGfdddGfdddGfdd d Gfd d d fd d  fdd}G fdddtj}tS)NasdcseZdZd$fdd ZddZddZdd ZeeeZd d Z d d Z ee e Z ddZ ddZ ee e ZddZddZeeeZddZddZddZddZd$ddZd d!Zd"d#ZdS)%z getETreeBuilder..ElementNcs^||_||_||||_|durtd|jf|_n|j|jf|_d|_g|_g|_ dS)Nhtml) _name _namespaceElement _getETreeTag_elementr nameTupleparent _childNodes_flags)selfname namespace ElementTreeI/usr/lib/python3/dist-packages/pip/_vendor/html5lib/treebuilders/etree.py__init__s  z)getETreeBuilder..Element.__init__cSs |dur|}|Sd||f}|S)N{%s}%sr)rrr etree_tagrrrr%s  z-getETreeBuilder..Element._getETreeTagcSs||_||j|j|j_dSN)rrrrtag)rrrrr_setName,z)getETreeBuilder..Element._setNamecS|jSr#)rrrrr_getName0z)getETreeBuilder..Element._getNamecSs||_||j|j|j_dSr#)rrrrr$)rrrrr _setNamespace5r&z.getETreeBuilder..Element._setNamespacecSr'r#)rr(rrr _getNamespace9r*z.getETreeBuilder..Element._getNamespacecS|jjSr#)rattribr(rrr_getAttributes>z/getETreeBuilder..Element._getAttributescSsZ|jj}||r)|D]\}}t|tr"d|d|df}n|}|||<qdSdS)Nr!r r)rr.clearitems isinstancetuple)r attributes el_attribkeyvaluerrrr_setAttributesAs  z/getETreeBuilder..Element._setAttributescSr'r#)rr(rrr_getChildNodesPr*z/getETreeBuilder..Element._getChildNodescSs*|jdd=g|_|D]}||q dSr#)rr insertChild)rr8elementrrr_setChildNodesSs  z/getETreeBuilder..Element._setChildNodescSst|jjp t|jS)z,Return true if the node has children or text)boolrtextlenr(rrr hasContent[sz+getETreeBuilder..Element.hasContentcSs$|j||j|j||_dSr#)rappendrrrnoderrr appendChild_  z,getETreeBuilder..Element.appendChildcSs,t|j|j}|j||j||_dSr#)listrindexinsertr)rrDrefNoderHrrr insertBeforeds z-getETreeBuilder..Element.insertBeforecSs$|j||j|jd|_dSr#)rremoverrrCrrr removeChildirFz,getETreeBuilder..Element.removeChildcSst|js|jjs d|j_|jj|7_dS|dur3|jdjs'd|jd_|jdj|7_dSt|j}||j}|dkr`|j|djsRd|j|d_|j|dj|7_dS|jjshd|j_|jj|7_dS)Nrr)r@rr?tailrGrH)rdatarKchildrenrHrrr insertTextns"     z+getETreeBuilder..Element.insertTextcSs.t||j|j}|jjrt|jj|j_|Sr#)typerrrr.rrr<rrr cloneNodesz*getETreeBuilder..Element.cloneNodecSsl|jr|jdjj|jj7_n|jjsd|j_|jjdur)|jj|jj7_d|j_tj||dS)NrOrN) childNodesrrPr?rNodereparentChildren)r newParentrrrrYs z1getETreeBuilder..Element.reparentChildrenr#)__name__ __module__ __qualname__r rr%r)propertyrr+r,rr/r9r5r:r=rWrArErKrMrSrVrYrrrrrs,       rcs2eZdZfddZddZddZeeeZdS)z getETreeBuilder..Commentcs"||_d|_g|_g|_dSr#)Commentrrrr)rrQrrrr s  z)getETreeBuilder..Comment.__init__cSr-r#rr?r(rrr_getDatar0z)getETreeBuilder..Comment._getDatacSs ||j_dSr#r`rr8rrr_setDatas z)getETreeBuilder..Comment._setDataN)r[r\r]r rarcr^rQrrrrr_s  r_csLeZdZfddZddZddZeeeZddZd d Z eee Z d S) z%getETreeBuilder..DocumentTypecs$|d||j_||_||_dS)N )r rr?publicIdsystemId)rrrerfrrrr s  z.getETreeBuilder..DocumentType.__init__cS|jddS)NrerNrgetr(rrr _getPublicIdz2getETreeBuilder..DocumentType._getPublicIdcS|dur |jd|dSdS)Nrersetrbrrr _setPublicIdz2getETreeBuilder..DocumentType._setPublicIdcSrh)NrfrNrir(rrr _getSystemIdrlz2getETreeBuilder..DocumentType._getSystemIdcSrm)Nrfrnrbrrr _setSystemIdrqz2getETreeBuilder..DocumentType._setSystemIdN) r[r\r]r rkrpr^rerrrsrfrrgrr DocumentTypes  rtceZdZfddZdS)z!getETreeBuilder..Documentc|ddS)N DOCUMENT_ROOTr r(rgrrr z*getETreeBuilder..Document.__init__Nr[r\r]r rrgrrDocumentr{cru)z)getETreeBuilder..DocumentFragmentcrv)NDOCUMENT_FRAGMENTrxr(rgrrr ryz2getETreeBuilder..DocumentFragment.__init__NrzrrgrrDocumentFragmentr|r~cs*gdfdd |ddS)Nrc st|ds |}|jdkr<|ds|dr2|dpd}|dp%d}d|j||fnd|jfn|jdkrqd |jdurYd d |d |jf|jdurbtd t|drpt|j rptdn|jkrdd ||jfnt |jt sJdt |j|jft |j}|dur|j}n|\}}tj|}d||f}dd ||ft|dr g}|j D](\}} t |}|dur|\}}tj|}d||f} n|} || | fqt|D]\}} dd |d || fq|jrd d |d |jf|d 7}|D]} | |q$|jrAd d |d |jfdSdS)Nr$rdrerfrNz rwz #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")hasattrgetrootr$rjrBr?rP TypeErrorr@r.r3rrT tag_regexpmatchgroupsr prefixesr2sorted) r<indentrerfnsmatchrnsprefixr5r8 attr_stringchild)ElementTreeCommentTypervserializeElementrrrsf                 zAgetETreeBuilder..testSerializer..serializeElement )r)joinr<)r)rrrtestSerializers 7 z'getETreeBuilder..testSerializercs2gtfdd|dS)z4Serialize an element and its child nodes to a stringcst|jr |}|jdkr=|ds|dr3|dpd}|dp&d}d|j||fnd|jfn|jdkrn|jdurM|j|jdurVtdt |d rdt |j rdtd |D]}|qfnS|jkr}d |jfnD|j sd  |jfnd fdd|j D}d|j|f|jr|j|D]}|qd|jf|jr̈|jdSdS)NrdrerfrNzrrwrr.rz z<%s>rcs"g|] \}}d||fqS)z%s="%s") fromXmlName).0rr8)filterrr )s   zOgetETreeBuilder..tostring..serializeElement..z<%s %s>z)r3rrr$rjrBr?rPrrr@r.rrr2)r<rerfrattr)rrrrrrrr sH           z;getETreeBuilder..tostring..serializeElementrN)r InfosetFilterrr)rr)rrrrtostrings - z!getETreeBuilder..tostringcsDeZdZZZZZZZfddZ fddZ ddZ dS)z$getETreeBuilder..TreeBuildercs|Sr#rrU)rrrrDr0z3getETreeBuilder..TreeBuilder.testSerializercs8r|jjS|jdur|jjd|jS|jjdS)Nz{%s}htmlr)documentrdefaultNamespacefindr()fullTreerr getDocumentGs z0getETreeBuilder..TreeBuilder.getDocumentcSstj|jSr#)r TreeBuilder getFragmentrr(rrrrQrlz0getETreeBuilder..TreeBuilder.getFragmentN) r[r\r] documentClass doctypeClass elementClass commentClass fragmentClassimplementationrrrr)r_r{r~rtrElementTreeImplementationrrrrr<s   r)r_r$rrXrlocals)rrrrr) r_r{r~rtrrrrrrrgetETreeBuilders  >$6r)F) __future__rrrpip._vendor.sixrrerrNrr r r _utilsr compilerrgetETreeModulerrrrs          F