B
    2*™\1  ã               @   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 |  ¡ D ]\}}|  ||¡} q
W | S )N)ÚitemsÚreplace)ÚsÚdÚkeyÚvalue© r   ú;C:\ALexclude\prg\programme\Python37\Lib\xml\sax\saxutils.pyÚ__dict_replace   s    r   c             C   s6   |   dd¡} |   dd¡} |   dd¡} |r2t| |ƒ} | S )Nú&z&amp;ú>z&gt;ú<z&lt;)r   r   )ÚdataÚentitiesr   r   r   Úescape   s    	
r   c             C   s2   |   dd¡} |   dd¡} |r&t| |ƒ} |   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\   |  ¡ }| ddddœ¡ t| |ƒ} d| krPd| krFd|  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 
¡ }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>^   ó    z _gettextwriter.<locals>.<lambda>c               S   s   dS )NTr   r   r   r   r   r'   c   r(   Ú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 | ¡ t||ƒ}|j| _|j| _i g| _| jd | _	g | _
|| _|| _d| _d S )NéÿÿÿÿF)r   ÚContentHandlerÚ__init__r@   r:   Ú_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   rE   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   ú:)rJ   )r   r   Úprefixr   r   r   Ú_qname   s    zXMLGenerator._qnamec             C   s   | j r|  d¡ d| _ d S )Nr   F)rN   rF   )r   Ú
endElementr   r   r   Ú_finish_pending_start_element   s    
z*XMLGenerator._finish_pending_start_elementc             C   s   |   d| j ¡ d S )Nz$<?xml version="1.0" encoding="%s"?>
)rF   rL   )r   r   r   r   ÚstartDocument—   s    zXMLGenerator.startDocumentc             C   s   |   ¡  d S )N)rH   )r   r   r   r   ÚendDocument›   s    zXMLGenerator.endDocumentc             C   s0   | j  | j ¡ ¡ || j|< | j ||f¡ d S )N)rI   ÚappendrJ   r   rK   )r   rP   Úurir   r   r   ÚstartPrefixMappingž   s    
zXMLGenerator.startPrefixMappingc             C   s   | j d | _| j d= d S )NrC   )rI   rJ   )r   rP   r   r   r   ÚendPrefixMapping£   s    zXMLGenerator.endPrefixMappingc             C   s^   |   ¡  |  d| ¡ x*| ¡ D ]\}}|  d|t|ƒf ¡ q W | jrPd| _n
|  d¡ d S )Nr   z %s=%sTr   )rS   rF   r   r   rM   rN   )r   r   Úattrsr
   r   r   r   ÚstartElement§   s    zXMLGenerator.startElementc             C   s*   | j r|  d¡ d| _ n|  d| ¡ d S )Nz/>Fz</%s>)rN   rF   )r   r   r   r   r   rR   ±   s    
zXMLGenerator.endElementc             C   sª   |   ¡  |  d|  |¡ ¡ x8| jD ].\}}|rD|  d||f ¡ q$|  d| ¡ q$W g | _x0| ¡ D ]$\}}|  d|  |¡t|ƒf ¡ qfW | jrœd| _n
|  d¡ d S )Nr   z xmlns:%s="%s"z xmlns="%s"z %s=%sTr   )rS   rF   rQ   rK   r   r   rM   rN   )r   r   ÚqnamerZ   rP   rW   r
   r   r   r   ÚstartElementNS¸   s     zXMLGenerator.startElementNSc             C   s0   | j r|  d¡ d| _ n|  d|  |¡ ¡ d S )Nz/>Fz</%s>)rN   rF   rQ   )r   r   r\   r   r   r   ÚendElementNSÊ   s    
zXMLGenerator.endElementNSc             C   s4   |r0|   ¡  t|tƒs"t|| jƒ}|  t|ƒ¡ d S )N)rS   r0   ÚstrrL   rF   r   )r   Úcontentr   r   r   Ú
charactersÑ   s
    
zXMLGenerator.charactersc             C   s0   |r,|   ¡  t|tƒs"t|| jƒ}|  |¡ d S )N)rS   r0   r_   rL   rF   )r   r`   r   r   r   ÚignorableWhitespaceØ   s
    
z XMLGenerator.ignorableWhitespacec             C   s   |   ¡  |  d||f ¡ d S )Nz	<?%s %s?>)rS   rF   )r   Útargetr   r   r   r   ÚprocessingInstructionß   s    z"XMLGenerator.processingInstruction)NrB   F)F)r"   r#   r$   rE   rQ   rS   rT   rU   rX   rY   r[   rR   r]   r^   ra   rb   rd   r   r   r   r   rA   q   s   


rA   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 | ¡ || _d S )N)r   Ú	XMLReaderrE   Ú_parent)r   Úparentr   r   r   rE   ì   s    zXMLFilterBase.__init__c             C   s   | j  |¡ d S )N)Ú_err_handlerÚerror)r   Ú	exceptionr   r   r   rj   ò   s    zXMLFilterBase.errorc             C   s   | j  |¡ d S )N)ri   Ú
fatalError)r   rk   r   r   r   rl   õ   s    zXMLFilterBase.fatalErrorc             C   s   | j  |¡ d S )N)ri   Úwarning)r   rk   r   r   r   rm   ø   s    zXMLFilterBase.warningc             C   s   | j  |¡ d S )N)Ú_cont_handlerÚsetDocumentLocator)r   Zlocatorr   r   r   ro   ý   s    z XMLFilterBase.setDocumentLocatorc             C   s   | j  ¡  d S )N)rn   rT   )r   r   r   r   rT      s    zXMLFilterBase.startDocumentc             C   s   | j  ¡  d S )N)rn   rU   )r   r   r   r   rU     s    zXMLFilterBase.endDocumentc             C   s   | j  ||¡ d S )N)rn   rX   )r   rP   rW   r   r   r   rX     s    z XMLFilterBase.startPrefixMappingc             C   s   | j  |¡ d S )N)rn   rY   )r   rP   r   r   r   rY   	  s    zXMLFilterBase.endPrefixMappingc             C   s   | j  ||¡ d S )N)rn   r[   )r   r   rZ   r   r   r   r[     s    zXMLFilterBase.startElementc             C   s   | j  |¡ d S )N)rn   rR   )r   r   r   r   r   rR     s    zXMLFilterBase.endElementc             C   s   | j  |||¡ d S )N)rn   r]   )r   r   r\   rZ   r   r   r   r]     s    zXMLFilterBase.startElementNSc             C   s   | j  ||¡ d S )N)rn   r^   )r   r   r\   r   r   r   r^     s    zXMLFilterBase.endElementNSc             C   s   | j  |¡ d S )N)rn   ra   )r   r`   r   r   r   ra     s    zXMLFilterBase.charactersc             C   s   | j  |¡ d S )N)rn   rb   )r   Úcharsr   r   r   rb     s    z!XMLFilterBase.ignorableWhitespacec             C   s   | j  ||¡ d S )N)rn   rd   )r   rc   r   r   r   r   rd     s    z#XMLFilterBase.processingInstructionc             C   s   | j  |¡ d S )N)rn   ÚskippedEntity)r   r   r   r   r   rq   !  s    zXMLFilterBase.skippedEntityc             C   s   | j  |||¡ d S )N)Ú_dtd_handlerÚnotationDecl)r   r   ÚpublicIdÚsystemIdr   r   r   rs   &  s    zXMLFilterBase.notationDeclc             C   s   | j  ||||¡ d S )N)rr   ÚunparsedEntityDecl)r   r   rt   ru   Zndatar   r   r   rv   )  s    z XMLFilterBase.unparsedEntityDeclc             C   s   | j  ||¡S )N)Z_ent_handlerÚresolveEntity)r   rt   ru   r   r   r   rw   .  s    zXMLFilterBase.resolveEntityc             C   s@   | j  | ¡ | j  | ¡ | j  | ¡ | j  | ¡ | j  |¡ d S )N)rg   ZsetContentHandlerZsetErrorHandlerZsetEntityResolverZsetDTDHandlerÚparse)r   Úsourcer   r   r   rx   3  s
    zXMLFilterBase.parsec             C   s   | j  |¡ d S )N)rg   Ú	setLocale)r   Úlocaler   r   r   rz   :  s    zXMLFilterBase.setLocalec             C   s   | j  |¡S )N)rg   Ú
getFeature)r   r   r   r   r   r|   =  s    zXMLFilterBase.getFeaturec             C   s   | j  ||¡ d S )N)rg   Ú
setFeature)r   r   Ústater   r   r   r}   @  s    zXMLFilterBase.setFeaturec             C   s   | j  |¡S )N)rg   ÚgetProperty)r   r   r   r   r   r   C  s    zXMLFilterBase.getPropertyc             C   s   | j  ||¡ d S )N)rg   ÚsetProperty)r   r   r
   r   r   r   r€   F  s    zXMLFilterBase.setPropertyc             C   s   | j S )N)rg   )r   r   r   r   Ú	getParentK  s    zXMLFilterBase.getParentc             C   s
   || _ d S )N)rg   )r   rh   r   r   r   Ú	setParentN  s    zXMLFilterBase.setParent)N)r"   r#   r$   rE   rj   rl   rm   ro   rT   rU   rX   rY   r[   rR   r]   r^   ra   rb   rd   rq   rs   rv   rw   rx   rz   r|   r}   r   r€   r   r‚   r   r   r   r   re   ä   s8   
re   Ú c             C   s  t | tƒrt | ¡} n^t| dƒrt| }t ¡ } t | d¡tƒrH|  |¡ n
|  |¡ t|dƒrtt |jtƒrt|  	|j¡ |  
¡ d kr
|  ¡ d kr
|  ¡ }tj tj |¡¡}tj ||¡}tj |¡rÜ|  	|¡ t|dƒ}n$|  	tj ||¡¡ tj |  ¡ ¡}|  |¡ | S )NÚreadr   r   Úrb)r0   r_   r   ZInputSourceÚhasattrr„   ZsetCharacterStreamZsetByteStreamr   ZsetSystemIdZgetCharacterStreamZgetByteStreamZgetSystemIdÚosÚpathÚdirnameÚnormpathÚjoinÚisfileÚopenÚurllibrx   ZurljoinZrequestZurlopen)ry   ÚbaseÚfZsysidZbaseheadZsysidfilenamer   r   r   Úprepare_input_sourceS  s*    




r‘   )rƒ   )r‡   Zurllib.parserŽ   Zurllib.requestr1   r3   rƒ   r   r   r   r   r   r   r@   rD   rA   rf   re   r‘   r   r   r   r   Ú<module>   s   )so