/usr/lib64/python3.9/xml/dom/__pycache__
NameSizeModeActions
domreg.cpython-39.opt-1.pyc28500644editdlrm
domreg.cpython-39.opt-2.pyc16480644editdlrm
domreg.cpython-39.pyc28500644editdlrm
expatbuilder.cpython-39.opt-1.pyc268010644editdlrm
expatbuilder.cpython-39.opt-2.pyc241940644editdlrm
expatbuilder.cpython-39.pyc273100644editdlrm
minicompat.cpython-39.opt-1.pyc26650644editdlrm
minicompat.cpython-39.opt-2.pyc24870644editdlrm
minicompat.cpython-39.pyc27410644editdlrm
minidom.cpython-39.opt-1.pyc560830644editdlrm
minidom.cpython-39.opt-2.pyc535660644editdlrm
minidom.cpython-39.pyc561640644editdlrm
NodeFilter.cpython-39.opt-1.pyc9690644editdlrm
NodeFilter.cpython-39.opt-2.pyc8760644editdlrm
NodeFilter.cpython-39.pyc9690644editdlrm
pulldom.cpython-39.opt-1.pyc106910644editdlrm
pulldom.cpython-39.opt-2.pyc102550644editdlrm
pulldom.cpython-39.pyc106910644editdlrm
xmlbuilder.cpython-39.opt-1.pyc124630644editdlrm
xmlbuilder.cpython-39.opt-2.pyc120340644editdlrm
xmlbuilder.cpython-39.pyc124770644editdlrm
__init__.cpython-39.opt-1.pyc55380644editdlrm
__init__.cpython-39.opt-2.pyc47430644editdlrm
__init__.cpython-39.pyc55380644editdlrm
Edit: /usr/lib64/python3.9/xml/dom/__pycache__/minidom.cpython-39.opt-1.pyc (56083B)
a à”|jD ã@sôdZddlZddlZddlmZmZmZmZddlTddl m Z m Z ej j jej j jfZGdd„dej j ƒZ ee dd d �ee d d d �ee d dd �dd„Zdd„Zdd„Zdd„ZGdd„de ƒZGdd„de ƒZeeddd �eed dd �eeddd �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.ƒZGd/d0„d0ee ƒZ Gd1d2„d2ee ƒZ!ee!d"d3d �Gd4d5„d5e!ƒZ"ee"d6d7d �ee"d8d9d �d:d;„Z#dd?„d?e!ƒZ%Gd@dA„dAe"ƒZ&GdBdC„dCeƒZ'ee'd"dDd �GdEdF„dFƒZ(GdGdH„dHe(ee ƒZ)GdIdJ„dJe(e ƒZ*GdKdL„dLe(ee ƒZ+GdMdN„dNe ƒZ,GdOdP„dPeƒZ-dQdR„Z.GdSdT„dTe e ƒZ/ee/dUdVd �dWdX„Z0dYdZ„Z1d[d\„Z2dcd]d^„Z3ddd_d`„Z4dedadb„Z5dS)facSimple implementation of the Level 1 DOM. Namespaces and other minor Level 2 features are also supported. parse("foo.xml") parseString("") Todo: ===== * convenience methods for getting elements and text. * more testing * bring some of the writer and linearizer code into conformance with this interface * SAX 2 namespaces é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.9/xml/dom/minidom.pyÚ__bool__+sz Node.__bool__cCs| dd||¡S©NÚ)Ú toprettyxml)r ÚencodingÚ standaloner r r Útoxml.sz Node.toxmlú Ú cCsz|durt ¡}ntjt ¡|ddd�}|jtjkrJ| |d||||¡n| |d||¡|durj| ¡S|  ¡ ¡SdS)NÚxmlcharrefreplacer)rÚerrorsÚnewliner) ÚioÚStringIOÚ TextIOWrapperÚBytesIOÚnodeTyper Ú DOCUMENT_NODEÚwritexmlÚgetvalueÚdetach)r ÚindentÚnewlrrÚwriterr r r r1s  ý zNode.toprettyxmlcCs t|jƒS©N)ÚboolÚ childNodesr r r r Ú hasChildNodesDszNode.hasChildNodescCs|jSr&©r(r r r r Ú_get_childNodesGszNode._get_childNodescCs|jr|jdSdS©Nrr*r r r r Ú_get_firstChildJszNode._get_firstChildcCs|jr|jdSdS©Néÿÿÿÿr*r r r r Ú_get_lastChildNszNode._get_lastChildcCs|j|jkr,t|jƒD]}| ||¡q|S|j|jvrTtj dt |ƒt |ƒf¡‚|j durj|j   |¡|dur~|  |¡n†z|j  |¡}Wntyªtj ¡‚Yn0|jtvr¾t|ƒ|j ||¡||_||_|rø|j|d}||_||_nd|_||_ |S)Nú%s cannot be child of %sé)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Úcr>Únoder r r r5Rs8  ÿ     zNode.insertBeforecCs�|j|jkr*t|jƒD]}| |¡q|S|j|jvrTtj dt |ƒt |ƒf¡‚n|jt vrft |ƒ|j dur||j   |¡t||ƒd|_|S©Nr1)rr3r4r(r=r6r7r8r9r:rArBr;r<Ú _append_childrD)r rIrHr r r r=rs   ÿ    zNode.appendChildcCs|j|jkr(|j}| |¡| ||¡S|j|jvrPtj dt |ƒt |ƒf¡‚||ur\dS|j durr|j  |¡z|j   |¡}Wnt yžtj ¡‚Yn0||j |<||_ d|_ |jtvsÊ|jtvrÒt|ƒ|j|_|j|_d|_d|_|jrü||j_|j�r ||j_|SrJ)rr3rDr<r5r6r7r8r9r:r;r(r>r?r@rArBrE)r rFÚoldChildrGr>r r r Ú replaceChildƒs@    ÿ     ÿzNode.replaceChildcCs~z|j |¡Wnty,tj ¡‚Yn0|jdurB|j|j_|jdurV|j|j_d|_|_|jt vrtt |ƒd|_ |Sr&) r(Úremover?r7r8r@rDrErrArBr;©r rLr r r r<£s       zNode.removeChildcCsÒg}|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_NODEÚdatarDrEÚunlinkÚappendÚ ELEMENT_NODEÚ normalize)r ÚLÚchildrIr r r rU³s*          zNode.normalizecCst|||jp|ƒSr&)Ú _clone_nodeÚ ownerDocument)r Údeepr r r Ú cloneNodeÎszNode.cloneNodecCs|jj ||¡Sr&)rYÚimplementationÚ hasFeature©r ÚfeatureÚversionr r r Ú isSupportedÑszNode.isSupportedcCsdSr&r r r r r Ú_get_localNameÔszNode._get_localNamecCs||uSr&r ©r Úotherr r r Ú isSameNodeÚszNode.isSameNodecCs| |d¡r|SdSdSr&)ra©r r_r r r Ú getInterfaceÝs zNode.getInterfacec Cs.z|j|dWSttfy(YdS0dSr,)Ú _user_dataÚAttributeErrorÚKeyError©r Úkeyr r r Ú getUserDataçszNode.getUserDatacCsld}z |j}Wnty*i}||_Yn0||vr@||d}|dur\d}|durh||=n ||f||<|Sr,)rhri)r rlrQÚhandlerÚoldÚdr r r Ú setUserDataís     zNode.setUserDatacCsDt|dƒr@t|j ¡ƒD]&\}\}}|dur| |||||¡qdS)Nrh)ÚhasattrÚlistrhÚitemsÚhandle)r Ú operationÚsrcÚdstrlrQrnr r r Ú_call_user_data_handlerÿs zNode._call_user_data_handlercCs>d|_|_|jr.|jD] }| ¡qtƒ|_d|_d|_dSr&)r;rYr(rRÚNodeListrErD)r rWr r r rRs   z Node.unlinkcCs|Sr&r r r r r Ú __enter__szNode.__enter__cCs | ¡dSr&)rR)r ÚetZevÚtbr r r Ú__exit__sz Node.__exit__)NN)rrNN)!Ú__name__Ú __module__Ú __qualname__Ú namespaceURIr;rYrDrErÚprefixrrrr)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 rKcCs6|r2| dd¡ dd¡ dd¡ dd¡}| |¡d S) zWrites datachars to writer.ú&z&úz>N)ÚreplaceÚwrite)r%rQr r r Ú _write_data(sÿÿr�cCsD|jD]8}|jtjkr2|dks(|j|kr2| |¡t|||ƒq|S©Nr)r(rr rTÚtagNamerSÚ_get_elements_by_tagName_helper)ÚparentÚnameÚrcrIr r r r’/s  ÿÿ r’cCsX|jD]L}|jtjkr|dks(|j|krD|dks:|j|krD| |¡t||||ƒq|Sr�)r(rr rTr‡r‚rSÚ"_get_elements_by_tagName_ns_helper)r“ZnsURIr‡r•rIr r r r–7s  ÿÿ r–c@sJeZdZejZdZdZdZdZ ej ej ej ej ejejejfZdd„ZdS)ÚDocumentFragmentz#document-fragmentNcCs tƒ|_dSr&)rzr(r r r r Ú__init__NszDocumentFragment.__init__)rr€r�r r3rÚnodeNameÚ nodeValueÚ attributesr;rTrPÚCDATA_SECTION_NODEÚENTITY_REFERENCE_NODEÚPROCESSING_INSTRUCTION_NODEÚ COMMENT_NODEÚ NOTATION_NODEr6r˜r r r r r—@súr—c@s¼eZdZdZejZdZdZdZ ej ej fZ e ddfdd„Zdd„Zdd „Zd d „Zd d „ZeeeƒZZdd„Zdd„ZeeeƒZZdd„Zdd„ZeeeƒZdd„Zdd„Zdd„ZdS)ÚAttr)Ú_nameÚ_valuer‚Ú_prefixr(Ú _localNamerYÚ ownerElementNFcCs8d|_d|_||_||_||_tƒ|_|j tƒ¡dSr&) r¦rYr¢r‚r¤rzr(rSÚText)r ÚqNamer‚r‡rƒr r r r˜\sz Attr.__init__cCs2z|jWSty,|j dd¡dYS0dS©Nú:r2r/)r¥rir™Úsplitr r r r rbjs zAttr._get_localNamecCs|jSr&)Ú specifiedr r r r Ú_get_specifiedpszAttr._get_specifiedcCs|jSr&)r¢r r r r Ú _get_namesszAttr._get_namecCs||_|jdurt|jƒdSr&)r¢r¦rB©r Úvaluer r r Ú _set_namevs zAttr._set_namecCs|jSr&)r£r r r r Ú _get_value}szAttr._get_valuecCs6||_||jd_|jdur&t|jƒ||jd_dSr,)r£r(rQr¦rBr¯r r r Ú _set_value€s    zAttr._set_valuecCs|jSr&)r¤r r r r Ú _get_prefix‰szAttr._get_prefixcCsd|j}|dkr&|r&|tkr&tj d¡‚||_|dur<|j}nd||jf}|jrZt|jƒ||_ dS)NÚxmlnsz5illegal use of 'xmlns' prefix for the wrong namespacez%s:%s) r‚rr7r8Ú NamespaceErrr¤r‡r¦rBr”)r rƒZnsuriZnewNamer r r Ú _set_prefixŒs ÿ zAttr._set_prefixcCsv|j}|durR|j|j=|j|j|jf=|jrRd|_|jd8_|jj d8_ |j D] }|  ¡qX|j dd…=dS)NFr2) r¦Ú_attrsr™Ú_attrsNSr‚r‡Ú_is_idÚ_magic_id_nodesrYÚ_magic_id_countr(rR)r ÚelemrWr r r rR�s   z Attr.unlinkcCsf|jr dS|j}|j}|dus&|dur*dS| |¡}|dur@dS|jrV| |j|j¡S| |j¡SdS©NTF) rºrYr¦Ú_get_elem_infor‚ÚisIdNSr‡ÚisIdr™©r r…r½Úinfor r r Ú _get_isId®s zAttr._get_isIdcCs\|j}|j}|dus|dur tS| |¡}|dur6tS|jrL| |j|j¡S| |j¡SdSr&) rYr¦Ú_no_typer¿r‚ÚgetAttributeTypeNSr‡ÚgetAttributeTyper™rÂr r r Ú_get_schemaType¾s zAttr._get_schemaType) rr€r�Ú __slots__r ÚATTRIBUTE_NODErr›r¬rºrPr�r6rr˜rbr­r®r±Úpropertyr™r”r²r³ršr°r´r·rƒrRrÄrÈr r r r r¡Rs. ÿ  r¡rÁz True if this attribute is an ID.z'Namespace-local name of this attribute.Ú schemaTypezSchema type for this attribute.c@sòeZdZdZdZdd„Zdd„Zdd„Zd d „Zd d „Z d d„Z dd„Z dd„Z dd„Z d:dd„ZeZdd„Zdd„Zdd„Zdd„Zd d!„Zd"d#„Zd$d%„Zd&d'„Zd(d)„Zd*d+„Zd,d-„Zd.d/„Zd0d1„Zd2d3„Zd4d5„Zd6d7„Zd8d9„Z dS);Ú NamedNodeMapaThe attribute list is a transient interface to the underlying dictionaries. Mutations here will change the underlying element's dictionary. Ordering is imposed artificially and does not reflect the order of attributes as found in an input document. ©r¸r¹Ú _ownerElementcCs||_||_||_dSr&rÎ)r ÚattrsZattrsNSr¦r r r r˜ÜszNamedNodeMap.__init__cCs t|jƒSr&)Úlenr¸r r r r Ú _get_lengthászNamedNodeMap._get_lengthcCs2z|t|j ¡ƒ|WSty,YdS0dSr&)rsr¸ÚkeysÚ IndexError©r r>r r r Úitemäs zNamedNodeMap.itemcCs*g}|j ¡D]}| |j|jf¡q|Sr&)r¸ÚvaluesrSr™r°©r rVrIr r r rtêszNamedNodeMap.itemscCs0g}|j ¡D]}| |j|jf|jf¡q|Sr&)r¸r×rSr‚r‡r°rØr r r ÚitemsNSðszNamedNodeMap.itemsNScCs"t|tƒr||jvS||jvSdSr&)Ú isinstanceÚstrr¸r¹rkr r r Ú __contains__ös  zNamedNodeMap.__contains__cCs |j ¡Sr&)r¸rÓr r r r rÓüszNamedNodeMap.keyscCs |j ¡Sr&)r¹rÓr r r r ÚkeysNSÿszNamedNodeMap.keysNScCs |j ¡Sr&)r¸r×r r r r r×szNamedNodeMap.valuesNcCs|j ||¡Sr&©r¸Úget)r r”r°r r r rßszNamedNodeMap.getcCs:|jt|ddƒurdSt|ƒt|ƒkt|ƒt|ƒkSdS)Nr¸r)r¸ÚgetattrÚidrcr r r Ú_cmp szNamedNodeMap._cmpcCs| |¡dkSr,©rârcr r r Ú__eq__szNamedNodeMap.__eq__cCs| |¡dkSr,rãrcr r r Ú__ge__szNamedNodeMap.__ge__cCs| |¡dkSr,rãrcr r r Ú__gt__szNamedNodeMap.__gt__cCs| |¡dkSr,rãrcr r r Ú__le__szNamedNodeMap.__le__cCs| |¡dkSr,rãrcr r r Ú__lt__szNamedNodeMap.__lt__cCs"t|tƒr|j|S|j|SdSr&)rÚr4r¹r¸)r Úattname_or_tupler r r Ú __getitem__s  zNamedNodeMap.__getitem__cCstt|tƒrPz|j|}Wn.tyFt|ƒ}|jj|_| |¡Yn0||_n t|tƒsbt dƒ‚|}| |¡dS)Nz%value must be a string or Attr object) rÚrÛr¸rjr¡rÏrYÚ setNamedItemr°Ú TypeError)r Úattnamer°rIr r r Ú __setitem__&s    zNamedNodeMap.__setitem__cCs&z |j|WSty YdS0dSr&)r¸rj©r r”r r r Ú getNamedItem5s  zNamedNodeMap.getNamedItemcCs*z|j||fWSty$YdS0dSr&)r¹rj©r r‚r‡r r r ÚgetNamedItemNS;s zNamedNodeMap.getNamedItemNScCsX| |¡}|durJt|jƒ|j|j=|j|j|jf=t|dƒrFd|_ |St j   ¡‚dS©Nr¦) rðrBrÏr¸r™r¹r‚r‡rrr¦r7r8r@©r r”Únr r r ÚremoveNamedItemAs    zNamedNodeMap.removeNamedItemcCsZ| ||¡}|durLt|jƒ|j|j|jf=|j|j=t|dƒrHd|_ |St j   ¡‚dSró) ròrBrÏr¹r‚r‡r¸r™rrr¦r7r8r@©r r‚r‡rõr r r ÚremoveNamedItemNSMs    zNamedNodeMap.removeNamedItemNScCstt|tƒs&tj dt|ƒt|ƒf¡‚|j |j¡}|r@|  ¡||j|j<||j |j |j f<|j |_t|jƒ|SrJ)rÚr¡r7r8r9r:r¸rßr”rRr¹r‚r‡rÏr¦rB)r rIror r r rëYs ÿ  zNamedNodeMap.setNamedItemcCs | |¡Sr&)rë©r rIr r r ÚsetNamedItemNSfszNamedNodeMap.setNamedItemNScCs||}t|jƒ| ¡dSr&)rBr¦rR)r rérIr r r Ú __delitem__is zNamedNodeMap.__delitem__cCs|j|j|jfSr&rÎr r r r Ú __getstate__nszNamedNodeMap.__getstate__cCs|\|_|_|_dSr&rΩr Ústater r r Ú __setstate__qszNamedNodeMap.__setstate__)N)!rr€r�Ú__doc__rÉr˜rÒrÖrtrÙrÜrÓrÝr×rßÚ__len__rârärårærçrèrêrîrðròrörørërúrûrürÿr r r r rÍÑs<    rÍÚlengthz$Number of nodes in the NamedNodeMap.c@s0eZdZdZdd„Zdd„Zdd„Zdd „Zd S) ÚTypeInfo©Ú namespacer”cCs||_||_dSr&r)r rr”r r r r˜}szTypeInfo.__init__cCs2|jrd|jj|j|jfSd|jj|jfSdS)Nz<%s %r (from %r)>z<%s %r>)rÚ __class__rr”r r r r Ú__repr__�s  ÿzTypeInfo.__repr__cCs|jSr&)r”r r r r r®ˆszTypeInfo._get_namecCs|jSr&)rr r r r Ú_get_namespace‹szTypeInfo._get_namespaceN)rr€r�rÉr˜rr®rr r r r rzs rc@s eZdZdZejZdZeZ dZ ejej ej ej ejejfZeddfdd„Zdd„Zdd „Zd d „Zd d „Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„ZeZdd„Zdd„Z d d!„Z!e!Z"d"d#„Z#d$d%„Z$d&d'„Z%d(d)„Z&d*d+„Z'd9d-d.„Z(d/d0„Z)d1d2„Z*d3d4„Z+d5d6„Z,d7d8„Z-dS):ÚElement) rYr;r‘r™rƒr‚r¥r(r¸r¹rDrENrcCsHd|_d|_||_|_||_||_tƒ|_d|_|_ d|_ d|_ dSr&) rYr;r‘r™rƒr‚rzr(rDrEr¸r¹)r r‘r‚rƒr‡r r r r˜¡s  zElement.__init__cCs|jduri|_i|_dSr&)r¸r¹r r r r Ú_ensure_attributes¶s zElement._ensure_attributescCs2z|jWSty,|j dd¡dYS0dSr©)r¥rir‘r«r r r r rb»s zElement._get_localNamecCs|jSr&©r‘r r r r Ú _get_tagNameÁszElement._get_tagNamecCs@|jdur&t|j ¡ƒD] }| ¡qd|_d|_t |¡dSr&)r¸rsr×rRr¹r )r Úattrr r r rRÄs   zElement.unlinkcCs6|jdurdSz|j|jWSty0YdS0dS)a†Returns the value of the specified attribute. Returns the value of the element's attribute named attname as a string. An empty string is returned if the element does not have such an attribute. Note that an empty string may also be returned as an explicitly given attribute value, use the hasAttribute method to distinguish these two cases. Nr)r¸r°rj)r rír r r Ú getAttributeÌs  zElement.getAttributecCs:|jdurdSz|j||fjWSty4YdS0dSr)r¹r°rjrñr r r ÚgetAttributeNSÜs   zElement.getAttributeNScCsV| |¡}|dur4t|ƒ}||_|j|_| |¡n||jkrR||_|jrRt|ƒdSr&)ÚgetAttributeNoder¡r°rYÚsetAttributeNoderÁrB)r rír°r r r r Ú setAttributeäs   zElement.setAttributecCs€t|ƒ\}}| ||¡}|durHt||||ƒ}||_|j|_| |¡n4||jkrf||_|jrft|ƒ|j|kr|||_||_ dSr&) Ú_nssplitÚgetAttributeNodeNSr¡r°rYrrÁrBrƒr™)r r‚Ú qualifiedNamer°rƒÚ localnamer r r r ÚsetAttributeNSðs     zElement.setAttributeNScCs|jdurdS|j |¡Sr&rÞ)r Úattrnamer r r rs zElement.getAttributeNodecCs|jdurdS|j ||f¡Sr&)r¹rßrñr r r rs zElement.getAttributeNodeNScCsš|jd|fvrtj d¡‚| ¡|j |jd¡}|durD| |¡|j  |j |j fd¡}|durt||urt| |¡t ||ƒ||urŠ|S||ur–|SdS)Nzattribute node already owned) r¦r7r8ZInuseAttributeErrr r¸rßr”ÚremoveAttributeNoder¹r‚r‡Ú_set_attribute_node)r r Zold1Zold2r r r r s    zElement.setAttributeNodecCsN|jdurtj ¡‚z|j|}Wnty>tj ¡‚Yn0| |¡dSr&)r¹r7r8r@r¸rjr)r r”r r r r ÚremoveAttribute s   zElement.removeAttributecCsR|jdurtj ¡‚z|j||f}WntyBtj ¡‚Yn0| |¡dSr&)r¹r7r8r@rjr)r r‚r‡r r r r ÚremoveAttributeNS)s   zElement.removeAttributeNScCs\|durtj ¡‚z|j|jWnty>tj ¡‚Yn0t|ƒ| ¡|j|_|Sr&) r7r8r@r¸r”rjrBrRrYrùr r r r2s  zElement.removeAttributeNodecCs|jdurdS||jvS)z¾Checks whether the element has an attribute with the specified name. Returns True if the element has an attribute with the specified name. Otherwise, returns False. NF©r¸rïr r r Ú hasAttributeBs zElement.hasAttributecCs|jdurdS||f|jvS©NF)r¹rñr r r ÚhasAttributeNSLs zElement.hasAttributeNScCst||tƒƒS)z¶Returns all descendant elements with the given tag name. Returns the list of all descendant elements (not direct children only) with the specified tag name. ©r’rzrïr r r ÚgetElementsByTagNameQszElement.getElementsByTagNamecCst|||tƒƒSr&©r–rzrñr r r ÚgetElementsByTagNameNSYs ÿzElement.getElementsByTagNameNScCsd|jt|ƒfS)Nz)r‘rár r r r r]szElement.__repr__rcCsü| |d|j¡| ¡}| ¡D],}| d|¡t|||jƒ| d¡q$|jrê| d¡t|jƒdkr |jdjt j t j fvr |jd  |ddd¡n4| |¡|jD]}|  |||||¡q°| |¡| d|j|f¡n| d |¡d S) z®Write an XML element to a file-like object Write the element to the writer object that must provide a write method (e.g. a file or StringIO object). rŠz %s="r‹rŒr2rrz%sz/>%sN) rŽr‘Ú_get_attributesrÓr�r°r(rÑrr rPrœr )r r%r#Ú addindentr$rÐZa_namerIr r r r `s(     ÿÿ   zElement.writexmlcCs| ¡t|j|j|ƒSr&)r rÍr¸r¹r r r r r%€szElement._get_attributescCs|jr dSdSdSr¾rr r r r Ú hasAttributes„szElement.hasAttributescCs| |¡}| |¡dSr&)rÚsetIdAttributeNode)r r”ÚidAttrr r r ÚsetIdAttributeŒs zElement.setIdAttributecCs| ||¡}| |¡dSr&)rr()r r‚r‡r)r r r ÚsetIdAttributeNS�s zElement.setIdAttributeNScCsj|dus| |j¡stj ¡‚t|ƒdur4tj ¡‚|jsfd|_|jd7_|j j d7_ t |ƒdS)NTr2) rer¦r7r8r@Ú_get_containing_entrefÚNoModificationAllowedErrrºr»rYr¼rB)r r)r r r r(”s   zElement.setIdAttributeNode)rrr).rr€r�rÉr rTrršrÅrÌr»ržrŸrPrœr�r6rr˜r rbr rRrrrrrrrZsetAttributeNodeNSrrrZremoveAttributeNodeNSrr r"r$rr r%r'r*r+r(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|jf<||_dSr&)rBr r¸r”r¹r‚r‡r¦)Úelementr r r r r¥s  rc@sfeZdZdZdZdZeƒZdZdZ dd„Z dd„Z dd „Z d d „Z d d „Zdd„Zdd„Zdd„ZdS)Ú Childlessz�Mixin that makes childless-ness easy to implement and avoids the complexity of the Node methods that deal with children. r NcCsdSr&r r r r r r-»szChildless._get_firstChildcCsdSr&r r r r r r0¾szChildless._get_lastChildcCstj |jd¡‚dS)Nz nodes cannot have children©r7r8r9r™rùr r r r=ÁsÿzChildless.appendChildcCsdSrr r r r r r)ÅszChildless.hasChildNodescCstj |jd¡‚dS©Nz nodes do not have childrenr0©r rFrGr r r r5ÈsÿzChildless.insertBeforecCstj |jd¡‚dSr1)r7r8r@r™rOr r r r<ÌsÿzChildless.removeChildcCsdSr&r r r r r rUÐszChildless.normalizecCstj |jd¡‚dSr1r0©r rFrLr r r rMÔsÿzChildless.replaceChild)rr€r�rrÉr›Z EmptyNodeListr(r„r†r-r0r=r)r5r<rUrMr r r r r/°sr/c@s\eZdZejZdZdd„Zdd„Zdd„Z e ee ƒZ dd „Z d d „Z e e e ƒZdd d„ZdS)ÚProcessingInstruction©ÚtargetrQcCs||_||_dSr&r5)r r6rQr r r r˜ÝszProcessingInstruction.__init__cCs|jSr&©rQr r r r Ú_get_nodeValueâsz$ProcessingInstruction._get_nodeValuecCs ||_dSr&r7r¯r r r Ú_set_nodeValueäsz$ProcessingInstruction._set_nodeValuecCs|jSr&©r6r r r r Ú _get_nodeNameész#ProcessingInstruction._get_nodeNamecCs ||_dSr&r:r¯r r r Ú _set_nodeNameësz#ProcessingInstruction._set_nodeNamercCs| d||j|j|f¡dS)Nz %s%s)rŽr6rQ©r r%r#r&r$r r r r ïszProcessingInstruction.writexmlN)rrr)rr€r�r ržrrÉr˜r8r9rËršr;r<r™r r r r r r4Ùs  r4c@sreZdZdZdd„Zdd„ZeZdd„Zdd „Ze eeƒZ Z d d „Z d d „Z dd„Zdd„Zdd„Zdd„ZdS)Ú CharacterData)Ú_datarYr;rErDcCs,d|_|_d|_|_d|_t |¡dSr)rYr;rErDr?r r˜r r r r r˜ös  zCharacterData.__init__cCs t|jƒSr&)rÑrQr r r r rÒüszCharacterData._get_lengthcCs|jSr&©r?r r r r Ú _get_dataszCharacterData._get_datacCs ||_dSr&r@©r rQr r r Ú _set_dataszCharacterData._set_datacCs6|j}t|ƒdkrd}nd}d|jj|dd…|fS)Né z...rzr)rQrÑrr)r rQZ dotdotdotr r r rs ÿzCharacterData.__repr__cCsT|dkrtj d¡‚|t|jƒkr.tj d¡‚|dkrBtj d¡‚|j|||…S©Nrúoffset cannot be negativeú#offset cannot be beyond end of dataúcount cannot be negative©r7r8Ú IndexSizeErrrÑrQ©r ÚoffsetÚcountr r r Ú substringDatas   zCharacterData.substringDatacCs|j||_dSr&r7)r Úargr r r Ú appendDataszCharacterData.appendDatacCsZ|dkrtj d¡‚|t|jƒkr.tj d¡‚|rVd|jd|…||j|d…f|_dS)NrrFrGú%s%s%srI)r rLrOr r r Ú insertDatas  ÿzCharacterData.insertDatacCsl|dkrtj d¡‚|t|jƒkr.tj d¡‚|dkrBtj d¡‚|rh|jd|…|j||d…|_dSrErIrKr r r Ú deleteData%s   zCharacterData.deleteDatacCsr|dkrtj d¡‚|t|jƒkr.tj d¡‚|dkrBtj d¡‚|rnd|jd|…||j||d…f|_dS)NrrFrGrHrQrI)r rLrMrOr r r Ú replaceData/s   ÿzCharacterData.replaceDataN)rr€r�rÉr˜rÒrrArCrËrQršrrNrPrRrSrTr r r r r>ós    r>zLength of the string data.c@sHeZdZdZejZdZdZdd„Z ddd„Z d d „Z d d „Z d d„Z dS)r§r z#textNcCs’|dks|t|jƒkr"tj d¡‚| ¡}|j|d…|_|j|_|j}|jr~||jj vr~|durp|j  |¡n|j  ||¡|jd|…|_|S)Nrzillegal offset value) rÑrQr7r8rJrrYrDr;r(r=r5)r rLZnewTextÚnextr r r Ú splitTextDs zText.splitTextrcCst|d||j|fƒdS)NrQ)r�rQr=r r r r Ssz Text.writexmlcCs„|jg}|j}|durB|jtjtjfvrB| d|j¡|j}qqBq|j}|durz|jtjtjfvrz| |j¡|j}qHqzqHd  |¡S)Nrr) rQrErr rPrœrCrDrSÚjoin)r rVrõr r r Ú_get_wholeTextXs zText._get_wholeTextcCsž|j}|j}|dur@|jtjtjfvr@|j}| |¡|}q q@q |j}|sT| |¡|durˆ|jtjtjfvrˆ|j}| |¡|}qTqˆqT|r–||_|SdSdSr&) r;rErr rPrœr<rDrQ)r Zcontentr“rõrUr r r ÚreplaceWholeTextjs*   zText.replaceWholeTextcCsF|j ¡rdSt|ƒ}|dur"dS|j |¡}|dur:dS| ¡SdSr)rQÚstripÚ_get_containing_elementrYr¿ÚisElementContent)r r½rÃr r r Ú!_get_isWhitespaceInElementContent†s  z&Text._get_isWhitespaceInElementContent)rrr)rr€r�rÉr rPrr™r›rVr rXrYr]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}|dur&|jtjkr|S|j}qdSr&)r;rr rT©rIrHr r r r[™s  r[cCs*|j}|dur&|jtjkr|S|j}qdSr&)r;rr r�r^r r r r,¡s  r,c@s(eZdZejZdZdd„Zddd„ZdS) ÚCommentz#commentcCst |¡||_dSr&)r>r˜r?rBr r r r˜®s zComment.__init__rcCs,d|jvrtdƒ‚| d||j|f¡dS)Nz--z%'--' is not allowed in a comment nodez %s%s)rQr?rŽr=r r r r ²s zComment.writexmlN)rrr) rr€r�r rŸrr™r˜r r r r r r_ªsr_c@s$eZdZdZejZdZddd„ZdS)Ú CDATASectionr z#cdata-sectionrcCs,|j d¡dkrtdƒ‚| d|j¡dS)Nz]]>rz$']]>' not allowed in a CDATA sectionz)rQÚfindr?rŽr=r r r r ¾szCDATASection.writexmlN)rrr) rr€r�rÉr rœrr™r r r r r r`¸sr`c@szeZdZdZddd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„ZdS)ÚReadOnlySequentialNamedNodeMap©Ú_seqr cCs ||_dSr&rc)r Úseqr r r r˜Çsz'ReadOnlySequentialNamedNodeMap.__init__cCs t|jƒSr&©rÑrdr r r r rËsz&ReadOnlySequentialNamedNodeMap.__len__cCs t|jƒSr&rfr r r r rÒÎsz*ReadOnlySequentialNamedNodeMap._get_lengthcCs"|jD]}|j|kr|SqdSr&)rdr™rôr r r rðÑs  z+ReadOnlySequentialNamedNodeMap.getNamedItemcCs,|jD] }|j|kr|j|kr|SqdSr&)rdr‚r‡r÷r r r ròÖs z-ReadOnlySequentialNamedNodeMap.getNamedItemNScCs4t|tƒr|j|Ž}n | |¡}|dur0t|ƒ‚|Sr&)rÚr4ròrðrj)r Z name_or_tuplerIr r r rêÛs    z*ReadOnlySequentialNamedNodeMap.__getitem__cCs2|dkr dSz |j|WSty,YdS0dSr,)rdrÔrÕr r r rÖäs   z#ReadOnlySequentialNamedNodeMap.itemcCstj d¡‚dS©Nz"NamedNodeMap instance is read-only©r7r8r-rïr r r röìsÿz.ReadOnlySequentialNamedNodeMap.removeNamedItemcCstj d¡‚dSrgrhrñr r r røðsÿz0ReadOnlySequentialNamedNodeMap.removeNamedItemNScCstj d¡‚dSrgrhrùr r r rëôsÿz+ReadOnlySequentialNamedNodeMap.setNamedItemcCstj d¡‚dSrgrhrùr r r rúøsÿz-ReadOnlySequentialNamedNodeMap.setNamedItemNScCs|jgSr&rcr r r r rüüsz+ReadOnlySequentialNamedNodeMap.__getstate__cCs|d|_dSr,rcrýr r r rÿÿsz+ReadOnlySequentialNamedNodeMap.__setstate__N)r )rr€r�rÉr˜rrÒrðròrêrÖrörørërúrürÿr r r r rbÄs  rbz&Number of entries in the NamedNodeMap.c@s,eZdZdZdZdd„Zdd„Zdd„Zd S) Ú Identifiedz@Mix-in class that supports the publicId and systemId attributes.©ÚpublicIdÚsystemIdcCs||_||_dSr&rj)r rkrlr r r Ú_identified_mixin_init sz!Identified._identified_mixin_initcCs|jSr&)rkr r r r Ú _get_publicIdszIdentified._get_publicIdcCs|jSr&)rlr r r r Ú _get_systemIdszIdentified._get_systemIdN)rr€r�rrÉrmrnror r r r ris ric@sHeZdZejZdZdZdZdZ dZ dd„Z dd„Z dd„Z d d d „ZdS) Ú DocumentTypeNcCs2tƒ|_tƒ|_|r&t|ƒ\}}||_|j|_dSr&)rbÚentitiesÚ notationsrr”r™)r rrƒrr r r r˜s  zDocumentType.__init__cCs|jSr&)ÚinternalSubsetr r r r Ú_get_internalSubset%sz DocumentType._get_internalSubsetcCsî|jdurætdƒ}|j|_|j|_tjjj}|rÔg|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&)rYrpr”r™r7r8ÚUserDataHandlerÚ NODE_CLONEDrqrdrrÚNotationrkrlrSryÚEntityÚ notationNameÚactualEncodingrr`)r rZÚclonervrõÚnotationÚeÚentityr r r r[(s0    ÿzDocumentType.cloneNodercCsŽ| d¡| |j¡|jr8| d||j||jf¡n|jrR| d||jf¡|jdur|| d¡| |j¡| d¡| d|¡dS)Nz ÿÿþ  ÿ ÿ    z DOMImplementation.createDocumentcCst|ƒ}||_||_|Sr&)rprkrl)r rrkrlr’r r r ÚcreateDocumentType¿sz$DOMImplementation.createDocumentTypecCs| |d¡r|SdSdSr&)r]rfr r r rgÇs zDOMImplementation.getInterfacecCstƒSr&)ÚDocumentr r r r r�Îsz"DOMImplementation._create_documentN) rr€r�rŽr]r“r”rgr�r r r r rˆ‚s  -rˆc@s\eZdZdZdZdd„Zdd„Zdd„Zd d „Zd d „Z d d„Z dd„Z dd„Z dd„Z dS)Ú ElementInfoz÷Object that represents content-model information for an element. This implementation is not expected to be used in practice; DOM builders should provide implementations which do the right thing using information available to it. r cCs ||_dSr&r rïr r r r˜ÜszElementInfo.__init__cCstSr&©rÅ©r Zanamer r r rÇßszElementInfo.getAttributeTypecCstSr&r—rñr r r rÆâszElementInfo.getAttributeTypeNScCsdSrr r r r r r\åszElementInfo.isElementContentcCsdS)zQReturns true iff this element is declared to have an EMPTY content model.Fr r r r r ÚisEmptyèszElementInfo.isEmptycCsdS)z7Returns true iff the named attribute is a DTD-style ID.Fr r˜r r r rÁíszElementInfo.isIdcCsdS)zd?„Z8d@dA„Z9dBdC„Z:dIdEdF„Z;dGdH„Z|j |¡|jtj kr^|  ¡r^tj d¡‚t  ||¡S)Nr1z two document elements disallowed) rr6r7r8r9r:r;r<r rTÚ_get_documentElementr=rùr r r r=Fs ÿ   ÿÿzDocument.appendChildcCsTz|j |¡Wnty,tj ¡‚Yn0d|_|_d|_|j |urPd|_ |Sr&) r(rNr?r7r8r@rDrEr;ÚdocumentElementrOr r r r<Vs   zDocument.removeChildcCs$|jD]}|jtjkr|SqdSr&)r(rr rTrùr r r r¦bs  zDocument._get_documentElementcCs(|jdur|j ¡d|_t |¡dSr&)r’rRr r r r r rRgs  zDocument.unlinkcCs’|sdS|j ddd¡}|j|_|j|_|j|_|jD]B}t|||ƒ}|j |¡|jt j kr`n|jt j krr||_ ||_ q6| tjjj||¡|Sr&)r\r“rrr`r(rXrSrr rr€r’r;ryr7r8rurv)r rZr{rõZ childcloner r r r[ms$      ÿzDocument.cloneNodecCstƒ}||_|Sr&)r—rY)r rpr r r ÚcreateDocumentFragment‚szDocument.createDocumentFragmentcCst|ƒ}||_|Sr&)r rY)r r‘r}r r r Ú createElement‡szDocument.createElementcCs(t|tƒstdƒ‚tƒ}||_||_|S©Nznode contents must be a string)rÚrÛrìr§rQrY)r rQÚtr r r ÚcreateTextNodeŒs  zDocument.createTextNodecCs(t|tƒstdƒ‚tƒ}||_||_|Srª)rÚrÛrìr`rQrY©r rQrHr r r ÚcreateCDATASection”s  zDocument.createCDATASectioncCst|ƒ}||_|Sr&)r_rYr­r r r Ú createCommentœszDocument.createCommentcCst||ƒ}||_|Sr&)r4rY)r r6rQÚpr r r ÚcreateProcessingInstruction¡s z$Document.createProcessingInstructioncCst|ƒ}||_d|_|Sr)r¡rYr°)r r¨Úar r r ÚcreateAttribute¦szDocument.createAttributecCs"t|ƒ\}}t|||ƒ}||_|Sr&)rr rY)r r‚rrƒr‡r}r r r r‘¬s  zDocument.createElementNScCs*t|ƒ\}}t||||ƒ}||_d|_|Sr)rr¡rYr°)r r‚rrƒr‡r²r r r ÚcreateAttributeNS²s  zDocument.createAttributeNScCst||||ƒ}||_|Sr&)rxrY)r r”rkrlryr}r r r Ú_create_entity¼szDocument._create_entitycCst|||ƒ}||_|Sr&)rwrY)r r”rkrlrõr r r Ú_create_notationÁs 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 |jsÎ�q€qŒ| |j¡�r ||j|j<|j|krú|}n|j�s>�q€qŒ|jrŒ||j|j<|j|k�r.|}qŒ|jdkrŒ�q€qŒn>|j�r€|j   ¡D]*}|j�rT||j|j<|j|k�rT|}�qT|durN�qŽqN|S)NcSsg|]}|jtvr|‘qSr )rrA)Ú.0rWr r r Ú Ús ÿz+Document.getElementById..r2)ršr�r¼rœr§ÚpopÚextendr(r¿r›r×r‚rÀr‡r°r»rÁr”rº)r ráÚstackÚresultrIrÃr r r r ÚgetElementByIdÆsZ              zDocument.getElementByIdcCst||tƒƒSr&r!rïr r r r"szDocument.getElementsByTagNamecCst|||tƒƒSr&r#rñr r r r$s ÿzDocument.getElementsByTagNameNScCs|j ||¡Sr&)r\r]r^r r r raszDocument.isSupportedcCs>|jtjkrtj d¡‚n|jtjkr2tj d¡‚t|||ƒS)Nzcannot import document nodesz!cannot import document type nodes)rr rr7r8ÚNotSupportedErrr€rX)r rIrZr r r Ú importNode s    zDocument.importNoderc Csxg}|r| d|›d�¡|dur<| d|r0dnd›d�¡| dd |¡›d|›�¡|jD]}| ||||¡q^dS) Nz encoding="r‹z standalone="ZyesÚnoz)rSrŽrWr(r ) r r%r#r&r$rrZ declarationsrIr r r r s zDocument.writexmlcCsJ|j|ur tj d||jf¡‚|jtjtjfvr>tj d¡‚|t kr¶d|vr€|  dd¡\}}|dkr´|tjj kr´tj  d¡‚q¾|dkr¬|tjj kr¬|jtjkr¬tj  d¡‚d}|}nd}d}|jtjkrê|j }|durî|j}| |¡nd}||_||_||_||_|jtjk�r||_n*||_|du�rF| |¡|�rF| |¡|S)Nz?cannot rename nodes from other documents; expected %s, found %sz8renameNode() only applies to element and attribute nodesrªr2rµzillegal use of 'xmlns' prefixz$illegal use of the 'xmlns' attribute)rYr7r8r�rr rTrÊr¾rr«rr¶r¦rºrrƒr¥r‚r™r‘r”rr()r rõr‚r”rƒr‡r.Zis_idr r r Ú renameNode!sb ÿÿÿ ÿÿ ÿ þÿ     zDocument.renameNode)rrrNN)=rr€r�rÉr rTržrŸr€r6rˆr\rrr™ršr›r;rErDrzrrr`r¤r¡rŸr¼r˜r¿r‚ržr r„r¢r£r¥r†r=r<r¦rRr[r¨r©r¬r®r¯r±r³r‘r´rµr¶r½r"r$rar¿r rÂr r r r r•slÿ   :ÿ r•r§z#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|||ƒ}| |¡q„�n|jtjkrâ| ¡}|rÞ|jD]}t|||ƒ}| |¡qÂ�nÆ|jtjkrþ| |j¡}�nª|jtjk�r| |j¡}�nŒ|jtjk�r>| |j |j¡}�nj|jtj!k�r\| "|j¡}�nL|jtj#k�rŒ| $|j |j ¡}d|_|j|_�n|jtj%k�r”tjjj}|j& '|j(|j)|j*¡}||_|�r¨g|j+_,g|j-_,|j-j,D]F} t.| j | j)| j*ƒ} || _|j-j, /| ¡t0| dƒ�rÞ|  1|| | ¡�qÞ|j+j,D]b} t2| j | j)| j*| j3ƒ} | j4| _4| j5| _5| j6| _6|| _|j+j, /| ¡t0| dƒ�r.|  1|| | ¡�q.ntj 7dt8|ƒ¡‚t0|dƒ�rÂ| 1|||¡|S)zo Clone a node and give it the new owner document. Called by Node.cloneNode and Document.importNode TryzCannot clone node %s)9rYrer7r8rurvZ NODE_IMPORTEDrr rTr‘r‚r™r›r×rr°rr‡r¬r(rXr=r3r¨rPr¬rQrœr®ržr±r6rŸr¯rÊr´r€r\r”r”rkrlrqrdrrrwrSrrryrxryrzrr`r¾r:) rIrZZnewOwnerDocumentrvr{r r²rWrHrõr|r}r~r r r rXZs†    ÿ       ÿÿ   ÿ   ÿ  rXcCs,| dd¡}t|ƒdkr|Sd|dfSdS)Nrªr2ér)r«rÑ)rÚfieldsr r r r¬s  rcCs0||i|¤Ž}| ¡\}}| |¡| ¡|Sr&)ZgetEventZ expandNoder›)ÚfuncÚargsÚkwargsÚeventsZtoktypeZrootNoder r r Ú_do_pulldom_parse´s   rÉcCsH|dur"|s"ddlm}| |¡Sddlm}t|j|f||dœƒSdS)z3Parse a file into a DOM by filename or file object.Nr©Ú expatbuilder©Úpulldom)ÚparserÚbufsize)Úxml.domrËÚparserÍrÉ)ÚfilerÎrÏrËrÍr r r rÑ»s     ÿrÑcCsB|durddlm}| |¡Sddlm}t|j|fd|iƒSdS)z&Parse a file into a DOM from a string.NrrÊrÌrÎ)rÐrËÚ parseStringrÍrÉ)ÚstringrÎrËrÍr r r rÓÅs    ÿrÓcCs@|r:t|tƒrt |¡}|D]\}}tj ||¡sdSqtjSr&)rÚrÛrZ_parse_feature_stringr•r\r])ZfeaturesÚfÚvr r r ÚgetDOMImplementationÏs   r×)NN)N)N)6rrrÐr7rrrrZxml.dom.minicompatZxml.dom.xmlbuilderrrr8r rTr�rAZ defpropertyrKr�r’r–r—r¡ÚobjectrÍZ AttributeListrrÅr rr/r4r>r§r[r,r_r`rbrirprxrwrˆr–rBr•rXrrÉrÑrÓr×r r r r Úsœÿw  z$ÿ ÿÿ )GUÿÿ  >ÿ<( O*UÿR