3 2a-@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)%PullDOMNc Cszddlm}||_ddg|_|j|_g|_|jj|_y|jj|_Wnt k rVYnX|dig|_ |j d|_ g|_ dS)Nr) XML_NAMESPACExml) Zxml.domr documentFactory firstEvent lastEvent elementStackappendpushpopAttributeError _ns_contexts_current_contextpending_events)selfrr r,/opt/alt/python36/lib64/python3.6/pulldom.py__init__s     zPullDOM.__init__cCs|jd}|jd=|S)Nr rr)r)rresultrrrr!s z PullDOM.popcCs ||_dS)N)_locator)rZlocatorrrrsetDocumentLocator&szPullDOM.setDocumentLocatorcCsHt|dsg|_|jj|pd|f|jj|jj|px|D]\}}||j||f<qWg|_|\}} |r|dkrr|j|} | rn| d| }n| }|jr|jj||} q|j||} n |jr|jj| } n |jd| } x|jD]\}}|\} } | |kr | dkr| }nd| }|jj | |}| j |nX| rL|j| } | r.| d| }n| }|jj | |}| j |n|jj | }| j |||_ qWt| fdg|jd<|jd|_|j| dS)Nzhttp://www.w3.org/2000/xmlns/r!:r"zxmlns:r )getattrZ_attrsr!rdocumentZcreateElementNS buildDocument createElementitemsZcreateAttributeNSZsetAttributeNodeNScreateAttributesetAttributeNodevaluerrr)rnametagNameattrsZ xmlns_uriZ xmlns_attrsanamer1r&Z localnamer%nodeZa_uriZ a_localnameZqnameattrrrrstartElementNS3sP           zPullDOM.startElementNScCs&t|jfdg|jd<|jd|_dS)Nr )rrr)rr2r3rrr endElementNSlszPullDOM.endElementNScCs~|jr|jj|}n |jd|}x0|jD]$\}}|jj|}||_|j|q*Wt|fdg|jd<|jd|_|j |dS)Nr ) r+r-r,r.r/r1r0rrr)rr2r4r6r5r1r7rrr startElementps   zPullDOM.startElementcCs&t|jfdg|jd<|jd|_dS)Nr )rrr)rr2rrr endElementszPullDOM.endElementcCsN|jr2|jj|}t|fdg|jd<|jd|_nt|fdg}|jj|dS)Nr )r+ createCommentrrrr)rsr6eventrrrcomments   zPullDOM.commentcCsR|jr4|jj||}t|fdg|jd<|jd|_nt||fdg}|jj|dS)Nr )r+createProcessingInstructionrrrr)rtargetdatar6r>rrrprocessingInstructions zPullDOM.processingInstructioncCs.|jj|}t|fdg|jd<|jd|_dS)Nr )r+createTextNoderr)rcharsr6rrrignorableWhitespaces zPullDOM.ignorableWhitespacecCs.|jj|}t|fdg|jd<|jd|_dS)Nr )r+rDr r)rrEr6rrr characterss zPullDOM.characterscCs$|jdkr ddl}|jjjj|_dS)Nr)rZxml.dom.minidomZdomZminidomZDocumentimplementation)rr rrr startDocuments zPullDOM.startDocumentc Cs|jj||d}||_t|fdg|jd<|jd|_|j|x|jD]}|ddtkr|d\}}}|jj||}t|f|d<nD|ddt kr|jj |dd}t |f|d<nt d|dd||jd<||_qFWd|_|j S)Nr rzUnknown pending event ) rZcreateDocumentr+rrrrrr@rr<AssertionErrorZ firstChild) rr&Ztagnamer6e_rArBnrrrr,s$     zPullDOM.buildDocumentcCs t|jfdg|jd<|jdS)Nr )rr+rr)rrrr endDocumentszPullDOM.endDocumentcCs d|_dS)N)r+)rrrrclearsz PullDOM.clear)N)__name__ __module__ __qualname__rr+rrr r'r(r8r9r:r;r?rCrFrGrIr,rNrOrrrrr s& 9  r c@s$eZdZddZddZddZdS) ErrorHandlercCs t|dS)N)print)r exceptionrrrwarningszErrorHandler.warningcCs|dS)Nr)rrUrrrerrorszErrorHandler.errorcCs|dS)Nr)rrUrrr fatalErrorszErrorHandler.fatalErrorN)rPrQrRrVrWrXrrrrrSsrSc@s\eZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ dS)DOMEventStreamcCs2||_||_||_t|jds&|j|_|jdS)Nfeed)streamparserbufsizer#_slurpgetEventreset)rr[r\r]rrrrs  zDOMEventStream.__init__cCs.t|_|jjtjjjd|jj|jdS)Nr ) r pulldomr\Z setFeaturer saxZhandlerZfeature_namespacesZsetContentHandler)rrrrr`szDOMEventStream.resetcCs|j}|r|StdS)N)r_ IndexError)rposrcrrr __getitem__szDOMEventStream.__getitem__cCs|j}|r|StdS)N)r_ StopIteration)rrerrr__next__szDOMEventStream.__next__cCs|S)Nr)rrrr__iter__szDOMEventStream.__iter__cCsp|j}|g}x\|rj|\}}||kr(dS|tkr>|dj||tkrR|j|n|tkr`|d=|j}qWdS)Nr rr)r_r appendChildrr)rr6r>parentstokenZcur_noderrr expandNodes zDOMEventStream.expandNodecCs|jjds|jj|j_x<|jjdsT|jj|j}|sF|jjdS|jj|qW|jjdd}|jjdd|jjd<|S)Nr r) rarrr[readr]r\closerZ)rbufrerrrr_s   zDOMEventStream.getEventcCs|jj|j|j|_|jS)N)r\parser[_emitr_)rrrrr^szDOMEventStream._slurpcCs,|jjdd}|jjdd|jjd<|S)Nr r)rar)rrerrrrrszDOMEventStream._emitcCs|jj|`d|_d|_dS)N)rarOr\r[)rrrrrOs zDOMEventStream.clearN) rPrQrRrr`rfrhrirmr_r^rrrOrrrrrYs rYc@s4eZdZddZddZddZddZd d Zd S) SAX2DOMcCs2tj|||||jd}|jd}|j|dS)Nr r)r r8rrj)rr2r3r4curNode parentNoderrrr8#s  zSAX2DOM.startElementNScCs0tj||||jd}|jd}|j|dS)Nr rtrru)r r:rrj)rr2r4rvrwrrrr:)s  zSAX2DOM.startElementcCs4tj||||jdd}|jd}|j|dS)Nrr r)r rCrrrj)rrArBr6rwrrrrC/s zSAX2DOM.processingInstructioncCs2tj|||jdd}|jd}|j|dS)Nrr r)r rFrrrj)rrEr6rwrrrrF5s  zSAX2DOM.ignorableWhitespacecCs2tj|||jdd}|jd}|j|dS)Nrr r)r rGrrrj)rrEr6rwrrrrG;s  zSAX2DOM.charactersN)rPrQrRr8r:rCrFrGrrrrrs!s rsrtcCs@|dkr t}t|tr"t|d}n|}|s4tjj}t|||S)Nrb)default_bufsize isinstancestropenr rb make_parserrY)Zstream_or_stringr\r]r[rrrrqDs   rqcCs6ddlm}t|}||}|s*tjj}t|||S)Nr)StringIO)iorlenr rbrrY)stringr\rr]rprrr parseStringOs   ri@i?)NN)N)Zxml.saxr Zxml.sax.handlerrrrrrrrr rbZContentHandlerr rSrYrsr{rqrrrrrs"8U!