U e5dÝ.ã@sŒddlZddlZdZdZdZdZdZdZdZ d Z Gd d „d ej j ƒZ Gd d „d ƒZGdd„dƒZGdd„de ƒZdZddd„Zddd„ZdS)éNÚ START_ELEMENTÚ END_ELEMENTÚCOMMENTÚSTART_DOCUMENTÚ END_DOCUMENTÚPROCESSING_INSTRUCTIONÚIGNORABLE_WHITESPACEÚ CHARACTERSc@sžeZdZdZdZd$dd„Zdd„Zdd„Zdd „Zd d „Z d d „Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zdd„Zdd„Zd d!„Zd"d#„ZdS)%ÚPullDOMNcCszddlm}||_ddg|_|j|_g|_|jj|_z|jj|_Wnt k rVYnX|dig|_ |j d|_ g|_ dS)Nr)Ú XML_NAMESPACEÚxmléÿÿÿÿ) Zxml.domr ÚdocumentFactoryÚ firstEventÚ lastEventÚ elementStackÚappendÚpushÚpopÚAttributeErrorÚ _ns_contextsÚ_current_contextÚpending_events)Úselfrr ©rú'/usr/lib64/python3.8/xml/dom/pulldom.pyÚ__init__s     zPullDOM.__init__cCs|jd}|jd=|S©Nr )r)rÚresultrrrr!s z PullDOM.popcCs ||_dS©N)Ú_locator)rZlocatorrrrÚsetDocumentLocator&szPullDOM.setDocumentLocatorcCsHt|dƒsg|_|j |pd|f¡|j |j ¡¡|pr?r@rDrHrLrMrOr/rUrVrrrrr s& 9  r c@s$eZdZdd„Zdd„Zdd„ZdS)Ú ErrorHandlercCs t|ƒdSr)Úprint©rZ exceptionrrrÚwarningÅszErrorHandler.warningcCs|‚dSrrr\rrrÚerrorÇszErrorHandler.errorcCs|‚dSrrr\rrrÚ fatalErrorÉszErrorHandler.fatalErrorN)rWrXrYr]r^r_rrrrrZÄsrZc@s\eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dS)ÚDOMEventStreamcCs2||_||_||_t|jdƒs&|j|_| ¡dS)NÚfeed)ÚstreamÚparserÚbufsizer$Ú_slurpÚgetEventÚreset)rrbrcrdrrrrÍs  zDOMEventStream.__init__cCs.tƒ|_|j tjjjd¡|j |j¡dSr<) r ÚpulldomrcZ setFeaturer ÚsaxZhandlerZfeature_namespacesZsetContentHandlerrTrrrrgÕszDOMEventStream.resetcCs0ddl}|jdtdd�| ¡}|r(|St‚dS)Nrz[DOMEventStream's __getitem__ method ignores 'pos' parameter. Use iterator protocol instead.é)Ú stacklevel)ÚwarningsÚwarnÚDeprecationWarningrfÚ IndexError)rÚposrlÚrcrrrÚ __getitem__ÛsüzDOMEventStream.__getitem__cCs| ¡}|r|St‚dSr)rfÚ StopIteration©rrqrrrÚ__next__èszDOMEventStream.__next__cCs|SrrrTrrrÚ__iter__îszDOMEventStream.__iter__cCsl| ¡}|g}|rh|\}}||kr&dS|tkr<|d |¡|tkrP| |¡n|tkr^|d=| ¡}qdSr)rfrÚ appendChildrr)rr9rCÚparentsÚtokenZcur_noderrrÚ expandNodeñs zDOMEventStream.expandNodecCs~|jjds|jj|j_|jjdsR|j |j¡}|sD|j ¡dS|j |¡q|jjdd}|jjdd|jjd<|S)Nr+r) rhrrrbÚreadrdrcÚclosera)rÚbufrqrrrrfs    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). )rcÚparserbÚ_emitrfrTrrrreszDOMEventStream._slurpcCs,|jjdd}|jjdd|jjd<|S)zn Fallback replacement for getEvent() that emits the events that _slurp() read previously. r+r)rhrrtrrrrszDOMEventStream._emitcCs|j ¡|`d|_d|_dS)z+clear(): Explicitly release parsing objectsN)rhrVrcrbrTrrrrV!s zDOMEventStream.clearN) rWrXrYrrgrrrurvrzrfrerrVrrrrr`Ìs  r`c@s4eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd S) ÚSAX2DOMcCs2t ||||¡|jd}|jd}| |¡dS©Nr éþÿÿÿ)r r;rrw)rr5r6r7ÚcurNodeÚ parentNoderrrr;*s  zSAX2DOM.startElementNScCs0t |||¡|jd}|jd}| |¡dSr�)r r?rrw)rr5r7rƒr„rrrr?0s  zSAX2DOM.startElementcCs4t |||¡|jdd}|jd}| |¡dS©Nrr+r )r rHrrrw)rrFrGr9r„rrrrH6s zSAX2DOM.processingInstructioncCs2t ||¡|jdd}|jd}| |¡dSr…)r rLrrrw©rrKr9r„rrrrL<s  zSAX2DOM.ignorableWhitespacecCs2t ||¡|jdd}|jd}| |¡dSr…)r rMrrrwr†rrrrMBs  zSAX2DOM.charactersN)rWrXrYr;r?rHrLrMrrrrr€(s r€iì?cCs@|dkr t}t|tƒr"t|dƒ}n|}|s4tj ¡}t|||ƒS)NÚrb)Údefault_bufsizeÚ isinstanceÚstrÚopenr riÚ make_parserr`)Zstream_or_stringrcrdrbrrrr~Ks   r~cCs6ddlm}t|ƒ}||ƒ}|s*tj ¡}t|||ƒS)Nr)ÚStringIO)Úior�Úlenr rirŒr`)Ústringrcr�rdr}rrrÚ parseStringVs   r‘)NN)N)Zxml.saxr Zxml.sax.handlerrrrrrrrr riZContentHandlerr rZr`r€rˆr~r‘rrrrÚs"8\!