3 Õì2aã@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„Zdd„ZGdd„de ƒZGdd„de ƒZeeddd �eed dd �eedd d �Gd!d"„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/ƒZGd0d1„d1ee ƒZ Gd2d3„d3ee ƒZ!ee!d#d4d �Gd5d6„d6e!ƒZ"ee"d7d8d �ee"d9d:d �d;d<„Z#d=d>„Z$Gd?d@„d@e!ƒZ%GdAdB„dBe"ƒZ&GdCdD„dDeƒZ'ee'd#dEd �GdFdG„dGƒZ(GdHdI„dIe(ee ƒZ)GdJdK„dKe(e ƒZ*GdLdM„dMe(ee ƒZ+GdNdO„dOe ƒZ,GdPdQ„dQeƒZ-dRdS„Z.GdTdU„dUe e ƒZ/ee/dVdWd �dXdY„Z0dZd[„Z1d\d]„Z2ddd^d_„Z3ded`da„Z4dfdbdc„Z5dS)gé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 ú,/opt/alt/python36/lib64/python3.6/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 ÚetZevÚtbr r r Ú__exit__sz Node.__exit__)N)rrN)!Ú__name__Ú __module__Ú __qualname__Ú namespaceURIr3rOr<r=rÚprefixr rrr%r&r'r*r-r5rDr4rKrQrVrWrYrZr_rcrjrHrlror 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 rBcCs(x"|dk r"|jtjkrdS|j}qWdS)NTF)rr rr3)rAr r r Ú _in_document&s    rycCs6|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‚5s    r‚cCs\xV|jD]L}|jtjkr|dks*|j|krF|dks<|j|krF|j|ƒt||||ƒqW|S)Nr)r$rr rJrxrsrIÚ"_get_elements_by_tagName_ns_helper)rƒZnsURIrxr…rAr r r r†=s   r†c@sJeZdZejZdZdZdZdZ ej ej ej ej ejejejfZdd„ZdS)ÚDocumentFragmentz#document-fragmentNcCs tƒ|_dS)N)rkr$)r r r r Ú__init__TszDocumentFragment.__init__)rprqrrr r+rÚnodeNameÚ nodeValueÚ attributesr3rJrFÚCDATA_SECTION_NODEÚENTITY_REFERENCE_NODEÚPROCESSING_INSTRUCTION_NODEÚ COMMENT_NODEÚ NOTATION_NODEr.rˆr r r r r‡Fsr‡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Ú_valuersÚ_prefixr$Ú _localNamerOÚ ownerElementNFcCs2d|_||_||_||_tƒ|_|jjtƒƒdS)N)r–r’rsr”rkr$rIÚText)r ÚqNamersrxrtr r r rˆbs z Attr.__init__c Cs.y|jStk r(|jjddƒdSXdS)Nú:r(r))r•r\r‰Úsplit)r r r r rWoszAttr._get_localNamecCs|jS)N)Ú specified)r r r r Ú_get_specifieduszAttr._get_specifiedcCs|jS)N)r’)r r r r Ú _get_namexszAttr._get_namecCs||_|jdk rt|jƒdS)N)r’r–r:)r Úvaluer r r Ú _set_name{s 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_value…s    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) rsrr/r0Ú NamespaceErrr”rxr–r:r„)r rtZnsuriZnewNamer 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‰Ú_attrsNSrsrxÚ_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_inforsÚisIdNSrxÚisIdr‰)r rvr«Ú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¬rsÚgetAttributeTypeNSrxÚgetAttributeTyper‰)r rvr«r¯r r r Ú_get_schemaTypeÃs zAttr._get_schemaType)r’r“rsr”r$r•rOr–) rprqrrÚ __slots__r ÚATTRIBUTE_NODErr‹r›r¨rFr�r.rrˆrWrœr�rŸÚpropertyr‰r„r r¡rŠržr¢r¥rtrHr°r´r r r r r‘Xs.   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__rpr„)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„)rprqrrrµrˆrär�rår r r r rás 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ÚElementrOr3r�r‰rtrsr•r$r¦r§r<r=NrcCsBd|_||_|_||_||_tƒ|_d|_|_d|_ d|_ dS)N) r3r�r‰rtrsrkr$r<r=r¦r§)r r�rsrtrxr 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\r�rš)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 rsrxr 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:rtr‰)r rsÚ qualifiedNameržrtÚ 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 rsrxr 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§rsrxÚ_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 rsrxré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 Ú hasAttribute=s zElement.hasAttributecCs|jdkrdS||f|jkS)NF)r§)r rsrxr r r ÚhasAttributeNSBs zElement.hasAttributeNScCst||tƒƒS)N)r‚rk)r r„r r r ÚgetElementsByTagNameGszElement.getElementsByTagNamecCst|||tƒƒS)N)r†rk)r rsrxr r r ÚgetElementsByTagNameNSJszElement.getElementsByTagNameNScCsd|jt|ƒfS)Nz)r�rÉ)r r r r räNszElement.__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) Nr{z %s="r|r}r(rrz%sz/>%s) rr�Ú_get_attributesÚsortedr¾r€ržr$r¼rr rFr) r r"r Ú addindentr!r»Za_namesZa_namerAr r r rQs$      zElement.writexmlcCs|jƒt|j|j|ƒS)N)rçr¹r¦r§)r r r r rülszElement._get_attributescCs|jr dSdSdS)NTF)r¦)r r r r Ú hasAttributespszElement.hasAttributescCs|j|ƒ}|j|ƒdS)N)rìÚsetIdAttributeNode)r r„ÚidAttrr r r ÚsetIdAttributexs zElement.setIdAttributecCs|j||ƒ}|j|ƒdS)N)rðr)r rsrxrr r r ÚsetIdAttributeNS|s 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 rr r r r€s   zElement.setIdAttributeNode) rOr3r�r‰rtrsr•r$r¦r§r<r=)rrr).rprqrrrµ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ÿrrrr 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§rsrxr–)Ú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)rprqrrrµr‹Z EmptyNodeListr$rurwr'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)r rG)r r rGr 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)rr rG)r r"r rþr!r r r rÛszProcessingInstruction.writexmlN)r rG)rrr)rprqrrr rŽrrµrˆr r 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<rr 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ãrp)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 Ú deleteDatas   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)rrOr3r=r<)rprqrrrµrˆr½ràrrr·rGrŠrärrrrrr r r r rßs    rzLength 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 Ú splitText0s 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_wholeTextDs   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 ÚreplaceWholeTextVs*     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_isWhitespaceInElementContentrs  z&Text._get_isWhitespaceInElementContent)rrr)rprqrrrµr rFrr‰r‹rrrr r$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)rrˆ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) rprqrrr 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) rprqrrrµ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)rsrx)r rsrxrØ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 rsrxr 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))rprqrrrµ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-)rprqrrrµr.r/r0r 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ñrtròr r r rˆ s  zDocumentType.__init__cCs|jS)N)ÚinternalSubset)r r r r Ú_get_internalSubsetsz 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)rOr1r„r‰r/r0ÚUserDataHandlerÚ NODE_CLONEDr2r)r3Ú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 r5UszEntity.appendChildcCstjjdƒ‚dS)Nz+cannot insert children below an entity node)r/r0r1)r r>r?r r r r-YszEntity.insertBeforecCstjjdƒ‚dS)Nz*cannot remove children from an entity node)r/r0r1)r rCr r r r4]szEntity.removeChildcCstjjdƒ‚dS)Nz)cannot replace children of an entity node)r/r0r1)r r>rCr r r rDaszEntity.replaceChild)rprqrrr‹r Z ENTITY_NODErrŠr;rrUrˆrBrCrDr5r-r4rDr r r r r9=sr9c@seZdZejZdZdd„ZdS)r8NcCs||_|j||ƒdS)N)r‰r.)r r„r,r-r r r rˆiszNotation.__init__)rprqrrr r�rrŠrˆr r r r r8esr8c @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 rSyszDOMImplementation.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 rsrñrPrvZadd_root_elementrtròrr r r ÚcreateDocument~s4         z DOMImplementation.createDocumentcCst|ƒ}||_||_|S)N)r1r,r-)r rñr,r-rPr 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 rNºsz"DOMImplementation._create_document)rFrG)rFrH)rFN)r/rG)r/rH)r/N)rIrJ)rIN) rprqrrrLrSrQrRrZrNr r r r rEns-rEc@sXeZdZdZdd„Zdd„Zdd„Zdd „Zd d „Zd d „Z dd„Z dd„Z dd„Z dS)Ú ElementInfor�cCs ||_dS)N)r�)r r„r r r rˆÈszElementInfo.__init__cCstS)N)r±)r Úanamer r r r³ËszElementInfo.getAttributeTypecCstS)N)r±)r rsrxr r r r²ÎszElementInfo.getAttributeTypeNScCsdS)NFr )r r r r r#ÑszElementInfo.isElementContentcCsdS)NFr )r r r r ÚisEmptyÔszElementInfo.isEmptycCsdS)NFr )r rUr r r r®ÙszElementInfo.isIdcCsdS)NFr )r rsrxr 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�) rprqrrrµrˆr³r²r#rVr®r­rÝrßr r r r rT½s rTcCs>|jtjkr|jjƒd|_nt|ƒr:|jjjƒd|j_dS)N)rr rÚ _id_cacheÚclearÚ_id_search_stackryrO)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 r52s    zDocument.appendChildc CsVy|jj|ƒWntk r.tjjƒ‚YnXd|_|_d|_|j |krRd|_ |S)N) r$rEr7r/r0r8r<r=r3ÚdocumentElement)r rCr r r r4Bs  zDocument.removeChildcCs$x|jD]}|jtjkr|SqWdS)N)r$rr rJ)r rAr r r rdNs  zDocument._get_documentElementcCs(|jdk r|jjƒd|_tj|ƒdS)N)rPrHr )r r r r rHSs  zDocument.unlinkcCs–|sdS|jjdddƒ}|j|_|j|_|j|_xL|jD]B}t|||ƒ}|jj|ƒ|jt j krbn|jt j krt||_ ||_ q8W|jtjjj||ƒ|S)N)rRrQrr`rUr$rNrIrr rrArPr3rjr/r0r6r7)r rPr<rØZ childcloner r r rQYs"       zDocument.cloneNodecCstƒ}||_|S)N)r‡rO)r rbr r r ÚcreateDocumentFragmentnszDocument.createDocumentFragmentcCst|ƒ}||_|S)N)rærO)r r�r>r r r Ú createElementsszDocument.createElementcCs(t|tƒstdƒ‚tƒ}||_||_|S)Nznode contents must be a string)rÃrÄrÓr—rGrO)r rGÚtr r r ÚcreateTextNodexs  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 r rGÚ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 rsrñrtrxr>r r r rO˜s  zDocument.createElementNScCs*t|ƒ\}}t||||ƒ}||_d|_|S)Nr)rïr‘rOrž)r rsrñrtrxrnr r r ÚcreateAttributeNSžs  zDocument.createAttributeNScCst||||ƒ}||_|S)N)r9rO)r r„r,r-r:r>r r r Ú_create_entity¨szDocument._create_entitycCst|||ƒ}||_|S)N)r8rO)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()rWrZrªrYreÚpopÚextendr$r¬r‹rÁrsr­rxrž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 rsrxr 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ÚNotSupportedErrrArN)r rArPr r r Ú importNodeös    zDocument.importNodercCsN|dkr|jd|ƒn|jd||fƒx|jD]}|j||||ƒq2WdS)Nzz%%s)rr$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/r0rMrr rJr¶rzrršrr¤r–r¨rôrtr•rsr‰r�r„rír)r rØrsr„rtrxrZis_idr r r Ú renameNodesR         zDocument.renameNode)rZrPrYr$rW)rrrN)=rprqrrrµr rJrŽr�rAr.rErRrrr‰rŠr‹r3r=r<r;rr`rUrbr^r\rªrˆr¬rBr[r]rCr_rarcrDr5r4rdrHrQrfrgrirjrkrmrorOrprqrrryrúrûrVr{rr|r r r r rSïsh    : rSrez#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/r0r6r7Z NODE_IMPORTEDrr rJrOrsr‰r‹rÁróržrðrxr›r$rNr5r+rfrFrirGrŒrjrŽrmr r�rkr¶rprArRrRr„r,r-r2r)r3r8rIrdrjr9r:r;rrUrzr2) rArPZnewOwnerDocumentrgr<rérnrMr@rØr=r>r?r r r rNAs|                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 expandNoderX)ÚfuncÚargsÚkwargsZeventsZtoktypeZrootNoder r r Ú_do_pulldom_parse›s    r�cCsJ|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  y$ w )GU  ><( O*PR