3 öLÖjeã@sðddlZddlZddlmZmZmZmZddlTddlm Z m Z ej j j ej j jfZGdd„dej j ƒZ ee ddd �ee d d d �ee d d d �dd„Zdd„Zdd„Zdd„ZGdd„de ƒZGdd„de ƒZeeddd �eed dd �eeddd �Gdd „d eƒZeed!d"d �eZGd#d$„d$eƒZeddƒZGd%d&„d&e ƒZeed'd(d �eed d)d �d*d+„ZGd,d-„d-ƒZGd.d/„d/ee ƒZGd0d1„d1ee ƒZ ee d!d2d �Gd3d4„d4e ƒZ!ee!d5d6d �ee!d7d8d �d9d:„Z"d;d<„Z#Gd=d>„d>e ƒZ$Gd?d@„d@e!ƒZ%GdAdB„dBeƒZ&ee&d!dCd �GdDdE„dEƒZ'GdFdG„dGe'ee ƒZ(GdHdI„dIe'e ƒZ)GdJdK„dKe'ee ƒZ*GdLdM„dMe ƒZ+GdNdO„dOeƒZ,dPdQ„Z-GdRdS„dSe e ƒZ.ee.dTdUd �dVdW„Z/dXdY„Z0dZd[„Z1dbd\d]„Z2dcd^d_„Z3ddd`da„Z4dS)eéN)ÚEMPTY_NAMESPACEÚ EMPTY_PREFIXÚXMLNS_NAMESPACEÚdomreg)Ú*)ÚDOMImplementationLSÚ DocumentLSc@sàeZdZdZdZdZdZdZeZ dd„Z d2dd„Z d3dd „Z d d „Z d d „Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zd d!„Zd"d#„Zd$d%„Zd&d'„Zd(d)„Zd*d+„Zd,d-„Zd.d/„Zd0d1„Z dS)4ÚNodeNcCsdS)NT©)Úselfr r ú'/usr/lib64/python3.6/xml/dom/minidom.pyÚ__bool__+sz Node.__bool__cCs|jdd|ƒS)NÚ)Ú toprettyxml)r Úencodingr r r Útoxml.sz Node.toxmlú Ú cCsx|dkrtjƒ}ntjtjƒ|ddd�}|jtjkrH|j|d|||ƒn|j|d||ƒ|dkrh|jƒS|j ƒjƒSdS)NÚxmlcharrefreplacer)rÚerrorsÚnewliner) ÚioÚStringIOÚ TextIOWrapperÚBytesIOÚnodeTyper Ú DOCUMENT_NODEÚwritexmlÚgetvalueÚdetach)r ÚindentÚnewlrÚwriterr r r r1s   zNode.toprettyxmlcCs t|jƒS)N)ÚboolÚ childNodes)r r r r Ú hasChildNodesCszNode.hasChildNodescCs|jS)N)r$)r r r r Ú_get_childNodesFszNode._get_childNodescCs|jr|jdSdS)Nr)r$)r r r r Ú_get_firstChildIszNode._get_firstChildcCs|jr|jdSdS)Nééÿÿÿÿ)r$)r r r r Ú_get_lastChildMszNode._get_lastChildc Cs|j|jkr0xt|jƒD]}|j||ƒqW|S|j|jkrXtjjdt |ƒt |ƒfƒ‚|j dk rn|j j |ƒ|dkr‚|j |ƒnˆy|jj |ƒ}Wntk r°tjjƒ‚YnX|jtkrÄt|ƒ|jj||ƒ||_||_|rþ|j|d}||_||_nd|_||_ |S)Nz%s cannot be child of %sr()rÚDOCUMENT_FRAGMENT_NODEÚtupler$Ú insertBeforeÚ_child_node_typesÚxmlÚdomÚHierarchyRequestErrÚreprÚ parentNodeÚ removeChildÚ appendChildÚindexÚ ValueErrorÚ NotFoundErrÚ_nodeTypes_with_childrenÚ_clear_id_cacheÚinsertÚ nextSiblingÚpreviousSibling)r ÚnewChildÚrefChildÚcr6Únoder r r r-Qs6      zNode.insertBeforecCs”|j|jkr.xt|jƒD]}|j|ƒqW|S|j|jkrXtjjdt |ƒt |ƒfƒ‚n|jt krjt |ƒ|j dk r€|j j |ƒt||ƒd|_|S)Nz%s cannot be child of %s)rr+r,r$r5r.r/r0r1r2r9r:r3r4Ú _append_childr<)r rAr@r r r r5qs      zNode.appendChildc Cs|j|jkr(|j}|j|ƒ|j||ƒS|j|jkrPtjjdt |ƒt |ƒfƒ‚||kr\dS|j dk rr|j j|ƒy|j j |ƒ}Wnt k r tjjƒ‚YnX||j |<||_ d|_ |jtksÌ|jtkrÔt|ƒ|j|_|j|_d|_d|_|jrþ||j_|j�r||j_|S)Nz%s cannot be child of %s)rr+r<r4r-r.r/r0r1r2r3r$r6r7r8r9r:r=)r r>ÚoldChildr?r6r r r Ú replaceChild‚s<         zNode.replaceChildc Cs€y|jj|ƒWntk r.tjjƒ‚YnX|jdk rD|j|j_|jdk rX|j|j_d|_|_|jt krvt |ƒd|_ |S)N) r$Úremover7r/r0r8r<r=rr9r:r3)r rCr r r r4¢s      zNode.removeChildcCsÖg}x¾|jD]´}|jtjkr¢|jsL|r2|j|d_|jrB|j|j_|jƒqÀ|r–|dj|jkr–|d}|j|j|_|j|_|jrŒ||j_|jƒqÀ|j|ƒq |j|ƒ|jtj kr |j ƒq W||jdd…<dS)Nr(r)r)r)) r$rr Ú TEXT_NODEÚdatar<r=ÚunlinkÚappendÚ ELEMENT_NODEÚ normalize)r ÚLÚchildrAr r r rK²s*          zNode.normalizecCst|||jp|ƒS)N)Ú _clone_nodeÚ ownerDocument)r Údeepr r r Ú cloneNodeÍszNode.cloneNodecCs|jjj||ƒS)N)rOÚimplementationÚ hasFeature)r ÚfeatureÚversionr r r Ú isSupportedÐszNode.isSupportedcCsdS)Nr )r r r r Ú_get_localNameÓszNode._get_localNamecCs||kS)Nr )r Úotherr r r Ú isSameNodeÙszNode.isSameNodecCs|j|dƒr|SdSdS)N)rV)r rTr r r Ú getInterfaceÜs zNode.getInterfacec Cs,y|j|dSttfk r&dSXdS)Nr)Ú _user_dataÚAttributeErrorÚKeyError)r Úkeyr r r Ú getUserDataæszNode.getUserDatac Csnd}y |j}Wntk r,i}||_YnX||krB||d}|dkr^d}|dk rj||=n ||f||<|S)Nr)r[r\)r r^rGÚhandlerÚoldÚdr r r Ú setUserDataìs    zNode.setUserDatacCsHt|dƒrDx8t|jjƒƒD]&\}\}}|dk r|j|||||ƒqWdS)Nr[)ÚhasattrÚlistr[ÚitemsZhandle)r Ú operationÚsrcÚdstr^rGr`r r r Ú_call_user_data_handlerþs zNode._call_user_data_handlercCsBd|_|_|jr2x|jD] }|jƒqWtƒ|_d|_d|_dS)N)r3rOr$rHÚNodeListr=r<)r rMr r r rHs   z Node.unlinkcCs|S)Nr )r r r r Ú __enter__szNode.__enter__cCs |jƒdS)N)rH)r ZetZevÚtbr r r Ú__exit__sz Node.__exit__)N)rrN)!Ú__name__Ú __module__Ú __qualname__Ú namespaceURIr3rOr<r=rÚprefixr rrr%r&r'r*r-r5rDr4rKrQrVrWrYrZr_rcrjrHrlrnr r r r r "s:      r Ú firstChildzFirst child node, or None.)ÚdocÚ lastChildzLast child node, or None.Ú localNamez"Namespace-local name of this node.cCs2|j}|r|d}||_||_|j|ƒ||_dS)Nr(r))r$r=r<rIr3)r rAr$Zlastr r r rBs rBcCs6|r2|jddƒjddƒjddƒjddƒ}|j|ƒdS) Nú&z&úz>)ÚreplaceÚwrite)r"rGr r r Ú _write_data'sr~cCsHxB|jD]8}|jtjkr4|dks*|j|kr4|j|ƒt|||ƒqW|S)Nr)r$rr rJÚtagNamerIÚ_get_elements_by_tagName_helper)ÚparentÚnameÚrcrAr r r r€.s    r€cCs\xV|jD]L}|jtjkr|dks*|j|krF|dks<|j|krF|j|ƒt||||ƒqW|S)Nr)r$rr rJrwrrrIÚ"_get_elements_by_tagName_ns_helper)r�ZnsURIrwrƒrAr r r r„6s   r„c@sJeZdZejZdZdZdZdZ ej ej ej ej ejejejfZdd„ZdS)ÚDocumentFragmentz#document-fragmentNcCs tƒ|_dS)N)rkr$)r r r r Ú__init__MszDocumentFragment.__init__)rorprqr r+rÚnodeNameÚ nodeValueÚ attributesr3rJrFÚCDATA_SECTION_NODEÚENTITY_REFERENCE_NODEÚPROCESSING_INSTRUCTION_NODEÚ COMMENT_NODEÚ NOTATION_NODEr.r†r r r r r…?sr…c@s¼eZdZd#ZejZd Zd Zd Z ej ej fZ e d d fd d „Zd d„Zdd„Zdd„Zdd„ZeeeƒZZdd„Zdd„ZeeeƒZZdd„Zdd„ZeeeƒZdd„Zdd „Zd!d"„Zd S)$ÚAttrÚ_nameÚ_valuerrÚ_prefixr$Ú _localNamerOÚ ownerElementNFcCs8d|_d|_||_||_||_tƒ|_|jjtƒƒdS)N) r”rOr�rrr’rkr$rIÚText)r ÚqNamerrrwrsr r r r†[sz Attr.__init__c Cs.y|jStk r(|jjddƒdSXdS)Nú:r(r))r“r\r‡Úsplit)r r r r rWiszAttr._get_localNamecCs|jS)N)Ú specified)r r r r Ú_get_specifiedoszAttr._get_specifiedcCs|jS)N)r�)r r r r Ú _get_namerszAttr._get_namecCs||_|jdk rt|jƒdS)N)r�r”r:)r Úvaluer r r Ú _set_nameus zAttr._set_namecCs|jS)N)r‘)r r r r Ú _get_value|szAttr._get_valuecCs6||_||jd_|jdk r&t|jƒ||jd_dS)Nr)r‘r$rGr”r:)r rœr r r Ú _set_values    zAttr._set_valuecCs|jS)N)r’)r r r r Ú _get_prefixˆszAttr._get_prefixcCsd|j}|dkr&|r&|tkr&tjjdƒ‚||_|dkr<|j}nd||jf}|jrZt|jƒ||_ dS)NÚxmlnsz5illegal use of 'xmlns' prefix for the wrong namespacez%s:%s) rrrr/r0Ú NamespaceErrr’rwr”r:r‚)r rsZnsuriZnewNamer r r Ú _set_prefix‹s  zAttr._set_prefixcCsz|j}|dk rR|j|j=|j|j|jf=|jrRd|_|jd8_|jj d8_ x|j D] }|j ƒqZW|j dd…=dS)NFr() r”Ú_attrsr‡Ú_attrsNSrrrwÚ_is_idÚ_magic_id_nodesrOÚ_magic_id_countr$rH)r ÚelemrMr r r rHœs   z Attr.unlinkcCsf|jr dS|j}|j}|dks&|dkr*dS|j|ƒ}|dkr@dS|jrV|j|j|jƒS|j|jƒSdS)NTF) r¦rOr”Ú_get_elem_inforrÚisIdNSrwÚisIdr‡)r rur©Úinfor r r Ú _get_isId­s zAttr._get_isIdcCs\|j}|j}|dks|dkr tS|j|ƒ}|dkr6tS|jrL|j|j|jƒS|j|jƒSdS)N) rOr”Ú_no_typerªrrÚgetAttributeTypeNSrwÚgetAttributeTyper‡)r rur©r­r r r Ú_get_schemaType½s zAttr._get_schemaType)r�r‘rrr’r$r“rOr”) rorprqÚ __slots__r ÚATTRIBUTE_NODErr‰r™r¦rFr‹r.rr†rWršr›r�Úpropertyr‡r‚ržrŸrˆrœr r£rsrHr®r²r r r r r�Qs.   r�r¬z True if this attribute is an ID.z'Namespace-local name of this attribute.Ú schemaTypezSchema type for this attribute.c@sîeZdZd;Zdd„Zdd„Zdd „Zd d „Zd d „Zdd„Z dd„Z dd„Z dd„Z dz<%s %r>)ràÚ __class__ror‚)r r r r Ú__repr__€s  zTypeInfo.__repr__cCs|jS)N)r‚)r r r r r›‡szTypeInfo._get_namecCs|jS)N)rà)r r r r Ú_get_namespaceŠszTypeInfo._get_namespaceN)ràr‚)rorprqr³r†râr›rãr r r r rßys rßc @s eZdZdDZejZd ZeZ dZ ejej ej ej ejejfZed d fdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd „Zd!d"„Zd#d$„Zd%d&„ZeZd'd(„Zd)d*„Z d+d,„Z!e!Z"d-d.„Z#d/d0„Z$d1d2„Z%d3d4„Z&d5d6„Z'dEd8d9„Z(d:d;„Z)dd?„Z+d@dA„Z,dBdC„Z-d S)FÚElementrOr3rr‡rsrrr“r$r¤r¥r<r=NrcCsHd|_d|_||_|_||_||_tƒ|_d|_|_ d|_ d|_ dS)N) rOr3rr‡rsrrrkr$r<r=r¤r¥)r rrrrsrwr r r r† s  zElement.__init__cCs|jdkri|_i|_dS)N)r¤r¥)r r r r Ú_ensure_attributesµs zElement._ensure_attributesc Cs.y|jStk r(|jjddƒdSXdS)Nr—r(r))r“r\rr˜)r r r r rWºszElement._get_localNamecCs|jS)N)r)r r r r Ú _get_tagNameÀszElement._get_tagNamecCsD|jdk r*xt|jjƒƒD] }|jƒqWd|_d|_tj|ƒdS)N)r¤rer¿rHr¥r )r Úattrr r r rHÃs   zElement.unlinkc Cs4|jdkrdSy |j|jStk r.dSXdS)Nr)r¤rœr])r rÒr r r Ú getAttributeËs   zElement.getAttributec Cs8|jdkrdSy|j||fjStk r2dSXdS)Nr)r¥rœr])r rrrwr r r ÚgetAttributeNSÓs  zElement.getAttributeNScCsV|j|ƒ}|dkr4t|ƒ}||_|j|_|j|ƒn||jkrR||_|jrRt|ƒdS)N)ÚgetAttributeNoder�rœrOÚsetAttributeNoder¬r:)r rÒrœrçr r r Ú setAttributeÛs   zElement.setAttributecCs€t|ƒ\}}|j||ƒ}|dkrHt||||ƒ}||_|j|_|j|ƒn4||jkrf||_|jrft|ƒ|j|kr|||_||_ dS)N) Ú_nssplitÚgetAttributeNodeNSr�rœrOrër¬r:rsr‡)r rrÚ qualifiedNamerœrsÚ localnamerçr r r ÚsetAttributeNSçs     zElement.setAttributeNScCs|jdkrdS|jj|ƒS)N)r¤rÅ)r Zattrnamer r r rêøs zElement.getAttributeNodecCs|jdkrdS|jj||fƒS)N)r¥rÅ)r rrrwr r r rîýs zElement.getAttributeNodeNScCsš|jd|fkrtjjdƒ‚|jƒ|jj|jdƒ}|dk rD|j|ƒ|j j|j |j fdƒ}|dk rt||k rt|j|ƒt ||ƒ||k rŠ|S||k r–|SdS)Nzattribute node already owned) r”r/r0ZInuseAttributeErrrår¤rÅr‚ÚremoveAttributeNoder¥rrrwÚ_set_attribute_node)r rçZold1Zold2r r r rës    zElement.setAttributeNodec CsP|jdkrtjjƒ‚y|j|}Wntk r@tjjƒ‚YnX|j|ƒdS)N)r¥r/r0r8r¤r]rò)r r‚rçr r r ÚremoveAttributes  zElement.removeAttributec CsT|jdkrtjjƒ‚y|j||f}Wntk rDtjjƒ‚YnX|j|ƒdS)N)r¥r/r0r8r]rò)r rrrwrçr r r ÚremoveAttributeNS s  zElement.removeAttributeNSc Cs^|dkrtjjƒ‚y|j|jWntk r@tjjƒ‚YnXt|ƒ|jƒ|j|_dS)N) r/r0r8r¤r‚r]r:rHrO)r rAr r r rò)s zElement.removeAttributeNodecCs|jdkrdS||jkS)NF)r¤)r r‚r r r Ú hasAttribute8s zElement.hasAttributecCs|jdkrdS||f|jkS)NF)r¥)r rrrwr r r ÚhasAttributeNS=s zElement.hasAttributeNScCst||tƒƒS)N)r€rk)r r‚r r r ÚgetElementsByTagNameBszElement.getElementsByTagNamecCst|||tƒƒS)N)r„rk)r rrrwr r r ÚgetElementsByTagNameNSEszElement.getElementsByTagNameNScCsd|jt|ƒfS)Nz)rrÇ)r r r r râIszElement.__repr__rc Cs|j|d|jƒ|jƒ}t|jƒƒ}x4|D],}|jd|ƒt|||jƒ|jdƒq.W|jrô|jdƒt|jƒdkr¦|jdj t j kr¦|jdj |dddƒn8|j|ƒx"|jD]}|j |||||ƒq¸W|j|ƒ|jd|j|fƒn|jd |ƒdS) Nryz %s="rzr{r(rrz%sz/>%s) r}rÚ_get_attributesÚsortedr¼r~rœr$rºrr rFr) r r"r Ú addindentr!r¹Za_namesZa_namerAr r r rLs$      zElement.writexmlcCs|jƒt|j|j|ƒS)N)rår·r¤r¥)r r r r rúgszElement._get_attributescCs|jr dSdSdS)NTF)r¤)r r r r Ú hasAttributeskszElement.hasAttributescCs|j|ƒ}|j|ƒdS)N)rêÚsetIdAttributeNode)r r‚ÚidAttrr r r ÚsetIdAttributess zElement.setIdAttributecCs|j||ƒ}|j|ƒdS)N)rîrþ)r rrrwrÿr r r ÚsetIdAttributeNSws zElement.setIdAttributeNScCsl|dks|j|jƒ r tjjƒ‚t|ƒdk r6tjjƒ‚|jshd|_|jd7_|j j d7_ t |ƒdS)NTr() rYr”r/r0r8Ú_get_containing_entrefÚNoModificationAllowedErrr¦r§rOr¨r:)r rÿr r r rþ{s   zElement.setIdAttributeNode) rOr3rr‡rsrrr“r$r¤r¥r<r=)rrr).rorprqr³r rJrrˆr¯r¶r§rŒr�rFrŠr‹r.rr†rårWrærHrèrérìrñrêrîrëZsetAttributeNodeNSrôrõròZremoveAttributeNodeNSrör÷rørùrârrúrýrrrþr r r r rä�sT      rär‰z*NamedNodeMap of attributes on the element.z%Namespace-local name of this element.cCs8t|ƒ|jƒ||j|j<||j|j|jf<||_dS)N)r:rår¤r‚r¥rrrwr”)Úelementrçr r r róŒs  róc@sbeZdZfZdZeƒZdZdZdd„Z dd„Z dd„Z dd „Z d d „Z d d „Zdd„Zdd„ZdS)Ú ChildlessNcCsdS)Nr )r r r r r'¢szChildless._get_firstChildcCsdS)Nr )r r r r r*¥szChildless._get_lastChildcCstjj|jdƒ‚dS)Nz nodes cannot have children)r/r0r1r‡)r rAr r r r5¨szChildless.appendChildcCsdS)NFr )r r r r r%¬szChildless.hasChildNodescCstjj|jdƒ‚dS)Nz nodes do not have children)r/r0r1r‡)r r>r?r r r r-¯szChildless.insertBeforecCstjj|jdƒ‚dS)Nz nodes do not have children)r/r0r8r‡)r rCr r r r4³szChildless.removeChildcCsdS)Nr )r r r r rK·szChildless.normalizecCstjj|jdƒ‚dS)Nz nodes do not have children)r/r0r1r‡)r r>rCr r r rD»szChildless.replaceChild)rorprqr³r‰Z EmptyNodeListr$rtrvr'r*r5r%r-r4rKrDr r r r r—src@s\eZdZejZdZdd„Zdd„Zdd„Z e ee ƒZ d d „Z d d „Z e e e ƒZddd„ZdS)ÚProcessingInstructionÚtargetrGcCs||_||_dS)N)rrG)r rrGr r r r†ÄszProcessingInstruction.__init__cCs|jS)N)rG)r r r r Ú_get_nodeValueÉsz$ProcessingInstruction._get_nodeValuecCs ||_dS)N)rG)r rœr r r Ú_set_nodeValueËsz$ProcessingInstruction._set_nodeValuecCs|jS)N)r)r r r r Ú _get_nodeNameÐsz#ProcessingInstruction._get_nodeNamecCs ||_dS)N)r)r rœr r r Ú _set_nodeNameÒsz#ProcessingInstruction._set_nodeNamercCs|jd||j|j|fƒdS)Nz %s%s)r}rrG)r r"r rür!r r r rÖszProcessingInstruction.writexmlN)rrG)rrr)rorprqr rŒrr³r†rr rµrˆr r r‡rr r r r rÀs  rc@sreZdZdZdd„Zdd „ZeZd d „Zd d „Ze eeƒZ Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„ZdS)Ú CharacterDataÚ_datarOr3r=r<cCs,d|_|_d|_|_d|_tj|ƒdS)Nr)rOr3r=r<r r r†)r r r r r†Ýs  zCharacterData.__init__cCs t|jƒS)N)rºrG)r r r r r»ãszCharacterData._get_lengthcCs|jS)N)r )r r r r Ú _get_dataçszCharacterData._get_datacCs ||_dS)N)r )r rGr r r Ú _set_dataészCharacterData._set_datacCs6|j}t|ƒdkrd}nd}d|jj|dd…|fS)Né z...rzr)rGrºráro)r rGZ dotdotdotr r r râîs  zCharacterData.__repr__cCsT|dkrtjjdƒ‚|t|jƒkr.tjjdƒ‚|dkrBtjjdƒ‚|j|||…S)Nrzoffset cannot be negativez#offset cannot be beyond end of datazcount cannot be negative)r/r0Ú IndexSizeErrrºrG)r ÚoffsetÚcountr r r Ú substringData÷s   zCharacterData.substringDatacCs|j||_dS)N)rG)r Úargr r r Ú appendDataszCharacterData.appendDatacCsZ|dkrtjjdƒ‚|t|jƒkr.tjjdƒ‚|rVd|jd|…||j|d…f|_dS)Nrzoffset cannot be negativez#offset cannot be beyond end of dataz%s%s%s)r/r0rrºrG)r rrr r r Ú insertDatas  zCharacterData.insertDatacCsl|dkrtjjdƒ‚|t|jƒkr.tjjdƒ‚|dkrBtjjdƒ‚|rh|jd|…|j||d…|_dS)Nrzoffset cannot be negativez#offset cannot be beyond end of datazcount cannot be negative)r/r0rrºrG)r rrr r r Ú deleteData s   zCharacterData.deleteDatacCsr|dkrtjjdƒ‚|t|jƒkr.tjjdƒ‚|dkrBtjjdƒ‚|rnd|jd|…||j||d…f|_dS)Nrzoffset cannot be negativez#offset cannot be beyond end of datazcount cannot be negativez%s%s%s)r/r0rrºrG)r rrrr r r Ú replaceDatas   zCharacterData.replaceDataN)r rOr3r=r<)rorprqr³r†r»rÞrrrµrGrˆrârrrrrr r r r r Ús    r zLength of the string data.c@sHeZdZfZejZdZdZdd„Z ddd„Z dd „Z d d „Z d d „Z dS)r•z#textNcCs’|dks|t|jƒkr"tjjdƒ‚|jƒ}|j|d…|_|j|_|j}|jr~||jj kr~|dkrp|jj |ƒn|jj ||ƒ|jd|…|_|S)Nrzillegal offset value) rºrGr/r0rrárOr<r3r$r5r-)r rZnewTextÚnextr r r Ú splitText+s zText.splitTextrcCst|d||j|fƒdS)Nz%s%s%s)r~rG)r r"r rür!r r r r:sz Text.writexmlcCsŒ|jg}|j}x6|dk rD|jtjtjfkr@|jd|jƒ|j}qPqW|j}x4|dk r€|jtjtjfkr||j|jƒ|j}qNPqNWdj |ƒS)Nrr) rGr=rr rFrŠr;r<rIÚjoin)r rLrÖr r r Ú_get_wholeText?s   zText._get_wholeTextcCs¦|j}|j}x6|dk rB|jtjtjfkr>|j}|j|ƒ|}qPqW|j}|sX|j|ƒx6|dk rŽ|jtjtjfkrŠ|j}|j|ƒ|}qZPqZW|rž||_|SdSdS)N) r3r=rr rFrŠr4r<rG)r Zcontentr�rÖrr r r ÚreplaceWholeTextQs*     zText.replaceWholeTextcCsF|jjƒrdSt|ƒ}|dkr"dS|jj|ƒ}|dkr:dS|jƒSdS)NF)rGÚstripÚ_get_containing_elementrOrªÚisElementContent)r r©r­r r r Ú!_get_isWhitespaceInElementContentms  z&Text._get_isWhitespaceInElementContent)rrr)rorprqr³r rFrr‡r‰rrrrr"r r r r r•$s r•ZisWhitespaceInElementContentzKTrue iff this text node contains only whitespace and is in element content.Z wholeTextz.The text of all logically-adjacent text nodes.cCs.|j}x"|dk r(|jtjkr |S|j}qWdS)N)r3rr rJ)rAr@r r r r €s    r cCs.|j}x"|dk r(|jtjkr |S|j}qWdS)N)r3rr r‹)rAr@r r r rˆs    rc@s(eZdZejZdZdd„Zddd„ZdS) ÚCommentz#commentcCstj|ƒ||_dS)N)r r†r )r rGr r r r†•s zComment.__init__rcCs,d|jkrtdƒ‚|jd||j|fƒdS)Nz--z%'--' is not allowed in a comment nodez %s%s)rGr7r})r r"r rür!r r r r™s zComment.writexmlN)rrr) rorprqr r�rr‡r†rr r r r r#‘sr#c@s$eZdZfZejZdZddd„ZdS)Ú CDATASectionz#cdata-sectionrcCs,|jjdƒdkrtdƒ‚|jd|jƒdS)Nz]]>rz$']]>' not allowed in a CDATA sectionz)rGÚfindr7r})r r"r rür!r r r r¥szCDATASection.writexmlN)rrr) rorprqr³r rŠrr‡rr r r r r$Ÿsr$c@s|eZdZdZffdd„Zdd„Zdd„Zdd „Zd d „Zd d „Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„ZdS)ÚReadOnlySequentialNamedNodeMapÚ_seqcCs ||_dS)N)r')r Úseqr r r r†®sz'ReadOnlySequentialNamedNodeMap.__init__cCs t|jƒS)N)rºr')r r r r rÞ²sz&ReadOnlySequentialNamedNodeMap.__len__cCs t|jƒS)N)rºr')r r r r r»µsz*ReadOnlySequentialNamedNodeMap._get_lengthcCs"x|jD]}|j|kr|SqWdS)N)r'r‡)r r‚rÖr r r rÔ¸s  z+ReadOnlySequentialNamedNodeMap.getNamedItemcCs,x&|jD]}|j|kr|j|kr|SqWdS)N)r'rrrw)r rrrwrÖr r r rÕ½s z-ReadOnlySequentialNamedNodeMap.getNamedItemNScCs4t|tƒr|j|Ž}n |j|ƒ}|dkr0t|ƒ‚|S)N)rÁr,rÕrÔr])r Z name_or_tuplerAr r r rÏÂs    z*ReadOnlySequentialNamedNodeMap.__getitem__c Cs0|dkr dSy |j|Stk r*dSXdS)Nr)r'r½)r r6r r r r¾Ës  z#ReadOnlySequentialNamedNodeMap.itemcCstjjdƒ‚dS)Nz"NamedNodeMap instance is read-only)r/r0r)r r‚r r r r×Ósz.ReadOnlySequentialNamedNodeMap.removeNamedItemcCstjjdƒ‚dS)Nz"NamedNodeMap instance is read-only)r/r0r)r rrrwr r r rØ×sz0ReadOnlySequentialNamedNodeMap.removeNamedItemNScCstjjdƒ‚dS)Nz"NamedNodeMap instance is read-only)r/r0r)r rAr r r rÐÛsz+ReadOnlySequentialNamedNodeMap.setNamedItemcCstjjdƒ‚dS)Nz"NamedNodeMap instance is read-only)r/r0r)r rAr r r rÙßsz-ReadOnlySequentialNamedNodeMap.setNamedItemNScCs|jgS)N)r')r r r r rÛãsz+ReadOnlySequentialNamedNodeMap.__getstate__cCs|d|_dS)Nr)r')r rÜr r r rÝæsz+ReadOnlySequentialNamedNodeMap.__setstate__N)r')rorprqr³r†rÞr»rÔrÕrÏr¾r×rØrÐrÙrÛrÝr r r r r&«s  r&z&Number of entries in the NamedNodeMap.c@s(eZdZd Zdd„Zdd„Zdd„Zd S) Ú IdentifiedÚpublicIdÚsystemIdcCs||_||_dS)N)r*r+)r r*r+r r r Ú_identified_mixin_initòsz!Identified._identified_mixin_initcCs|jS)N)r*)r r r r Ú _get_publicIdöszIdentified._get_publicIdcCs|jS)N)r+)r r r r Ú _get_systemIdùszIdentified._get_systemIdN)r*r+)rorprqr³r,r-r.r r r r r)ísr)c@sHeZdZejZdZdZdZdZ dZ dd„Z dd„Z dd„Z d d d „ZdS) Ú DocumentTypeNcCs2tƒ|_tƒ|_|r&t|ƒ\}}||_|j|_dS)N)r&ÚentitiesÚ notationsrír‚r‡)r rïrsrðr r r r†s  zDocumentType.__init__cCs|jS)N)ÚinternalSubset)r r r r Ú_get_internalSubset sz DocumentType._get_internalSubsetcCsö|jdkrîtdƒ}|j|_|j|_tjjj}|rÜg|j_ g|j _ x>|j j D]2}t |j|j |j ƒ}|j j j|ƒ|j|||ƒqJWxZ|jj D]N}t|j|j |j |jƒ}|j|_|j|_|j|_|jj j|ƒ|j|||ƒqŠW|j|||ƒ|SdSdS)N)rOr/r‚r‡r/r0ÚUserDataHandlerÚ NODE_CLONEDr0r'r1ÚNotationr*r+rIrjÚEntityÚ notationNameÚactualEncodingrrU)r rPÚclonergrÖÚnotationÚeÚentityr r r rQs.  zDocumentType.cloneNodercCsŽ|jdƒ|j|jƒ|jr8|jd||j||jfƒn|jrR|jd||jfƒ|jdk r||jdƒ|j|jƒ|jdƒ|jd|ƒdS)Nz r r r r5PszEntity.appendChildcCstjjdƒ‚dS)Nz+cannot insert children below an entity node)r/r0r1)r r>r?r r r r-TszEntity.insertBeforecCstjjdƒ‚dS)Nz*cannot remove children from an entity node)r/r0r1)r rCr r r r4XszEntity.removeChildcCstjjdƒ‚dS)Nz)cannot replace children of an entity node)r/r0r1)r r>rCr r r rD\szEntity.replaceChild)rorprqr‰r Z ENTITY_NODErrˆr9rrUr†r@rArBr5r-r4rDr r r r r78sr7c@seZdZejZdZdd„ZdS)r6NcCs||_|j||ƒdS)N)r‡r,)r r‚r*r+r r r r†dszNotation.__init__)rorprqr rŽrrˆr†r r r r r6`sr6c @sHeZdZddddddddgZdd „Zd d „Zd d „Zdd„Zdd„ZdS)ÚDOMImplementationÚcoreú1.0ú2.0Nr/úls-loadú3.0cCs|dkr d}|jƒ|f|jkS)Nr)ÚlowerÚ _features)r rTrUr r r rStszDOMImplementation.hasFeaturec CsØ|r|jdk rtjjdƒ‚|jƒ}|dko8|dko8|dk }| rR|rRtjjdƒ‚|r¸t|ƒ\}}|dkr~|dkr~tjjdƒ‚|r”| r”tjjdƒ‚|j||ƒ}|r®|j |ƒ|j |ƒ|rÈ||_|_ ||_ ||_ |S)Nz(doctype object owned by another DOM treezElement with no namer/z$http://www.w3.org/XML/1998/namespacezillegal use of 'xml' prefixz(illegal use of prefix without namespaces) r3r/r0ÚWrongDocumentErrÚ_create_documentZInvalidCharacterErrrír¢ÚcreateElementNSr5rOÚdoctyperR) r rrrïrNruZadd_root_elementrsrðrr r r ÚcreateDocumentys4         z DOMImplementation.createDocumentcCst|ƒ}||_||_|S)N)r/r*r+)r rïr*r+rNr r r ÚcreateDocumentType¦sz$DOMImplementation.createDocumentTypecCs|j|dƒr|SdSdS)N)rS)r rTr r r rZ®s zDOMImplementation.getInterfacecCstƒS)N)ÚDocument)r r r r rLµsz"DOMImplementation._create_document)rDrE)rDrF)rDN)r/rE)r/rF)r/N)rGrH)rGN) rorprqrJrSrOrPrZrLr r r r rCis-rCc@sXeZdZdZdd„Zdd„Zdd„Zdd „Zd d „Zd d „Z dd„Z dd„Z dd„Z dS)Ú ElementInforcCs ||_dS)N)r)r r‚r r r r†ÃszElementInfo.__init__cCstS)N)r¯)r Úanamer r r r±ÆszElementInfo.getAttributeTypecCstS)N)r¯)r rrrwr r r r°ÉszElementInfo.getAttributeTypeNScCsdS)NFr )r r r r r!ÌszElementInfo.isElementContentcCsdS)NFr )r r r r ÚisEmptyÏszElementInfo.isEmptycCsdS)NFr )r rSr r r r¬ÔszElementInfo.isIdcCsdS)NFr )r rrrwr r r r«ØszElementInfo.isIdNScCs|jS)N)r)r r r r rÛÜszElementInfo.__getstate__cCs ||_dS)N)r)r rÜr r r rÝßszElementInfo.__setstate__N)r) rorprqr³r†r±r°r!rTr¬r«rÛrÝr r r r rR¸s rRcCs<|jtjkr|jjƒd|_n|jr8|jjjƒd|j_dS)N)rr rÚ _id_cacheÚclearÚ_id_search_stackrO)rAr r r r:âs    r:c@sreZdZdMZejejejejfZ e ƒZ ej Z dZdZdZdZdZZdZdZdZdZdZdZdZd Zd d „Zd d „Zdd„Zdd„Zdd„Z dd„Z!dd„Z"dd„Z#dd„Z$dd„Z%dd„Z&d d!„Z'd"d#„Z(d$d%„Z)d&d'„Z*d(d)„Z+d*d+„Z,d,d-„Z-d.d/„Z.d0d1„Z/d2d3„Z0d4d5„Z1d6d7„Z2d8d9„Z3d:d;„Z4dd?„Z6d@dA„Z7dBdC„Z8dDdE„Z9dFdG„Z:dNdIdJ„Z;dKdL„Z|jj|ƒ|jtj kr^|j ƒr^tjjdƒ‚tj ||ƒS)Nz%s cannot be child of %sz two document elements disallowed) rr.r/r0r1r2r3r4r rJÚ_get_documentElementr5)r rAr r r r5-s    zDocument.appendChildc CsVy|jj|ƒWntk r.tjjƒ‚YnXd|_|_d|_|j |krRd|_ |S)N) r$rEr7r/r0r8r<r=r3ÚdocumentElement)r rCr r r r4=s  zDocument.removeChildcCs$x|jD]}|jtjkr|SqWdS)N)r$rr rJ)r rAr r r rbIs  zDocument._get_documentElementcCs(|jdk r|jjƒd|_tj|ƒdS)N)rNrHr )r r r r rHNs  zDocument.unlinkcCs–|sdS|jjdddƒ}|j|_|j|_|j|_xL|jD]B}t|||ƒ}|jj|ƒ|jt j krbn|jt j krt||_ ||_ q8W|jtjjj||ƒ|S)N)rRrOrr^rUr$rNrIrr rr?rNr3rjr/r0r4r5)r rPr:rÖZ childcloner r r rQTs"       zDocument.cloneNodecCstƒ}||_|S)N)r…rO)r rbr r r ÚcreateDocumentFragmentiszDocument.createDocumentFragmentcCst|ƒ}||_|S)N)rärO)r rr<r r r Ú createElementnszDocument.createElementcCs(t|tƒstdƒ‚tƒ}||_||_|S)Nznode contents must be a string)rÁrÂrÑr•rGrO)r rGÚtr r r ÚcreateTextNodess  zDocument.createTextNodecCs(t|tƒstdƒ‚tƒ}||_||_|S)Nznode contents must be a string)rÁrÂrÑr$rGrO)r rGr@r r r ÚcreateCDATASection{s  zDocument.createCDATASectioncCst|ƒ}||_|S)N)r#rO)r rGr@r r r Ú createCommentƒszDocument.createCommentcCst||ƒ}||_|S)N)rrO)r rrGÚpr r r ÚcreateProcessingInstructionˆs z$Document.createProcessingInstructioncCst|ƒ}||_d|_|S)Nr)r�rOrœ)r r–Úar r r ÚcreateAttribute�szDocument.createAttributecCs"t|ƒ\}}t|||ƒ}||_|S)N)rírärO)r rrrïrsrwr<r r r rM“s  zDocument.createElementNScCs*t|ƒ\}}t||||ƒ}||_d|_|S)Nr)rír�rOrœ)r rrrïrsrwrlr r r ÚcreateAttributeNS™s  zDocument.createAttributeNScCst||||ƒ}||_|S)N)r7rO)r r‚r*r+r8r<r r r Ú_create_entity£szDocument._create_entitycCst|||ƒ}||_|S)N)r6rO)r r‚r*r+rÖr r r Ú_create_notation¨s zDocument._create_notationcCs”||jkr|j|S|jp|js$dS|j}|dkrB|jg}||_n|sJdSd}�x>|�rŽ|jƒ}|jdd„|jDƒƒ|j|ƒ}|�r@x¶|j j ƒD]¨}|j rÒ|j |j |j ƒrÐ||j|j<|j|krÈ|}n|jsÐPq’|j|jƒ�r ||j|j<|j|k�rþ|}n |j�s:Pq’|jr’||j|j<|j|k�r.|}q’|jdkr’Pq’WnB|j�r‚x8|j j ƒD]*}|j�rT||j|j<|j|k�rT|}�qTW|dk rRPqRW|S)NcSsg|]}|jtkr|‘qSr )rr9)Ú.0rMr r r ú Ász+Document.getElementById..r()rUrXr¨rWrcÚpopÚextendr$rªr‰r¿rrr«rwrœr§r¬r‚r¦)r rÇÚstackÚresultrAr­rçr r r ÚgetElementById­sZ               zDocument.getElementByIdcCst||tƒƒS)N)r€rk)r r‚r r r røçszDocument.getElementsByTagNamecCst|||tƒƒS)N)r„rk)r rrrwr r r rùêszDocument.getElementsByTagNameNScCs|jj||ƒS)N)rRrS)r rTrUr r r rVîszDocument.isSupportedcCs>|jtjkrtjjdƒ‚n|jtjkr2tjjdƒ‚t|||ƒS)Nzcannot import document nodesz!cannot import document type nodes)rr rr/r0ÚNotSupportedErrr?rN)r rArPr r r Ú importNodeñs    zDocument.importNodercCsN|dkr|jd|ƒn|jd||fƒx|jD]}|j||||ƒq2WdS)Nzz%%s)r}r$r)r r"r rür!rrAr r r røs   zDocument.writexmlcCsJ|j|k r tjjd||jfƒ‚|jtjtjfkr>tjjdƒ‚|t kr¶d|kr€|j ddƒ\}}|dkr´|tjj kr´tjj dƒ‚q¾|dkr¬|tjj kr¬|jtjkr¬tjj dƒ‚d}|}nd}d}|jtjkrê|j }|dk rî|j}|j|ƒnd}||_||_||_||_|jtjk�r||_n*||_|dk �rF|j|ƒ|�rF|j|ƒ|S)Nz?cannot rename nodes from other documents; expected %s, found %sz8renameNode() only applies to element and attribute nodesr—r(r¡zillegal use of 'xmlns' prefixz$illegal use of the 'xmlns' attribute)rOr/r0rKrr rJr´rxrr˜rr¢r”r¦ròrsr“rrr‡rr‚rërþ)r rÖrrr‚rsrwrZis_idr r r Ú renameNodesR         zDocument.renameNode)rXrNrWr$rU)rrrN)=rorprqr³r rJrŒr�r?r.rCrRrrr‡rˆr‰r3r=r<r9rr^rUr`r\rZr¨r†rªr@rYr[rAr]r_rarBr5r4rbrHrQrdrergrhrirkrmrMrnrorprwrørùrVryrrzr r r r rQêsh    : rQrcz#Top-level element of this document.c CsÜ|jj|ƒrtjjj}n tjjj}|jtj kr¬|j |j |j ƒ}x>|j jƒD]0}|j|j |j |jƒ|j|j |jƒ}|j|_qJW|r¨x$|jD]}t|||ƒ}|j|ƒqŠW�n|jtjkrî|jƒ}|rêx$|jD]}t|||ƒ}|j|ƒqÌW�nÐ|jtjk�r |j|jƒ}�n²|jtjk�r*|j|jƒ}�n”|jtjk�rL|j|j |jƒ}�nr|jtj!k�rj|j"|jƒ}�nT|jtj#k�rš|j$|j |j ƒ}d|_|j|_�n$|jtj%k�rªtjjj}|j&j'|j(|j)|j*ƒ}||_|�r¾g|j+_,g|j-_,xR|j-j,D]F} t.| j | j)| j*ƒ} || _|j-j,j/| ƒt0| dƒ�rî| j1|| | ƒ�qîWx„|j+j,D]b} t2| j | j)| j*| j3ƒ} | j4| _4| j5| _5| j6| _6|| _|j+j,j/| ƒt0| dƒ�rB| j1|| | ƒ�qBWntjj7dt8|ƒƒ‚t0|dƒ�rØ|j1|||ƒ|S)NTrjzCannot clone node %s)9rOrYr/r0r4r5Z NODE_IMPORTEDrr rJrMrrr‡r‰r¿rñrœrîrwr™r$rNr5r+rdrFrgrGrŠrhrŒrkrr�rir´rnr?rRrPr‚r*r+r0r'r1r6rIrdrjr7r8r9rrUrxr2) rArPZnewOwnerDocumentrgr:rçrlrMr@rÖr;r<r=r r r rN<s|                rNcCs,|jddƒ}t|ƒdkr|Sd|dfSdS)Nr—r(ér)r˜rº)rïZfieldsr r r ríŽs  rícCs,|||Ž}|jƒ\}}|j|ƒ|jƒ|S)N)ZgetEventZ expandNoderV)ÚfuncÚargsÚkwargsZeventsZtoktypeZrootNoder r r Ú_do_pulldom_parse–s    rcCsJ|dkr$| r$ddlm}|j|ƒSddlm}t|j|f||dœƒSdS)Nr)Ú expatbuilder)Úpulldom)ÚparserÚbufsize)Úxml.domr€Úparser�r)Úfiler‚rƒr€r�r r r r…�s     r…cCsB|dkrddlm}|j|ƒSddlm}t|j|fd|iƒSdS)Nr)r€)r�r‚)r„r€Ú parseStringr�r)Ústringr‚r€r�r r r r‡§s     r‡cCsB|rsˆ v  z$ x )GU  ><( O*PR