o
    JAf/                     @   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$   	 |  D ]
\}}| ||} q| S N)itemsreplace)sdkeyvalue r   '/usr/lib/python3.10/xml/sax/saxutils.py__dict_replace   s   r   c                 C   s8   	 |  dd} |  dd} |  dd} |rt| |} | S )N&&amp;>&gt;<&lt;r   r   dataZentitiesr   r   r   escape   s   
r   c                 C   s4   	 |  dd} |  dd} |rt| |} |  ddS )Nr   r   r   r   r   r   r   r   r   r   r   unescape"   s   
r   c                 C   s\   	 i |dddd}t | |} d| v r(d| v r"d| dd } | S d	|  } | S d|  } | S )
Nz&#10;z&#13;z&#9;)
	"'z"%s"z&quot;z'%s')r   r   r   r   r   r   	quoteattr0   s   

r   c                    s    d u rdd l }|jS t tjr S t tjtjfr S t tjr6G  fddd}| }dd |_	n!t
 }dd |_ j|_z
 j|_ j|_W n	 tyV   Y nw 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 r   )getattrselfnameoutr   r   __getattr__Z      
z,_gettextwriter.<locals>._wrapper.__getattr__N)__name__
__module____qualname__	__class__r&   r   r$   r   r   _wrapperX   s    r,   c                   S   s   d S r   r   r   r   r   r   <lambda>]       z _gettextwriter.<locals>.<lambda>c                   S   s   dS )NTr   r   r   r   r   r-   b   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%   r0   r4   r,   bufferr   r$   r   _gettextwriterG   s2   
rF   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 )NF)r   ContentHandler__init__rF   r@   _writeflush_flush_ns_contexts_current_context_undeclared_ns_maps	_encoding_short_empty_elements_pending_start_element)r"   r%   r0   Zshort_empty_elementsr   r   r   rK   r   s   

zXMLGenerator.__init__c                 C   sL   	 |d r"d|d krd|d  S | j |d  }|r"|d |d  S |d S )Nr   z$http://www.w3.org/XML/1998/namespacezxml:r   :)rP   )r"   r#   prefixr   r   r   _qname~   s   zXMLGenerator._qnamec                 C   s   | j r| d d| _ d S d S )Nr   FrT   rL   )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"?>
)rL   rR   r"   r   r   r   startDocument   s   
zXMLGenerator.startDocumentc                 C   s   |    d S r   )rN   r[   r   r   r   endDocument      zXMLGenerator.endDocumentc                 C   s0   | j | j  || j|< | j||f d S r   )rO   appendrP   copyrQ   r"   rV   urir   r   r   startPrefixMapping   s   
zXMLGenerator.startPrefixMappingc                 C   s   | j d | _| j d= d S )NrI   )rO   rP   r"   rV   r   r   r   endPrefixMapping   s   zXMLGenerator.endPrefixMappingc                 C   s\   |    | d|  | D ]\}}| d|t|f  q| jr'd| _d S | d d S )Nr    %s=%sTr   )rZ   rL   r   r   rS   rT   )r"   r#   attrsr   r   r   r   startElement   s   
zXMLGenerator.startElementc                 C   s,   | j r| d d| _ d S | d|  d S Nz/>Fz</%s>rX   r!   r   r   r   rY      s   

zXMLGenerator.endElementc                 C   s   |    | d| |  | jD ]\}}|r!| d||f  q| d|  qg | _| D ]\}}| d| |t|f  q0| jrKd| _d S | d d S )Nr   z xmlns:%s="%s"z xmlns="%s"rf   Tr   )rZ   rL   rW   rQ   r   r   rS   rT   )r"   r#   qnamerg   rV   rb   r   r   r   r   startElementNS   s   
zXMLGenerator.startElementNSc                 C   s2   | j r| d d| _ d S | d| |  d S ri   )rT   rL   rW   r"   r#   rj   r   r   r   endElementNS   s   

zXMLGenerator.endElementNSc                 C   s8   |r|    t|tst|| j}| t| d S d S r   )rZ   r6   strrR   rL   r   r"   Zcontentr   r   r   
characters   s   
zXMLGenerator.charactersc                 C   s4   |r|    t|tst|| j}| | d S d S r   )rZ   r6   rn   rR   rL   ro   r   r   r   ignorableWhitespace   s   
z XMLGenerator.ignorableWhitespacec                 C   s   |    | d||f  d S )Nz	<?%s %s?>)rZ   rL   r"   targetr   r   r   r   processingInstruction   s   z"XMLGenerator.processingInstruction)NrH   F)F)r(   r)   r*   rK   rW   rZ   r\   r]   rc   re   rh   rY   rk   rm   rp   rq   rt   r   r   r   r   rG   p   s    


rG   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 r   )r   	XMLReaderrK   _parentr"   parentr   r   r   rK      s   
zXMLFilterBase.__init__c                 C      | j | d S r   )_err_handlererrorr"   	exceptionr   r   r   r|         zXMLFilterBase.errorc                 C   rz   r   )r{   
fatalErrorr}   r   r   r   r      r   zXMLFilterBase.fatalErrorc                 C   rz   r   )r{   warningr}   r   r   r   r      r   zXMLFilterBase.warningc                 C   rz   r   )_cont_handlersetDocumentLocator)r"   Zlocatorr   r   r   r      r   z XMLFilterBase.setDocumentLocatorc                 C      | j   d S r   )r   r\   r[   r   r   r   r\         zXMLFilterBase.startDocumentc                 C   r   r   )r   r]   r[   r   r   r   r]     r   zXMLFilterBase.endDocumentc                 C      | j || d S r   )r   rc   ra   r   r   r   rc        z XMLFilterBase.startPrefixMappingc                 C   rz   r   )r   re   rd   r   r   r   re     r   zXMLFilterBase.endPrefixMappingc                 C   r   r   )r   rh   )r"   r#   rg   r   r   r   rh     r   zXMLFilterBase.startElementc                 C   rz   r   )r   rY   r!   r   r   r   rY     r   zXMLFilterBase.endElementc                 C      | j ||| d S r   )r   rk   )r"   r#   rj   rg   r   r   r   rk        zXMLFilterBase.startElementNSc                 C   r   r   )r   rm   rl   r   r   r   rm     r   zXMLFilterBase.endElementNSc                 C   rz   r   )r   rp   ro   r   r   r   rp     r   zXMLFilterBase.charactersc                 C   rz   r   )r   rq   )r"   charsr   r   r   rq     r   z!XMLFilterBase.ignorableWhitespacec                 C   r   r   )r   rt   rr   r   r   r   rt     r   z#XMLFilterBase.processingInstructionc                 C   rz   r   )r   skippedEntityr!   r   r   r   r      r   zXMLFilterBase.skippedEntityc                 C   r   r   )_dtd_handlernotationDecl)r"   r#   publicIdsystemIdr   r   r   r   %  r   zXMLFilterBase.notationDeclc                 C   s   | j |||| d S r   )r   unparsedEntityDecl)r"   r#   r   r   Zndatar   r   r   r   (  s   z XMLFilterBase.unparsedEntityDeclc                 C   s   | j ||S r   )Z_ent_handlerresolveEntity)r"   r   r   r   r   r   r   -  r   zXMLFilterBase.resolveEntityc                 C   s@   | j |  | j |  | j |  | j |  | j | d S r   )rw   ZsetContentHandlerZsetErrorHandlerZsetEntityResolverZsetDTDHandlerparse)r"   sourcer   r   r   r   2  s
   zXMLFilterBase.parsec                 C   rz   r   )rw   	setLocale)r"   localer   r   r   r   9  r   zXMLFilterBase.setLocalec                 C      | j |S r   )rw   
getFeaturer!   r   r   r   r   <  r^   zXMLFilterBase.getFeaturec                 C   r   r   )rw   
setFeature)r"   r#   stater   r   r   r   ?  r   zXMLFilterBase.setFeaturec                 C   r   r   )rw   getPropertyr!   r   r   r   r   B  r^   zXMLFilterBase.getPropertyc                 C   r   r   )rw   setProperty)r"   r#   r   r   r   r   r   E  r   zXMLFilterBase.setPropertyc                 C   s   | j S r   rw   r[   r   r   r   	getParentJ  s   zXMLFilterBase.getParentc                 C   s
   || _ d S r   r   rx   r   r   r   	setParentM  r'   zXMLFilterBase.setParentr   )r(   r)   r*   rK   r|   r   r   r   r\   r]   rc   re   rh   rY   rk   rm   rp   rq   rt   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   ru      s<    
ru    c                 C   s"  	 t | tjrt| } t | trt| } n/t| drF| }t } t |dtr0| 	| n| 
| t|drFt |jtrF| |j |  d u r|  d u r|  }tjtj|}tj||}tj|rx| | t|d}n| tj|| tj|  }| 
| | S )Nreadr   r#   rb)r6   osPathLikefspathrn   r   ZInputSourcehasattrr   ZsetCharacterStreamZsetByteStreamr#   ZsetSystemIdZgetCharacterStreamZgetByteStreamZgetSystemIdpathdirnamenormpathjoinisfileopenurllibr   urljoinZrequesturlopen)r   basefZsysidZbaseheadZsysidfilenamer   r   r   prepare_input_sourceR  s0   





r   )r   )r   urllib.parser   Zurllib.requestr7   r9   r   r   r   r   r   r   r   rF   rJ   rG   rv   ru   r   r   r   r   r   <module>   s    )so