
    F\hu-                         S SK rS SKrSrSrSrSrSrSrSr	S	r
 " S
 S\R                  R                  5      r " S S5      r " S S5      r " S S\5      rSrSS jrSS jrg)    NSTART_ELEMENTEND_ELEMENTCOMMENTSTART_DOCUMENTEND_DOCUMENTPROCESSING_INSTRUCTIONIGNORABLE_WHITESPACE
CHARACTERSc                       \ rS rSrSrSrSS jrS rS rS r	S r
S rS	 rS
 rS rS rS rS rS rS rS rS rS rSrg)PullDOM   Nc                 6   SSK Jn  Xl        S S /U l        U R                  U l        / U l        U R
                  R                  U l         U R
                  R                  U l        US0/U l
        U R                  S   U l        / U l        g ! [         a     N2f = f)Nr   )XML_NAMESPACExml)xml.domr   documentFactory
firstEvent	lastEventelementStackappendpushpopAttributeError_ns_contexts_current_contextpending_events)selfr   r   s      &/usr/lib/python3.13/xml/dom/pulldom.py__init__PullDOM.__init__   s    ).,%%,,		((,,DH ,E23 $ 1 1" 5   		s   
B 
BBc                 >    U R                   S   nU R                   S	 U$ Nr   )r   )r   results     r   r   PullDOM.pop!   s%    ""2&b!    c                     Xl         g N)_locator)r   locators     r   setDocumentLocatorPullDOM.setDocumentLocator&   s    r&   c                    [        U S5      (       d  / U l        U R                  R                  U=(       d    SU45        U R                  R                  U R                  R                  5       5        U=(       d    S U R                  U'   g )N_xmlns_attrsxmlns)hasattrr.   r   r   r   copy)r   prefixuris      r   startPrefixMappingPullDOM.startPrefixMapping)   sl    t^,, "D  &"3GS!9:  !6!6!;!;!=>%+^tc"r&   c                 B    U R                   R                  5       U l        g r(   )r   r   r   )r   r2   s     r   endPrefixMappingPullDOM.endPrefixMapping0   s     $ 1 1 5 5 7r&   c                    Sn[        U SS 5      nUb!  U H  u  pgXsR                  XF4'   M     / U l        Uu  pU(       ac  Uc!  U R                  U   n
U
(       a	  U
S-   U	-   nOU	nU R                  (       a  U R                  R                  X5      nOQU R                  X5      nO?U R                  (       a  U R                  R                  U	5      nOU R                  S U	5      nUR                  5        H  u  pgUu  pX:X  a;  US:X  a  UnOSU-   nU R                  R                  X5      nUR                  U5        OU(       aN  U R                  U   n
U
(       a	  U
S-   U-   nOUnU R                  R                  X5      nUR                  U5        O,U R                  R                  U5      nUR                  U5        Xl        M     [        U4S /U R                  S'   U R                  S   U l        U R!                  U5        g )Nzhttp://www.w3.org/2000/xmlns/r.   :r/   zxmlns:   )getattr_attrsr.   r   documentcreateElementNSbuildDocumentcreateElementitemscreateAttributeNSsetAttributeNodeNScreateAttributesetAttributeNodevaluer   r   r   )r   nametagNameattrs	xmlns_urixmlns_attrsanamerG   r3   	localnamer2   nodea_uria_localnameqnameattrs                   r   startElementNSPullDOM.startElementNS3   s   3	dND9" +38i/0 !, "D ..s3$slY6G'G}}}}44SB))#7 }}}}229=))$	: ;;=KE!&E!')'E${2E}}66uD''-..u5"SL;6E'E}}66uD''-}}44[A%%d+J) ), ,T2D9q*		$r&   c                 v    [         U R                  5       4S /U R                  S'   U R                  S   U l        g Nr;   r   r   r   )r   rH   rI   s      r   endElementNSPullDOM.endElementNSl   0    )488:6=q*r&   c                    U R                   (       a  U R                   R                  U5      nOU R                  S U5      nUR                  5        H7  u  pEU R                   R	                  U5      nXVl        UR                  U5        M9     [        U4S /U R                  S'   U R                  S   U l        U R                  U5        g rW   )
r>   rA   r@   rB   rE   rG   rF   r   r   r   )r   rH   rJ   rO   rM   rG   rS   s          r   startElementPullDOM.startElementp   s    ====..t4D%%dD1D ;;=KE==007DJ!!$' )
 ,T2D9q*		$r&   c                 v    [         U R                  5       4S /U R                  S'   U R                  S   U l        g rW   rX   )r   rH   s     r   
endElementPullDOM.endElement   r[   r&   c                     U R                   (       aG  U R                   R                  U5      n[        U4S /U R                  S'   U R                  S   U l        g [        U4S /nU R                  R                  U5        g rW   )r>   createCommentr   r   r   r   )r   srO   events       r   commentPullDOM.comment   sf    ====..q1D")4$ 7DNN1!^^A.DNq\4(E&&u-r&   c                     U R                   (       aG  U R                   R                  X5      n[        U4S /U R                  S'   U R                  S   U l        g [        X4S /nU R                  R                  U5        g rW   )r>   createProcessingInstructionr   r   r   r   )r   targetdatarO   re   s        r   processingInstructionPullDOM.processingInstruction   sh    ====<<VJD"8$!? FDNN1!^^A.DN,f;TBE&&u-r&   c                     U R                   R                  U5      n[        U4S /U R                  S'   U R                  S   U l        g rW   )r>   createTextNoder	   r   r   charsrO   s      r   ignorableWhitespacePullDOM.ignorableWhitespace   s>    }}++E22D94@q*r&   c                     U R                   R                  U5      n[        U4S /U R                  S'   U R                  S   U l        g rW   )r>   ro   r
   r   rp   s      r   
charactersPullDOM.characters   s>    }}++E2($/6q*r&   c                     U R                   c4  SS KnUR                  R                  R                  R
                  U l         g g )Nr   )r   xml.dom.minidomdomminidomDocumentimplementation)r   r   s     r   startDocumentPullDOM.startDocument   s2    '"#&77??#;#;#J#JD  (r&   c                 N   U R                   R                  XS 5      nX0l        [        U4S /U R                  S'   U R                  S   U l        U R                  U5        U R                   H  nUS   S   [        :X  a/  US   u  pVnU R                  R                  Xg5      n[        U4US'   OOUS   S   [        :X  a-  U R                  R                  US   S   5      n[        U4US'   O[        SUS   S   5      eX@R                  S'   X@l        M     S U l        UR                  $ )Nr;   r   zUnknown pending event )r   createDocumentr>   r   r   r   r   r   ri   r   rc   AssertionError
firstChild)	r   r3   tagnamerO   e_rj   rk   ns	            r   r@   PullDOM.buildDocument   s    ##223F,d3T:q*		$$$AtAw00 !!MM==fK.2!1aG#MM//!Q8|!$%=ad1gFF !NN1N % #r&   c                 f    [         U R                  4S /U R                  S'   U R                  5         g rW   )r   r>   r   r   r   s    r   endDocumentPullDOM.endDocument   s'    *DMM:DAq
r&   c                     SU l         g)z.clear(): Explicitly release parsing structuresN)r>   r   s    r   clearPullDOM.clear   s	    r&   )r   r)   r   r.   r>   r   r   r   r   r   r   r   r(   )__name__
__module____qualname____firstlineno__r)   r>   r    r   r+   r4   r7   rT   rY   r]   r`   rf   rl   rr   ru   r}   r@   r   r   __static_attributes__ r&   r   r   r      sc    HH! 
 487r++..+
+
K
0r&   r   c                   &    \ rS rSrS rS rS rSrg)ErrorHandler   c                     [        U5        g r(   )printr   	exceptions     r   warningErrorHandler.warning   s
    ir&   c                     Uer(   r   r   s     r   errorErrorHandler.error       r&   c                     Uer(   r   r   s     r   
fatalErrorErrorHandler.fatalError   r   r&   r   N)r   r   r   r   r   r   r   r   r   r&   r   r   r      s    r&   r   c                   J    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rSrg)DOMEventStream   c                     Xl         X l        X0l        [        U R                  S5      (       d  U R                  U l        U R                  5         g )Nfeed)streamparserbufsizer0   _slurpgetEventreset)r   r   r   r   s       r   r    DOMEventStream.__init__   s6    t{{F++ KKDM

r&   c                     [        5       U l        U R                  R                  [        R
                  R                  R                  S5        U R                  R                  U R                  5        g rW   )	r   pulldomr   
setFeaturer   saxhandlerfeature_namespacessetContentHandlerr   s    r   r   DOMEventStream.reset   sC    yswwAA1E%%dll3r&   c                 @    U R                  5       nU(       a  U$ [        er(   )r   StopIterationr   rcs     r   __next__DOMEventStream.__next__   s    ]]_Ir&   c                     U $ r(   r   r   s    r   __iter__DOMEventStream.__iter__   s    r&   c                    U R                  5       nU/nU(       aj  Uu  pEXQL a  g U[        :w  a  US   R                  U5        U[        :X  a  UR	                  U5        OU[        :X  a  US	 U R                  5       nU(       a  Mi  g g r#   )r   r   appendChildr   r   )r   rO   re   parentstokencur_nodes         r   
expandNodeDOMEventStream.expandNode   sv    &#OE#''1%x(+%BKMMOE er&   c                 j   U R                   R                  S   (       d%  U R                   R                  U R                   l        U R                   R                  S   (       d  U R                  R	                  U R
                  5      nU(       d  U R                  R                  5         g U R                  R                  U5        U R                   R                  S   (       d  M  U R                   R                  S   S   nU R                   R                  S   S   U R                   R                  S'   U$ )Nr;   r   )	r   r   r   r   readr   r   closer   )r   bufr   s      r   r   DOMEventStream.getEvent   s     ||&&q)%)\\%<%<DLL",,))!,++""4<<0C!!#KKS! ,,))!,, \\$$Q'*%)\\%<%<Q%?%B"	r&   c                     U R                   R                  U R                  5        U R                  U l        U R                  5       $ )zFallback 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).
)r   parser   _emitr   r   s    r   r   DOMEventStream._slurp  s1     	$++&

zz|r&   c                     U R                   R                  S   S   nU R                   R                  S   S   U R                   R                  S'   U$ )zYFallback replacement for getEvent() that emits
the events that _slurp() read previously.
r;   r   )r   r   r   s     r   r   DOMEventStream._emit  sJ     \\$$Q'*%)\\%<%<Q%?%B"	r&   c                 X    U R                   R                  5         U ? SU l        SU l        g)z+clear(): Explicitly release parsing objectsN)r   r   r   r   r   s    r   r   DOMEventStream.clear  s%    Lr&   )r   r   r   r   r   N)r   r   r   r   r    r   r   r   r   r   r   r   r   r   r   r&   r   r   r      s/    4$r&   r   c                   2    \ rS rSrS rS rS rS rS rSr	g)	SAX2DOMi  c                     [         R                  XX#5        U R                  S   nU R                  S   nUR                  U5        g Nr   )r   rT   r   r   )r   rH   rI   rJ   curNode
parentNodes         r   rT   SAX2DOM.startElementNS  s@    t7:##B'&&r*
w'r&   c                     [         R                  XU5        U R                  S   nU R                  S   nUR                  U5        g r   )r   r]   r   r   )r   rH   rJ   r   r   s        r   r]   SAX2DOM.startElement#  s@    T/##B'&&r*
w'r&   c                     [         R                  XU5        U R                  S   S   nU R                  S   nUR	                  U5        g Nr   r;   r   )r   rl   r   r   r   )r   rj   rk   rO   r   s        r   rl   SAX2DOM.processingInstruction)  sC    %%dD9~~a #&&r*
t$r&   c                     [         R                  X5        U R                  S   S   nU R                  S   nUR	                  U5        g r   )r   rr   r   r   r   r   rq   rO   r   s       r   rr   SAX2DOM.ignorableWhitespace/  sA    ##D0~~a #&&r*
t$r&   c                     [         R                  X5        U R                  S   S   nU R                  S   nUR	                  U5        g r   )r   ru   r   r   r   r   s       r   ru   SAX2DOM.characters5  sA    4'~~a #&&r*
t$r&   r   N)
r   r   r   r   rT   r]   rl   rr   ru   r   r   r&   r   r   r     s    ((%%%r&   r   i?  c                     Uc  [         n[        U [        5      (       a  [        U S5      nOU nU(       d  [        R
                  R                  5       n[        X1U5      $ )Nrb)default_bufsize
isinstancestropenr   r   make_parserr   )stream_or_stringr   r   r   s       r   r   r   >  sN    !"C((&-!$$&&'22r&   c                     SSK Jn  [        U 5      nU" U 5      nU(       d  [        R                  R                  5       n[        XAU5      $ )Nr   )StringIO)ior   lenr   r   r   r   )stringr   r   r   r   s        r   parseStringr   I  s:    &kG
6
C$$&#w//r&   )NNr(   )xml.saxr   xml.sax.handlerr   r   r   r   r   r   r	   r
   r   ContentHandlerr   r   r   r   r   r   r   r   r&   r   <module>r      s     
!1 - 
ucgg$$ un M M^%g %B !	30r&   