
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3

  \­/  ã               @   s¦   d dl Z d dlZd dlZd dlZd dlZddlmZ ddlmZ dd„ Z	i fdd„Z
i fd	d
„Zi fdd„Zdd„ ZG dd„ dejƒZG dd„ dejƒZddd„ZdS )é    Né   )Úhandler)Ú	xmlreaderc             C   s&   x |j ƒ D ]\}}| j||ƒ} q
W | S )N)ÚitemsÚreplace)ÚsÚdÚkeyÚvalue© r   ú(/usr/lib64/python3.6/xml/sax/saxutils.pyÚ__dict_replace   s    r   c             C   s6   | j ddƒ} | j ddƒ} | j ddƒ} |r2t| |ƒ} | S )Nú&z&amp;ú>z&gt;ú<z&lt;)r   r   )ÚdataÚentitiesr   r   r   Úescape   s    	
r   c             C   s2   | j ddƒ} | j ddƒ} |r&t| |ƒ} | j ddƒS )Nz&lt;r   z&gt;r   z&amp;r   )r   r   )r   r   r   r   r   Úunescape"   s
    
r   c             C   s\   |j ƒ }|jddddœƒ t| |ƒ} d| krPd| krFd| jddƒ } qXd	|  } nd|  } | S )
Nz&#10;z&#13;z&#9;)Ú
úú	ú"ú'z"%s"z&quot;z'%s')ÚcopyÚupdater   r   )r   r   r   r   r   Ú	quoteattr0   s    

r   c                sÄ   ˆ d krdd l }|jS tˆ tjƒr&ˆ S tˆ tjtjfƒr<ˆ S tˆ tjƒrlG ‡ fdd„dƒ}|ƒ }dd„ |_	nDtj
ƒ }dd„ |_ˆ j|_yˆ j|_ˆ j|_W n tk
r®   Y nX tj||ddd	d
�S )Nr   c                   s   e Zd Z” jZ‡ fdd„ZdS )z _gettextwriter.<locals>._wrapperc                s
   t ˆ |ƒS )N)Úgetattr)ÚselfÚname)Úoutr   r   Ú__getattr__[   s    z,_gettextwriter.<locals>._wrapper.__getattr__N)Ú__name__Ú
__module__Ú__qualname__Ú	__class__r!   r   )r    r   r   Ú_wrapperY   s   r&   c               S   s   d S )Nr   r   r   r   r   Ú<lambda>^   s    z _gettextwriter.<locals>.<lambda>c               S   s   dS )NTr   r   r   r   r   r'   c   s    Úxmlcharrefreplacer   T)ÚencodingÚerrorsÚnewlineÚwrite_through)ÚsysÚstdoutÚ
isinstanceÚioÚ
TextIOBaseÚcodecsÚStreamWriterÚStreamReaderWriterÚ	RawIOBaseÚcloseÚBufferedIOBaseÚwritableÚwriteÚseekableÚtellÚAttributeErrorÚTextIOWrapper)r    r)   r-   r&   Úbufferr   )r    r   Ú_gettextwriterH   s.    
r?   c               @   s€   e Zd Zd dd„Zd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S )"ÚXMLGeneratorNú
iso-8859-1Fc             C   sV   t jj| ƒ t||ƒ}|j| _|j| _i g| _| jd | _	g | _
|| _|| _d| _d S )Nr   Féÿÿÿÿ)r   ÚContentHandlerÚ__init__r?   r9   Ú_writeÚflushÚ_flushÚ_ns_contextsÚ_current_contextÚ_undeclared_ns_mapsÚ	_encodingÚ_short_empty_elementsÚ_pending_start_element)r   r    r)   Zshort_empty_elementsr   r   r   rD   s   s    
zXMLGenerator.__init__c             C   sJ   |d rBd|d kr d|d  S | j |d  }|rB|d |d  S |d S )Nr   z$http://www.w3.org/XML/1998/namespacezxml:r   ú:)rI   )r   r   Úprefixr   r   r   Ú_qname   s    zXMLGenerator._qnamec             C   s   | j r| jdƒ d| _ d S )Nr   F)rM   rE   )r   Ú
endElementr   r   r   Ú_finish_pending_start_element�   s    
z*XMLGenerator._finish_pending_start_elementc             C   s   | j d| j ƒ d S )Nz$<?xml version="1.0" encoding="%s"?>
)rE   rK   )r   r   r   r   ÚstartDocument—   s    zXMLGenerator.startDocumentc             C   s   | j ƒ  d S )N)rG   )r   r   r   r   ÚendDocument›   s    zXMLGenerator.endDocumentc             C   s0   | j j| jjƒ ƒ || j|< | jj||fƒ d S )N)rH   ÚappendrI   r   rJ   )r   rO   Úurir   r   r   ÚstartPrefixMappingž   s    
zXMLGenerator.startPrefixMappingc             C   s   | j d | _| j d= d S )Nr   rB   rB   )rH   rI   )r   rO   r   r   r   ÚendPrefixMapping£   s    zXMLGenerator.endPrefixMappingc             C   s^   | j ƒ  | jd| ƒ x*|jƒ D ]\}}| jd|t|ƒf ƒ q W | jrPd| _n
| jdƒ d S )Nr   z %s=%sTr   )rR   rE   r   r   rL   rM   )r   r   Úattrsr
   r   r   r   ÚstartElement§   s    zXMLGenerator.startElementc             C   s*   | j r| jdƒ d| _ n| jd| ƒ d S )Nz/>Fz</%s>)rM   rE   )r   r   r   r   r   rQ   ±   s    
zXMLGenerator.endElementc             C   sª   | j ƒ  | jd| j|ƒ ƒ x8| jD ].\}}|rD| jd||f ƒ q$| jd| ƒ q$W g | _x0|jƒ D ]$\}}| jd| j|ƒt|ƒf ƒ qfW | jrœd| _n
| jdƒ d S )Nr   z xmlns:%s="%s"z xmlns="%s"z %s=%sTr   )rR   rE   rP   rJ   r   r   rL   rM   )r   r   ÚqnamerY   rO   rV   r
   r   r   r   ÚstartElementNS¸   s     zXMLGenerator.startElementNSc             C   s0   | j r| jdƒ d| _ n| jd| j|ƒ ƒ d S )Nz/>Fz</%s>)rM   rE   rP   )r   r   r[   r   r   r   ÚendElementNSÊ   s    
zXMLGenerator.endElementNSc             C   s4   |r0| j ƒ  t|tƒs"t|| jƒ}| jt|ƒƒ d S )N)rR   r/   ÚstrrK   rE   r   )r   Úcontentr   r   r   Ú
charactersÑ   s
    
zXMLGenerator.charactersc             C   s0   |r,| j ƒ  t|tƒs"t|| jƒ}| j|ƒ d S )N)rR   r/   r^   rK   rE   )r   r_   r   r   r   ÚignorableWhitespaceØ   s
    
z XMLGenerator.ignorableWhitespacec             C   s   | j ƒ  | jd||f ƒ d S )Nz	<?%s %s?>)rR   rE   )r   Útargetr   r   r   r   ÚprocessingInstructionß   s    z"XMLGenerator.processingInstruction)NrA   F)F)r"   r#   r$   rD   rP   rR   rS   rT   rW   rX   rZ   rQ   r\   r]   r`   ra   rc   r   r   r   r   r@   q   s   


r@   c               @   sî   e 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$d%„ Zd&d'„ Zd(d)„ Zd*d+„ Zd,d-„ Zd.d/„ Zd0d1„ Zd2d3„ Zd4d5„ Zd6d7„ Zd8d9„ ZdS );ÚXMLFilterBaseNc             C   s   t jj| ƒ || _d S )N)r   Ú	XMLReaderrD   Ú_parent)r   Úparentr   r   r   rD   ì   s    zXMLFilterBase.__init__c             C   s   | j j|ƒ d S )N)Ú_err_handlerÚerror)r   Ú	exceptionr   r   r   ri   ò   s    zXMLFilterBase.errorc             C   s   | j j|ƒ d S )N)rh   Ú
fatalError)r   rj   r   r   r   rk   õ   s    zXMLFilterBase.fatalErrorc             C   s   | j j|ƒ d S )N)rh   Úwarning)r   rj   r   r   r   rl   ø   s    zXMLFilterBase.warningc             C   s   | j j|ƒ d S )N)Ú_cont_handlerÚsetDocumentLocator)r   Zlocatorr   r   r   rn   ý   s    z XMLFilterBase.setDocumentLocatorc             C   s   | j jƒ  d S )N)rm   rS   )r   r   r   r   rS      s    zXMLFilterBase.startDocumentc             C   s   | j jƒ  d S )N)rm   rT   )r   r   r   r   rT     s    zXMLFilterBase.endDocumentc             C   s   | j j||ƒ d S )N)rm   rW   )r   rO   rV   r   r   r   rW     s    z XMLFilterBase.startPrefixMappingc             C   s   | j j|ƒ d S )N)rm   rX   )r   rO   r   r   r   rX   	  s    zXMLFilterBase.endPrefixMappingc             C   s   | j j||ƒ d S )N)rm   rZ   )r   r   rY   r   r   r   rZ     s    zXMLFilterBase.startElementc             C   s   | j j|ƒ d S )N)rm   rQ   )r   r   r   r   r   rQ     s    zXMLFilterBase.endElementc             C   s   | j j|||ƒ d S )N)rm   r\   )r   r   r[   rY   r   r   r   r\     s    zXMLFilterBase.startElementNSc             C   s   | j j||ƒ d S )N)rm   r]   )r   r   r[   r   r   r   r]     s    zXMLFilterBase.endElementNSc             C   s   | j j|ƒ d S )N)rm   r`   )r   r_   r   r   r   r`     s    zXMLFilterBase.charactersc             C   s   | j j|ƒ d S )N)rm   ra   )r   Úcharsr   r   r   ra     s    z!XMLFilterBase.ignorableWhitespacec             C   s   | j j||ƒ d S )N)rm   rc   )r   rb   r   r   r   r   rc     s    z#XMLFilterBase.processingInstructionc             C   s   | j j|ƒ d S )N)rm   ÚskippedEntity)r   r   r   r   r   rp   !  s    zXMLFilterBase.skippedEntityc             C   s   | j j|||ƒ d S )N)Ú_dtd_handlerÚnotationDecl)r   r   ÚpublicIdÚsystemIdr   r   r   rr   &  s    zXMLFilterBase.notationDeclc             C   s   | j j||||ƒ d S )N)rq   ÚunparsedEntityDecl)r   r   rs   rt   Zndatar   r   r   ru   )  s    z XMLFilterBase.unparsedEntityDeclc             C   s   | j j||ƒS )N)Z_ent_handlerÚresolveEntity)r   rs   rt   r   r   r   rv   .  s    zXMLFilterBase.resolveEntityc             C   s@   | j j| ƒ | j j| ƒ | j j| ƒ | j j| ƒ | j j|ƒ d S )N)rf   ZsetContentHandlerZsetErrorHandlerZsetEntityResolverZsetDTDHandlerÚparse)r   Úsourcer   r   r   rw   3  s
    zXMLFilterBase.parsec             C   s   | j j|ƒ d S )N)rf   Ú	setLocale)r   Zlocaler   r   r   ry   :  s    zXMLFilterBase.setLocalec             C   s   | j j|ƒS )N)rf   Ú
getFeature)r   r   r   r   r   rz   =  s    zXMLFilterBase.getFeaturec             C   s   | j j||ƒ d S )N)rf   Ú
setFeature)r   r   Ústater   r   r   r{   @  s    zXMLFilterBase.setFeaturec             C   s   | j j|ƒS )N)rf   ÚgetProperty)r   r   r   r   r   r}   C  s    zXMLFilterBase.getPropertyc             C   s   | j j||ƒ d S )N)rf   ÚsetProperty)r   r   r
   r   r   r   r~   F  s    zXMLFilterBase.setPropertyc             C   s   | j S )N)rf   )r   r   r   r   Ú	getParentK  s    zXMLFilterBase.getParentc             C   s
   || _ d S )N)rf   )r   rg   r   r   r   Ú	setParentN  s    zXMLFilterBase.setParent)N)r"   r#   r$   rD   ri   rk   rl   rn   rS   rT   rW   rX   rZ   rQ   r\   r]   r`   ra   rc   rp   rr   ru   rv   rw   ry   rz   r{   r}   r~   r   r€   r   r   r   r   rd   ä   s8   
rd   Ú c             C   s  t | tƒrtj| ƒ} n^t| dƒrt| }tjƒ } t |jdƒtƒrH| j|ƒ n
| j|ƒ t|dƒrtt |jtƒrt| j	|jƒ | j
ƒ d koŠ| jƒ d k�r| jƒ }tjjtjj|ƒƒ}tjj||ƒ}tjj|ƒrÚ| j	|ƒ t|dƒ}n$| j	tjj||ƒƒ tjj| jƒ ƒ}| j|ƒ | S )NÚreadr   r   Úrb)r/   r^   r   ZInputSourceÚhasattrr‚   ZsetCharacterStreamZsetByteStreamr   ZsetSystemIdZgetCharacterStreamZgetByteStreamZgetSystemIdÚosÚpathÚdirnameÚnormpathÚjoinÚisfileÚopenÚurllibrw   ZurljoinZrequestZurlopen)rx   ÚbaseÚfZsysidZbaseheadZsysidfilenamer   r   r   Úprepare_input_sourceS  s*    




r�   )r�   )r…   Zurllib.parserŒ   Zurllib.requestr0   r2   r�   r   r   r   r   r   r   r?   rC   r@   re   rd   r�   r   r   r   r   Ú<module>   s   )so