a DOg @sddlZddlZddlmZmZmZmZddlTddlm Z m Z ej j j ej j jfZGdddej j Z ee ddd ee d d d ee d d d ddZddZddZddZddZGddde ZGddde Zeeddd eed dd eedd d Gd!d"d"eZeed#d$d eZGd%d&d&eZeddZGd'd(d(e Zeed)d*d eed d+d d,d-ZGd.d/d/ZGd0d1d1ee Z Gd2d3d3ee Z!ee!d#d4d Gd5d6d6e!Z"ee"d7d8d ee"d9d:d d;d<Z#d=d>Z$Gd?d@d@e!Z%GdAdBdBe"Z&GdCdDdDeZ'ee'd#dEd GdFdGdGZ(GdHdIdIe(ee Z)GdJdKdKe(e Z*GdLdMdMe(ee Z+GdNdOdOe Z,GdPdQdQeZ-dRdSZ.GdTdUdUe e Z/ee/dVdWd dXdYZ0dZd[Z1d\d]Z2ddd^d_Z3ded`daZ4dfdbdcZ5dS)gN)EMPTY_NAMESPACE EMPTY_PREFIXXMLNS_NAMESPACEdomreg)*)DOMImplementationLS DocumentLSc@seZdZdZdZdZdZdZeZ ddZ d2ddZ d3dd Z d d Z d d ZddZddZddZddZddZddZddZddZddZd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd,d-Zd.d/Zd0d1Z dS)4NodeNcCsdS)NTselfr r '/usr/lib64/python3.9/xml/dom/minidom.py__bool__+sz Node.__bool__cCs|dd||SN) toprettyxml)r encoding standaloner r r toxml.sz Node.toxml  cCsz|durt}ntjt|ddd}|jtjkrJ||d||||n||d|||durj|S| SdS)Nxmlcharrefreplacer)rerrorsnewliner) ioStringIO TextIOWrapperBytesIOnodeTyper DOCUMENT_NODEwritexmlgetvaluedetach)r indentnewlrrwriterr r r r1s   zNode.toprettyxmlcCs t|jSN)bool childNodesr r r r hasChildNodesDszNode.hasChildNodescCs|jSr&r(r r r r _get_childNodesGszNode._get_childNodescCs|jr|jdSdSNrr*r r r r _get_firstChildJszNode._get_firstChildcCs|jr|jdSdSNr*r r r r _get_lastChildNszNode._get_lastChildcCs|j|jkr,t|jD]}|||q|S|j|jvrTtjdt |t |f|j durj|j ||dur~| |nz|j |}WntytjYn0|jtvrt||j||||_||_|r|j|d}||_||_nd|_||_ |S)N%s cannot be child of %s)rDOCUMENT_FRAGMENT_NODEtupler( insertBefore_child_node_typesxmldomHierarchyRequestErrrepr parentNode removeChild appendChildindex ValueError NotFoundErr_nodeTypes_with_children_clear_id_cacheinsert nextSiblingpreviousSibling)r newChildrefChildcr>noder r r r5Rs8       zNode.insertBeforecCs|j|jkr*t|jD]}||q|S|j|jvrTtjdt |t |fn|jt vrft ||j dur||j |t||d|_|SNr1)rr3r4r(r=r6r7r8r9r:rArBr;r< _append_childrD)r rIrHr r r r=rs       zNode.appendChildcCs|j|jkr(|j}|||||S|j|jvrPtjdt |t |f||ur\dS|j durr|j |z|j |}Wnt ytjYn0||j |<||_ d|_ |jtvs|jtvrt||j|_|j|_d|_d|_|jr||j_|jr ||j_|SrJ)rr3rDr<r5r6r7r8r9r:r;r(r>r?r@rArBrE)r rFoldChildrGr>r r r replaceChilds@         zNode.replaceChildcCs~z|j|Wnty,tjYn0|jdurB|j|j_|jdurV|j|j_d|_|_|jt vrtt |d|_ |Sr&) r(remover?r7r8r@rDrErrArBr;r rLr r r r<s       zNode.removeChildcCsg}|jD]}|jtjkr|jsJ|r0|j|d_|jr@|j|j_|q|r|dj|jkr|d}|j|j|_|j|_|jr||j_|q||q |||jtj kr | q ||jdd<dSr.) r(rr TEXT_NODEdatarDrEunlinkappend ELEMENT_NODE normalize)r LchildrIr r r rUs*          zNode.normalizecCst|||jp|Sr&) _clone_node ownerDocument)r deepr r r cloneNodeszNode.cloneNodecCs|jj||Sr&)rYimplementation hasFeaturer featureversionr r r isSupportedszNode.isSupportedcCsdSr&r r r r r _get_localNameszNode._get_localNamecCs||uSr&r r otherr r r isSameNodeszNode.isSameNodecCs||dr|SdSdSr&)rar r_r r r getInterfaces zNode.getInterfacec Cs.z|j|dWSttfy(YdS0dSr,) _user_dataAttributeErrorKeyErrorr keyr r r getUserDataszNode.getUserDatacCsld}z |j}Wnty*i}||_Yn0||vr@||d}|dur\d}|durh||=n ||f||<|Sr,)rhri)r rlrQhandlerolddr r r setUserDatas     zNode.setUserDatacCsDt|dr@t|jD]&\}\}}|dur||||||qdS)Nrh)hasattrlistrhitemshandle)r operationsrcdstrlrQrnr r r _call_user_data_handlers zNode._call_user_data_handlercCs>d|_|_|jr.|jD] }|qt|_d|_d|_dSr&)r;rYr(rRNodeListrErD)r rWr r r rRs   z Node.unlinkcCs|Sr&r r r r r __enter__szNode.__enter__cCs |dSr&)rR)r etZevtbr r r __exit__sz Node.__exit__)NN)rrNN)!__name__ __module__ __qualname__ namespaceURIr;rYrDrErprefixrrrr)r+r-r0r5r=rMr<rUr[rarbrergrmrqryrRr{r~r 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}||_||_||||_dSr.)r(rErDrSr;)r rIr(lastr r r rKs rKcCs$|dur |jtjkrdS|j}qdSNTF)rr rr;rIr r r _in_document's  rcCs6|r2|dddddddd}||dS) N&z&z>)replacewrite)r%rQr r r _write_data/srcCsD|jD]8}|jtjkr2|dks(|j|kr2||t|||q|SNr)r(rr rTtagNamerS_get_elements_by_tagName_helper)parentnamercrIr r r r6s   rcCsX|jD]L}|jtjkr|dks(|j|krD|dks:|j|krD||t||||q|Sr)r(rr rTrrrS"_get_elements_by_tagName_ns_helper)rZnsURIrrrIr r r r>s   rc@sJeZdZejZdZdZdZdZ ej ej ej ej ejejejfZddZdS)DocumentFragmentz#document-fragmentNcCs t|_dSr&)rzr(r r r r __init__UszDocumentFragment.__init__)rrrr r3rnodeName nodeValue attributesr;rTrPCDATA_SECTION_NODEENTITY_REFERENCE_NODEPROCESSING_INSTRUCTION_NODE COMMENT_NODE NOTATION_NODEr6rr r r r rGsrc@seZdZdZejZdZdZdZ ej ej fZ e ddfddZddZdd Zd d Zd d ZeeeZZddZddZeeeZZddZddZeeeZddZddZddZdS)Attr)_name_valuer_prefixr( _localNamerY ownerElementNFcCs2d|_||_||_||_t|_|jtdSr&)rrrrrzr(rSText)r qNamerrrr r r rcs z Attr.__init__cCs2z|jWSty,|jdddYS0dSN:r2r/)rrirsplitr r r r rbps zAttr._get_localNamecCs|jSr&) specifiedr r r r _get_specifiedvszAttr._get_specifiedcCs|jSr&)rr r r r _get_nameyszAttr._get_namecCs||_|jdurt|jdSr&)rrrBr valuer r r _set_name|s zAttr._set_namecCs|jSr&)rr r r r _get_valueszAttr._get_valuecCs6||_||jd_|jdur&t|j||jd_dSr,)rr(rQrrBrr r r _set_values    zAttr._set_valuecCs|jSr&)rr r r r _get_prefixszAttr._get_prefixcCsd|j}|dkr&|r&|tkr&tjd||_|dur<|j}nd||jf}|jrZt|j||_ dS)Nxmlnsz5illegal use of 'xmlns' prefix for the wrong namespacez%s:%s) rrr7r8 NamespaceErrrrrrBr)r rZnsuriZnewNamer r r _set_prefixs  zAttr._set_prefixcCsv|j}|durR|j|j=|j|j|jf=|jrRd|_|jd8_|jj d8_ |j D] }| qX|j dd=dS)NFr2) r_attrsr_attrsNSrr_is_id_magic_id_nodesrY_magic_id_countr(rR)r elemrWr r r rRs   z Attr.unlinkcCsf|jr dS|j}|j}|dus&|dur*dS||}|dur@dS|jrV||j|jS||jSdSr) rrYr_get_elem_inforisIdNSrisIdrr rrinfor r r _get_isIds zAttr._get_isIdcCs\|j}|j}|dus|dur tS||}|dur6tS|jrL||j|jS||jSdSr&) rYr_no_typerrgetAttributeTypeNSrgetAttributeTyperrr r r _get_schemaTypes zAttr._get_schemaType) rrr __slots__r ATTRIBUTE_NODErrrrrPrr6rrrbrrrpropertyrrrrrrrrrrRrrr r r r rYs.   rrz True if this attribute is an ID.z'Namespace-local name of this attribute. schemaTypezSchema type for this attribute.c@seZdZdZddZddZddZdd Zd d Zd d Z ddZ ddZ ddZ d9ddZ eZddZddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.Zd/d0Zd1d2Zd3d4Zd5d6Zd7d8ZdS): NamedNodeMaprr _ownerElementcCs||_||_||_dSr&r)r attrsZattrsNSrr r r rszNamedNodeMap.__init__cCs t|jSr&)lenrr r r r _get_lengthszNamedNodeMap._get_lengthcCs2z|t|j|WSty,YdS0dSr&)rsrkeys IndexErrorr r>r r r items zNamedNodeMap.itemcCs*g}|jD]}||j|jfq|Sr&)rvaluesrSrrr rVrIr r r rtszNamedNodeMap.itemscCs0g}|jD]}||j|jf|jfq|Sr&)rrrSrrrrr r r itemsNSszNamedNodeMap.itemsNScCs"t|tr||jvS||jvSdSr&) isinstancestrrrrkr r r __contains__s  zNamedNodeMap.__contains__cCs |jSr&)rrr r r r rszNamedNodeMap.keyscCs |jSr&)rrr r r r keysNSszNamedNodeMap.keysNScCs |jSr&)rrr r r r rszNamedNodeMap.valuesNcCs|j||Sr&rget)r rrr r r r szNamedNodeMap.getcCs:|jt|ddurdSt|t|kt|t|kSdS)Nrr)rgetattridrcr r r _cmpszNamedNodeMap._cmpcCs||dkSr,rrcr r r __eq__szNamedNodeMap.__eq__cCs||dkSr,rrcr r r __ge__szNamedNodeMap.__ge__cCs||dkSr,rrcr r r __gt__szNamedNodeMap.__gt__cCs||dkSr,rrcr r r __le__szNamedNodeMap.__le__cCs||dkSr,rrcr r r __lt__"szNamedNodeMap.__lt__cCs"t|tr|j|S|j|SdSr&)rr4rr)r attname_or_tupler r r __getitem__%s  zNamedNodeMap.__getitem__cCstt|trPz|j|}Wn.tyFt|}|jj|_||Yn0||_n t|tsbt d|}||dS)Nz%value must be a string or Attr object) rrrrjrrrY setNamedItemr TypeError)r attnamerrIr r r __setitem__,s    zNamedNodeMap.__setitem__cCs&z |j|WSty YdS0dSr&)rrjr rr r r getNamedItem;s  zNamedNodeMap.getNamedItemcCs*z|j||fWSty$YdS0dSr&)rrjr rrr r r getNamedItemNSAs zNamedNodeMap.getNamedItemNScCsX||}|durJt|j|j|j=|j|j|jf=t|drFd|_ |St j dSNr) rrBrrrrrrrrrr7r8r@r rnr r r removeNamedItemGs    zNamedNodeMap.removeNamedItemcCsZ|||}|durLt|j|j|j|jf=|j|j=t|drHd|_ |St j dSr) rrBrrrrrrrrrr7r8r@r rrrr r r removeNamedItemNSSs    zNamedNodeMap.removeNamedItemNScCstt|ts&tjdt|t|f|j|j}|r@| ||j|j<||j |j |j f<|j |_t|j|SrJ)rrr7r8r9r:rrrrRrrrrrrB)r rIror r r r_s   zNamedNodeMap.setNamedItemcCs ||Sr&)rr rIr r r setNamedItemNSlszNamedNodeMap.setNamedItemNScCs||}t|j|dSr&)rBrrR)r rrIr r r __delitem__os zNamedNodeMap.__delitem__cCs|j|j|jfSr&rr r r r __getstate__tszNamedNodeMap.__getstate__cCs|\|_|_|_dSr&rr stater r r __setstate__wszNamedNodeMap.__setstate__)N) rrrrrrrrtrrrrrr__len__rrrrrrrrrrrrrrrrrr r r r rs:     rlengthz$Number of nodes in the NamedNodeMap.c@s0eZdZdZddZddZddZdd Zd S) TypeInfo namespacercCs||_||_dSr&r)r rrr r r rszTypeInfo.__init__cCs2|jrd|jj|j|jfSd|jj|jfSdS)Nz<%s %r (from %r)>z<%s %r>)r __class__rrr r r r __repr__s  zTypeInfo.__repr__cCs|jSr&)rr r r r rszTypeInfo._get_namecCs|jSr&)rr r r r _get_namespaceszTypeInfo._get_namespaceN)rrrrrrrr r r r r rs rc@s eZdZdZejZdZeZ dZ ejej ej ej ejejfZeddfddZddZdd Zd d Zd d ZddZddZddZddZddZddZddZeZddZddZ d d!Z!e!Z"d"d#Z#d$d%Z$d&d'Z%d(d)Z&d*d+Z'd9d-d.Z(d/d0Z)d1d2Z*d3d4Z+d5d6Z,d7d8Z-dS):Element) rYr;rrrrrr(rrrDrENrcCsBd|_||_|_||_||_t|_d|_|_d|_ d|_ dSr&) r;rrrrrzr(rDrErr)r rrrrr r r rs  zElement.__init__cCs|jduri|_i|_dSr&)rrr r r r _ensure_attributess zElement._ensure_attributescCs2z|jWSty,|jdddYS0dSr)rrirrr r r r rbs zElement._get_localNamecCs|jSr&rr r r r _get_tagNameszElement._get_tagNamecCs@|jdur&t|jD] }|qd|_d|_t|dSr&)rrsrrRrr )r attrr r r rRs   zElement.unlinkcCs6|jdurdSz|j|jWSty0YdS0dSr)rrrj)r rr r r getAttributes  zElement.getAttributecCs:|jdurdSz|j||fjWSty4YdS0dSr)rrrjrr r r getAttributeNSs   zElement.getAttributeNScCsV||}|dur4t|}||_|j|_||n||jkrR||_|jrRt|dSr&)getAttributeNoderrrYsetAttributeNoderrB)r rrrr r r setAttributes   zElement.setAttributecCst|\}}|||}|durHt||||}||_|j|_||n4||jkrf||_|jrft||j|kr|||_||_ dSr&) _nssplitgetAttributeNodeNSrrrYrrrBrr)r r qualifiedNamerr localnamerr r r setAttributeNSs     zElement.setAttributeNScCs|jdurdS|j|Sr&r)r attrnamer r r rs zElement.getAttributeNodecCs|jdurdS|j||fSr&)rrrr r r r s zElement.getAttributeNodeNScCs|jd|fvrtjd||j|jd}|durD|||j |j |j fd}|durt||urt||t ||||ur|S||ur|SdS)Nzattribute node already owned) rr7r8ZInuseAttributeErrr rrrremoveAttributeNoderrr_set_attribute_node)r rZold1Zold2r r r rs    zElement.setAttributeNodecCsN|jdurtjz|j|}Wnty>tjYn0||dSr&)rr7r8r@rrjr)r rrr r r removeAttribute%s   zElement.removeAttributecCsR|jdurtjz|j||f}WntyBtjYn0||dSr&)rr7r8r@rjr)r rrrr r r removeAttributeNS.s   zElement.removeAttributeNScCs\|durtjz|j|jWnty>tjYn0t|||j|_|Sr&) r7r8r@rrrjrBrRrYrr r r r7s  zElement.removeAttributeNodecCs|jdurdS||jvSNFrrr r r hasAttributeGs zElement.hasAttributecCs|jdurdS||f|jvSr)rrr r r hasAttributeNSQs zElement.hasAttributeNScCst||tSr&rrzrr r r getElementsByTagNameVszElement.getElementsByTagNamecCst|||tSr&rrzrr r r getElementsByTagNameNS^s zElement.getElementsByTagNameNScCsd|jt|fS)Nz)rrr r r r rbszElement.__repr__rcCs||d|j|}|D],}|d|t|||j|dq$|jr|dt|jdkr|jdjt j t j fvr|jd |dddn4|||jD]}| |||||q|||d|j|fn|d |dS) Nrz %s="rrr2rrz%sz/>%s) rr_get_attributesrrrr(rrr rPrr )r r%r# addindentr$rZa_namerIr r r r es(        zElement.writexmlcCs|t|j|j|Sr&)r rrrr r r r r&szElement._get_attributescCs|jr dSdSdSrrr r r r hasAttributesszElement.hasAttributescCs||}||dSr&)rsetIdAttributeNode)r ridAttrr r r setIdAttributes zElement.setIdAttributecCs|||}||dSr&)rr))r rrr*r r r setIdAttributeNSs zElement.setIdAttributeNScCsj|dus||jstjt|dur4tj|jsfd|_|jd7_|j j d7_ t |dS)NTr2) rerr7r8r@_get_containing_entrefNoModificationAllowedErrrrrYrrB)r r*r r r r)s   zElement.setIdAttributeNode)rrr).rrrrr rTrrrrrrrrPrrr6rrr rbr rRrrrrrrrZsetAttributeNodeNSrrrZremoveAttributeNodeNSr r!r#r%rr r&r(r+r,r)r r r r r sT      r rz*NamedNodeMap of attributes on the element.z%Namespace-local name of this element.cCs8t||||j|j<||j|j|jf<||_dSr&)rBr rrrrrr)elementrr r r rs  rc@sbeZdZdZdZeZdZdZddZ ddZ ddZ d d Z d d Z d dZddZddZdS) Childlessr NcCsdSr&r r r r r r-szChildless._get_firstChildcCsdSr&r r r r r r0szChildless._get_lastChildcCstj|jddS)Nz nodes cannot have childrenr7r8r9rrr r r r=szChildless.appendChildcCsdSrr r r r r r)szChildless.hasChildNodescCstj|jddSNz nodes do not have childrenr1r rFrGr r r r5szChildless.insertBeforecCstj|jddSr2)r7r8r@rrOr r r r<szChildless.removeChildcCsdSr&r r r r r rUszChildless.normalizecCstj|jddSr2r1r rFrLr r r rMszChildless.replaceChild)rrrrrZ EmptyNodeListr(rrr-r0r=r)r5r<rUrMr r r r r0sr0c@s\eZdZejZdZddZddZddZ e ee Z dd Z d d Z e e e Zdd dZdS)ProcessingInstructiontargetrQcCs||_||_dSr&r6)r r7rQr r r rszProcessingInstruction.__init__cCs|jSr&rQr r r r _get_nodeValuesz$ProcessingInstruction._get_nodeValuecCs ||_dSr&r8rr r r _set_nodeValuesz$ProcessingInstruction._set_nodeValuecCs|jSr&r7r r r r _get_nodeNamesz#ProcessingInstruction._get_nodeNamecCs ||_dSr&r;rr r r _set_nodeNamesz#ProcessingInstruction._set_nodeNamercCs|d||j|j|fdS)Nz %s%s)rr7rQr r%r#r'r$r r r r szProcessingInstruction.writexmlN)rrr)rrrr rrrrr9r:rrr<r=rr r r r r r5s  r5c@sreZdZdZddZddZeZddZdd Ze eeZ Z d d Z d d Z ddZddZddZddZdS) CharacterData)_datarYr;rErDcCs,d|_|_d|_|_d|_t|dSr)rYr;rErDr@r rr r r r rs  zCharacterData.__init__cCs t|jSr&)rrQr r r r rszCharacterData._get_lengthcCs|jSr&r@r r r r _get_dataszCharacterData._get_datacCs ||_dSr&rAr rQr r r _set_dataszCharacterData._set_datacCs6|j}t|dkrd}nd}d|jj|dd|fS)N z...rzr)rQrrr)r rQZ dotdotdotr r r r s zCharacterData.__repr__cCsT|dkrtjd|t|jkr.tjd|dkrBtjd|j|||SNroffset cannot be negative#offset cannot be beyond end of datacount cannot be negativer7r8 IndexSizeErrrrQr offsetcountr r r substringDatas   zCharacterData.substringDatacCs|j||_dSr&r8)r argr r r appendDataszCharacterData.appendDatacCsZ|dkrtjd|t|jkr.tjd|rVd|jd|||j|df|_dS)NrrGrH%s%s%srJ)r rMrPr r r insertData!s  zCharacterData.insertDatacCsl|dkrtjd|t|jkr.tjd|dkrBtjd|rh|jd||j||d|_dSrFrJrLr r r deleteData*s   zCharacterData.deleteDatacCsr|dkrtjd|t|jkr.tjd|dkrBtjd|rnd|jd|||j||df|_dS)NrrGrHrIrRrJ)r rMrNrPr r r replaceData4s   zCharacterData.replaceDataN)rrrrrrrrBrDrrQrrrOrQrSrTrUr r r r r?s    r?zLength of the string data.c@sHeZdZdZejZdZdZddZ dddZ d d Z d d Z d dZ dS)rr z#textNcCs|dks|t|jkr"tjd|}|j|d|_|j|_|j}|jr~||jj vr~|durp|j |n|j |||jd||_|S)Nrzillegal offset value) rrQr7r8rKrrYrDr;r(r=r5)r rMZnewTextnextr r r splitTextIs zText.splitTextrcCst|d||j|fdS)NrR)rrQr>r r r r Xsz Text.writexmlcCs|jg}|j}|durB|jtjtjfvrB|d|j|j}qqBq|j}|durz|jtjtjfvrz||j|j}qHqzqHd |S)Nrr) rQrErr rPrrCrDrSjoin)r rVrr r r _get_wholeText]s zText._get_wholeTextcCs|j}|j}|dur@|jtjtjfvr@|j}|||}q q@q |j}|sT|||dur|jtjtjfvr|j}|||}qTqqT|r||_|SdSdSr&) r;rErr rPrr<rDrQ)r ZcontentrrrVr r r replaceWholeTextos*   zText.replaceWholeTextcCsF|jrdSt|}|dur"dS|j|}|dur:dS|SdSr)rQstrip_get_containing_elementrYrisElementContent)r rrr r r !_get_isWhitespaceInElementContents  z&Text._get_isWhitespaceInElementContent)rrr)rrrrr rPrrrrWr rYrZr^r r r r rBs rZisWhitespaceInElementContentzKTrue iff this text node contains only whitespace and is in element content.Z wholeTextz.The text of all logically-adjacent text nodes.cCs*|j}|dur&|jtjkr|S|j}qdSr&)r;rr rTrIrHr r r r\s  r\cCs*|j}|dur&|jtjkr|S|j}qdSr&)r;rr rr_r r r r-s  r-c@s(eZdZejZdZddZdddZdS) Commentz#commentcCst|||_dSr&)r?rr@rCr r r rs zComment.__init__rcCs,d|jvrtd|d||j|fdS)Nz--z%'--' is not allowed in a comment nodez %s%s)rQr?rr>r r r r s zComment.writexmlN)rrr) rrrr rrrrr r r r r r`sr`c@s$eZdZdZejZdZdddZdS) CDATASectionr z#cdata-sectionrcCs,|jddkrtd|d|jdS)Nz]]>rz$']]>' not allowed in a CDATA sectionz)rQfindr?rr>r r r r szCDATASection.writexmlN)rrr) rrrrr rrrr r r r r rasrac@szeZdZdZdddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZdS)ReadOnlySequentialNamedNodeMap_seqr cCs ||_dSr&rd)r seqr r r rsz'ReadOnlySequentialNamedNodeMap.__init__cCs t|jSr&rrer r r r rsz&ReadOnlySequentialNamedNodeMap.__len__cCs t|jSr&rgr r r r rsz*ReadOnlySequentialNamedNodeMap._get_lengthcCs"|jD]}|j|kr|SqdSr&)rerrr r r rs  z+ReadOnlySequentialNamedNodeMap.getNamedItemcCs,|jD] }|j|kr|j|kr|SqdSr&)rerrrr r r rs z-ReadOnlySequentialNamedNodeMap.getNamedItemNScCs4t|tr|j|}n ||}|dur0t||Sr&)rr4rrrj)r Z name_or_tuplerIr r r rs    z*ReadOnlySequentialNamedNodeMap.__getitem__cCs2|dkr dSz |j|WSty,YdS0dSr,)rerrr r r rs   z#ReadOnlySequentialNamedNodeMap.itemcCstjddSNz"NamedNodeMap instance is read-onlyr7r8r.rr r r rsz.ReadOnlySequentialNamedNodeMap.removeNamedItemcCstjddSrhrirr r r rsz0ReadOnlySequentialNamedNodeMap.removeNamedItemNScCstjddSrhrirr r r rsz+ReadOnlySequentialNamedNodeMap.setNamedItemcCstjddSrhrirr r r rsz-ReadOnlySequentialNamedNodeMap.setNamedItemNScCs|jgSr&rdr r r r rsz+ReadOnlySequentialNamedNodeMap.__getstate__cCs|d|_dSr,rdrr r r rsz+ReadOnlySequentialNamedNodeMap.__setstate__N)r )rrrrrrrrrrrrrrrrrr r r r rcs  rcz&Number of entries in the NamedNodeMap.c@s(eZdZdZddZddZddZdS) IdentifiedpublicIdsystemIdcCs||_||_dSr&rk)r rlrmr r r _identified_mixin_initsz!Identified._identified_mixin_initcCs|jSr&)rlr r r r _get_publicIdszIdentified._get_publicIdcCs|jSr&)rmr r r r _get_systemIdszIdentified._get_systemIdN)rrrrrnrorpr r r r rj srjc@sHeZdZejZdZdZdZdZ dZ ddZ ddZ ddZ d d d ZdS) DocumentTypeNcCs2t|_t|_|r&t|\}}||_|j|_dSr&)rcentities notationsrrr)r rrrr r r r"s  zDocumentType.__init__cCs|jSr&)internalSubsetr r r r _get_internalSubset*sz DocumentType._get_internalSubsetcCs|jdurtd}|j|_|j|_tjjj}|rg|j_ g|j _ |j j D]2}t |j|j |j }|j j |||||qH|jj D]N}t|j|j |j |j}|j|_|j|_|j|_|jj |||||q|||||SdSdSr&)rYrqrrr7r8UserDataHandler NODE_CLONEDrrrersNotationrlrmrSryEntity notationNameactualEncodingrr`)r rZclonervrnotationeentityr r r r[-s0    zDocumentType.cloneNodercCs|d||j|jr8|d||j||jfn|jrR|d||jf|jdur||d||j|d|d|dS)Nz r r r r Hs      zDocumentType.writexml)rrr)rrrr DOCUMENT_TYPE_NODErrrrlrmrtrrur[r r r r r rqsrqc@sfeZdZdZejZdZdZdZ dZ ddZ ddZ ddZ dd Zd d Zd d ZddZddZdS)ryNcCs$||_||_t|_|||dSr&)rrzrzr(rn)r rrlrmr}r r r r_szEntity.__init__cCs|jSr&r{r r r r _get_actualEncodingeszEntity._get_actualEncodingcCs|jSr&rr r r r _get_encodinghszEntity._get_encodingcCs|jSr&r`r r r r _get_versionkszEntity._get_versioncCstjddS)Nz(cannot append children to an entity noder7r8r9)r rFr r r r=nszEntity.appendChildcCstjddS)Nz+cannot insert children below an entity noderr3r r r r5rszEntity.insertBeforecCstjddS)Nz*cannot remove children from an entity noderrOr r r r<vszEntity.removeChildcCstjddS)Nz)cannot replace children of an entity noderr4r r r rMzszEntity.replaceChild)rrrrr Z ENTITY_NODErrr{rr`rrrrr=r5r<rMr r r r ryVsryc@seZdZejZdZddZdS)rxNcCs||_|||dSr&)rrn)r rrlrmr r r rszNotation.__init__)rrrr rrrrr r r r rx~srxc@s<eZdZgdZddZddZddZdd Zd d Zd S) DOMImplementation))core1.0)r2.0)rN)r7r)r7r)r7N)ls-loadz3.0)rNcCs|dkr d}||f|jvSr)lower _featuresr^r r r r]szDOMImplementation.hasFeaturec Cs|r|jdurtjd|}|duo8|duo8|du }|sP|rPtjd|rt|\}}|dkr||dkr|tjd|r|stjd|||}|r| || ||r||_|_ ||_ ||_ |S)Nz(doctype object owned by another DOM treezElement with no namer7z$http://www.w3.org/XML/1998/namespacezillegal use of 'xml' prefixz(illegal use of prefix without namespaces) r;r7r8WrongDocumentErr_create_documentZInvalidCharacterErrrrcreateElementNSr=rYdoctyper\) r rrrrZadd_root_elementrrr/r r r createDocuments>       z DOMImplementation.createDocumentcCst|}||_||_|Sr&)rqrlrm)r rrlrmrr r r createDocumentTypesz$DOMImplementation.createDocumentTypecCs||dr|SdSdSr&)r]rfr r r rgs zDOMImplementation.getInterfacecCstSr&)Documentr r r r rsz"DOMImplementation._create_documentN) rrrrr]rrrgrr r r r rs  -rc@sXeZdZdZddZddZddZdd Zd d Zd d Z ddZ ddZ ddZ dS) ElementInfor cCs ||_dSr&r rr r r rszElementInfo.__init__cCstSr&rr Zanamer r r rszElementInfo.getAttributeTypecCstSr&rrr r r rszElementInfo.getAttributeTypeNScCsdSrr r r r r r]szElementInfo.isElementContentcCsdSrr r r r r isEmptyszElementInfo.isEmptycCsdSrr rr r r rszElementInfo.isIdcCsdSrr rr r r rszElementInfo.isIdNScCs|jSr&r r r r r rszElementInfo.__getstate__cCs ||_dSr&r rr r r rszElementInfo.__setstate__N) rrrrrrrr]rrrrrr r r r rs rcCs>|jtjkr|jd|_nt|r:|jjd|j_dSr&)rr r _id_cacheclear_id_search_stackrrYrr r r rBs    rBc@sreZdZdZejejejejfZ e Z ej Z dZdZdZdZdZZdZdZdZdZdZdZdZdZddZdd Zd d Zd d ZddZ ddZ!ddZ"ddZ#ddZ$ddZ%ddZ&ddZ'ddZ(d d!Z)d"d#Z*d$d%Z+d&d'Z,d(d)Z-d*d+Z.d,d-Z/d.d/Z0d0d1Z1d2d3Z2d4d5Z3d6d7Z4d8d9Z5d:d;Z6dd?Z8d@dAZ9dBdCZ:dIdEdFZ;dGdHZ|j||jtj kr^| r^tjdt ||S)Nr1z two document elements disallowed) rr6r7r8r9r:r;r<r rT_get_documentElementr=rr r r r=Ks    zDocument.appendChildcCsTz|j|Wnty,tjYn0d|_|_d|_|j |urPd|_ |Sr&) r(rNr?r7r8r@rDrEr;documentElementrOr r r r<[s   zDocument.removeChildcCs$|jD]}|jtjkr|SqdSr&)r(rr rTrr r r rgs  zDocument._get_documentElementcCs(|jdur|jd|_t|dSr&)rrRr r r r r rRls  zDocument.unlinkcCs|sdS|jddd}|j|_|j|_|j|_|jD]B}t|||}|j||jt j kr`n|jt j krr||_ ||_ q6|tjjj|||Sr&)r\rrrr`r(rXrSrr rrrr;ryr7r8rvrw)r rZr|rZ childcloner r r r[rs$      zDocument.cloneNodecCst}||_|Sr&)rrY)r rpr r r createDocumentFragmentszDocument.createDocumentFragmentcCst|}||_|Sr&)r rY)r rr~r r r createElementszDocument.createElementcCs(t|tstdt}||_||_|SNznode contents must be a string)rrrrrQrY)r rQtr r r createTextNodes  zDocument.createTextNodecCs(t|tstdt}||_||_|Sr)rrrrarQrYr rQrHr r r createCDATASections  zDocument.createCDATASectioncCst|}||_|Sr&)r`rYrr r r createCommentszDocument.createCommentcCst||}||_|Sr&)r5rY)r r7rQpr r r createProcessingInstructions z$Document.createProcessingInstructioncCst|}||_d|_|Sr)rrYr)r rar r r createAttributeszDocument.createAttributecCs"t|\}}t|||}||_|Sr&)rr rY)r rrrrr~r r r rs  zDocument.createElementNScCs*t|\}}t||||}||_d|_|Sr)rrrYr)r rrrrrr r r createAttributeNSs  zDocument.createAttributeNScCst||||}||_|Sr&)ryrY)r rrlrmrzr~r r r _create_entityszDocument._create_entitycCst|||}||_|Sr&)rxrY)r rrlrmrr r r _create_notations zDocument._create_notationcCs||jvr|j|S|js$|js$dS|j}|durB|jg}||_n|sJdSd}|r|}|dd|jD||}|rB|j D]}|j r| |j |j r||j|j<|j|kr|}n |jsqq||jr ||j|j<|j|kr|}n|js>qq|jr||j|j<|j|kr.|}q|jdkrqqn>|jr|j D]*}|jrT||j|j<|j|krT|}qT|durNqqN|S)NcSsg|]}|jtvr|qSr )rrA).0rWr r r s z+Document.getElementById..r2)rrrrrpopextendr(rrrrrrrrrrr)r rstackresultrIrrr r r getElementByIdsZ              zDocument.getElementByIdcCst||tSr&r"rr r r r#szDocument.getElementsByTagNamecCst|||tSr&r$rr r r r%s zDocument.getElementsByTagNameNScCs|j||Sr&)r\r]r^r r r ra szDocument.isSupportedcCs>|jtjkrtjdn|jtjkr2tjdt|||S)Nzcannot import document nodesz!cannot import document type nodes)rr rr7r8NotSupportedErrrrX)r rIrZr r r importNodes    zDocument.importNoderc Csxg}|r|d|d|dur<|d|r0dndd|dd|d||jD]}|||||q^dS) Nz encoding="rz standalone="Zyesnoz)rSrrXr(r ) r r%r#r'r$rrZ declarationsrIr r r r s zDocument.writexmlcCsJ|j|ur tjd||jf|jtjtjfvr>tjd|t krd|vr| dd\}}|dkr|tjj krtj dq|dkr|tjj kr|jtjkrtj dd}|}nd}d}|jtjkr|j }|dur|j}||nd}||_||_||_||_|jtjkr||_n*||_|durF|||rF|||S)Nz?cannot rename nodes from other documents; expected %s, found %sz8renameNode() only applies to element and attribute nodesrr2rzillegal use of 'xmlns' prefixz$illegal use of the 'xmlns' attribute)rYr7r8rrr rTrrrrrrrrrrrrrrrrr))r rrrrrr/Zis_idr r r renameNode&sb         zDocument.renameNode)rrrNN)=rrrrr rTrrrr6rr\rrrrrr;rErDr{rrr`rrrrrrrrrrrrrrr=r<rrRr[rrrrrrrrrrrrr#r%rarr rr r r r rsl   : rrz#Top-level element of this document.c Cs|j|rtjjj}n tjjj}|jtj kr| |j |j }|j D]0}||j |j |j||j |j}|j|_qH|r|jD]}t|||}||qn|jtjkr|}|r|jD]}t|||}||qn|jtjkr||j}n|jtjkr||j}n|jtjkr>||j |j}nj|jtj!kr\|"|j}nL|jtj#kr|$|j |j }d|_|j|_n|jtj%krtjjj}|j&'|j(|j)|j*}||_|rg|j+_,g|j-_,|j-j,D]F} t.| j | j)| j*} || _|j-j,/| t0| dr| 1|| | q|j+j,D]b} t2| j | j)| j*| j3} | j4| _4| j5| _5| j6| _6|| _|j+j,/| t0| dr.| 1|| | q.ntj7dt8|t0|dr|1||||S)NTryzCannot clone node %s)9rYrer7r8rvrwZ NODE_IMPORTEDrr rTrrrrrrrrrrr(rXr=r3rrPrrQrrrrr7rrrrrr\rrrlrmrrrersrxrSrrryryrzr{rr`rr:) rIrZZnewOwnerDocumentrvr|rrrWrHrr}r~rr r r rX_s                   rXcCs,|dd}t|dkr|Sd|dfSdS)Nrr2r)rr)rfieldsr r r rs  rcCs0||i|}|\}}||||Sr&)ZgetEventZ expandNoder)funcargskwargseventsZtoktypeZrootNoder r r _do_pulldom_parses   rcCsH|dur"|s"ddlm}||Sddlm}t|j|f||dSdS)Nr expatbuilderpulldom)parserbufsize)xml.domrparserr)filerrrrr r r rs     rcCsB|durddlm}||Sddlm}t|j|fd|iSdS)Nrrrr)rr parseStringrr)stringrrrr r r rs    rcCs@|r:t|trt|}|D]\}}tj||sdSqtjSr&)rrrZ_parse_feature_stringrr\r])Zfeaturesfvr r r getDOMImplementations   r)NN)N)N)6rrr7rrrrZxml.dom.minicompatZxml.dom.xmlbuilderrrr8r rTrrAZ defpropertyrKrrrrrrobjectrZ AttributeListrrr rr0r5r?rr\r-r`rarcrjrqryrxrrrBrrXrrrrrr r r r sw  y$  )GU  ><( O*UR