o
    JAfa                     @   s  	 g d Z dZddlZddlZ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
 G dd deZdd	 ZG d
d dZi fddZd]ddZd]ddZeZG dd dZG dd dZejdd Zd]ddZdd ZdZzeeZW n	 ey}   Y nw dd Zdd  Zeeed!Zd"d# Zd$d%d&d'd(d)d*d+Z e e_ d,d- Z!d.d/ Z"d0d1 Z#d2d3 Z$d^ddd4d5d6d7Z%G d8d9 d9ej&Z'd^ddd4d5d:d;Z(d<d= Z)d_d?d@Z*d]dAdBZ+d^dCdDZ,G dEdF dFZ-d]dGdHZ.d]dIdJZ/e.Z0d]dKdLZ1G dMdN dNZ2G dOdP dPZ3d]dddQdRdSZ4e5dTej6j7Z8G dUdV dVZ9dWdX Z:dYdZ Z;zeZ<dd[l=T dd\l=m>Z> W n e?y<   Y dS w e>ee dS )`)CommentdumpElementElementTree
fromstringfromstringlistindent	iselement	iterparseparse
ParseErrorPIProcessingInstructionQName
SubElementtostringtostringlistTreeBuilderVERSIONXMLXMLID	XMLParserXMLPullParserregister_namespacecanonicalizeC14NWriterTargetz1.3.0    N   )ElementPathc                   @   s   e Zd Z	 dS )r   N)__name__
__module____qualname__ r!   r!   ,/usr/lib/python3.10/xml/etree/ElementTree.pyr   j   s    r   c                 C   s   	 t | dS )Ntag)hasattr)elementr!   r!   r"   r   x   s   
r   c                   @   s  e Zd Z	 dZ	 dZ	 dZ	 dZ	 i f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d6d d!Zd7d"d#Zd6d$d%Zd6d&d'Zd(d) Zd6d*d+Zd,d- Zd.d/ Zd0d1 Zd6d2d3Zd4d5 Z dS )8r   Nc                 K   s:   t |tstd|jjf || _i ||| _g | _d S )Nzattrib must be dict, not %s)
isinstancedict	TypeError	__class__r   r#   attrib	_children)selfr#   r*   extrar!   r!   r"   __init__   s   

zElement.__init__c                 C   s   d| j j| jt| f S )Nz<%s %r at %#x>)r)   r   r#   idr,   r!   r!   r"   __repr__      zElement.__repr__c                 C   s   	 |  ||S N)r)   )r,   r#   r*   r!   r!   r"   makeelement   s   zElement.makeelementc                 C   s   	 t dt |  S )Nz7elem.copy() is deprecated. Use copy.copy(elem) instead.)warningswarnDeprecationWarning__copy__r0   r!   r!   r"   copy   s   zElement.copyc                 C   s0   |  | j| j}| j|_| j|_| |d d < |S r3   )r4   r#   r*   texttail)r,   elemr!   r!   r"   r8      s
   zElement.__copy__c                 C   
   t | jS r3   )lenr+   r0   r!   r!   r"   __len__      
zElement.__len__c                 C   s   t jdtdd t| jdkS )NzyThe behavior of this method will change in future versions.  Use specific 'len(elem)' or 'elem is not None' test instead.   
stacklevelr   )r5   r6   FutureWarningr>   r+   r0   r!   r!   r"   __bool__   s
   zElement.__bool__c                 C   s
   | j | S r3   r+   r,   indexr!   r!   r"   __getitem__   r@   zElement.__getitem__c                 C   s8   t |tr|D ]}| | qn| | || j|< d S r3   )r&   slice_assert_is_elementr+   )r,   rH   r%   eltr!   r!   r"   __setitem__   s   

zElement.__setitem__c                 C   s   | j |= d S r3   rF   rG   r!   r!   r"   __delitem__   s   zElement.__delitem__c                 C   s   	 |  | | j| d S r3   rK   r+   appendr,   
subelementr!   r!   r"   rP      s   
zElement.appendc                 C   s&   	 |D ]}|  | | j| qd S r3   rO   )r,   elementsr%   r!   r!   r"   extend   s
   
zElement.extendc                 C   s   	 |  | | j|| d S r3   )rK   r+   insert)r,   rH   rR   r!   r!   r"   rU     s   
zElement.insertc                 C   s    t |tstdt|j d S )Nzexpected an Element, not %s)r&   _Element_Pyr(   typer   )r,   er!   r!   r"   rK     s   
zElement._assert_is_elementc                 C      	 | j | d S r3   )r+   removerQ   r!   r!   r"   rZ     s   zElement.removec                 C      	 t | ||S r3   )r   findr,   path
namespacesr!   r!   r"   r\        zElement.findc                 C   s   	 t | |||S r3   )r   findtextr,   r^   defaultr_   r!   r!   r"   ra   &  s   zElement.findtextc                 C   r[   r3   )r   findallr]   r!   r!   r"   rd   4  r`   zElement.findallc                 C   r[   r3   )r   iterfindr]   r!   r!   r"   re   ?  r`   zElement.iterfindc                 C   s"   	 | j   g | _d  | _| _d S r3   )r*   clearr+   r:   r;   r0   r!   r!   r"   rf   J  s   
zElement.clearc                 C   s   	 | j ||S r3   )r*   get)r,   keyrc   r!   r!   r"   rg   U  s   
zElement.getc                 C   s   	 || j |< d S r3   )r*   )r,   rh   valuer!   r!   r"   setb  s   zElement.setc                 C      	 | j  S r3   )r*   keysr0   r!   r!   r"   rl   l  s   
zElement.keysc                 C   rk   r3   )r*   itemsr0   r!   r!   r"   rm   u  s   
zElement.itemsc                 c   sH    	 |dkrd }|d u s| j |kr| V  | jD ]
}||E d H  qd S )N*)r#   r+   iter)r,   r#   rX   r!   r!   r"   ro     s   
zElement.iterc                 c   s\    	 | j }t|ts|d urd S | j}|r|V  | D ]}| E d H  |j}|r+|V  qd S r3   )r#   r&   strr:   itertextr;   )r,   r#   trX   r!   r!   r"   rq     s   zElement.itertextr3   NN)!r   r   r    r#   r*   r:   r;   r.   r1   r4   r9   r8   r?   rE   rI   rM   rN   rP   rT   rU   rK   rZ   r\   ra   rd   re   rf   rg   rj   rl   rm   ro   rq   r!   r!   r!   r"   r   }   sH    






	
r   c                 K   s(   	 i ||}|  ||}| | |S r3   )r4   rP   )parentr#   r*   r-   r%   r!   r!   r"   r     s
   
r   c                 C   s   	 t t}| |_|S r3   )r   r   r:   )r:   r%   r!   r!   r"   r     s   r   c                 C   s(   	 t t}| |_|r|jd | |_|S )N )r   r   r:   )targetr:   r%   r!   r!   r"   r     s   	r   c                   @   sX   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S )r   Nc                 C   s   |rd||f }|| _ d S )Nz{%s}%sr:   )r,   Ztext_or_urir#   r!   r!   r"   r.     s   
zQName.__init__c                 C   s   | j S r3   rw   r0   r!   r!   r"   __str__  s   zQName.__str__c                 C   s   d| j j| jf S )Nz<%s %r>)r)   r   r:   r0   r!   r!   r"   r1        zQName.__repr__c                 C   r=   r3   )hashr:   r0   r!   r!   r"   __hash__  r@   zQName.__hash__c                 C   s    t |tr| j|jkS | j|kS r3   r&   r   r:   r,   otherr!   r!   r"   __le__     

zQName.__le__c                 C   s    t |tr| j|jk S | j|k S r3   r|   r}   r!   r!   r"   __lt__  r   zQName.__lt__c                 C   s    t |tr| j|jkS | j|kS r3   r|   r}   r!   r!   r"   __ge__  r   zQName.__ge__c                 C   s    t |tr| j|jkS | j|kS r3   r|   r}   r!   r!   r"   __gt__  r   zQName.__gt__c                 C   s    t |tr| j|jkS | j|kS r3   r|   r}   r!   r!   r"   __eq__  r   zQName.__eq__r3   )r   r   r    r.   rx   r1   r{   r   r   r   r   r   r!   r!   r!   r"   r     s    
r   c                   @   s   e Zd Z	 dddZdd Zdd Zddd	Zdd
dZdddZdddZ	dddZ
dddZ				dddddZdd ZdS )r   Nc                 C   s   || _ |r| | d S d S r3   )_rootr
   )r,   r%   filer!   r!   r"   r.     s   zElementTree.__init__c                 C      	 | j S r3   r   r0   r!   r!   r"   getroot  s   zElementTree.getrootc                 C   s   	 || _ d S r3   r   )r,   r%   r!   r!   r"   _setroot"  s   
zElementTree._setrootc                 C   s   	 d}t |dst|d}d}z<|d u r-t }t |dr-||| _| jW |r,|  S S 	 |d}|s6n|| q.| | _| jW |rK|  S S |rS|  w w )NFreadrbT_parse_wholei   )r$   openr   r   r   closer   feed)r,   sourceparserclose_sourcedatar!   r!   r"   r
   ,  s6   



	





zElementTree.parsec                 C   s   	 | j |S r3   )r   ro   r,   r#   r!   r!   r"   ro   Q  s   	zElementTree.iterc                 C   <   	 |d d dkrd| }t jd| tdd | j||S Nr   /.zThis search is broken in 1.3 and earlier, and will be fixed in a future version.  If you rely on the current behaviour, change it to %rrA   rB   )r5   r6   rD   r   r\   r]   r!   r!   r"   r\   ]     zElementTree.findc                 C   s>   	 |d d dkrd| }t jd| tdd | j|||S r   )r5   r6   rD   r   ra   rb   r!   r!   r"   ra   s  s   zElementTree.findtextc                 C   r   r   )r5   r6   rD   r   rd   r]   r!   r!   r"   rd     r   zElementTree.findallc                 C   r   r   )r5   r6   rD   r   re   r]   r!   r!   r"   re     r   zElementTree.iterfindTshort_empty_elementsc                C   s   	 |sd}n
|t vrtd| |s|dkrd}nd}t||Q\}}|dkr@|s9|d u r@| dkr@| dvr@|d|f  |d	krKt|| j nt| j|\}	}
t | }||| j|	|
|d
 W d    d S W d    d S 1 stw   Y  d S )Nxmlzunknown method %rc14nutf-8us-asciiunicode)r   r   z$<?xml version='1.0' encoding='%s'?>
r:   r   )
_serialize
ValueError_get_writerlower_serialize_textr   _namespaces)r,   file_or_filenameencodingxml_declarationdefault_namespacemethodr   writeZdeclared_encodingqnamesr_   Z	serializer!   r!   r"   r     s6   "zElementTree.writec                 C   s   | j |ddS )Nr   )r   )r   )r,   r   r!   r!   r"   
write_c14n  s   zElementTree.write_c14nrs   r3   )NNNN)r   r   r    r.   r   r   r
   ro   r\   ra   rd   re   r   r   r!   r!   r!   r"   r     s&    




%



5r   c                 c   sf   z| j }W n2 ty8   | dkrd}t| d|dd}|j |fV  W d    Y d S 1 s0w   Y  Y d S w | dkrL|t| dd pGdfV  d S t Y}t| tj	rZ| }n2t| tj
rlt| }||j n t	 }dd |_||_ z
| j|_| j|_W n	 ty   Y nw tj||dd	d
}||j |j |fV  W d    d S 1 sw   Y  d S )Nr   r   wxmlcharrefreplace)r   errorsr   c                   S      dS NTr!   r!   r!   r!   r"   <lambda>  s    z_get_writer.<locals>.<lambda>
)r   r   newline)r   AttributeErrorr   r   getattr
contextlib	ExitStackr&   ioBufferedIOBase	RawIOBaseBufferedWritercallbackdetachwritableseekabletellTextIOWrapper)r   r   r   r   stackr!   r!   r"   r     sL   
&



"r   c                    s  d d ii  rd <  fdd}|   D ]m} | j}t|tr-|jvr,||j nt|tr;|vr:|| n|d urK|turK|turKt| | 	 D ]#\}}t|tr[|j}|vrc|| t|trr|jvrr||j qO| j}t|tr|jvr||j qfS )N c                    s   zU| d d dkrI| dd   dd\}}|}|d u r5t|}|d u r-dt }|dkr5||< |rBd||f | < W d S || < W d S  rOtd| | < W d S  tyc   t|  Y d S w )Nr   {}zns%dr   z%s:%sz<cannot use non-qualified names with default_namespace option)rsplitrg   _namespace_mapr>   r   r(   _raise_serialization_error)qnameurir#   prefixr   r_   r   r!   r"   	add_qname.  s*   

z_namespaces.<locals>.add_qname)
ro   r#   r&   r   r:   rp   r   r   r   rm   )r<   r   r   r#   rh   ri   r:   r!   r   r"   r   #  s<   






r   c                 K   s  |j }|j}|tu r| d|  n|tu r| d|  n|| }|d u r;|r,| t| |D ]}t| ||d |d q.n| d|  t| }	|	sK|r|rlt| dd dD ]\}
}|rad| }| d	|t	|
f  qW|	D ]%\}}
t
|trz|j}t
|
tr||
j }
nt	|
}
| d
|| |
f  qn|st|s|s| d |r| t| |D ]}t| ||d |d q| d| d  n| d |jr| t|j d S d S )N	<!--%s--><?%s?>r   <c                 S      | d S Nr   r!   xr!   r!   r"   r   v      z _serialize_xml.<locals>.<lambda>rh   : xmlns%s="%s" %s="%s"></z />)r#   r:   r   r   _escape_cdata_serialize_xmllistrm   sorted_escape_attribr&   r   r>   r;   )r   r<   r   r_   r   kwargsr#   r:   rX   rm   vkr!   r!   r"   r   `  s`   




r   )ZareabaseZbasefontbrcolframehrZimginputZisindexlinkmetaZparamc                 K   s  |j }|j}|tu r| dt|  n|tu r | dt|  n|| }|d u r=|r0| t| |D ]	}t| ||d  q2n| d|  t| }|sM|r|rnt| dd dD ]\}	}
|
rcd|
 }
| d|
t	|	f  qY|D ]%\}
}	t
|
tr||
j}
t
|	tr||	j }	nt|	}	| d	||
 |	f  qp| d
 | }|r|dks|dkr| | n| t| |D ]	}t| ||d  q|tvr| d| d
  |jr| t|j d S d S )Nr   r   r   c                 S   r   r   r!   r   r!   r!   r"   r     r   z!_serialize_html.<locals>.<lambda>r   r   r   r   r   Zscriptstyler   )r#   r:   r   r   r   _serialize_htmlr   rm   r   r   r&   r   _escape_attrib_htmlr   
HTML_EMPTYr;   )r   r<   r   r_   r   r#   r:   rX   rm   r   r   Zltagr!   r!   r"   r     s\   



r   c                 C   s.   |  D ]}| | q|jr| |j d S d S r3   )rq   r;   )r   r<   partr!   r!   r"   r     s
   
r   )r   htmlr:   c                 C   sN   	 t d| rtdtt D ]\}}||ks|| kr t|= q| t|< d S )Nzns\d+$z'Prefix format reserved for internal use)rematchr   r   r   rm   )r   r   r   r   r!   r!   r"   r     s   r   r   r   ZrdfZwsdlZxsZxsiZdc)$http://www.w3.org/XML/1998/namespacezhttp://www.w3.org/1999/xhtmlz+http://www.w3.org/1999/02/22-rdf-syntax-ns#z http://schemas.xmlsoap.org/wsdl/z http://www.w3.org/2001/XMLSchemaz)http://www.w3.org/2001/XMLSchema-instancez http://purl.org/dc/elements/1.1/c                 C   s   t d| t| jf )Nzcannot serialize %r (type %s))r(   rW   r   rw   r!   r!   r"   r     s   r   c              	   C   d   z!d| v r|  dd} d| v r|  dd} d| v r|  dd} | W S  ttfy1   t|  Y d S w )N&&amp;r   &lt;r   &gt;replacer(   r   r   rw   r!   r!   r"   r     s   r   c              	   C   s   zId| v r|  dd} d| v r|  dd} d| v r|  dd} d| v r)|  dd} d	| v r3|  d	d
} d| v r=|  dd} d| v rG|  dd} | W S  ttfyY   t|  Y d S w )Nr   r   r   r   r   r   "&quot;z&#13;r   z&#10;	z&#09;r   rw   r!   r!   r"   r     s&   r   c              	   C   r   )Nr   r   r   r   r   r  r   rw   r!   r!   r"   r   .  s   r   T)r   r   r   c                C   s<   	 |dkr	t  nt  }t| j||||||d | S )Nr   r   r   r   r   )r   StringIOBytesIOr   r   getvalue)r%   r   r   r   r   r   streamr!   r!   r"   r   =  s   r   c                   @   s6   e Zd Z	 dd Zdd Zdd Zdd Zd	d
 ZdS )_ListDataStreamc                 C   s
   || _ d S r3   )lst)r,   r
  r!   r!   r"   r.   W  r@   z_ListDataStream.__init__c                 C   r   r   r!   r0   r!   r!   r"   r   Z     z_ListDataStream.writablec                 C   r   r   r!   r0   r!   r!   r"   r   ]  r  z_ListDataStream.seekablec                 C   s   | j | d S r3   )r
  rP   )r,   br!   r!   r"   r   `     z_ListDataStream.writec                 C   r=   r3   )r>   r
  r0   r!   r!   r"   r   c  r@   z_ListDataStream.tellN)r   r   r    r.   r   r   r   r   r!   r!   r!   r"   r	  U  s    r	  c                C   s*   g }t |}t| j||||||d |S )Nr  )r	  r   r   )r%   r   r   r   r   r   r
  r  r!   r!   r"   r   f  s   r   c                 C   sR   	 t | ts
t| } | jtjdd |  j}|r|d dkr'tjd d S d S )Nr   )r   r   )r&   r   r   sysstdoutr   r;   )r<   r;   r!   r!   r"   r   s  s   


r     c                    sb   	 t | tr
|  } |dk rtd| t| sd S d|  g fdd  | d d S )Nr   z,Initial indentation level must be >= 0, got r   c                    s   |d }z| }W n t y   |  }| Y nw | jr'| j s*|| _| D ]}t|r7 || |jr?|j sB||_q,|j sO| |_d S d S r   )
IndexErrorrP   r:   stripr>   r;   )r<   levelZchild_levelZchild_indentationchild_indent_childrenZindentationsspacer!   r"   r    s$   

z indent.<locals>._indent_children)r&   r   r   r   r>   )treer  r  r!   r  r"   r     s   
r   c                 C   s   	 t  }|| | |S r3   )r   r
   )r   r   r  r!   r!   r"   r
     s   r
   c                    sR   	 t ||d fddG fdddtjj}|  d  _~t   S )N)events_parserc                 3   s    d}z>t | dst| d} d}d V  	  E d H  | d}|s#n| q } E d H  | _W |r@|   d S d S |rI|   w w )NFr   r   Ti @  )r$   r   read_eventsr   r   _close_and_return_rootrootr   )r   r   r   r  )it
pullparserr!   r"   iterator  s,   




ziterparse.<locals>.iteratorc                       s   e Zd Z jZdS )z$iterparse.<locals>.IterParseIteratorN)r   r   r    __next__r!   )r!  r   r!   r"   IterParseIterator  s    r#  )r   collectionsabcIteratorr  next)r   r  r   r#  r!   )r  r!  r   r   r"   r	     s   r	   c                   @   s<   e Zd ZdddddZdd Zdd Zd	d
 Zdd ZdS )r   N)r  c                C   s<   t  | _|ptt d| _|d u rd}| j| j| d S )Nrv   )end)r$  deque_events_queuer   r   r  
_setevents)r,   r  r  r!   r!   r"   r.     s
   
zXMLPullParser.__init__c              
   C   sb   	 | j d u r
td|r/z	| j | W d S  ty. } z| j| W Y d }~d S d }~ww d S )Nz!feed() called after end of stream)r  r   r   SyntaxErrorr+  rP   )r,   r   excr!   r!   r"   r   
  s   
zXMLPullParser.feedc                 C   s   | j  }d | _ |S r3   )r  r   )r,   r  r!   r!   r"   r    s   
z$XMLPullParser._close_and_return_rootc                 C   s   	 |    d S r3   )r  r0   r!   r!   r"   r     s   zXMLPullParser.closec                 c   s6    	 | j }|r| }t|tr||V  |sd S d S r3   )r+  popleftr&   	Exception)r,   r  eventr!   r!   r"   r  "  s   
zXMLPullParser.read_eventsr3   )r   r   r    r.   r   r  r   r  r!   r!   r!   r"   r     s    
r   c                 C   s$   	 |s	t t d}||  | S Nr(  r   r   r   r   )r:   r   r!   r!   r"   r   1  s
   

r   c                 C   sT   	 |s	t t d}||  | }i }| D ]}|d}|r%|||< q||fS )Nr(  r/   )r   r   r   r   ro   rg   )r:   r   r  Zidsr<   r/   r!   r!   r"   r   B  s   	

r   c                 C   s.   	 |s	t t d}| D ]}|| q| S r2  r3  )Zsequencer   r:   r!   r!   r"   r   Z  s   r   c                   @   sf   e Zd Z	 ddddddddZdd Zdd	 Zd
d Zdd Zdd Zdd Z	dddZ
dd ZdS )r   NF)comment_factory
pi_factoryinsert_comments
insert_pisc                C   sd   g | _ g | _d | _d | _d | _|d u rt}|| _|| _|d u r!t}|| _	|| _
|d u r-t}|| _d S r3   )_data_elem_lastr   _tailr   _comment_factoryr6  r   _pi_factoryr7  r   _factory)r,   Zelement_factoryr4  r5  r6  r7  r!   r!   r"   r.     s    
zTreeBuilder.__init__c                 C   r   r3   r   r0   r!   r!   r"   r     s   zTreeBuilder.closec                 C   sB   | j r| jd urd| j }| jr|| j_n|| j_g | _ d S d S Nr   )r8  r:  joinr;  r;   r:   r,   r:   r!   r!   r"   _flush  s   


zTreeBuilder._flushc                 C   rY   r3   )r8  rP   r,   r   r!   r!   r"   r     s   zTreeBuilder.datac                 C   sZ   	 |    | || | _}| jr| jd | n| jd u r"|| _| j| d| _|S )Nr  r   )rB  r>  r:  r9  rP   r   r;  )r,   r#   attrsr<   r!   r!   r"   start  s   
zTreeBuilder.startc                 C   s"   	 |    | j | _d| _| jS r   )rB  r9  popr:  r;  r   r!   r!   r"   r)    s
   zTreeBuilder.endc                 C   s   	 |  | j| j|S r3   )_handle_singler<  r6  rA  r!   r!   r"   comment  s   
zTreeBuilder.commentc                 C   s   	 |  | j| j||S r3   )rG  r=  r7  )r,   rv   r:   r!   r!   r"   pi  s   zTreeBuilder.pic                 G   s:   || }|r|    || _| jr| jd | d| _|S )Nr  r   )rB  r:  r9  rP   r;  )r,   factoryrU   argsr<   r!   r!   r"   rG    s   zTreeBuilder._handle_singler3   )r   r   r    r.   r   rB  r   rE  r)  rH  rI  rG  r!   r!   r!   r"   r   l  s    
	r   c                   @   sn   e Zd Z	 dd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S )r   N)rv   r   c                C   sN  zddl m} W n ty#   zdd l}W n ty    tdw Y nw ||d}|d u r1t }| | _| _| | _| _	|j
| _i | _| j|_t|drQ| j|_t|drZ| j|_t|drc| j|_t|drl| j|_t|d	ru|j|_t|d
r~|j|_t|dr|j|_d|_d|_d | _ i | _!z	d|j" | _#W d S  t$y   Y d S w )Nr   expatz7No module named expat; use SimpleXMLTreeBuilder insteadr   rE  r)  start_nsend_nsr   rH  rI  r   zExpat %d.%d.%d)%xml.parsersrM  ImportErrorZpyexpatZParserCreater   r   r  rv   _targeterror_error_names_defaultZDefaultHandlerExpandr$   _startStartElementHandler_endEndElementHandler	_start_nsStartNamespaceDeclHandler_end_nsEndNamespaceDeclHandlerr   ZCharacterDataHandlerrH  CommentHandlerrI  ProcessingInstructionHandlerZbuffer_textordered_attributes_doctypeentityversion_infoversionr   )r,   rv   r   rM  r   r!   r!   r"   r.     sV   






zXMLParser.__init__c                 C   s*  | j }|j}|D ]}|dkrd|_||| jfdd}||_q|dkr/||| jfdd}||_q|dkrNt| jdrC||| j	fd	d}n||fd
d}||_
q|dkrmt| jdrb||| jfdd}n||fdd}||_q|dkr}||| fdd}||_q|dkr||| fdd}||_qtd| d S )NrE  r   c                 S      |||| |f d S r3   r!   )r#   Z	attrib_inr1  rP   rE  r!   r!   r"   handler)     z%XMLParser._setevents.<locals>.handlerr)  c                 S      |||| f d S r3   r!   )r#   r1  rP   r)  r!   r!   r"   rg  .     zstart-nsrN  c                 S   rf  r3   r!   )r   r   r1  rP   rN  r!   r!   r"   rg  5  rh  c                 S   s   ||| pd|pdff d S r?  r!   )r   r   r1  rP   r!   r!   r"   rg  9  s   zend-nsrO  c                 S   ri  r3   r!   )r   r1  rP   rO  r!   r!   r"   rg  ?  rj  c                 S   s   ||d f d S r3   r!   )r   r1  rP   r!   r!   r"   rg  C  r  rH  c                 S   s   |||j | f d S r3   )rv   rH  )r:   r1  rP   r,   r!   r!   r"   rg  G  r2   rI  c                 S   s   |||j | |f d S r3   )rv   rI  )Z	pi_targetr   r1  rP   r,   r!   r!   r"   rg  K  s   zunknown event %r)r  rP   ra  rW  rX  rY  rZ  r$   rv   r[  r\  r]  r^  r_  r`  r   )r,   Zevents_queueZevents_to_reportr   rP   Z
event_namerg  r!   r!   r"   r,    sL   


zXMLParser._seteventsc                 C   s"   t |}|j|_|j|jf|_|r3   )r   codelinenooffsetZposition)r,   ri   errr!   r!   r"   _raiseerrorR  s   zXMLParser._raiseerrorc                 C   sD   z| j | }W |S  ty!   |}d|v rd| }|| j |< Y |S w )Nr   r   )rU  KeyError)r,   rh   namer!   r!   r"   _fixnameX  s   zXMLParser._fixnamec                 C   s   | j |pd|p	dS r?  )rv   rN  r,   r   r   r!   r!   r"   r[  c  s   zXMLParser._start_nsc                 C   s   | j |pdS r?  )rv   rO  )r,   r   r!   r!   r"   r]  f  r  zXMLParser._end_nsc                 C   sR   | j }||}i }|r"tdt|dD ]}||d  |||| < q| j||S )Nr   rA   r   )rr  ranger>   rv   rE  )r,   r#   	attr_listZfixnamer*   ir!   r!   r"   rW  i  s   zXMLParser._startc                 C   s   | j | |S r3   )rv   r)  rr  r   r!   r!   r"   rY  u  ry   zXMLParser._endc              	   C   s  |d d }|dkrTz| j j}W n
 ty   Y d S w z|| j|dd   W d S  tyS   ddlm} |d|| jj	| jj
f }d|_| jj	|_| jj
|_|w |dkre|d d	 d
kreg | _d S | jd ur|dkrsd | _d S | }|s{d S | j| t| j}|dkr| jd }|dkr|dkr| j\}}}	}
|	r|	dd }	n|dkr|dkr| j\}}}
d }	nd S t| j dr| j ||	|
dd  nt| drtdt d | _d S d S d S )Nr   r   r  r   rL  z'undefined entity %s: line %d, column %d   r   	   z	<!DOCTYPEr   rA   ZPUBLIC   ZSYSTEM   doctypezaThe doctype() method of XMLParser is ignored.  Define doctype() method on the TreeBuilder target.)rv   r   r   rc  rp  rP  rM  rS  r   ZErrorLineNumberZErrorColumnNumberrk  rl  rm  rb  r  rP   r>   r$   r{  r5   r6   RuntimeWarning)r,   r:   r   Zdata_handlerrM  rn  nrW   rq  Zpubidsystemr!   r!   r"   rV  x  sn   








zXMLParser._defaultc              
   C   sJ   	 z
| j |d W d S  | jy$ } z| | W Y d }~d S d }~ww )NF)r   ParserT  ro  )r,   r   r   r!   r!   r"   r     s   zXMLParser.feedc              
   C   s   	 z	| j dd W n | jy" } z| | W Y d }~nd }~ww z'z| jj}W n	 ty3   Y nw | W | ` | `| `| `S W | ` | `| `| `d S | ` | `| `| `w )N    T)	r   r  rT  ro  rv   r   r   r  rR  )r,   r   Zclose_handlerr!   r!   r"   r     s(   

zXMLParser.close)r   r   r    r.   r,  ro  rr  r[  r]  rW  rY  rV  r   r   r!   r!   r!   r"   r     s    	-56r   )out	from_filec                K   s   	 | d u r|d u rt dd }|d u rt  }}tt|jfi |d}| d ur3||  |  n
|d ur=t||d |d urE|	 S d S )Nz:Either 'xml_data' or 'from_file' must be provided as inputr(  )r   )
r   r   r  r   r   r   r   r   r
   r  )Zxml_datar  r  optionssior   r!   r!   r"   r     s   

r   z	^\w+:\w+$c                   @   s   e Zd Z	 ddddddddddZefddZdd	 Zdd
dZdd Zdj	fddZ
dd Zdd ZdddZdd Zdd Zdd ZdS )r   FN)with_comments
strip_textrewrite_prefixesqname_aware_tagsqname_aware_attrsexclude_attrsexclude_tagsc          	      C   s   || _ g | _|| _|| _|rt|nd | _|rt|nd | _|| _|r)t|| _nd | _|r5t|j	| _
nd | _
dgg| _g | _|sL| jtt  | jg  i | _dg| _d | _d| _d| _d| _d S )N)r   r   Fr   )_writer8  _with_comments_strip_textrj   _exclude_attrs_exclude_tags_rewrite_prefixes_qname_aware_tagsintersection_find_qname_aware_attrs_declared_ns_stack	_ns_stackrP   r   r   rm   _prefix_map_preserve_space_pending_start
_root_seen
_root_done_ignored_depth)	r,   r   r  r  r  r  r  r  r  r!   r!   r"   r.     s2   
zC14NWriterTarget.__init__c                 c   s"    ||D ]	}|r|E d H  qd S r3   r!   )r,   Zns_stackZ	_reversedr_   r!   r!   r"   _iter_namespaces&  s   
z!C14NWriterTarget._iter_namespacesc                 C   sX   | dd\}}| | jD ]\}}||kr d| d|   S qtd| d| d)Nr   r   r   r   zPrefix z of QName "" is not declared in scope)splitr  r  r   )r,   Zprefixed_namer   rq  r   pr!   r!   r"   _resolve_prefix_name+  s   z%C14NWriterTarget._resolve_prefix_namec                 C   sx  |d u r|d d dkr|dd   ddnd|f\}}n|}t }| | jD ]!\}}||krD||vrD|r=| d| n|||f  S || q(| jry|| jv rX| j| }ndt| j  }| j|< | jd ||f | d| ||fS |sd|vr|||fS | | j	D ]"\}}||kr| jd ||f |r| d| n|||f  S q|s|||fS t
d| d	)
Nr   r   r   r   r   r}  r  zNamespace "r  )r   rj   r  r  addr  r  r>   rP   r  r   )r,   r   r   r#   Zprefixes_seenur   r!   r!   r"   _qname2  s0   2 

 
zC14NWriterTarget._qnamec                 C   s   | j s| j| d S d S r3   )r  r8  rP   rC  r!   r!   r"   r   W  s   zC14NWriterTarget.datar   c                 C   s   || j }| j d d = | jr| jd s| }| jd ur=| jd }| _|r+t|r+|nd }| jg ||R   |d ur=d S |rK| jrM| t	| d S d S d S Nr  )
r8  r  r  r  r  _looks_like_prefix_namerW  r  r  _escape_cdata_c14n)r,   Z
_join_textr   rK  
qname_textr!   r!   r"   rB  [  s   


zC14NWriterTarget._flushc                 C   s0   | j rd S | jr|   | jd ||f d S r  )r  r8  rB  r  rP   rs  r!   r!   r"   rN  i  s
   zC14NWriterTarget.start_nsc                 C   s   | j d ur| js|| j v r|  jd7  _d S | jr|   g }| j| | jd ur7|| jv r7|||f| _d S | ||| d S r   )	r  r  r8  rB  r  rP   r  r  rW  )r,   r#   rD  new_namespacesr!   r!   r"   rE  q  s   

zC14NWriterTarget.startc                    s  j d ur|rfdd| D }|h|}i }|d ur+| }||< || jd urX|rX|}|rU|D ]}	||	 }
t|
rS|
 }||
< || q;nd }nd }j  fddt|dd dD }|rzdd |D }|  ng }|rt| D ]*\}}|d ur||v r||v r|||  d	 }|| \}}	}|	|r|n|	|f q|
d
}j	|r|dknjd  j}|d|| d	   |r|ddd |D  |d |d ur|t|||  d	  d_j	g  d S )Nc                    s    i | ]\}}| j vr||qS r!   )r  .0r   r   r0   r!   r"   
<dictcomp>  s     z+C14NWriterTarget._start.<locals>.<dictcomp>c                    s   i | ]}| |qS r!   r!   )r  r}  )parse_qnamer!   r"   r    s    c                 S   s   |  ddS )Nr   r   )r  )r}  r!   r!   r"   r     s    z)C14NWriterTarget._start.<locals>.<lambda>r   c                 S   s$   g | ]\}}|rd | nd|fqS )zxmlns:Zxmlnsr!   )r  r   r   r!   r!   r"   
<listcomp>  s    z+C14NWriterTarget._start.<locals>.<listcomp>r   z+{http://www.w3.org/XML/1998/namespace}spaceZpreserver  r   r   c                 S   s&   g | ]\}}d | dt | dqS )ru   z="r   )_escape_attrib_c14nr  r!   r!   r"   r    s   & r   T)r  rm   r  r  r  r  r  r   sortrP   rg   r  r  r@  r  r  r  )r,   r#   rD  r  r  r   Zresolved_namesr   ZqattrsZ	attr_nameri   Zparsed_qnamesru  r   r   Z
attr_qnamer   Zspace_behaviourr   r!   )r  r,   r"   rW    sb   






zC14NWriterTarget._startc                 C   st   | j r|  j d8  _ d S | jr|   | d| |d  d | j  t| jdk| _| j	  | j
  d S )Nr   r   r   r   )r  r8  rB  r  r  r  rF  r>   r  r  r  r   r!   r!   r"   r)    s   

zC14NWriterTarget.endc                 C   sh   | j sd S | jr
d S | jr| d n
| jr| jr|   | dt| d | js2| d d S d S )Nr   z<!--z-->)r  r  r  r  r  r8  rB  r  rA  r!   r!   r"   rH    s   zC14NWriterTarget.commentc                 C   st   | j rd S | jr| d n
| jr| jr|   | |r'd| dt| dnd| d | js8| d d S d S )Nr   z<?ru   z?>)r  r  r  r  r8  rB  r  )r,   rv   r   r!   r!   r"   rI    s   $zC14NWriterTarget.pir3   )r   r   r    r.   reversedr  r  r  r   r@  rB  rN  rE  rW  r)  rH  rI  r!   r!   r!   r"   r     s"    %
%
Er   c              	   C   sx   z+d| v r|  dd} d| v r|  dd} d| v r|  dd} d| v r)|  dd} | W S  ttfy;   t|  Y d S w )	Nr   r   r   r   r   r   r  &#xD;r   rw   r!   r!   r"   r    s   r  c              	   C   s   z?d| v r|  dd} d| v r|  dd} d| v r|  dd} d| v r)|  dd} d	| v r3|  d	d
} d| v r=|  dd} | W S  ttfyO   t|  Y d S w )Nr   r   r   r   r   r  r  z&#x9;r   z&#xA;r  r  r   rw   r!   r!   r"   r     s"   r  )rn   )_set_factoriesr3   rs   )r  r   )@__all__r   r  r   r5   r   r$  collections.abcr   r   r   r-  r   r   r   r   r   r   r   r   r   contextmanagerr   r   r   r   rj   	NameErrorr   r   r   r   r   r   r   r   r   r   r   r	  r   r   r   r
   r	   r   r   r   r   r   r   r   r   compileUNICODEr   r  r   r  r  rV   _elementtreer  rQ  r!   r!   r!   r"   <module>   s    H  /

0 e

1=22	

6
2
5

z e  