a
    "h"                    @   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0 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'daddd4d5d:d;Z(d<d= Z)dbd?d@Z*dcdAdBZ+dddCdDZ,G dEdF dFZ-dedGdHZ.dfdIdJZ/e.Z0dgdKdLZ1G dMdN dNZ2G dOdP dPZ3dhd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?yt   Y n0 e>ee dS )i)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!   =/opt/python-3.9.21/usr/lib/python3.9/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d8d$d%Zd9d&d'Zd(d) Zd:d*d+Zd,d- Zd.d/ Zd0d1 Zd;d2d3Zd4d5 Z dS )<r   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__   s    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 r2   )r3   r#   r*   texttail)r,   elemr!   r!   r"   r7      s
    zElement.__copy__c                 C   s
   t | jS r2   )lenr+   r0   r!   r!   r"   __len__   s    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   )r4   r5   FutureWarningr<   r+   r0   r!   r!   r"   __bool__   s
    zElement.__bool__c                 C   s
   | j | S r2   r+   r,   indexr!   r!   r"   __getitem__   s    zElement.__getitem__c                 C   s8   t |tr |D ]}| | qn
| | || j|< d S r2   )r&   slice_assert_is_elementr+   )r,   rE   r%   eltr!   r!   r"   __setitem__   s
    

zElement.__setitem__c                 C   s   | j |= d S r2   rC   rD   r!   r!   r"   __delitem__   s    zElement.__delitem__c                 C   s   |  | | j| d S r2   rH   r+   appendr,   
subelementr!   r!   r"   rM      s    
zElement.appendc                 C   s$   |D ]}|  | | j| qd S r2   rL   )r,   elementsr%   r!   r!   r"   extend   s    
zElement.extendc                 C   s   |  | | j|| d S r2   )rH   r+   insert)r,   rE   rO   r!   r!   r"   rR     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"   rH     s    
zElement._assert_is_elementc                 C   s   | j | d S r2   )r+   removerN   r!   r!   r"   rV     s    zElement.removec                 C   s   t | ||S r2   )r   findr,   path
namespacesr!   r!   r"   rW     s    	zElement.findc                 C   s   t | |||S r2   )r   findtextr,   rY   defaultrZ   r!   r!   r"   r[   &  s    zElement.findtextc                 C   s   t | ||S r2   )r   findallrX   r!   r!   r"   r^   4  s    	zElement.findallc                 C   s   t | ||S r2   )r   iterfindrX   r!   r!   r"   r_   ?  s    	zElement.iterfindc                 C   s    | j   g | _d  | _| _d S r2   )r*   clearr+   r9   r:   r0   r!   r!   r"   r`   J  s    
zElement.clearc                 C   s   | j ||S r2   )r*   get)r,   keyr]   r!   r!   r"   ra   U  s    zElement.getc                 C   s   || j |< d S r2   )r*   )r,   rb   valuer!   r!   r"   setb  s    zElement.setc                 C   s
   | j  S r2   )r*   keysr0   r!   r!   r"   re   l  s    zElement.keysc                 C   s
   | j  S r2   )r*   itemsr0   r!   r!   r"   rf   u  s    	zElement.itemsc                 c   sD   |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#   rU   r!   r!   r"   rh     s    
zElement.iterc                 c   sX   | j }t|ts|d urd S | j}|r,|V  | D ]"}| E d H  |j}|r0|V  q0d S r2   )r#   r&   strr9   itertextr:   )r,   r#   trU   r!   r!   r"   rj     s    zElement.itertext)N)NN)N)N)N)N)!r   r   r    r#   r*   r9   r:   r.   r1   r3   r8   r7   r=   rB   rF   rJ   rK   rM   rQ   rR   rH   rV   rW   r[   r^   r_   r`   ra   rd   re   rf   rh   rj   r!   r!   r!   r"   r   }   s<   	






	
r   c                 K   s&   i ||}|  ||}| | |S r2   )r3   rM   )parentr#   r*   r-   r%   r!   r!   r"   r     s    
r   c                 C   s   t t}| |_|S r2   )r   r   r9   )r9   r%   r!   r!   r"   r     s    	r   c                 C   s&   t t}| |_|r"|jd | |_|S )N )r   r   r9   )targetr9   r%   r!   r!   r"   r     s
    
r   c                   @   sV   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r9   )r,   Ztext_or_urir#   r!   r!   r"   r.     s    zQName.__init__c                 C   s   | j S r2   ro   r0   r!   r!   r"   __str__  s    zQName.__str__c                 C   s   d| j j| jf S )Nz<%s %r>)r)   r   r9   r0   r!   r!   r"   r1     s    zQName.__repr__c                 C   s
   t | jS r2   )hashr9   r0   r!   r!   r"   __hash__  s    zQName.__hash__c                 C   s    t |tr| j|jkS | j|kS r2   r&   r   r9   r,   otherr!   r!   r"   __le__  s    
zQName.__le__c                 C   s    t |tr| j|jk S | j|k S r2   rs   rt   r!   r!   r"   __lt__  s    
zQName.__lt__c                 C   s    t |tr| j|jkS | j|kS r2   rs   rt   r!   r!   r"   __ge__  s    
zQName.__ge__c                 C   s    t |tr| j|jkS | j|kS r2   rs   rt   r!   r!   r"   __gt__  s    
zQName.__gt__c                 C   s    t |tr| j|jkS | j|kS r2   rs   rt   r!   r!   r"   __eq__  s    
zQName.__eq__)N)r   r   r    r.   rp   r1   rr   rv   rw   rx   ry   rz   r!   r!   r!   r"   r     s   
r   c                   @   sz   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 r2   )_rootr
   )r,   r%   filer!   r!   r"   r.     s    zElementTree.__init__c                 C   s   | j S r2   r{   r0   r!   r!   r"   getroot  s    zElementTree.getrootc                 C   s
   || _ d S r2   r}   )r,   r%   r!   r!   r"   _setroot"  s    zElementTree._setrootc                 C   s   d}t |dst|d}d}zt|d u rVt }t |drV||| _| jW |rT|  S |d}|sfqr|| qV| | _| jW |r|  S n|r|  0 d S )NFreadrbT_parse_wholei   )r$   openr   r   r{   closer   feed)r,   sourceparserclose_sourcedatar!   r!   r"   r
   ,  s4    


	

 zElementTree.parsec                 C   s   | j |S r2   )r{   rh   r,   r#   r!   r!   r"   rh   Q  s    
zElementTree.iterc                 C   s:   |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 %rr>   r?   )r4   r5   rA   r{   rW   rX   r!   r!   r"   rW   ]  s    zElementTree.findc                 C   s<   |d d dkr,d| }t jd| tdd | j|||S r   )r4   r5   rA   r{   r[   r\   r!   r!   r"   r[   s  s    zElementTree.findtextc                 C   s:   |d d dkr,d| }t jd| tdd | j||S r   )r4   r5   rA   r{   r^   rX   r!   r!   r"   r^     s    zElementTree.findallc                 C   s:   |d d dkr,d| }t jd| tdd | j||S r   )r4   r5   rA   r{   r_   rX   r!   r!   r"   r_     s    zElementTree.iterfindTshort_empty_elementsc                C   s   |s
d}n|t vrtd| |s4|dkr0d}nd}t||\}}|dkr~|sp|d u r~| dkr~| dvr~|d|f  |d	krt|| j n,t| j|\}	}
t | }||| j|	|
|d
 W d    n1 s0    Y  d S )Nxmlzunknown method %rc14nutf-8us-asciiunicode)r   r   z$<?xml version='1.0' encoding='%s'?>
r9   r   )
_serialize
ValueError_get_writerlower_serialize_textr{   _namespaces)r,   file_or_filenameencodingxml_declarationdefault_namespacemethodr   writeZdeclared_encodingqnamesrZ   Z	serializer!   r!   r"   r     s4    

zElementTree.writec                 C   s   | j |ddS )Nr   )r   )r   )r,   r|   r!   r!   r"   
write_c14n  s    zElementTree.write_c14n)NN)N)N)N)NN)N)N)NNNN)r   r   r    r.   r~   r   r
   rh   rW   r[   r^   r_   r   r   r!   r!   r!   r"   r     s"   


%




    5r   c                 c   s^  z
| j }W n^ tyh   | dkr(d}t| d|dd}|j |fV  W d    n1 sZ0    Y  Y n0 | dkr|t| dd pdfV  nt }t| tj	r| }nft| tj
rt| }||j nBt	 }dd |_||_ z| j|_| j|_W n ty   Y n0 tj||dd	d
}||j |j |fV  W d    n1 sP0    Y  d S )Nr   r   wxmlcharrefreplace)r   errorsr   c                   S   s   dS NTr!   r!   r!   r!   r"   <lambda>      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     sB    
0


r   c                    s  d d ii  rd <  fdd}|   D ]} | j}t|trZ|jvr||j n<t|trv|vr|| n |d ur|tur|turt| | 	 D ]F\}}t|tr|j}|vr|| t|tr|jvr||j q| j}t|tr0|jvr0||j q0fS )N c                    s   z| d d dkr| dd   dd\}}|}|d u rjt|}|d u rZdt }|dkrj||< |rd||f | < q|| < n rtd| | < W n ty   t|  Y n0 d S )Nr   {}zns%dr   z%s:%sz<cannot use non-qualified names with default_namespace option)rsplitra   _namespace_mapr<   r   r(   _raise_serialization_error)qnameurir#   prefixr   rZ   r   r!   r"   	add_qname.  s(    


z_namespaces.<locals>.add_qname)
rh   r#   r&   r   r9   ri   r   r   r   rf   )r;   r   r   r#   rb   rc   r9   r!   r   r"   r   #  s4    




r   c                 K   s  |j }|j}|tu r$| d|  nv|tu r<| d|  n^|| }|d u r||r\| t| |D ]}t| ||d |d q`n| d|  t| }	|	s|r2|rt| dd dD ](\}
}|rd| }| d	|t	|
f  q|	D ]L\}}
t
|tr|j}t
|
tr||
j }
nt	|
}
| d
|| |
f  q|sHt|sH|s| d |rb| t| |D ]}t| ||d |d qf| d| d  n| d |jr| t|j d S )N	<!--%s--><?%s?>r   <c                 S   s   | d S Nr   r!   xr!   r!   r"   r   v  r   z _serialize_xml.<locals>.<lambda>rb   : xmlns%s="%s" %s="%s"></z />)r#   r9   r   r   _escape_cdata_serialize_xmllistrf   sorted_escape_attribr&   r   r<   r:   )r   r;   r   rZ   r   kwargsr#   r9   rU   rf   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 rD| dt|  nh|| }|d u r|rd| t| |D ]}t| ||d  qhn,| d|  t| }|s|r8|rt| dd dD ](\}	}
|
rd|
 }
| d|
t	|	f  q|D ]N\}
}	t
|
tr|
j}
t
|	tr||	j }	nt|	}	| d	||
 |	f  q| d
 | }|rx|dksb|dkrl| | n| t| |D ]}t| ||d  q||tvr| d| d
  |jr| t|j d S )Nr   r   r   c                 S   s   | d S r   r!   r   r!   r!   r"   r     r   z!_serialize_html.<locals>.<lambda>r   r   r   r   r   Zscriptstyler   )r#   r9   r   r   r   _serialize_htmlr   rf   r   r   r&   r   _escape_attrib_htmlr   
HTML_EMPTYr:   )r   r;   r   rZ   r   r#   r9   rU   rf   r   r   Zltagr!   r!   r"   r     sX    



r   c                 C   s*   |  D ]}| | q|jr&| |j d S r2   )rj   r:   )r   r;   partr!   r!   r"   r     s    
r   )r   htmlr9   c                 C   sL   t d| rtdtt D ]\}}||ks8|| kr t|= q | t|< d S )Nzns\d+$z'Prefix format reserved for internal use)rematchr   r   r   rf   )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 d S )Nzcannot serialize %r (type %s))r(   rT   r   ro   r!   r!   r"   r     s    r   c              	   C   sf   zBd| v r|  dd} d| v r*|  dd} d| v r>|  dd} | W S  ttfy`   t|  Y n0 d S )N&&amp;r   &lt;r   &gt;replacer(   r   r   ro   r!   r!   r"   r     s    r   c              	   C   s   zd| v r|  dd} d| v r*|  dd} d| v r>|  dd} d| v rR|  dd} d	| v rf|  d	d
} d| v rz|  dd} d| v r|  dd} | W S  ttfy   t|  Y n0 d S )Nr   r   r   r   r   r   "&quot;z&#13;r   z&#10;	z&#09;r   ro   r!   r!   r"   r     s$    r   c              	   C   sf   zBd| v r|  dd} d| v r*|  dd} d| v r>|  dd} | W S  ttfy`   t|  Y n0 d S )Nr   r   r   r   r   r   r   ro   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                   @   s4   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 r2   )lst)r,   r   r!   r!   r"   r.   W  s    z_ListDataStream.__init__c                 C   s   dS r   r!   r0   r!   r!   r"   r   Z  s    z_ListDataStream.writablec                 C   s   dS r   r!   r0   r!   r!   r"   r   ]  s    z_ListDataStream.seekablec                 C   s   | j | d S r2   )r   rM   )r,   br!   r!   r"   r   `  s    z_ListDataStream.writec                 C   s
   t | jS r2   )r<   r   r0   r!   r!   r"   r   c  s    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   sL   t | tst| } | jtjdd |  j}|r<|d dkrHtjd d S )Nr   )r   r   )r&   r   r   sysstdoutr~   r:   )r;   r:   r!   r!   r"   r   s  s    

r     c                    s`   t | tr|  } |dk r(td| t| s4d 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0 | jrN| j sT|| _| D ],}t|rn || |jr~|j sX||_qX|j s| |_d S r   )
IndexErrorrM   r9   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 r2   )r   r
   )r   r   r  r!   r!   r"   r
     s    	r
   c                    sP   t ||d fddG fdddtjj}|  d  _~t   S )N)events_parserc                 3   s   d}ztt | dst| d} d}d V   E d H  | d}|sBqN| q$ } E d H  | _W |r|   n|r|   0 d S )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                   @   sD   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S )r   N)r	  c                C   s<   t  | _|ptt d| _|d u r(d}| j| j| d S )Nrn   )end)r  deque_events_queuer   r   r	  
_setevents)r,   r  r	  r!   r!   r"   r.     s
    
zXMLPullParser.__init__c              
   C   s\   | j d u rtd|rXz| j | W n0 tyV } z| j| W Y d }~n
d }~0 0 d S )Nz!feed() called after end of stream)r	  r   r   SyntaxErrorr  rM   )r,   r   excr!   r!   r"   r   
  s    
zXMLPullParser.feedc                 C   s   | j  }d | _ |S r2   )r	  r   )r,   r  r!   r!   r"   r    s    
z$XMLPullParser._close_and_return_rootc                 C   s   |    d S r2   )r  r0   r!   r!   r"   r     s    zXMLPullParser.closec                 c   s.   | j }|r*| }t|tr"|q|V  qd S r2   )r  popleftr&   	Exception)r,   r  eventr!   r!   r"   r
  "  s    
zXMLPullParser.read_eventsc                 C   s    | j d u rtd| j   d S )Nz"flush() called after end of stream)r	  r   flushr0   r!   r!   r"   r   0  s    
zXMLPullParser.flush)N)	r   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   )r9   r   r!   r!   r"   r   6  s    
r   c                 C   sR   |st t d}||  | }i }| D ]}|d}|r.|||< q.||fS )Nr  r/   )r   r   r   r   rh   ra   )r9   r   r  Zidsr;   r/   r!   r!   r"   r   G  s    



r   c                 C   s,   |st t d}| D ]}|| q| S r!  r"  )Zsequencer   r9   r!   r!   r"   r   _  s
    	r   c                   @   sd   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 rBt}|| _	|| _
|d u rZt}|| _d S r2   )_data_elem_lastr{   _tailr   _comment_factoryr%  r   _pi_factoryr&  r   _factory)r,   Zelement_factoryr#  r$  r%  r&  r!   r!   r"   r.     s     zTreeBuilder.__init__c                 C   s   | j S r2   r}   r0   r!   r!   r"   r     s    zTreeBuilder.closec                 C   s>   | j r:| jd ur4d| j }| jr,|| j_n|| j_g | _ d S Nr   )r'  r)  joinr*  r:   r9   r,   r9   r!   r!   r"   _flush  s    

zTreeBuilder._flushc                 C   s   | j | d S r2   )r'  rM   r,   r   r!   r!   r"   r     s    zTreeBuilder.datac                 C   sX   |    | || | _}| jr2| jd | n| jd u rB|| _| j| d| _|S )Nr   r   )r1  r-  r)  r(  rM   r{   r*  )r,   r#   attrsr;   r!   r!   r"   start  s    
zTreeBuilder.startc                 C   s    |    | j | _d| _| jS r   )r1  r(  popr)  r*  r   r!   r!   r"   r    s    zTreeBuilder.endc                 C   s   |  | j| j|S r2   )_handle_singler+  r%  r0  r!   r!   r"   comment  s    
zTreeBuilder.commentc                 C   s   |  | j| j||S r2   )r6  r,  r&  )r,   rn   r9   r!   r!   r"   pi  s    zTreeBuilder.pic                 G   s:   || }|r6|    || _| jr0| jd | d| _|S )Nr   r   )r1  r)  r(  rM   r*  )r,   factoryrR   argsr;   r!   r!   r"   r6    s    zTreeBuilder._handle_single)N)N)r   r   r    r.   r   r1  r   r4  r  r7  r8  r6  r!   r!   r!   r"   r   q  s   
	r   c                   @   st   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d ZdS )r   N)rn   r   c                C   s^  zddl m} W n: tyJ   zdd l}W n tyD   tdY n0 Y n0 ||d}|d u rft }| | _| _| | _| _	|j
| _i | _| j|_t|dr| j|_t|dr| j|_t|dr| j|_t|dr| j|_t|d	r|j|_t|d
r|j|_t|dr|j|_d|_d|_d|_ d | _!i | _"zd|j# | _$W n t%yX   Y n0 d S )Nr   expatz7No module named expat; use SimpleXMLTreeBuilder insteadr   r4  r  start_nsend_nsr   r7  r8  r   zExpat %d.%d.%d)&xml.parsersr<  ImportErrorZpyexpatZParserCreater   r   r	  rn   _targeterror_error_names_defaultZDefaultHandlerExpandr$   _startStartElementHandler_endEndElementHandler	_start_nsStartNamespaceDeclHandler_end_nsEndNamespaceDeclHandlerr   ZCharacterDataHandlerr7  CommentHandlerr8  ProcessingInstructionHandlerZbuffer_textordered_attributesspecified_attributes_doctypeentityversion_infoversionr   )r,   rn   r   r<  r   r!   r!   r"   r.     sP    




zXMLParser.__init__c                 C   s8  | j }|j}|D ] }|dkrDd|_d|_||| jfdd}||_q|dkrf||| jfdd}||_q|dkrt| j	dr||| j
fd	d}n||fd
d}||_q|dkrt| j	dr||| 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| qd S )Nr4  r   c                 S   s   |||| |f d S r2   r!   )r#   Z	attrib_inr  rM   r4  r!   r!   r"   handler0  s    z%XMLParser._setevents.<locals>.handlerr  c                 S   s   |||| f d S r2   r!   )r#   r  rM   r  r!   r!   r"   rV  5  s    zstart-nsr=  c                 S   s   |||| |f d S r2   r!   )r   r   r  rM   r=  r!   r!   r"   rV  <  s    c                 S   s   ||| p
d|pdff d S r.  r!   )r   r   r  rM   r!   r!   r"   rV  @  s    zend-nsr>  c                 S   s   |||| f d S r2   r!   )r   r  rM   r>  r!   r!   r"   rV  F  s    c                 S   s   ||d f d S r2   r!   )r   r  rM   r!   r!   r"   rV  J  s    r7  c                 S   s   |||j | f d S r2   )rn   r7  )r9   r  rM   r,   r!   r!   r"   rV  N  s    r8  c                 S   s   |||j | |f d S r2   )rn   r8  )Z	pi_targetr   r  rM   r,   r!   r!   r"   rV  R  s    zunknown event %r)r	  rM   rP  rQ  rF  rG  rH  rI  r$   rn   rJ  rK  rL  rM  rN  rO  r   )r,   Zevents_queueZevents_to_reportr   rM   Z
event_namerV  r!   r!   r"   r  #  sL    





zXMLParser._seteventsc                 C   s&   t |}|j|_|j|jf|_|d S r2   )r   codelinenooffsetZposition)r,   rc   errr!   r!   r"   _raiseerrorY  s    zXMLParser._raiseerrorc                 C   sD   z| j | }W n0 ty>   |}d|v r0d| }|| j |< Y n0 |S )Nr   r   )rD  KeyError)r,   rb   namer!   r!   r"   _fixname_  s    zXMLParser._fixnamec                 C   s   | j |pd|pdS r.  )rn   r=  r,   r   r   r!   r!   r"   rJ  j  s    zXMLParser._start_nsc                 C   s   | j |pdS r.  )rn   r>  )r,   r   r!   r!   r"   rL  m  s    zXMLParser._end_nsc                 C   sR   | j }||}i }|rDtdt|dD ]}||d  |||| < q&| j||S )Nr   r>   r   )r^  ranger<   rn   r4  )r,   r#   	attr_listZfixnamer*   ir!   r!   r"   rF  p  s    zXMLParser._startc                 C   s   | j | |S r2   )rn   r  r^  r   r!   r!   r"   rH  |  s    zXMLParser._endc              	   C   s  |d d }|dkrz| j j}W n ty4   Y d S 0 z|| j|dd   W nX ty   ddlm} |d|| jj	| jj
f }d|_| jj	|_| jj
|_|Y n0 n"|dkr|d d	 d
krg | _n | jd ur|dkrd | _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 )Nr   r   r   r   r;  z'undefined entity %s: line %d, column %d   r   	   z	<!DOCTYPEr   r>   ZPUBLIC   ZSYSTEM   doctypezaThe doctype() method of XMLParser is ignored.  Define doctype() method on the TreeBuilder target.)rn   r   r   rS  r\  r?  r<  rB  r   ZErrorLineNumberZErrorColumnNumberrW  rX  rY  rR  r  rM   r<   r$   rg  r4   r5   RuntimeWarning)r,   r9   r   Zdata_handlerr<  rZ  nrT   r]  Zpubidsystemr!   r!   r"   rE    sd    





zXMLParser._defaultc              
   C   sH   z| j |d W n0 | jyB } z| | W Y d }~n
d }~0 0 d S )NF)r   ParserC  r[  )r,   r   r   r!   r!   r"   r     s    zXMLParser.feedc              
   C   s   z| j dd W n0 | jyB } z| | W Y d }~n
d }~0 0 zLz| jj}W n tyd   Y n0 | W | ` | `| `| `S W | ` | `| `| `n| ` | `| `| `0 d S )Nr   T)	r   rk  rC  r[  rn   r   r   r	  rA  )r,   r   Zclose_handlerr!   r!   r"   r     s      
zXMLParser.closec              
   C   s~   | j  }z`z| j d | j dd W n0 | jyZ } z| | W Y d }~n
d }~0 0 W | j | n| j | 0 d S )NFr   )r   ZGetReparseDeferralEnabledZSetReparseDeferralEnabledrk  rC  r[  )r,   Zwas_enabledr   r!   r!   r"   r     s    
"zXMLParser.flush)r   r   r    r.   r  r[  r^  rJ  rL  rF  rH  rE  r   r   r   r!   r!   r!   r"   r     s   
.66r   )out	from_filec                K   s   | d u r|d u rt dd }|d u r0t  }}tt|jfi |d}| d urd||  |  n|d urxt||d |d ur|	 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_datarl  rm  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 | _|r6t|nd | _|| _|rRt|| _nd | _|rjt|j	| _
nd | _
dgg| _g | _|s| jtt  | jg  i | _dg| _d | _d| _d| _d| _d S )N)r   r   Fr   )_writer'  _with_comments_strip_textrd   _exclude_attrs_exclude_tags_rewrite_prefixes_qname_aware_tagsintersection_find_qname_aware_attrs_declared_ns_stack	_ns_stackrM   r   r   rf   _prefix_map_preserve_space_pending_start
_root_seen
_root_done_ignored_depth)	r,   r   rp  rq  rr  rs  rt  ru  rv  r!   r!   r"   r.     s2    zC14NWriterTarget.__init__c                 c   s    ||D ]}|r|E d H  qd S r2   r!   )r,   Zns_stackZ	_reversedrZ   r!   r!   r"   _iter_namespaces6  s    z!C14NWriterTarget._iter_namespacesc                 C   s\   | dd\}}| | jD ]$\}}||krd| d|   S qtd| d| dd S )Nr   r   r   r   zPrefix z of QName "" is not declared in scope)splitr  r  r   )r,   Zprefixed_namer   r]  r   pr!   r!   r"   _resolve_prefix_name;  s
    z%C14NWriterTarget._resolve_prefix_namec                 C   s  |d u r:|d d dkr,|dd   ddnd|f\}}n|}t }| | jD ]B\}}||kr||vr|rz| d| n|||f  S || qP| jr|| jv r| j| }ndt| j  }| j|< | jd ||f | d| ||fS |sd|vr|||fS | | j	D ]J\}}||kr| jd ||f |rR| d| n|||f  S q|st|||fS t
d| d	d S )
Nr   r   r   r   r   ri  r   zNamespace "r  )r   rd   r  r  addr|  r  r<   rM   r  r   )r,   r   r   r#   Zprefixes_seenur   r!   r!   r"   _qnameB  s.    2 


&
zC14NWriterTarget._qnamec                 C   s   | j s| j| d S r2   )r  r'  rM   r2  r!   r!   r"   r   g  s    zC14NWriterTarget.datar   c                 C   s   || j }| j d d = | jr.| jd s.| }| jd urz| jd  }| _|rVt|rV|nd }| jg ||R   |d urzd S |r| jr| t	| d S Nr   )
r'  ry  r  r  r  _looks_like_prefix_namerF  r  rw  _escape_cdata_c14n)r,   Z
_join_textr   r:  
qname_textr!   r!   r"   r1  k  s    


zC14NWriterTarget._flushc                 C   s0   | j r
d S | jr|   | jd ||f d S r  )r  r'  r1  r  rM   r_  r!   r!   r"   r=  y  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rn|| jv rn|||f| _d S | ||| d S r   )	r{  r  r'  r1  r  rM   r}  r  rF  )r,   r#   r3  new_namespacesr!   r!   r"   r4    s    
zC14NWriterTarget.startc                    s  j d ur$|r$fdd| D }|h|}i }|d urV| }||< || jd ur|r|}|r|D ]0}	||	 }
t|
rv|
 }||
< || qvqd }nd }j  fddt|dd dD }|rdd |D }|  ng }|rjt| 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!   )rz  .0r   r   r0   r!   r"   
<dictcomp>  r   z+C14NWriterTarget._start.<locals>.<dictcomp>c                    s   i | ]}| |qS r!   r!   )r  ri  )parse_qnamer!   r"   r    r   c                 S   s   |  ddS )Nr   r   )r  )ri  r!   r!   r"   r     r   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 )rm   z="r   )_escape_attrib_c14nr  r!   r!   r"   r    r   r   T)rz  rf   r  r  r  r  r  r   sortrM   ra   r  rw  r/  r  r  r  )r,   r#   r3  r  r  r   Zresolved_namesr   ZqattrsZ	attr_namerc   Zparsed_qnamesra  r   r   Z
attr_qnamer   Zspace_behaviourr   r!   )r  r,   r"   rF    s^    






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  r'  r1  rw  r  r  r5  r<   r  r  r  r   r!   r!   r"   r    s    

zC14NWriterTarget.endc                 C   sd   | j s
d S | jrd S | jr&| d n| jr:| jr:|   | dt| d | js`| d d S )Nr   z<!--z-->)rx  r  r  rw  r  r'  r1  r  r0  r!   r!   r"   r7    s    zC14NWriterTarget.commentc                 C   sp   | j r
d S | jr| d n| jr0| jr0|   | |rNd| dt| dn
d| d | jsl| d d S )Nr   z<?rm   z?>)r  r  rw  r  r'  r1  r  )r,   rn   r   r!   r!   r"   r8    s    $zC14NWriterTarget.pi)N)N)r   r   r    r.   reversedr  r  r  r   r/  r1  r=  r4  rF  r  r7  r8  r!   r!   r!   r"   r     s   %
%
Er   c              	   C   sz   zVd| v r|  dd} d| v r*|  dd} d| v r>|  dd} d| v rR|  dd} | W S  ttfyt   t|  Y n0 d S )	Nr   r   r   r   r   r   r   &#xD;r   ro   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 rR|  dd} d	| v rf|  d	d
} d| v rz|  dd} | W S  ttfy   t|  Y n0 d S )Nr   r   r   r   r   r   r   z&#x9;r   z&#xA;r   r  r   ro   r!   r!   r"   r    s     r  )rg   )_set_factories)N)N)N)NN)NN)r   r   )N)NN)N)N)N)N)@__all__r   r   r   r4   r   r  collections.abcr   r   r   r  r   r   r   r   r   r   r   r   r   contextmanagerr   r   r   r   rd   	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  rS   _elementtreer  r@  r!   r!   r!   r"   <module>I   s     /

0 e
1
=22	
6

2:


z p  