o =?h.@sddlZddlZdZdZdZdZdZdZdZ d Z Gd d d ej j Z Gd d d ZGdddZGddde ZdZdddZdddZdS)N START_ELEMENT END_ELEMENTCOMMENTSTART_DOCUMENT END_DOCUMENTPROCESSING_INSTRUCTIONIGNORABLE_WHITESPACE CHARACTERSc@seZdZdZdZd$ddZddZddZdd Zd d Z d d Z ddZ ddZ ddZ ddZddZddZddZddZddZd d!Zd"d#ZdS)%PullDOMNcCsxddlm}||_ddg|_|j|_g|_|jj|_z|jj|_Wn t y*Ynw|dig|_ |j d|_ g|_ dS)Nr) XML_NAMESPACExml) Zxml.domr documentFactory firstEvent lastEvent elementStackappendpushpopAttributeError _ns_contexts_current_contextpending_events)selfrr r6/opt/alt/python310/lib64/python3.10/xml/dom/pulldom.py__init__s       zPullDOM.__init__cCs|jd}|jd=|SNr )r)rresultrrrr!s z PullDOM.popcCs ||_dSN)_locator)rZlocatorrrrsetDocumentLocator&s zPullDOM.setDocumentLocatorcCsHt|dsg|_|j|pd|f|j|j|pd|j|<dS)N _xmlns_attrsxmlns)hasattrr"rrrcopy)rprefixurirrrstartPrefixMapping)s zPullDOM.startPrefixMappingcCs|j|_dSr)rrr)rr&rrrendPrefixMapping0szPullDOM.endPrefixMappingcCsd}t|dd}|dur|D] \}}||j||f<qg|_|\}} |rI|dur7|j|} | r5| d| }n| }|jrB|j||} n|||} n|jrS|j| } n|d| } |D]Q\}}|\} } | |kr| dkrp| }nd| }|j | |}| |n*| r|j| } | r| d| }n| }|j | |}| |n |j | }| |||_ q]t| fdg|jd<|jd|_|| dS)Nzhttp://www.w3.org/2000/xmlns/r":r#zxmlns:)getattrZ_attrsr"rdocumentZcreateElementNS buildDocument createElementitemsZcreateAttributeNSZsetAttributeNodeNScreateAttributesetAttributeNodevaluerrr)rnametagNameattrsZ xmlns_uriZ xmlns_attrsanamer3r'Z localnamer&nodeZa_uriZ a_localnameZqnameattrrrrstartElementNS3sP          zPullDOM.startElementNScC&t|fdg|jd<|jd|_dSNr+rrr)rr4r5rrr endElementNSlzPullDOM.endElementNScCsz|jr |j|}n|d|}|D]\}}|j|}||_||qt|fdg|jd<|jd|_| |dSr<) r-r/r.r0r1r3r2rrr)rr4r6r8r7r3r9rrr startElementps    zPullDOM.startElementcCr;r<r=)rr4rrr endElementr?zPullDOM.endElementcCsP|jr|j|}t|fdg|jd<|jd|_dSt|fdg}|j|dSr<)r- createCommentrrrr)rsr8eventrrrcomments   zPullDOM.commentcCsT|jr|j||}t|fdg|jd<|jd|_dSt||fdg}|j|dSr<)r-createProcessingInstructionrrrr)rtargetdatar8rDrrrprocessingInstructions zPullDOM.processingInstructioncC.|j|}t|fdg|jd<|jd|_dSr<)r-createTextNoderrrcharsr8rrrignorableWhitespace zPullDOM.ignorableWhitespacecCrJr<)r-rKr rrLrrr charactersrOzPullDOM.characterscCs(|jdurddl}|jjjj|_dSdS)Nr)rZxml.dom.minidomZdomZminidomZDocumentimplementation)rr rrr startDocuments zPullDOM.startDocumentc Cs|j||d}||_t|fdg|jd<|jd|_|||jD]I}|ddtkrA|d\}}}|j||}t|f|d<n"|ddt krZ|j |dd}t |f|d<n t d|dd||jd<||_q"d|_|j S)Nr+rzUnknown pending event ) rZcreateDocumentr-rrrrrrFrrBAssertionErrorZ firstChild) rr'Ztagnamer8e_rGrHnrrrr.s$    zPullDOM.buildDocumentcCs t|jfdg|jd<|dSr<)rr-rrrrrr endDocuments zPullDOM.endDocumentcCs d|_dS)z.clear(): Explicitly release parsing structuresN)r-rWrrrclears z PullDOM.clearr)__name__ __module__ __qualname__r r-rrr!r(r)r:r>r@rArErIrNrPrRr.rXrYrrrrr s( 9   r c@s$eZdZddZddZddZdS) ErrorHandlercCs t|dSr)printrZ exceptionrrrwarnings zErrorHandler.warningcC|rrr_rrrerrorzErrorHandler.errorcCrarrr_rrr fatalErrorrczErrorHandler.fatalErrorN)rZr[r\r`rbrdrrrrr]s r]c@s\eZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ dS)DOMEventStreamcCs2||_||_||_t|jds|j|_|dS)Nfeed)streamparserbufsizer$_slurpgetEventreset)rrgrhrirrrrs   zDOMEventStream.__init__cCs.t|_|jtjjjd|j|jdSr<) r pulldomrhZ setFeaturer saxZhandlerZfeature_namespacesZsetContentHandlerrWrrrrlszDOMEventStream.resetcCs,ddl}|jdtdd|}|r|St)Nrz[DOMEventStream's __getitem__ method ignores 'pos' parameter. Use iterator protocol instead.) stacklevel)warningswarnDeprecationWarningrk IndexError)rposrqrcrrr __getitem__szDOMEventStream.__getitem__cCs|}|r|Str)rk StopIterationrrvrrr__next__szDOMEventStream.__next__cCs|SrrrWrrr__iter__rczDOMEventStream.__iter__cCsr|}|g}|r7|\}}||urdS|tkr|d||tkr(||n|tkr/|d=|}|s dSdSr)rkr appendChildrr)rr8rDparentstokenZcur_noderrr expandNodes  zDOMEventStream.expandNodecCs|jjds |jj|j_|jjds.|j|j}|s"|jdS|j||jjdr|jjdd}|jjdd|jjd<|S)Nr+r) rmrrrgreadrirhcloserf)rbufrvrrrrks      zDOMEventStream.getEventcCs|j|j|j|_|S)z Fallback replacement for getEvent() using the standard SAX2 interface, which means we slurp the SAX events into memory (no performance gain, but we are compatible to all SAX parsers). )rhparserg_emitrkrWrrrrjszDOMEventStream._slurpcCs,|jjdd}|jjdd|jjd<|S)zn Fallback replacement for getEvent() that emits the events that _slurp() read previously. r+r)rmrryrrrrszDOMEventStream._emitcCs|j|`d|_d|_dS)z+clear(): Explicitly release parsing objectsN)rmrYrhrgrWrrrrY!s  zDOMEventStream.clearN) rZr[r\rrlrwrzr{rrkrjrrYrrrrres  rec@s4eZdZddZddZddZddZd d Zd S) SAX2DOMcCs2t|||||jd}|jd}||dSNr )r r:rr|)rr4r5r6curNode parentNoderrrr:*s  zSAX2DOM.startElementNScCs0t||||jd}|jd}||dSr)r r@rr|)rr4r6rrrrrr@0s  zSAX2DOM.startElementcCs4t||||jdd}|jd}||dSNrr+r )r rIrrr|)rrGrHr8rrrrrI6s zSAX2DOM.processingInstructioncC2t|||jdd}|jd}||dSr)r rNrrr|rrMr8rrrrrN<  zSAX2DOM.ignorableWhitespacecCrr)r rPrrr|rrrrrPBrzSAX2DOM.charactersN)rZr[r\r:r@rIrNrPrrrrr(s  ri?cCs@|durt}t|trt|d}n|}|stj}t|||S)Nrb)default_bufsize isinstancestropenr rn make_parserre)Zstream_or_stringrhrirgrrrrKs    rcCs6ddlm}t|}||}|stj}t|||S)Nr)StringIO)iorlenr rnrre)stringrhrrirrrr parseStringVs   r)NNr)Zxml.saxr Zxml.sax.handlerrrrrrrrr rnZContentHandlerr r]rerrrrrrrrs$8\!