
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
U
    ¡ê,aÝ.  ã                   @   sŒ   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„ dejjƒZG dd„ dƒZG dd„ dƒZG dd„ deƒZdZddd„Zddd„ZdS )é    NÚSTART_ELEMENTÚEND_ELEMENTÚCOMMENTÚSTART_DOCUMENTÚEND_DOCUMENTÚPROCESSING_INSTRUCTIONÚIGNORABLE_WHITESPACEÚ
CHARACTERSc                   @   sž   e Zd ZdZdZd$dd„Zdd„ Zdd„ Zdd	„ Zd
d„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd d!„ Zd"d#„ ZdS )%ÚPullDOMNc                 C   sz   ddl m} || _d d g| _| j| _g | _| jj| _z| jj| _W n t	k
rV   Y nX |dig| _
| j
d | _g | _d S )Nr   )ÚXML_NAMESPACEÚxmléÿÿÿÿ)Zxml.domr   ÚdocumentFactoryÚ
firstEventÚ	lastEventÚelementStackÚappendÚpushÚpopÚAttributeErrorÚ_ns_contextsÚ_current_contextÚpending_events)Úselfr   r   © r   ú4/opt/alt/python38/lib64/python3.8/xml/dom/pulldom.pyÚ__init__   s    

zPullDOM.__init__c                 C   s   | j d }| j d= |S ©Nr   )r   )r   Úresultr   r   r   r   !   s    
zPullDOM.popc                 C   s
   || _ d S ©N)Ú_locator)r   Zlocatorr   r   r   ÚsetDocumentLocator&   s    zPullDOM.setDocumentLocatorc                 C   sH   t | dƒsg | _| j |pd|f¡ | j | j ¡ ¡ |p<d | j|< d S )NÚ_xmlns_attrsÚxmlns)Úhasattrr"   r   r   r   Úcopy)r   ÚprefixÚurir   r   r   ÚstartPrefixMapping)   s
    
zPullDOM.startPrefixMappingc                 C   s   | j  ¡ | _d S r   )r   r   r   )r   r&   r   r   r   ÚendPrefixMapping0   s    zPullDOM.endPrefixMappingc                 C   s�  d}t | dd ƒ}|d k	r:|D ]\}}||j||f< qg | _|\}}	|r’|d krn| j| }
|
rj|
d |	 }n|	}| jr„| j ||¡}q²|  ||¡}n | jr¦| j |	¡}n|  d |	¡}| ¡ D ]¨\}}|\}}||k�r|dkrâ|}nd| }| j 	||¡}| 
|¡ nX|�rF| j| }
|
�r(|
d | }n|}| j 	||¡}| 
|¡ n| j |¡}| |¡ ||_qºt|fd g| jd< | jd | _|  |¡ d S )Nzhttp://www.w3.org/2000/xmlns/r"   ú:r#   zxmlns:é   )ÚgetattrÚ_attrsr"   r   ÚdocumentZcreateElementNSÚbuildDocumentÚcreateElementÚitemsZcreateAttributeNSZsetAttributeNodeNSÚcreateAttributeÚsetAttributeNodeÚvaluer   r   r   )r   ÚnameÚtagNameÚattrsZ	xmlns_uriZxmlns_attrsÚanamer4   r'   Z	localnamer&   ÚnodeZa_uriZa_localnameZqnameÚattrr   r   r   ÚstartElementNS3   sP    



zPullDOM.startElementNSc                 C   s&   t |  ¡ fd g| jd< | jd | _d S ©Nr+   ©r   r   r   )r   r5   r6   r   r   r   ÚendElementNSl   s    zPullDOM.endElementNSc                 C   sz   | j r| j  |¡}n|  d |¡}| ¡ D ]$\}}| j  |¡}||_| |¡ q(t|fd g| jd< | jd | _|  	|¡ d S r<   )
r.   r0   r/   r1   r2   r4   r3   r   r   r   )r   r5   r7   r9   r8   r4   r:   r   r   r   ÚstartElementp   s    zPullDOM.startElementc                 C   s&   t |  ¡ fd g| jd< | jd | _d S r<   r=   )r   r5   r   r   r   Ú
endElement   s    zPullDOM.endElementc                 C   sN   | j r2| j  |¡}t|fd g| jd< | jd | _nt|fd g}| j |¡ d S r<   )r.   ÚcreateCommentr   r   r   r   )r   Úsr9   Úeventr   r   r   Úcommentƒ   s    zPullDOM.commentc                 C   sR   | j r4| j  ||¡}t|fd g| jd< | jd | _nt||fd g}| j |¡ d S r<   )r.   ÚcreateProcessingInstructionr   r   r   r   )r   ÚtargetÚdatar9   rC   r   r   r   ÚprocessingInstructionŒ   s    zPullDOM.processingInstructionc                 C   s.   | j  |¡}t|fd g| jd< | jd | _d S r<   )r.   ÚcreateTextNoder   r   ©r   Úcharsr9   r   r   r   ÚignorableWhitespace•   s    zPullDOM.ignorableWhitespacec                 C   s.   | j  |¡}t|fd g| jd< | jd | _d S r<   )r.   rI   r	   r   rJ   r   r   r   Ú
charactersš   s    zPullDOM.charactersc                 C   s$   | j d kr dd l}|jjjj| _ d S )Nr   )r   Zxml.dom.minidomZdomZminidomZDocumentÚimplementation)r   r   r   r   r   ÚstartDocumentŸ   s    
zPullDOM.startDocumentc           	      C   sä   | j  ||d ¡}|| _t|fd g| jd< | jd | _|  |¡ | jD ]’}|d d tkr‚|d \}}}| j ||¡}t|f|d< nD|d d t	kr´| j 
|d d ¡}t	|f|d< ntd|d d ƒ‚|| jd< || _qDd | _|jS )Nr+   r   zUnknown pending event )r   ZcreateDocumentr.   r   r   r   r   r   rE   r   rA   ÚAssertionErrorZ
firstChild)	r   r'   Ztagnamer9   ÚeÚ_rF   rG   Únr   r   r   r/   ¤   s$    


zPullDOM.buildDocumentc                 C   s    t | jfd g| jd< |  ¡  d S r<   )r   r.   r   r   ©r   r   r   r   ÚendDocument¼   s    zPullDOM.endDocumentc                 C   s
   d| _ dS )z.clear(): Explicitly release parsing structuresN)r.   rT   r   r   r   ÚclearÀ   s    zPullDOM.clear)N)Ú__name__Ú
__module__Ú__qualname__r    r.   r   r   r!   r(   r)   r;   r>   r?   r@   rD   rH   rL   rM   rO   r/   rU   rV   r   r   r   r   r
      s&   
9		r
   c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚErrorHandlerc                 C   s   t |ƒ d S r   )Úprint©r   Z	exceptionr   r   r   ÚwarningÅ   s    zErrorHandler.warningc                 C   s   |‚d S r   r   r\   r   r   r   ÚerrorÇ   s    zErrorHandler.errorc                 C   s   |‚d S r   r   r\   r   r   r   Ú
fatalErrorÉ   s    zErrorHandler.fatalErrorN)rW   rX   rY   r]   r^   r_   r   r   r   r   rZ   Ä   s   rZ   c                   @   s\   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ ZdS )ÚDOMEventStreamc                 C   s2   || _ || _|| _t| jdƒs&| j| _|  ¡  d S )NÚfeed)ÚstreamÚparserÚbufsizer$   Ú_slurpÚgetEventÚreset)r   rb   rc   rd   r   r   r   r   Í   s    zDOMEventStream.__init__c                 C   s.   t ƒ | _| j tjjjd¡ | j | j¡ d S r<   )	r
   Úpulldomrc   Z
setFeaturer   ÚsaxZhandlerZfeature_namespacesZsetContentHandlerrT   r   r   r   rg   Õ   s    zDOMEventStream.resetc                 C   s0   dd l }|jdtdd� |  ¡ }|r(|S t‚d S )Nr   z[DOMEventStream's __getitem__ method ignores 'pos' parameter. Use iterator protocol instead.é   )Ú
stacklevel)ÚwarningsÚwarnÚDeprecationWarningrf   Ú
IndexError)r   Úposrl   Úrcr   r   r   Ú__getitem__Û   s    üzDOMEventStream.__getitem__c                 C   s   |   ¡ }|r|S t‚d S r   )rf   ÚStopIteration©r   rq   r   r   r   Ú__next__è   s    zDOMEventStream.__next__c                 C   s   | S r   r   rT   r   r   r   Ú__iter__î   s    zDOMEventStream.__iter__c                 C   sl   |   ¡ }|g}|rh|\}}||kr&d S |tkr<|d  |¡ |tkrP| |¡ n|tkr^|d= |   ¡ }qd S r   )rf   r   ÚappendChildr   r   )r   r9   rC   ÚparentsÚtokenZcur_noder   r   r   Ú
expandNodeñ   s    zDOMEventStream.expandNodec                 C   s~   | j jd s| j j| j _| j jd sR| j | j¡}|sD| j ¡  d S | j |¡ q| j jd d }| j jd d | j jd< |S )Nr+   r   )	rh   r   r   rb   Úreadrd   rc   Úclosera   )r   Úbufrq   r   r   r   rf      s    
zDOMEventStream.getEventc                 C   s   | 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   Ú_emitrf   rT   r   r   r   re     s    zDOMEventStream._slurpc                 C   s,   | 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.
        r+   r   )rh   r   rt   r   r   r   r     s    zDOMEventStream._emitc                 C   s   | j  ¡  | ` d| _d| _dS )z+clear(): Explicitly release parsing objectsN)rh   rV   rc   rb   rT   r   r   r   rV   !  s    
zDOMEventStream.clearN)rW   rX   rY   r   rg   rr   ru   rv   rz   rf   re   r   rV   r   r   r   r   r`   Ì   s   
r`   c                   @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )ÚSAX2DOMc                 C   s2   t  | |||¡ | jd }| jd }| |¡ d S ©Nr   éþÿÿÿ)r
   r;   r   rw   )r   r5   r6   r7   ÚcurNodeÚ
parentNoder   r   r   r;   *  s    

zSAX2DOM.startElementNSc                 C   s0   t  | ||¡ | jd }| jd }| |¡ d S r�   )r
   r?   r   rw   )r   r5   r7   rƒ   r„   r   r   r   r?   0  s    

zSAX2DOM.startElementc                 C   s4   t  | ||¡ | jd d }| jd }| |¡ d S ©Nr   r+   r   )r
   rH   r   r   rw   )r   rF   rG   r9   r„   r   r   r   rH   6  s    
zSAX2DOM.processingInstructionc                 C   s2   t  | |¡ | jd d }| jd }| |¡ d S r…   )r
   rL   r   r   rw   ©r   rK   r9   r„   r   r   r   rL   <  s    
zSAX2DOM.ignorableWhitespacec                 C   s2   t  | |¡ | jd d }| jd }| |¡ d S r…   )r
   rM   r   r   rw   r†   r   r   r   rM   B  s    
zSAX2DOM.charactersN)rW   rX   rY   r;   r?   rH   rL   rM   r   r   r   r   r€   (  s
   r€   iì?  c                 C   s@   |d krt }t| tƒr"t| dƒ}n| }|s4tj ¡ }t|||ƒS )NÚrb)Údefault_bufsizeÚ
isinstanceÚstrÚopenr   ri   Úmake_parserr`   )Zstream_or_stringrc   rd   rb   r   r   r   r~   K  s    

r~   c                 C   s6   ddl m} t| ƒ}|| ƒ}|s*tj ¡ }t|||ƒS )Nr   )ÚStringIO)Úior�   Úlenr   ri   rŒ   r`   )Ústringrc   r�   rd   r}   r   r   r   ÚparseStringV  s    
r‘   )NN)N)Zxml.saxr   Zxml.sax.handlerr   r   r   r   r   r   r   r	   ri   ZContentHandlerr
   rZ   r`   r€   rˆ   r~   r‘   r   r   r   r   Ú<module>   s"    8\!
