B ÐÆèºP¥[ã @sddlmZmZmZddlmZmZmZddlmZddl m Z m Z ddl m Z ejZejZejZejjZejjZejjZejjZe ¡Ze dd¡e dd¡e dd ¡e dd ¡e dd ¡e dd ¡e dd ¡e dd¡e dd¡dœ ZGdd„deƒZdd„Zdd„ZGdd„dƒZeeefZGdd„deƒZ Gdd„deƒZ!Gdd„de!ƒZ"Gdd „d e!ƒZ#d!Z$d"e$Z%Gd#d$„d$eƒZ&Gd%d&„d&ƒZ'Gd'd(„d(e'eƒZ(Gd)d*„d*e'e&ƒZ)Gd+d,„d,e*ƒZ+Gd-d.„d.eƒZ,d:d0d1„Z-d;d2d3„Z.dé)Ú xmlbuilderÚminidomÚNode)ÚEMPTY_NAMESPACEÚ EMPTY_PREFIXÚXMLNS_NAMESPACE)Úexpat)Ú _append_childÚ_set_attribute_node)Ú NodeFilterNZcdataÚ enumerationÚentityÚentitiesÚidZidrefZidrefsZnmtokenZnmtokens) ZCDATAÚENUMZENTITYZENTITIESÚIDZIDREFZIDREFSZNMTOKENZNMTOKENSc@sZeZdZdZddd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dS)Ú ElementInfo)Ú _attr_infoÚ_modelÚtagNameNcCs||_g|_||_dS)N)rrr)ÚselfrÚmodel©rú7/opt/alt/python37/lib/python3.7/xml/dom/expatbuilder.pyÚ__init__?szElementInfo.__init__cCs|j|j|jfS)N)rrr)rrrrÚ __getstate__DszElementInfo.__getstate__cCs|\|_|_|_dS)N)rrr)rÚstaterrrÚ __setstate__GszElementInfo.__setstate__cCsJxB|jD]8}|d|kr|d}|ddkr4tdSt|dSqWtjS)Nééþÿÿÿrú(r)rÚ _typeinfo_maprÚ_no_type)rÚanameÚinfoÚtrrrÚgetAttributeTypeJs   zElementInfo.getAttributeTypecCstjS)N)rr")rZ namespaceURIZ localNamerrrÚgetAttributeTypeNSTszElementInfo.getAttributeTypeNScCs,|jr$|jd}|tjjtjjfkSdSdS)NrF)rrrZ XML_CTYPE_ANYZXML_CTYPE_MIXED)rÚtyperrrÚisElementContentWs   zElementInfo.isElementContentcCs |jr|jdtjjkSdSdS)NrF)rrrZXML_CTYPE_EMPTY)rrrrÚisEmpty_szElementInfo.isEmptycCs,x&|jD]}|d|kr|ddkSqWdS)NrrrF)r)rr#r$rrrÚisIdes  zElementInfo.isIdcCs| ||f¡S)N)r+)rZeuriZenameZaurir#rrrÚisIdNSkszElementInfo.isIdNS)N) Ú__name__Ú __module__Ú __qualname__Ú __slots__rrrr&r'r)r*r+r,rrrrr<s  rcCs | ||¡S)N)Ú_intern_setdefault)ÚbuilderÚsrrrÚ_internosr4cCs˜| d¡}|j}t|ƒdkrR|\}}}|||ƒ}d||f}|||ƒ}|||ƒ}n4t|ƒdkrz|\}}t}|||ƒ}}n td|ƒ‚|||ƒ|||fS)Nú éz%s:%séz4Unsupported syntax: spaces in URIs not supported: %r)Úsplitr1ÚlenrÚ ValueError)r2ÚnameÚpartsÚinternÚuriÚ localnameÚprefixÚqnamerrrÚ_parse_ns_namers         rBc@sîeZdZd:dd„Zdd„Zdd„Zdd „Zd d „Zd d „Zdd„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zd d!„Zd"d#„Zd$d%„Zd&d'„Zd(d)„Zd*d+„Zd,d-„Zd.d/„Zd0d1„Zd2d3„Zd4d5„Zd6d7„Zd8d9„ZdS);Ú ExpatBuilderNcCsP|dkrt ¡}||_|jjdk r2t|jjƒ|_n d|_t|_d|_|  ¡dS)N) rZOptionsÚ_optionsÚfilterÚFilterVisibilityControllerÚ_filterrÚ_finish_start_elementÚ_parserÚreset)rÚoptionsrrrr‰s zExpatBuilder.__init__cCst ¡S)N)rÚ ParserCreate)rrrrÚ createParser—szExpatBuilder.createParsercCsF|js@| ¡|_|jjj|_d|j_d|j_d|j_| |j¡|jS)NT) rIrMr=Ú setdefaultr1Z buffer_textZordered_attributesZspecified_attributesÚinstall)rrrrÚ getParser›s   zExpatBuilder.getParsercCs,t tdd¡|_|j|_|jj|_d|_dS)NF)ÚtheDOMImplementationZcreateDocumentrÚdocumentÚcurNodeÚ _elem_infoÚ_cdata)rrrrrJ¦s   zExpatBuilder.resetcCs–|j|_|j|_|j|_|j|_|jj r0|j |_ |j |_ |jjrH|j|_|jjrj|j|_|j|_|j|_n|j|_|j|_|j|_|j|_|j|_ dS)N)!Ústart_doctype_decl_handlerÚStartDoctypeDeclHandlerÚfirst_element_handlerÚStartElementHandlerÚend_element_handlerÚEndElementHandlerÚ pi_handlerÚProcessingInstructionHandlerrDrÚentity_decl_handlerÚEntityDeclHandlerÚnotation_decl_handlerÚNotationDeclHandlerÚcommentsÚcomment_handlerÚCommentHandlerZcdata_sectionsÚstart_cdata_section_handlerÚStartCdataSectionHandlerÚend_cdata_section_handlerÚEndCdataSectionHandlerÚcharacter_data_handler_cdataÚCharacterDataHandlerÚcharacter_data_handlerÚexternal_entity_ref_handlerÚExternalEntityRefHandlerÚxml_decl_handlerZXmlDeclHandlerÚelement_decl_handlerZElementDeclHandlerÚattlist_decl_handlerZAttlistDeclHandler)rÚparserrrrrO®s$ zExpatBuilder.installcCs†| ¡}d}yLx:| d¡}|s P| |d¡|rB|jjrB| |¡d}qW| dd¡Wntk rlYnX|j}| ¡d|_|S)NTi@rFÚ) rPÚreadÚParserRÚdocumentElementÚ _setup_subsetÚ ParseEscaperJrI)rÚfilerqZ first_bufferÚbufferÚdocrrrÚ parseFileÅs$    zExpatBuilder.parseFilecCsP| ¡}y| |d¡| |¡Wntk r6YnX|j}| ¡d|_|S)NT)rPrtrvrwrRrJrI)rÚstringrqrzrrrÚ parseStringÛs zExpatBuilder.parseStringcCs.|jjr*tƒ}| |¡| ¡}||jj_dS)N)rRÚdoctypeÚInternalSubsetExtractorr}Ú getSubsetÚinternalSubset)rryZ extractorÚsubsetrrrrvès  zExpatBuilder._setup_subsetcCs¤|jj |||¡}|j|_t|j|ƒ||j_|jrj|j |¡tkrjd|j_|jj d=d}d|j _ d|j _ |r |dk r†g|j _g|j_d|j _d|j _|j|j _dS)Néÿÿÿÿ)rRÚimplementationZcreateDocumentTypeÚ ownerDocumentr r~rGÚ acceptNodeÚ FILTER_REJECTÚ childNodesrIr_rarÚ_seqÚ notationsrdr]Úend_doctype_decl_handlerÚEndDoctypeDeclHandler)rZ doctypeNameÚsystemIdÚpublicIdÚhas_internal_subsetr~rrrrVðs$   z'ExpatBuilder.start_doctype_decl_handlercCs2|jjr|j|j_|j|j_|js.|js.t |_ dS)N) rDrbrcrIrdr\r]rTrGrÚ_finish_end_element)rrrrr‹s    z%ExpatBuilder.end_doctype_decl_handlercCs@|j ||¡}t|j|ƒ|jr<|j |¡tkr<|j |¡dS)N)rRZcreateProcessingInstructionr rSrGr†r‡Ú removeChild)rÚtargetÚdataÚnoderrrr\ s zExpatBuilder.pi_handlercCsœ|jj}|jrH|jr4|djtkr4|d |¡dS|j |¡}d|_nD|rv|djt krv|d}|j |}||_ dSt   ¡}||_ |j|_ t|j|ƒdS)NrƒT)rSrˆrUÚ_cdata_continueÚnodeTypeÚCDATA_SECTION_NODEZ appendDatarRZcreateCDATASectionÚ TEXT_NODEr“rÚTextr…r )rr“rˆr”Úvaluerrrris"  z)ExpatBuilder.character_data_handler_cdatacCs^|jj}|r2|djtkr2|d}|j||_dSt ¡}|j||_|j|_t |j|ƒdS)Nrƒ) rSrˆr–r˜r“rr™rRr…r )rr“rˆr”rrrrk&s  z#ExpatBuilder.character_data_handlerc Cs€|rdS|jjsdS|j ||||¡}|dk rF|j |¡} |j | ¡|jjjj |¡|j r||j   |¡t kr||jjjjd=dS)Nrƒ) rDrrRZ_create_entityZcreateTextNoderˆÚappendr~r‰rGr†r‡) rZ entityNameZis_parameter_entityršÚbaserrŽÚ notationNamer”Úchildrrrr^1s   z ExpatBuilder.entity_decl_handlercCsJ|j |||¡}|jjjj |¡|jrF|j |¡tkrF|jjjjd=dS)Nrƒ) rRZ_create_notationr~rŠr‰r›rGr†Ú FILTER_ACCEPT)rrrœrrŽr”rrrr`Csz"ExpatBuilder.notation_decl_handlercCs>|j |¡}t|j|ƒ|jr:|j |¡tkr:|j |¡dS)N)rRZ createCommentr rSrGr†r‡r‘)rr“r”rrrrcIs  zExpatBuilder.comment_handlercCsd|_d|_dS)NTF)rUr•)rrrrreOsz(ExpatBuilder.start_cdata_section_handlercCsd|_d|_dS)NF)rUr•)rrrrrgSsz&ExpatBuilder.end_cdata_section_handlercCsdS)Nrr)rÚcontextrœrrŽrrrrlWsz(ExpatBuilder.external_entity_ref_handlercCs2|jdkr|jst|_|j| ¡_| ||¡dS)N)rGrTrrÚstart_element_handlerrPrY)rr;Ú attributesrrrrXZs z"ExpatBuilder.first_element_handlercCsŽ|j |¡}t|j|ƒ||_|rtxPtdt|ƒdƒD]<}t ||tdt ¡}||d}||_ |j|_ t ||ƒq4W||jj k rŠ| |¡dS)Nrr7r)rRZ createElementr rSÚranger9rÚAttrrrršr…r rurH)rr;r¢r”ÚiÚaršrrrr¡`s     z"ExpatBuilder.start_element_handlercCsj|jrf||jjkrdS|j |¡}|tkr4t|ƒn|tkrFt|ƒndS|j|_ |j  |¡|  ¡dS)N) rGrRruÚstartContainerr‡ÚRejecterÚ FILTER_SKIPÚSkipperÚ parentNoderSr‘Úunlink)rr”ZfiltrrrrHqs     z"ExpatBuilder._finish_start_elementcCs|j}|j|_| |¡dS)N)rSr«r)rr;rSrrrrZˆsz ExpatBuilder.end_element_handlercCs\|j |j¡}|r| ||¡|jrX||jjkr4dS|j |¡tkrX|j   |¡|  ¡dS)N) rTÚgetrÚ_handle_white_text_nodesrGrRrur†r‡rSr‘r¬)rrSr$rrrrs   z ExpatBuilder._finish_end_elementcCsb|jjs| ¡sdSg}x,|jD]"}|jtkr |j ¡s | |¡q Wx|D]}|  |¡qLWdS)N) rDZwhitespace_in_element_contentr)rˆr–r˜r“Ústripr›r‘)rr”r$ÚLržrrrr®˜s  z%ExpatBuilder._handle_white_text_nodescCs0|j |¡}|dkr&t||ƒ|j|<n||_dS)N)rTr­rr)rr;rr$rrrro©s z!ExpatBuilder.element_decl_handlerc CsF|j |¡}|dkr&t|ƒ}||j|<|j d|dd|d||g¡dS)Nr)rTr­rrr›)rÚelemr;r(ÚdefaultÚrequiredr$rrrrp±s   z!ExpatBuilder.attlist_decl_handlercCs2||j_||j_|dkr.|r&d|j_nd|j_dS)NrTF)rRÚversionÚencodingÚ standalone)rr´rµr¶rrrrn¹s  zExpatBuilder.xml_decl_handler)N)r-r.r/rrMrPrJrOr{r}rvrVr‹r\rirkr^r`rcrergrlrXr¡rHrZrr®rorprnrrrrrC…s8     rCc@sŒeZdZdZdd„Zdd„Zdd„Zeje j ej e j ej e jeje jeje jeje jeje jeje jeje jeje jeje jeje j i Z!dS) rF)rEcCs ||_dS)N)rE)rrErrrrÎsz#FilterVisibilityController.__init__cCsT|j|j}|jj|@rL|j |¡}|tkr0t‚|tkrHtdt |ƒƒ‚|St SdS)Nz)startContainer() returned illegal value: ) Ú_nodetype_maskr–rEÚ whatToShowr§ÚFILTER_INTERRUPTrwÚ_ALLOWED_FILTER_RETURNSr:ÚreprrŸ)rr”ÚmaskÚvalrrrr§Ñs   z)FilterVisibilityController.startContainercCsˆ|j|j}|jj|@r€|j |¡}|tkr0t‚|tkrd|j}x |j dd…D]}|  |¡qNWt S|t kr|t dt|ƒƒ‚|StSdS)Nz%acceptNode() returned illegal value: )r·r–rEr¸r†r¹rwr©r«rˆZ appendChildr‡rºr:r»rŸ)rr”r¼r½Úparentržrrrr†Þs   z%FilterVisibilityController.acceptNodeN)"r-r.r/r0rr§r†rZ ELEMENT_NODEr Z SHOW_ELEMENTZATTRIBUTE_NODEZSHOW_ATTRIBUTEr˜Z SHOW_TEXTr—ZSHOW_CDATA_SECTIONZENTITY_REFERENCE_NODEZSHOW_ENTITY_REFERENCEZ ENTITY_NODEZ SHOW_ENTITYZPROCESSING_INSTRUCTION_NODEZSHOW_PROCESSING_INSTRUCTIONZ COMMENT_NODEZ SHOW_COMMENTÚ DOCUMENT_NODEZ SHOW_DOCUMENTZDOCUMENT_TYPE_NODEZSHOW_DOCUMENT_TYPEZDOCUMENT_FRAGMENT_NODEZSHOW_DOCUMENT_FRAGMENTZ NOTATION_NODEZ SHOW_NOTATIONr·rrrrrFÈs  rFc@seZdZdZdd„ZdS)Ú FilterCrutch)Ú_builderÚ_levelÚ _old_startÚ_old_endcCs6d|_||_|j}|j|_|j|_|j|_|j|_dS)Nr) rÂrÁrIrYrÃr[rÄr¡rZ)rr2rqrrrrszFilterCrutch.__init__N)r-r.r/r0rrrrrrÀsrÀc@s(eZdZdZdd„Zdd„Zdd„ZdS) r¨rcCs0t ||¡|j}xdD]}t||dƒqWdS)N)r]rdrjrfrhrm)rÀrrIÚsetattr)rr2rqr;rrrrs  zRejecter.__init__cGs|jd|_dS)Nr)rÂ)rÚargsrrrr¡szRejecter.start_element_handlercGs@|jdkr0|jj}|j |¡|j|_|j|_n |jd|_dS)Nrr)rÂrÁrIrOrÃrYrÄr[)rrÆrqrrrrZ s    zRejecter.end_element_handlerN)r-r.r/r0rr¡rZrrrrr¨s r¨c@s eZdZdZdd„Zdd„ZdS)rªrcGs.|jj}|j|Ž|jj|k r*|jd|_dS)Nr)rÁrSrÃrÂ)rrÆr”rrrr¡-s  zSkipper.start_element_handlercGsD|jdkr*|j|jj_|j|jj_d|_n|jd|_|j|ŽdS)Nrr)rÂrÃrÁrIrYrÄr[)rrÆrrrrZ3s     zSkipper.end_element_handlerN)r-r.r/r0r¡rZrrrrrª*srªz8http://xml.python.org/entities/fragment-builder/internalzŠ %%s ]> &fragment-builder-internal;c@sFeZdZddd„Zdd„Zdd„Zdd „Zd d „Zd d „Zdd„Z dS)ÚFragmentBuilderNcCs6|jtkr||_||_n|j|_||_t ||¡dS)N)r–r¿ÚoriginalDocumentr r…rCr)rr rKrrrr[s  zFragmentBuilder.__init__cCst |¡d|_dS)N)rCrJÚfragment)rrrrrJds zFragmentBuilder.resetcCs| | ¡¡S)N)r}rs)rrxrrrr{hszFragmentBuilder.parseFilec Csª||_| ¡}|jj}d}|rV|jp*| ¡}|jrDd|j|jf}qZ|jrZd|j}nd}| ¡}t |||f}y|  |d¡Wn|  ¡‚YnX|j }|  ¡|S)NrrzPUBLIC "%s" "%s"z SYSTEM "%s"r) Ú_sourcerPrÈr~rÚ_getDeclarationsrŽrÚ _getNSattrsÚ_FRAGMENT_BUILDER_TEMPLATErtrJrÉ) rr|rqr~Zidentr‚ZnsattrsrRrÉrrrr}ms, zFragmentBuilder.parseStringcCs|jjj}d}|rxbt|jjƒD]R}|j |¡}|r>|d}d||jf}|jrfd||j|j f}q"d||j f}q"Wx˜t|j jƒD]ˆ}|j  |¡}|r¢|d}d||jf}|jrÊd||j|j f}n&|j ràd||j f}nd ||j j f}|j rd ||j f}|d }q†W|S) Nrrz z%sz%s SYSTEM "%s">z %s)r r…r~r£rŠÚlengthÚitemZnodeNamerŽrrZ firstChildr“r)rr~r3r¥Znotationr rrrrˉs6    z FragmentBuilder._getDeclarationscCsdS)Nrrr)rrrrrÌ­szFragmentBuilder._getNSattrscCs~|tkrh|j}|j}|j |¡}|j|_|j ¡|_|j|_z| |j d¡Wd||_||_d|_ XdSt   |||||¡SdS)Nrrƒ) Ú$_FRAGMENT_BUILDER_INTERNAL_SYSTEM_IDrRrSrIZExternalEntityParserCreaterÈZcreateDocumentFragmentrÉrtrÊrCrl)rr rœrrŽZ old_documentZ old_cur_noderqrrrrl°s  z+FragmentBuilder.external_entity_ref_handler)N) r-r.r/rrJr{r}rËrÌrlrrrrrÇRs $rÇc@s4eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd S) Ú NamespacescCs g|_dS)N)Ú_ns_ordered_prefixes)rrrrÚ_initNamespacesÊszNamespaces._initNamespacescCstjdd}d|_|S)Nr5)Znamespace_separatorT)rrLZnamespace_prefixes)rrqrrrrMÏs zNamespaces.createParsercCs t ||¡|jjr|j|_dS)N)rCrOrDZnamespace_declarationsÚstart_namespace_decl_handlerZStartNamespaceDeclHandler)rrqrrrrOÕs zNamespaces.installcCs|j ||f¡dS)N)rÓr›)rr@r>rrrrÕÜsz'Namespaces.start_namespace_decl_handlercCsŠd|krt||ƒ\}}}}nt}|}d}t}t ||||¡}|j|_t|j|ƒ||_|j rÄxZ|j D]P\}}|rŒt  t |d|ƒt |d¡}nt  dt dt¡}||_ |j|_t||ƒqdW|j dd…=|r†| ¡|j} |j} x¦tdt|ƒdƒD]’} || } || d} d| krJt|| ƒ\}}}}t  ||||¡}|| |<|| ||f<n$t  | t| t¡}|| | <|| t| f<|j|_| |_ ||_qðWdS)Nr5zxmlns:Úxmlnsrr7r)rBrrrZElementrRr…r rSrÓr¤r4rršr Z_ensure_attributesÚ_attrsÚ_attrsNSr£r9Z ownerElement)rr;r¢r>r?r@rAr”r¦r×rØr¥r#ršrrrr¡àsP      z Namespaces.start_element_handlerN)r-r.r/rÔrMrOrÕr¡rrrrrÒÇs /rÒc@seZdZdd„ZdS)ÚExpatBuilderNScCst |¡| ¡dS)N)rCrJrÔ)rrrrrJ)s zExpatBuilderNS.resetN)r-r.r/rJrrrrrÙ&srÙc@seZdZdd„Zdd„ZdS)ÚFragmentBuilderNScCst |¡| ¡dS)N)rÇrJrÔ)rrrrrJ1s zFragmentBuilderNS.resetcCsŠd}|j}g}xv|r„t|dƒr|x\|j ¡D]N\}}||krZdeclnamerrrrÌ5s"    zFragmentBuilderNS._getNSattrsN)r-r.r/rJrÌrrrrrÚ.srÚc@s eZdZdS)rwN)r-r.r/rrrrrwSsrwc@sHeZdZdZdd„Zdd„Zdd„Zdd „Zd d „Zd d „Z dd„Z dS)rNcCs|jS)N)r‚)rrrrr€\sz!InternalSubsetExtractor.getSubsetcCs*yt ||¡Wntk r$YnXdS)N)rCr{rw)rrxrrrr{`sz!InternalSubsetExtractor.parseFilecCs*yt ||¡Wntk r$YnXdS)N)rCr}rw)rr|rrrr}fsz#InternalSubsetExtractor.parseStringcCs|j|_|j|_dS)N)rVrWr¡rY)rrqrrrrOlszInternalSubsetExtractor.installcCs0|r&| ¡}g|_|jj|_|j|_ntƒ‚dS)N)rPr‚r›ZDefaultHandlerr‹rŒrw)rr;rŽrrrqrrrrVps   z2InternalSubsetExtractor.start_doctype_decl_handlercCs,d |j¡ dd¡ dd¡}||_tƒ‚dS)Nrrz Ú ú )Újoinr‚Úreplacerw)rr3rrrr‹zsz0InternalSubsetExtractor.end_doctype_decl_handlercCs tƒ‚dS)N)rw)rr;rÞrrrr¡sz-InternalSubsetExtractor.start_element_handler) r-r.r/r‚r€r{r}rOrVr‹r¡rrrrrWs rTc CsL|r tƒ}ntƒ}t|tƒr>t|dƒ}| |¡}WdQRXn | |¡}|S)NÚrb)rÙrCÚ isinstanceÚstrÚopenr{)rxÚ namespacesr2ÚfpÚresultrrrÚparseƒs   rêcCs|r tƒ}ntƒ}| |¡S)N)rÙrCr})r|rçr2rrrr}•sr}c CsP|rt|ƒ}nt|ƒ}t|tƒrBt|dƒ}| |¡}WdQRXn | |¡}|S)Nrã)rÚrÇrärårær{)rxr rçr2rèrérrrÚ parseFragment s    rëcCs |rt|ƒ}nt|ƒ}| |¡S)N)rÚrÇr})r|r rçr2rrrÚparseFragmentString´s rìcCs|jrt|ƒSt|ƒSdS)N)rçrÙrC)rKrrrÚ makeBuilderÀsrí)T)T)T)T)2Zxml.domrrrrrrZ xml.parsersrZxml.dom.minidomr r Zxml.dom.NodeFilterr r˜r—r¿ZDOMBuilderFilterrŸr‡r©r¹ZgetDOMImplementationrQZTypeInfor!Úobjectrr4rBrCrºrFrÀr¨rªrÑrÍrÇrÒrÙrÚÚ Exceptionrwrrêr}rërìrírrrrÚs\          3C :  u_%,