???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................3

  \-                 @   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| _y| 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   '/usr/lib64/python3.6/xml/dom/pulldom.py__init__   s    

zPullDOM.__init__c             C   s   | j d }| j d= |S )Nr   r   r   )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j|pd|f | jj| 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 j | _d S )N)r   r   r   )r   r%   r   r   r   endPrefixMapping0   s    zPullDOM.endPrefixMappingc             C   s  d}t | dd }|d k	r>x|D ]\}}||j||f< qW g | _|\}}	|r|d krr| j| }
|
rn|
d |	 }n|	}| jr| jj||}q| j||}n | jr| jj|	}n| jd |	}x|j D ]\}}|\}}||kr
|dkr|}nd| }| jj	||}|j
| nX|rL| j| }
|
r.|
d | }n|}| jj	||}|j
| n| jj|}|j| ||_qW t|fd g| jd< | jd | _| j| d S )Nzhttp://www.w3.org/2000/xmlns/r!   :r"   zxmlns:r   )getattr_attrsr!   r   documentZcreateElementNSbuildDocumentcreateElementitemsZcreateAttributeNSZsetAttributeNodeNScreateAttributesetAttributeNodevaluer   r   r   )r   nametagNameattrsZ	xmlns_uriZxmlns_attrsanamer2   r&   Z	localnamer%   nodeZa_uriZa_localnameZqnameattrr   r   r   startElementNS3   sP    




zPullDOM.startElementNSc             C   s&   t | j fd g| jd< | jd | _d S )Nr   )r   r   r   )r   r3   r4   r   r   r   endElementNSl   s    zPullDOM.endElementNSc             C   s~   | j r| j j|}n| jd |}x0|j D ]$\}}| j j|}||_|j| q*W t|fd g| jd< | jd | _| j	| d S )Nr   )
r,   r.   r-   r/   r0   r2   r1   r   r   r   )r   r3   r5   r7   r6   r2   r8   r   r   r   startElementp   s    zPullDOM.startElementc             C   s&   t | j fd g| jd< | jd | _d S )Nr   )r   r   r   )r   r3   r   r   r   
endElement   s    zPullDOM.endElementc             C   sN   | j r2| j j|}t|fd g| jd< | jd | _nt|fd g}| jj| d S )Nr   )r,   createCommentr   r   r   r   )r   sr7   eventr   r   r   comment   s    zPullDOM.commentc             C   sR   | j r4| j j||}t|fd g| jd< | jd | _nt||fd g}| jj| d S )Nr   )r,   createProcessingInstructionr   r   r   r   )r   targetdatar7   r?   r   r   r   processingInstruction   s    zPullDOM.processingInstructionc             C   s.   | j j|}t|fd g| jd< | jd | _d S )Nr   )r,   createTextNoder   r   )r   charsr7   r   r   r   ignorableWhitespace   s    zPullDOM.ignorableWhitespacec             C   s.   | j j|}t|fd g| jd< | jd | _d S )Nr   )r,   rE   r	   r   )r   rF   r7   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 j||d }|| _t|fd g| jd< | jd | _| j| x| jD ]}|d d tkr|d \}}}| jj||}t|f|d< nD|d d t	kr| jj
|d d }t	|f|d< ntd|d d || jd< || _qFW d | _|jS )Nr   r   zUnknown pending event )r   ZcreateDocumentr,   r   r   r   r   r   rA   r   r=   AssertionErrorZ
firstChild)	r   r&   Ztagnamer7   e_rB   rC   nr   r   r   r-      s$    


zPullDOM.buildDocumentc             C   s    t | jfd g| jd< | j  d S )Nr   )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,   )r   r   r   r   clear   s    zPullDOM.clear)N)__name__
__module____qualname__r   r,   r   r   r    r'   r(   r9   r:   r;   r<   r@   rD   rG   rH   rJ   r-   rO   rP   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 )N)print)r   	exceptionr   r   r   warning   s    zErrorHandler.warningc             C   s   |d S )Nr   )r   rV   r   r   r   error   s    zErrorHandler.errorc             C   s   |d S )Nr   )r   rV   r   r   r   
fatalError   s    zErrorHandler.fatalErrorN)rQ   rR   rS   rW   rX   rY   r   r   r   r   rT      s   rT   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| _| j  d S )Nfeed)streamparserbufsizer#   _slurpgetEventreset)r   r\   r]   r^   r   r   r   r      s    zDOMEventStream.__init__c             C   s.   t  | _| jjtjjjd | jj| j d S )Nr   )	r
   pulldomr]   Z
setFeaturer   saxZhandlerZfeature_namespacesZsetContentHandler)r   r   r   r   ra      s    zDOMEventStream.resetc             C   s   | j  }|r|S td S )N)r`   
IndexError)r   posrcr   r   r   __getitem__   s    zDOMEventStream.__getitem__c             C   s   | j  }|r|S td S )N)r`   StopIteration)r   rf   r   r   r   __next__   s    zDOMEventStream.__next__c             C   s   | S )Nr   )r   r   r   r   __iter__   s    zDOMEventStream.__iter__c             C   sp   | j  }|g}x\|rj|\}}||kr(d S |tkr>|d j| |tkrR|j| n|tkr`|d= | j  }qW d S )Nr   r   r   )r`   r   appendChildr   r   )r   r7   r?   parentstokenZcur_noder   r   r   
expandNode   s    zDOMEventStream.expandNodec             C   s   | j jd s| j j| j _x<| j jd sT| jj| j}|sF| jj  d S | jj| qW | j jd d }| j jd d | j jd< |S )Nr   r   )	rb   r   r   r\   readr^   r]   closer[   )r   bufrf   r   r   r   r`      s    
zDOMEventStream.getEventc             C   s   | 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`   )r   r   r   r   r_     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   )rb   r   )r   rf   r   r   r   rs     s    zDOMEventStream._emitc             C   s   | j j  | ` d| _d| _dS )z+clear(): Explicitly release parsing objectsN)rb   rP   r]   r\   )r   r   r   r   rP     s    
zDOMEventStream.clearN)rQ   rR   rS   r   ra   rg   ri   rj   rn   r`   r_   rs   rP   r   r   r   r   rZ      s   
rZ   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| ||| | jd }| jd }|j| d S )Nr      r   )r
   r9   r   rk   )r   r3   r4   r5   curNode
parentNoder   r   r   r9   #  s    

zSAX2DOM.startElementNSc             C   s0   t j| || | jd }| jd }|j| d S )Nr   ru   r   rv   )r
   r;   r   rk   )r   r3   r5   rw   rx   r   r   r   r;   )  s    

zSAX2DOM.startElementc             C   s4   t j| || | jd d }| jd }|j| d S )Nr   r   r   )r
   rD   r   r   rk   )r   rB   rC   r7   rx   r   r   r   rD   /  s    
zSAX2DOM.processingInstructionc             C   s2   t j| | | jd d }| jd }|j| d S )Nr   r   r   )r
   rG   r   r   rk   )r   rF   r7   rx   r   r   r   rG   5  s    
zSAX2DOM.ignorableWhitespacec             C   s2   t j| | | jd d }| jd }|j| d S )Nr   r   r   )r
   rH   r   r   rk   )r   rF   r7   rx   r   r   r   rH   ;  s    
zSAX2DOM.charactersN)rQ   rR   rS   r9   r;   rD   rG   rH   r   r   r   r   rt   !  s
   rt   ru         c             C   s@   |d krt }t| tr"t| d}n| }|s4tjj }t|||S )Nrb)default_bufsize
isinstancestropenr   rc   make_parserrZ   )Zstream_or_stringr]   r^   r\   r   r   r   rr   D  s    

rr   c             C   s6   ddl m} t| }|| }|s*tjj }t|||S )Nr   )StringIO)ior   lenr   rc   r   rZ   )stringr]   r   r^   rq   r   r   r   parseStringO  s    
r   i @  i?  )NN)N)Zxml.saxr   Zxml.sax.handlerr   r   r   r   r   r   r   r	   rc   ZContentHandlerr
   rT   rZ   rt   r|   rr   r   r   r   r   r   <module>   s"    8U!
