
    Rhu-                         d dl Zd dlZdZdZdZdZdZdZdZ	d	Z
 G d
 dej                  j                        Z G d d      Z G d d      Z G d de      ZdZddZddZy)    NSTART_ELEMENTEND_ELEMENTCOMMENTSTART_DOCUMENTEND_DOCUMENTPROCESSING_INSTRUCTIONIGNORABLE_WHITESPACE
CHARACTERSc                   |    e Zd ZdZdZddZd Zd Zd Zd Z	d Z
d Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zy)PullDOMNc                 6   ddl m} || _        d d g| _        | j                  | _        g | _        | j
                  j                  | _        	 | j
                  j                  | _        |dig| _
        | j                  d   | _        g | _        y # t        $ r Y 1w xY w)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.12/xml/dom/pulldom.py__init__zPullDOM.__init__   s    ).,%%,,		((,,DH ,E23 $ 1 1" 5   		s   B 	BBc                 >    | j                   d   }| j                   d= |S Nr   )r   )r   results     r   r   zPullDOM.pop!   s%    ""2&b!    c                     || _         y N)_locator)r   locators     r   setDocumentLocatorzPullDOM.setDocumentLocator&   s	    r#   c                     t        | d      sg | _        | j                  j                  |xs d|f       | j                  j                  | j                  j                                |xs d | j                  |<   y )N_xmlns_attrsxmlns)hasattrr*   r   r   r   copy)r   prefixuris      r   startPrefixMappingzPullDOM.startPrefixMapping)   si    t^, "D  &"3GS!9:  !6!6!;!;!=>%+^tc"r#   c                 B    | j                   j                         | _        y r%   )r   r   r   )r   r.   s     r   endPrefixMappingzPullDOM.endPrefixMapping0   s     $ 1 1 5 5 7r#   c                    d}t        | dd       }|"|D ]  \  }}||j                  ||f<    g | _        |\  }}	|rZ|| j                  |   }
|
r	|
dz   |	z   }n|	}| j                  r| j                  j                  ||      }nM| j                  ||      }n:| j                  r| j                  j                  |	      }n| j                  d |	      }|j                         D ]  \  }}|\  }}||k(  r;|dk(  r|}nd|z   }| j                  j                  ||      }|j                  |       nx|rJ| j                  |   }
|
r	|
dz   |z   }n|}| j                  j                  ||      }|j                  |       n,| j                  j                  |      }|j                  |       ||_         t        |fd g| j                  d<   | j                  d   | _        | j!                  |       y )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anamerA   r/   	localnamer.   nodea_uria_localnameqnameattrs                   r   startElementNSzPullDOM.startElementNS3   s   3	dND9" + 9u38i/09 "DY ..s3$slY6G'G}}}}44S'B))#w7 }}}}229=))$	: ;;= 	KE%!&E;	!')'E${2E}}66ueD''-..u5"SL;6E'E}}66ueD''-}}44[A%%d+DJ)	, ,T2D9q*		$r#   c                 v    t         | j                         fd g| j                  d<   | j                  d   | _        y Nr5   r   r   r   )r   rB   rC   s      r   endElementNSzPullDOM.endElementNSl   0    )488:6=q*r#   c                    | j                   r| j                   j                  |      }n| j                  d |      }|j                         D ]8  \  }}| j                   j	                  |      }||_        |j                  |       : t        |fd g| j                  d<   | j                  d   | _        | j                  |       y rP   )
r8   r;   r:   r<   r?   rA   r@   r   r   r   )r   rB   rD   rI   rG   rA   rM   s          r   startElementzPullDOM.startElementp   s    ====..t4D%%dD1D ;;= 	(KE%==007DDJ!!$'	(
 ,T2D9q*		$r#   c                 v    t         | j                         fd g| j                  d<   | j                  d   | _        y rP   rQ   )r   rB   s     r   
endElementzPullDOM.endElement   rS   r#   c                     | j                   rG| j                   j                  |      }t        |fd g| j                  d<   | j                  d   | _        y t        |fd g}| j                  j                  |       y rP   )r8   createCommentr   r   r   r   )r   srI   events       r   commentzPullDOM.comment   sf    ====..q1D")4$ 7DNN1!^^A.DNq\4(E&&u-r#   c                     | j                   rH| j                   j                  ||      }t        |fd g| j                  d<   | j                  d   | _        y t        ||fd g}| j                  j                  |       y rP   )r8   createProcessingInstructionr   r   r   r   )r   targetdatarI   r[   s        r   processingInstructionzPullDOM.processingInstruction   sl    ====<<VTJD"8$!? FDNN1!^^A.DN,fd;TBE&&u-r#   c                     | j                   j                  |      }t        |fd g| j                  d<   | j                  d   | _        y rP   )r8   createTextNoder	   r   r   charsrI   s      r   ignorableWhitespacezPullDOM.ignorableWhitespace   s>    }}++E22D94@q*r#   c                     | j                   j                  |      }t        |fd g| j                  d<   | j                  d   | _        y rP   )r8   rc   r
   r   rd   s      r   
characterszPullDOM.characters   s>    }}++E2($/6q*r#   c                     | j                   4dd l}|j                  j                  j                  j
                  | _         y y )Nr   )r   xml.dom.minidomdomminidomDocumentimplementation)r   r   s     r   startDocumentzPullDOM.startDocument   s2    '"#&77??#;#;#J#JD  (r#   c                 R   | j                   j                  ||d       }|| _        t        |fd g| j                  d<   | j                  d   | _        | j                  |       | j                  D ]  }|d   d   t        k(  r1|d   \  }}}| j                  j                  ||      }t        |f|d<   nN|d   d   t        k(  r-| j                  j                  |d   d         }t        |f|d<   nt        d|d   d         || j                  d<   || _         d | _        |j                  S )Nr5   r   zUnknown pending event )r   createDocumentr8   r   r   r   r   r   r^   r   rY   AssertionError
firstChild)	r   r/   tagnamerI   e_r_   r`   ns	            r   r:   zPullDOM.buildDocument   s)    ##223F,d3T:q*		$$$ 	AtAw00 !!&MM==fdK.2!1aG#MM//!Q8|!$%=ad1gFF !DNN1DN	 #r#   c                 f    t         | j                  fd g| j                  d<   | j                          y rP   )r   r8   r   r   r   s    r   endDocumentzPullDOM.endDocument   s'    *DMM:DAq
r#   c                     d| _         y)z.clear(): Explicitly release parsing structuresN)r8   ry   s    r   clearzPullDOM.clear   s	    r#   r%   )__name__
__module____qualname__r&   r8   r   r   r(   r0   r2   rN   rR   rU   rW   r\   ra   rf   rh   ro   r:   rz   r|    r#   r   r   r      sc    HH! 
 487r++..+
+
K
0r#   r   c                       e Zd Zd Zd Zd Zy)ErrorHandlerc                     t        |       y r%   )printr   	exceptions     r   warningzErrorHandler.warning   s
    ir#   c                     |r%   r   r   s     r   errorzErrorHandler.error       r#   c                     |r%   r   r   s     r   
fatalErrorzErrorHandler.fatalError   r   r#   N)r}   r~   r   r   r   r   r   r#   r   r   r      s    r#   r   c                   B    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zy
)DOMEventStreamc                     || _         || _        || _        t        | j                  d      s| j                  | _        | j                          y )Nfeed)streamparserbufsizer,   _slurpgetEventreset)r   r   r   r   s       r   r   zDOMEventStream.__init__   s9    t{{F+ KKDM

r#   c                     t               | _        | j                  j                  t        j
                  j                  j                  d       | j                  j                  | j                         y rP   )	r   pulldomr   
setFeaturer   saxhandlerfeature_namespacessetContentHandlerry   s    r   r   zDOMEventStream.reset   sC    yswwAA1E%%dll3r#   c                 6    | j                         }|r|S t        r%   )r   StopIterationr   rcs     r   __next__zDOMEventStream.__next__   s    ]]_Ir#   c                     | S r%   r   ry   s    r   __iter__zDOMEventStream.__iter__   s    r#   c                     | j                         }|g}|rb|\  }}||u ry |t        k7  r|d   j                  |       |t        k(  r|j	                  |       n|t        k(  r|d= | j                         }|ray y r!   )r   r   appendChildr   r   )r   rI   r[   parentstokencur_nodes         r   
expandNodezDOMEventStream.expandNode   sx    &#OE84#''1%x(+%BKMMOE r#   c                 @   | j                   j                  d   s%| j                   j                  | j                   _        | j                   j                  d   sw| j                  j	                  | j
                        }|s| j                  j                          y | j                  j                  |       | j                   j                  d   sw| j                   j                  d   d   }| j                   j                  d   d   | j                   j                  d<   |S )Nr5   r   )	r   r   r   r   readr   r   closer   )r   bufr   s      r   r   zDOMEventStream.getEvent   s     ||&&q)%)\\%<%<DLL",,))!,++""4<<0C!!#KKS! ,,))!, \\$$Q'*%)\\%<%<Q%?%B"	r#   c                     | j                   j                  | 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).
        )r   parser   _emitr   ry   s    r   r   zDOMEventStream._slurp  s1     	$++&

zz|r#   c                     | j                   j                  d   d   }| j                   j                  d   d   | j                   j                  d<   |S )zn Fallback replacement for getEvent() that emits
            the events that _slurp() read previously.
        r5   r   )r   r   r   s     r   r   zDOMEventStream._emit  sJ     \\$$Q'*%)\\%<%<Q%?%B"	r#   c                 X    | j                   j                          | ` d| _        d| _        y)z+clear(): Explicitly release parsing objectsN)r   r|   r   r   ry   s    r   r|   zDOMEventStream.clear  s%    Lr#   N)r}   r~   r   r   r   r   r   r   r   r   r   r|   r   r#   r   r   r      s/    4$r#   r   c                   *    e Zd Zd Zd Zd Zd Zd Zy)SAX2DOMc                     t         j                  | |||       | j                  d   }| j                  d   }|j                  |       y Nr   )r   rN   r   r   )r   rB   rC   rD   curNode
parentNodes         r   rN   zSAX2DOM.startElementNS  sD    tT7E:##B'&&r*
w'r#   c                     t         j                  | ||       | j                  d   }| j                  d   }|j                  |       y r   )r   rU   r   r   )r   rB   rD   r   r   s        r   rU   zSAX2DOM.startElement#  sB    T4/##B'&&r*
w'r#   c                     t         j                  | ||       | j                  d   d   }| j                  d   }|j	                  |       y Nr   r5   r   )r   ra   r   r   r   )r   r_   r`   rI   r   s        r   ra   zSAX2DOM.processingInstruction)  sE    %%dFD9~~a #&&r*
t$r#   c                     t         j                  | |       | j                  d   d   }| j                  d   }|j	                  |       y r   )r   rf   r   r   r   r   re   rI   r   s       r   rf   zSAX2DOM.ignorableWhitespace/  sC    ##D%0~~a #&&r*
t$r#   c                     t         j                  | |       | j                  d   d   }| j                  d   }|j	                  |       y r   )r   rh   r   r   r   r   s       r   rh   zSAX2DOM.characters5  sC    4'~~a #&&r*
t$r#   N)r}   r~   r   rN   rU   ra   rf   rh   r   r#   r   r   r     s    ((%%%r#   r   i?  c                     |t         }t        | t              rt        | d      }n| }|st        j
                  j                         }t        |||      S )Nrb)default_bufsize
isinstancestropenr   r   make_parserr   )stream_or_stringr   r   r   s       r   r   r   >  sM    !"C(&-!$$&&&'22r#   c                     ddl m} t        |       } ||       }|st        j                  j                         }t        |||      S )Nr   )StringIO)ior   lenr   r   r   r   )stringr   r   r   r   s        r   parseStringr   I  s<    &kG
6
C$$&#vw//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#   