
    z%i                       	 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e      Zd Z G d	 d
      Zi fdZdBdZdBdZeZ G d d      Z G d d      Zej*                  d        ZdBdZd Zh dZd Zd ZeeedZd Zddddddd d!Zee_        d" Zd# Z d$ Z!d% Z"dCddd&d'd(Z# G d) d*ejH                        Z%dCddd&d'd+Z&d, Z'dDd-Z(dBd.Z)dCd/Z* G d0 d1      Z+dBd2Z,dBd3Z-e,Z.dBd4Z/ G d5 d6      Z0 G d7 d8      Z1dBddd9d:Z2 ejf                  d;ejh                        jj                  Z6 G d< d=      Z7d> Z8d? Z9	 eZ:dd@l; ddAl;m<Z<  e<ee       y# e=$ r Y yw xY w)E)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                       e Zd Z	 y)r   N)__name__
__module____qualname__     I/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/xml/etree/ElementTree.pyr   r   j   s     	r$   r   c                     	 t        | d      S )Ntag)hasattr)elements    r%   r	   r	   x   s    <7E""r$   c                       e Zd Z	 dZ	 dZ	 dZ	 dZ	 i fdZd Zd Z	d Z
d Zd Zd Zd	 Zd
 Zd Zd Zd Zd Zd ZddZddZddZddZd ZddZd Zd Zd ZddZd Zy)r   Nc                     t        |t              s"t        d|j                  j                        || _        i ||| _        g | _        y )Nzattrib must be dict, not )
isinstancedict	TypeError	__class__r    r'   attrib	_children)selfr'   r0   extras       r%   __init__zElement.__init__   sL    &$'  )), - -))5)r$   c                 `    d| j                   j                  | j                  t        |       fz  S )Nz<%s %r at %#x>)r/   r    r'   idr2   s    r%   __repr__zElement.__repr__   s&    4>>#:#:DHHbh"OOOr$   c                 (    	 | j                  ||      S N)r/   )r2   r'   r0   s      r%   makeelementzElement.makeelement   s    	 ~~c6**r$   c                     | j                  | j                  | j                        }| j                  |_        | j                  |_        | |d d  |S r:   )r;   r'   r0   texttail)r2   elems     r%   __copy__zElement.__copy__   s@    $++6II	II	Qr$   c                 ,    t        | j                        S r:   )lenr1   r7   s    r%   __len__zElement.__len__   s    4>>""r$   c                 j    t        j                  dt        d       t        | j                        dk7  S )NzTesting an element's truth value will raise an exception in future versions.  Use specific 'len(elem)' or 'elem is not None' test instead.   
stacklevelr   )warningswarnDeprecationWarningrB   r1   r7   s    r%   __bool__zElement.__bool__   s1    K 1		 4>>"a''r$   c                      | j                   |   S r:   r1   r2   indexs     r%   __getitem__zElement.__getitem__   s    ~~e$$r$   c                     t        |t              r|D ]  }| j                  |        n| j                  |       || j                  |<   y r:   )r,   slice_assert_is_elementr1   )r2   rO   r)   elts       r%   __setitem__zElement.__setitem__   sG    eU# -'',- ##G, 'ur$   c                     | j                   |= y r:   rM   rN   s     r%   __delitem__zElement.__delitem__   s    NN5!r$   c                 ^    	 | j                  |       | j                  j                  |       y r:   rS   r1   appendr2   
subelements     r%   rZ   zElement.append   s)    	 	
+j)r$   c                 l    	 |D ].  }| j                  |       | j                  j                  |       0 y r:   rY   )r2   elementsr)   s      r%   extendzElement.extend   s8    	
   	+G##G,NN!!'*	+r$   c                 `    	 | j                  |       | j                  j                  ||       y r:   )rS   r1   insert)r2   rO   r\   s      r%   ra   zElement.insert   s'    6
+eZ0r$   c                 f    t        |t              s!t        dt        |      j                  z        y )Nzexpected an Element, not %s)r,   _Element_Pyr.   typer    )r2   es     r%   rS   zElement._assert_is_element   s.     ![)9DG<L<LLMM *r$   c                 <    	 | j                   j                  |       y r:   )r1   remover[   s     r%   rg   zElement.remove   s    
	 	j)r$   c                 2    	 t        j                  | ||      S r:   )r   findr2   path
namespacess      r%   ri   zElement.find  s    	 dJ77r$   c                 4    	 t        j                  | |||      S r:   )r   findtextr2   rk   defaultrl   s       r%   rn   zElement.findtext  s     
	 ##D$DDr$   c                 2    	 t        j                  | ||      S r:   )r   findallrj   s      r%   rr   zElement.findall(  s    	 ""4z::r$   c                 2    	 t        j                  | ||      S r:   )r   iterfindrj   s      r%   rt   zElement.iterfind3  s    	 ##D$
;;r$   c                 d    	 | j                   j                          g | _        d x| _        | _        y r:   )r0   clearr1   r=   r>   r7   s    r%   rv   zElement.clear>  s.    	 	 $$	DIr$   c                 <    	 | j                   j                  ||      S r:   )r0   get)r2   keyrp   s      r%   rx   zElement.getI  s    		 {{sG,,r$   c                 $    	 || j                   |<   y r:   )r0   )r2   ry   values      r%   setzElement.setV  s    	 !Cr$   c                 8    	 | j                   j                         S r:   )r0   keysr7   s    r%   r~   zElement.keys`  s    	 {{!!r$   c                 8    	 | j                   j                         S r:   )r0   itemsr7   s    r%   r   zElement.itemsi  s    	 {{  ""r$   c              #      K   	 |dk(  rd }|| j                   |k(  r|  | j                  D ]  }|j                  |      E d {     y 7 w)N*)r'   r1   iter)r2   r'   re   s      r%   r   zElement.itert  sT     	 #:C;$((c/J 	#Avvc{""	#"s   AAAAc              #      K   	 | j                   }t        |t              s|y | j                  }|r| | D ]-  }|j	                         E d {    |j
                  }|s*| / y 7 wr:   )r'   r,   strr=   itertextr>   )r2   r'   tre   s       r%   r   zElement.itertext  sj     	 hh#s#IIG 	Azz|##A		#s   AA*A(A*!A*r:   NN) r    r!   r"   r'   r0   r=   r>   r4   r8   r;   r@   rC   rK   rP   rU   rW   rZ   r_   ra   rS   rg   ri   rn   rr   rt   rv   rx   r|   r~   r   r   r   r#   r$   r%   r   r   }   s    ( CF1D D $& P	+#(%("	*+1
N*	8E	;	<	%-!"	##,r$   r   c                 Z    	 i ||}| j                  ||      }| j                  |       |S r:   )r;   rZ   )parentr'   r0   r3   r)   s        r%   r   r     s;    
 ! % F  f-G
MM'Nr$   c                 4    	 t        t              }| |_        |S r:   )r   r   r=   )r=   r)   s     r%   r   r     s     gGGLNr$   c                 f    	 t        t              }| |_        |r|j                  dz   |z   |_        |S )N )r   r   r=   )targetr=   r)   s      r%   r   r     s8     +,GGL||c)D0Nr$   c                   F    e Zd Z	 ddZd Zd Zd Zd Zd Zd Z	d	 Z
d
 Zy)r   Nc                 &    |rd|d|}|| _         y )N{}r=   )r2   text_or_urir'   s      r%   r4   zQName.__init__  s    &137K	r$   c                     | j                   S r:   r   r7   s    r%   __str__zQName.__str__  s    yyr$   c                 P    d| j                   j                  d| j                  dS )N<r   >)r/   r    r=   r7   s    r%   r8   zQName.__repr__  s     NN33TYY??r$   c                 ,    t        | j                        S r:   )hashr=   r7   s    r%   __hash__zQName.__hash__  s    DIIr$   c                 r    t        |t              r| j                  |j                  k  S | j                  |k  S r:   r,   r   r=   r2   others     r%   __le__zQName.__le__  .    eU#99

**yyE!!r$   c                 r    t        |t              r| j                  |j                  k  S | j                  |k  S r:   r   r   s     r%   __lt__zQName.__lt__  .    eU#99uzz))yy5  r$   c                 r    t        |t              r| j                  |j                  k\  S | j                  |k\  S r:   r   r   s     r%   __ge__zQName.__ge__  r   r$   c                 r    t        |t              r| j                  |j                  kD  S | j                  |kD  S r:   r   r   s     r%   __gt__zQName.__gt__  r   r$   c                 r    t        |t              r| j                  |j                  k(  S | j                  |k(  S r:   r   r   s     r%   __eq__zQName.__eq__  r   r$   r:   )r    r!   r"   r4   r   r8   r   r   r   r   r   r   r#   r$   r%   r   r     s5     @"!"!"r$   r   c                   n    e Zd Z	 ddZd Zd ZddZddZddZddZ	dd	Z
dd
Z	 	 	 	 ddddZd Zy)r   Nc                 :    || _         |r| j                  |       y y r:   )_rootr   )r2   r)   files      r%   r4   zElementTree.__init__  s    
JJt r$   c                     	 | j                   S r:   r   r7   s    r%   getrootzElementTree.getroot  s    /zzr$   c                     	 || _         y r:   r   )r2   r)   s     r%   _setrootzElementTree._setroot  s    	 
r$   c                    	 d}t        |d      st        |d      }d}	 |Kt               }t        |d      r5|j                  |      | _        | j                  |r|j                          S S |j                  d      x}r%|j                  |       |j                  d      x}r%|j                         | _        | j                  |r|j                          S S # |r|j                          w w xY w)NFreadrbT_parse_wholei   )r(   openr   r   r   closer   feed)r2   sourceparserclose_sourcedatas        r%   r   zElementTree.parse   s    		 vv&&$'FL	~"6>2
 "(!4!4V!<DJ::   !++e,,$,D! !++e,,$,DJ:: | s   9C ,7C $ C C-c                 :    	 | j                   j                  |      S r:   )r   r   r2   r'   s     r%   r   zElementTree.iterB  s    	 zzs##r$   c                     	 |d d dk(  r$d|z   }t        j                  d|z  t        d       | j                  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 %rrE   rF   )rH   rI   FutureWarningr   ri   rj   s      r%   ri   zElementTree.findN  sV    		 8s?:DMM-/34 !	 zztZ00r$   c                     	 |d d dk(  r$d|z   }t        j                  d|z  t        d       | j                  j	                  |||      S r   )rH   rI   r   r   rn   ro   s       r%   rn   zElementTree.findtextd  sZ    		 8s?:DMM-/34 !	 zz""4*==r$   c                     	 |d d dk(  r$d|z   }t        j                  d|z  t        d       | j                  j	                  ||      S r   )rH   rI   r   r   rr   rj   s      r%   rr   zElementTree.findallz  sX    		 8s?:DMM-/34 !	 zz!!$
33r$   c                     	 |d d dk(  r$d|z   }t        j                  d|z  t        d       | j                  j	                  ||      S r   )rH   rI   r   r   rt   rj   s      r%   rt   zElementTree.iterfind  sX    		 8s?:DMM-/34 !	 zz""444r$   Tshort_empty_elementsc                   	 |sd}n|t         vrt        d|z        |s
|dk(  rd}nd}t        ||      5 \  }}|dk(  r5|s'|1|j                         dk7  r|j                         dvr |d|d	       |d
k(  rt	        || j
                         n9t        | j
                  |      \  }	}
t         |   } ||| j
                  |	|
|       d d d        y # 1 sw Y   y xY w)Nxmlzunknown method %rc14nutf-8us-asciiunicode)r   r   z<?xml version='1.0' encoding='z'?>
r=   r   )
_serialize
ValueError_get_writerlower_serialize_textr   _namespaces)r2   file_or_filenameencodingxml_declarationdefault_namespacemethodr   writedeclared_encodingqnamesrl   	serializes               r%   r   zElementTree.write  s    	. F:%069::"%)84 	E8R@QO$,^^%2&,,.6KK%( )tzz2%0=N%O"
&v.	%VZ/CE	E 	E 	Es   BCCc                 (    | j                  |d      S )Nr   )r   )r   )r2   r   s     r%   
write_c14nzElementTree.write_c14n  s    zz$vz..r$   r   r:   )NNNN)r    r!   r"   r4   r   r   r   r   ri   rn   rr   rt   r   r   r#   r$   r%   r   r     sZ    	 D
$1,>,4,5. " $	3E
 $(3Ej/r$   r   c              #   ~  K   	 | j                   }|j                         dk(  r|t        | dd       xs df y t        j                         5 }t        | t        j                        r| }nt        | t        j                        r1t        j                  |       }|j                  |j                         nFt        j                         }d |_        ||_         	 | j                  |_        | j                  |_        t        j                   ||dd      }|j                  |j                         |j                   |f d d d        y # t        $ r Y Xw xY w# 1 sw Y   y xY w# t        $ rM |j                         dk(  rd}t#        | d|d	      5 }|j                   |f d d d        Y y # 1 sw Y   Y y xY ww xY ww)
Nr   r   r   c                       yNTr#   r#   r$   r%   <lambda>z_get_writer.<locals>.<lambda>  s    r$   xmlcharrefreplace
)r   errorsnewlinew)r   r   )r   r   getattr
contextlib	ExitStackr,   ioBufferedIOBase	RawIOBaseBufferedWritercallbackdetachwritableseekabletellAttributeErrorTextIOWrapperr   )r   r   r   stackr   s        r%   r   r     s    -+ && >>y(!1:tDOOO %%' +5.0A0AB+D 0",,?,,-=>D NN4;;/ ,,.D$0DM!&DJ )9(A(A$4$9$9	 ''19/B046 t{{+jj(**9+ +& * '+ +  '>>y(H"C(,. 	'15**h&&	' 	' 	'	's   F=E$ =F=BE"E	<AE 	F=		EEEEE!F=$-F:F,"F:*F=,F6	1F:4F=6F::F=c                    d d ii rd<   fd}| j                         D ],  } | j                  }t        |t              r!|j                  vrM ||j                         n:t        |t
              r|vr& ||       n||t        ur|t        urt        |       | j                         D ]_  \  }}t        |t              r|j                  }|vr ||       t        |t              s?|j                  vsN ||j                         a | j                  }t        |t              s|j                  vs ||j                         / fS )N c                 J   	 | d d dk(  rm| dd  j                  dd      \  }}j                  |      }|/t        j                  |      }|dt              z  }|dk7  r||<   |r|d|| <   y || <   y rt	        d      | | <   y # t
        $ r t        |        Y y w xY w)Nr   r   r   zns%dr   :z<cannot use non-qualified names with default_namespace option)rsplitrx   _namespace_maprB   r   r.   _raise_serialization_error)qnameurir'   prefixr   rl   r   s       r%   	add_qnamez_namespaces.<locals>.add_qname  s    	.RayC 9++C3S#,>+//4F~!'#j/!9*0
3/5s$;F5M$'F5M$$3  !&u 	.&u-	.s   A.B 2B 8B B"!B")
r   r'   r,   r   r=   r   r   r   r  r   )	r?   r   r  r'   ry   r{   r=   rl   r   s	    `     @@r%   r   r     s2    D\F J(*
$%.8 		 !hhc5!xxv%#((#S!& #_G!32&s+**, 	&JC#u%hh& #%'EJJf,D%**%	& yydE"tyy'>dii '!( :r$   c           	         |j                   }|j                  }|t        u r | d|z         np|t        u r | d|z         n[||   }|,|r | t	        |             |D ]  }t        | ||d |        n( | d|z          t        |j                               }	|	s|r|rCt        |j                         d       D ]$  \  }
}|rd|z   } | d|d	t        |
      d
       & |	D ]^  \  }}
t        |t              r|j                  }t        |
t              r||
j                     }
nt        |
      }
 | d||   d	|
d
       ` |st        |      s|sA | d       |r | t	        |             |D ]  }t        | ||d |         | d|z   dz          n | d       |j                  r | t	        |j                               y y )N	<!--%s--><?%s?>r   r   c                     | d   S Nr   r#   xs    r%   r   z _serialize_xml.<locals>.<lambda>g  
    QqT r$   ry   r    xmlns=""r   r   </z />)r'   r=   r   r   _escape_cdata_serialize_xmllistr   sorted_escape_attribr,   r   rB   r>   )r   r?   r   rl   r   kwargsr'   r=   re   r   vks               r%   r  r  Q  s   
((C99D
g~kD !	%	%hoSk;mD)* Jua4HJJ #)&E
 &z'7'7'9+9!; 1 #aA*1- 	 " 9DAq!!U+FF!!U+"166N*1-&)Q789 s4y(<c
--. NA"5!VT8LNN dSj3&'eyymDII&' r$   >   brhrcolimgwbrareabaselinkmetaembedframeinputparamtrackr   isindexbasefontc           	         |j                   }|j                  }|t        u r | dt        |      z         n|t        u r | dt        |      z         nj||   }|*|r | t        |             |D ]  }t        | ||d         n9 | d|z          t        |j                               }|s|r|rCt        |j                         d       D ]$  \  }	}
|
rd|
z   }
 | d|
dt        |	      d	       & |D ]^  \  }
}	t        |
t              r|
j                  }
t        |	t              r||	j                     }	nt        |	      }	 | d
||
   d|	d	       `  | d       |j                         }|r$|dk(  s|dk(  r	 | |       n | t        |             |D ]  }t        | ||d         |t        vr | d|z   dz          |j                  r | t        |j                               y y )Nr  r  r   c                     | d   S r
  r#   r  s    r%   r   z!_serialize_html.<locals>.<lambda>  r  r$   r  r   r  r  r  r   r   scriptstyler  )r'   r=   r   r  r   _serialize_htmlr  r   r  r  r,   r   _escape_attrib_htmlr   
HTML_EMPTYr>   )r   r?   r   rl   r  r'   r=   re   r   r  r  ltags               r%   r/  r/    s   
((C99D
g~kM$//0	%	%ht,,-Sk;mD)* 8q&$78 #)&E
 &z'7'7'9+9!; 1 #aA*1- 	 " 9DAq!!U+FF!!U+"166N/2&)Q789 #J99;D8#tw$K--. 8q&$78:%dSj3&'yymDII&' r$   c                 |    |j                         D ]
  } | |        |j                  r | |j                         y y r:   )r   r>   )r   r?   parts      r%   r   r     s6     dyydii r$   )r   htmlr=   c                     	 t        j                  d|       rt        d      t        t        j                               D ]  \  }}||k(  s|| k(  st        |=  | t        |<   y )Nzns\d+$z'Prefix format reserved for internal use)rematchr   r  r   r   )r  r  r  r  s       r%   r   r     se    
 
xx	6"BCC^))+, "18qF{q!" !N3r$   r   r5  rdfwsdlxsxsi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                 L    t        d| dt        |       j                  d      )Nzcannot serialize z (type ))r.   rd   r    r   s    r%   r  r    s!    
+/d1D1DE
 
r$   c                     	 d| v r| j                  dd      } d| v r| j                  dd      } d| v r| j                  dd      } | S # t        t        f$ r t        |        Y y w xY w)N&&amp;r   &lt;r   &gt;replacer.   r   r  r   s    r%   r  r    so    ) $;<<W-D$;<<V,D$;<<V,D~& )"4()   AA A#"A#c                 |   	 d| v r| j                  dd      } d| v r| j                  dd      } d| v r| j                  dd      } d| v r| j                  dd      } d	| v r| j                  d	d
      } d| v r| j                  dd      } d| v r| j                  dd      } | S # t        t        f$ r t        |        Y y w xY w)NrB  rC  r   rD  r   rE  r  &quot;z&#13;r   z&#10;	z&#09;rF  r   s    r%   r  r    s    )$;<<W-D$;<<V,D$;<<V,D4<<<h/D 4<<<g.D4<<<g.D4<<<g.D~& )"4()s   BB B;:B;c                     	 d| v r| j                  dd      } d| v r| j                  dd      } d| v r| j                  dd      } | S # t        t        f$ r t        |        Y y w xY w)NrB  rC  r   rE  r  rJ  rF  r   s    r%   r0  r0    sm    	)$;<<W-D$;<<V,D4<<<h/D~& )"4()rH  T)r   r   r   c                    	 |dk(  rt        j                         nt        j                         }t        |       j	                  ||||||       |j                         S )Nr   r   r   r   r   )r   StringIOBytesIOr   r   getvalue)r)   r   r   r   r   r   streams          r%   r   r   *  s[     ')3R[[]Fvx/>1B&,4H	  J
 ??r$   c                   ,    e Zd Z	 d Zd Zd Zd Zd Zy)_ListDataStreamc                     || _         y r:   )lst)r2   rW  s     r%   r4   z_ListDataStream.__init__D  s	    r$   c                      yr   r#   r7   s    r%   r   z_ListDataStream.writableG      r$   c                      yr   r#   r7   s    r%   r   z_ListDataStream.seekableJ  rY  r$   c                 :    | j                   j                  |       y r:   )rW  rZ   )r2   bs     r%   r   z_ListDataStream.writeM  s    r$   c                 ,    t        | j                        S r:   )rB   rW  r7   s    r%   r   z_ListDataStream.tellP  s    488}r$   N)r    r!   r"   r4   r   r   r   r   r#   r$   r%   rU  rU  B  s    Ar$   rU  c                `    g }t        |      }t        |       j                  ||||||       |S )NrO  )rU  r   r   )r)   r   r   r   r   r   rW  rS  s           r%   r   r   S  sC     CS!Fvx/>1B&,4H	  J
 Jr$   c                    	 t        | t              st        |       } | j                  t        j                  d       | j                         j                  }|r|d   dk7  r t        j                  j                  d       y y )Nr   )r   r   )r,   r   r   sysstdoutr   r>   )r?   r>   s     r%   r   r   `  sg     dK(4 JJszzIJ.<<>D48t#

 $r$   c                     	 t        | t              r| j                         } |dk  rt        d|       t	        |       sy d|z  z   gfd | d       y )Nr   z,Initial indentation level must be >= 0, got r   c                    |dz   }	 |   }| j                  r| j                  j                         s|| _        | D ]D  }t	        |      r	 ||       |j
                  r|j
                  j                         r>||_        F j
                  j                         s|   |_        y y # t         $ r |   z   }j                  |       Y w xY wr
  )
IndexErrorrZ   r=   striprB   r>   )r?   levelchild_levelchild_indentationchild_indent_childrenindentationsspaces        r%   rk  z indent.<locals>._indent_children  s    ai	3 ,[ 9
 yy		 1)DI 	/E5z 4::UZZ%5%5%7.
		/ zz!%e,EJ "  	3 ,U 3e ; 12	3s   B) )"CC)r,   r   r   r   rB   )treerm  rg  rk  rl  s    ` @@r%   r   r   s  sg     $$||~qyGwOPPt9 55=()L-, T1r$   c                 @    	 t               }|j                  | |       |S r:   )r   r   )r   r   rn  s      r%   r   r     s#     =DJJvvKr$   c                      	 t        ||      fd G  fddt        j                  j                        } |       d _        ~t               S )N)events_parserc              3     K   d}	 t        | d      st        | d      } d}d  	 j                         E d {    | j                  d      }|snj	                  |       >j                         }j                         E d {    |_        |r| j                          y y 7 m7 !# |r| j                          w w xY ww)NFr   r   Ti @  )r(   r   read_eventsr   r   _close_and_return_rootrootr   )r   r   r   rv  it
pullparsers       r%   iteratorziterparse.<locals>.iterator  s     	66*fd+#J%11333{{9-%  446D!--///BG  4 0  s?   C2B+ B'AB+ B)B+ C'B+ )B+ +C  Cc                   6    e Zd Z W  W       j                  Zy)$iterparse.<locals>.IterParseIteratorN)r    r!   r"   __next__)ry  r   s   r%   IterParseIteratorr{    s    F#,,r$   r}  )r   collectionsabcIteratorrv  next)r   rq  r   r}  rw  ry  rx  s   `   @@@r%   r
   r
     sR      ff=J*-KOO44 -		BBG#HIr$   c                   2    e Zd ZddddZd Zd Zd Zd Zy)	r   N)rr  c                    t        j                         | _        |xs t        t	                     | _        |d}| j
                  j                  | j                  |       y )Nr   )end)r~  deque_events_queuer   r   rr  
_setevents)r2   rq  rr  s      r%   r4   zXMLPullParser.__init__  sL    
 )..0A);="A>F 2 2F;r$   c                     	 | j                   t        d      |r	 | j                   j                  |       y y # t        $ r%}| j                  j                  |       Y d }~y d }~ww xY w)Nz!feed() called after end of stream)rr  r   r   SyntaxErrorr  rZ   )r2   r   excs      r%   r   zXMLPullParser.feed  sc    *<<@AA/!!$'   /""))#../s   9 	A'A""A'c                 H    | j                   j                         }d | _         |S r:   )rr  r   )r2   rv  s     r%   ru  z$XMLPullParser._close_and_return_root  s     ||!!#r$   c                 &    	 | j                          y r:   )ru  r7   s    r%   r   zXMLPullParser.close  s    	
 	##%r$   c              #   ~   K   	 | j                   }|r*|j                         }t        |t              r|| |r)y y wr:   )r  popleftr,   	Exception)r2   rq  events      r%   rt  zXMLPullParser.read_events  s@     	
 ##NN$E%+ s   8==r:   )r    r!   r"   r4   r   ru  r   rt  r#   r$   r%   r   r     s"    
<t 
</&r$   r   c                 r    	 |st        t                     }|j                  |        |j                         S Nr  r   r   r   r   )r=   r   s     r%   r   r     s0    	 +-0
KK<<>r$   c                     	 |st        t                     }|j                  |        |j                         }i }|j	                         D ]  }|j                  d      }|s|||<    ||fS )Nr  r6   )r   r   r   r   r   rx   )r=   r   rn  idsr?   r6   s         r%   r   r   /  sn     +-0
KK<<>D
C		 XXd^CG 9r$   c                     	 |st        t                     }| D ]  }|j                  |        |j                         S r  r  )sequencer   r=   s      r%   r   r   G  s?     +-0 D<<>r$   c                   T    e Zd Z	 dddddddZd Zd Zd Zd Zd	 Zd
 Z	ddZ
d Zy)r   NF)comment_factory
pi_factoryinsert_comments
insert_pisc                    g | _         g | _        d | _        d | _        d | _        |t
        }|| _        || _        |t        }|| _	        || _
        |t        }|| _        y r:   )_data_elem_lastr   _tailr   _comment_factoryr  r   _pi_factoryr  r   _factory)r2   element_factoryr  r  r  r  s         r%   r4   zTreeBuilder.__init__m  sn     




"%O /..J%$"%O'r$   c                     	 | j                   S r:   r   r7   s    r%   r   zTreeBuilder.close  s    I zzr$   c                     | j                   r^| j                  Jdj                  | j                         }| j                  r|| j                  _        n|| j                  _        g | _         y y Nr   )r  r  joinr  r>   r=   r2   r=   s     r%   _flushzTreeBuilder._flush  sP    ::zz%wwtzz*::&*DJJO '+DJJODJ r$   c                 <    	 | j                   j                  |       y r:   )r  rZ   r2   r   s     r%   r   zTreeBuilder.data  s    *

$r$   c                    	 | j                          | j                  ||      x| _        }| j                  r| j                  d   j	                  |       n| j
                  || _        | j                  j	                  |       d| _        |S )Nr`  r   )r  r  r  r  rZ   r   r  )r2   r'   attrsr?   s       r%   startzTreeBuilder.start  su    	 	 MM#u55
T::JJrN!!$'ZZDJ

$
r$   c                     	 | j                          | j                  j                         | _        d| _        | j                  S r
  )r  r  popr  r  r   s     r%   r  zTreeBuilder.end  s7    	
 	ZZ^^%
 
zzr$   c                 R    	 | j                  | j                  | j                  |      S r:   )_handle_singler  r  r  s     r%   commentzTreeBuilder.comment  s/    	 ""!!4#7#7? 	?r$   c                 T    	 | j                  | j                  | j                  ||      S r:   )r  r  r  )r2   r   r=   s      r%   pizTreeBuilder.pi  s/    	
 ""doovt= 	=r$   c                      || }|rH| j                          || _        | j                  r| j                  d   j                  |       d| _        |S )Nr`  r   )r  r  r  rZ   r  )r2   factoryra   argsr?   s        r%   r  zTreeBuilder._handle_single  sG    ~KKMDJzz

2%%d+DJr$   r:   )r    r!   r"   r4   r   r  r   r  r  r  r  r  r#   r$   r%   r   r   Y  sC    &(!%$!&5((
 "?=r$   r   c                   X    e Zd Z	 ddddZd Zd Zd Zd Zd Zd	 Z	d
 Z
d Zd Zd Zy)r   N)r   r   c                J   	 ddl m} |j	                  |d      }|
t               }|x| _        | _        |x| _        | _	        |j                  | _        i | _        | j                  |_        t        |d      r| j                   |_        t        |d      r| j$                  |_        t        |d      r| j(                  |_        t        |d      r| j,                  |_        t        |d	      r|j0                  |_        t        |d
      r|j4                  |_        t        |d      r|j8                  |_        d|_        d|_        d | _         i | _!        	 d|jD                  z  | _#        y # t        $ r" 	 dd l}n# t        $ r t        d      w xY wY w xY w# tH        $ r Y y w xY w)Nr   expatz7No module named expat; use SimpleXMLTreeBuilder insteadr   r  r  start_nsend_nsr   r  r  r   zExpat %d.%d.%d)%xml.parsersr  ImportErrorpyexpatParserCreater   r   rr  r   _targeterror_error_names_defaultDefaultHandlerExpandr(   _startStartElementHandler_endEndElementHandler	_start_nsStartNamespaceDeclHandler_end_nsEndNamespaceDeclHandlerr   CharacterDataHandlerr  CommentHandlerr  ProcessingInstructionHandlerbuffer_textordered_attributes_doctypeentityversion_infoversionr   )r2   r   r   r  r   s        r%   r4   zXMLParser.__init__  s   	) ##Hc2> ]F%++dl%++dlkk&*mm#67#)-F&65!'+yyF$6:&/3~~F,68$-1\\F*66"*0++F'69%$*NNF!64 28))F/$%!	+e.@.@@DLM  	' !M  (	N  		s;   E( F (	F2E76F7FFF	F"!F"c                    | j                   }|j                  }|D ]  }|dk(  r d|_        ||| j                  fd}||_        (|dk(  r||| j
                  fd}||_        F|dk(  r6t        | j                  d      r||| j                  fd}n||fd	}||_
        |d
k(  r6t        | j                  d      r||| j                  fd}n||fd}||_        |dk(  r||| fd}||_        |dk(  r||| fd}||_        t        d|z         y )Nr  r   c                 &     || || |      f       y r:   r#   )r'   	attrib_inr  rZ   r  s        r%   handlerz%XMLParser._setevents.<locals>.handler  s    E5i#89:r$   r  c                 $     || ||       f       y r:   r#   )r'   r  rZ   r  s       r%   r  z%XMLParser._setevents.<locals>.handler  s    E3s8,-r$   zstart-nsr  c                 &     || || |      f       y r:   r#   )r  r  r  rZ   r  s        r%   r  z%XMLParser._setevents.<locals>.handler"  s    x'<=>r$   c                 ,     ||| xs d|xs dff       y r  r#   )r  r  r  rZ   s       r%   r  z%XMLParser._setevents.<locals>.handler&  s    "ciR'@ABr$   zend-nsr  c                 $     || ||       f       y r:   r#   )r  r  rZ   r  s       r%   r  z%XMLParser._setevents.<locals>.handler,  s    vf~67r$   c                      ||d f       y r:   r#   )r  r  rZ   s      r%   r  z%XMLParser._setevents.<locals>.handler0  s    t}-r$   r  c                 J     |||j                   j                  |       f       y r:   )r   r  )r=   r  rZ   r2   s       r%   r  z%XMLParser._setevents.<locals>.handler4  s    E4;;#6#6t#<=>r$   r  c                 L     |||j                   j                  | |      f       y r:   )r   r  )	pi_targetr   r  rZ   r2   s        r%   r  z%XMLParser._setevents.<locals>.handler8  s    E4;;>>)T#BCDr$   zunknown event %r)rr  rZ   r  r  r  r  r  r(   r   r  r  r  r  r  r  r   )r2   events_queueevents_to_reportr   rZ   
event_namer  s          r%   r  zXMLParser._setevents
  s<    $$* *	BJW$,-)2<V"&++; .5*u$'1& $		. ,3(z)4;;
33=f)-? 4>f C3:0x'4;;1.8'+||8 /9 .18.y((26 ?(/%t#3=f!%E 7>3 !3j!@AAU*	Br$   c                 x    t        |      }|j                  |_        |j                  |j                  f|_        |r:   )r   codelinenooffsetposition)r2   r{   errs      r%   _raiseerrorzXMLParser._raiseerror?  s0    ::||U\\1	r$   c                 z    	 | j                   |   }|S # t        $ r |}d|v rd|z   }|| j                   |<   Y |S w xY w)Nr   r   )r  KeyError)r2   ry   names      r%   _fixnamezXMLParser._fixnameE  sU    	$;;s#D   	$Dd{Tz#DKK	$s    #::c                 J    | j                   j                  |xs d|xs d      S r  )r   r  r2   r  r  s      r%   r  zXMLParser._start_nsP  s!    {{##FLb#)<<r$   c                 @    | j                   j                  |xs d      S r  )r   r  )r2   r  s     r%   r  zXMLParser._end_nsS  s    {{!!&,B//r$   c                     | j                   } ||      }i }|r/t        dt        |      d      D ]  }||dz      | |||         <    | j                  j	                  ||      S )Nr   rE   r   )r  rangerB   r   r  )r2   r'   	attr_listfixnamer0   is         r%   r  zXMLParser._startV  sl     --cl1c)na0 ?09!A#wy|,-?{{  f--r$   c                 V    | j                   j                  | j                  |            S r:   )r   r  r  r   s     r%   r  zXMLParser._endb  s    {{t}}S122r$   c                    |d d }|dk(  r1	 | j                   j                  }	  || j                  |dd           y |dk(  r|d d	 d
k(  rg | _        y | j                  |dk(  rd | _        y |j                         }|sy | j                  j!                  |       t#        | j                        }|dkD  r| j                  d   }|dk(  r|dk(  r| j                  \  }}}	}
|	r$|	dd }	n|dk(  r|dk(  r| j                  \  }}}
d }	ny t%        | j                   d      r!| j                   j'                  ||	|
dd        n&t%        | d      rt)        j*                  dt,               d | _        y y y # t        $ r Y y w xY w# t        $ r ddlm} |j                  d|| j                  j                  | j                  j                  fz        }d|_        | j                  j                  |_        | j                  j                  |_        |w xY w)Nr   rB  r`  r   r  z'undefined entity %s: line %d, column %d   r   	   z	<!DOCTYPEr   rE   PUBLIC   SYSTEM   doctypezaThe doctype() method of XMLParser is ignored.  Define doctype() method on the TreeBuilder target.)r   r   r   r  r  r  r  r  r   ErrorLineNumberErrorColumnNumberr  r  r  r  rf  rZ   rB   r(   r  rH   rI   RuntimeWarning)r2   r=   r  data_handlerr  r  nrd   r  pubidsystems              r%   r  zXMLParser._defaulte  s    bqS=#{{//T[[a45 s]tBQx;6DM]]&} $::<DMM  &DMM"A1u}}Q'8#Q04-D$v %aX%!q&)-&D$ E4;;	2KK''eVAb\BT9-MMM&(
 !%'  '# "   
-kk=4;;66KK1133
 ![[88
![[::
	
s   E* E9 *	E65E69BHc                     	 	 | j                   j                  |d       y # | j                  $ r}| j                  |       Y d }~y d }~ww xY w)NF)r   Parser  r  )r2   r   r  s      r%   r   zXMLParser.feed  sC    *	 KKdE*{{ 	 Q	 s     A
AA
c                 0   	 	 | j                   j                  dd       	 | j                  j
                  } |       | ` | `| `| `S # | j                  $ r}| j                  |       Y d }~Kd }~ww xY w# t        $ r Y nw xY w	 | ` | `| `| `y # | ` | `| `| `w xY w)Nr$   T)	r   r  r  r  r   r   rr  r  r   )r2   r  close_handlers      r%   r   zXMLParser.close  s    I	 KKc4(		* KK--M !? T\T\ {{ 	 Q	   		
 T\T\ T\T\s?   A A2 B A/A**A/2	A>;B =A>>B 
B)r    r!   r"   r4   r  r  r  r  r  r  r  r  r   r   r#   r$   r%   r   r     sI     "& +Z3Bj	=0
.34%l *r$   r   )out	from_filec                $   	 | |t        d      d }|t        j                         x}}t        t	        |j
                  fi |      }| "|j                  |        |j                          n|t        ||       ||j                         S d S )Nz:Either 'xml_data' or 'from_file' must be provided as inputr  )r   )
r   r   rP  r   r   r   r   r   r   rR  )xml_datar  r  optionssior   s         r%   r   r     s     I-UVV
C
{KKM!c.syyDGDEFH		i' _3<<>6$6r$   z	^\w+:\w+$c                       e Zd Z	 dddddddddZefdZd ZddZd Zd	j                  fd
Z
d Zd ZddZd Zd Zd Zy)r   FN)with_comments
strip_textrewrite_prefixesqname_aware_tagsqname_aware_attrsexclude_attrsexclude_tagsc                2   || _         g | _        || _        || _        |rt	        |      nd | _        |rt	        |      nd | _        || _        |rt	        |      | _        nd | _        |rt	        |      j                  | _
        nd | _
        dgg| _        g | _        |s6| j                  j                  t        t        j!                                      | j                  j                  g        i | _        dg| _        d | _        d| _        d| _        d| _        y )N)r>  r   Fr   )_writer  _with_comments_strip_textr|   _exclude_attrs_exclude_tags_rewrite_prefixes_qname_aware_tagsintersection_find_qname_aware_attrs_declared_ns_stack	_ns_stackrZ   r  r   r   _prefix_map_preserve_space_pending_start
_root_seen
_root_done_ignored_depth)	r2   r   r  r  r  r  r  r  r   s	            r%   r4   zC14NWriterTarget.__init__  s    
+%4Ac-0t2>S.D!1%()9%:D"%)D"+./@+A+N+ND(+/D( <$
 # NN!!$~';';'=">?b! %w"r$   c              #   D   K    ||      D ]  }|s|E d {     y 7 wr:   r#   )r2   ns_stack	_reversedrl   s       r%   _iter_namespacesz!C14NWriterTarget._iter_namespaces  s)     #H- 	&J%%%	&%s      c                     |j                  dd      \  }}| j                  | j                        D ]  \  }}||k(  sd| d| c S  t        d| d| d      )Nr   r   r   r   zPrefix z of QName "" is not declared in scope)splitr6  r,  r   )r2   prefixed_namer  r  r  ps         r%   _resolve_prefix_namez%C14NWriterTarget._resolve_prefix_name  sq    $**32++DNN; 	*FCF{C54&))	* 76(+m_D^_``r$   c                    |%|d d dk(  r|dd  j                  dd      nd|f\  }}n|}t               }| j                  | j                        D ]/  \  }}||k(  r||vr|r| d| n|||fc S |j	                  |       1 | j
                  ro|| j                  v r| j                  |   }n'dt        | j                         x}| j                  |<   | j                  d   j                  ||f       | d| ||fS |s	d|vr|||fS | j                  | j                        D ]:  \  }}||k(  s| j                  d   j                  ||f       |r| d| n|||fc S  |s|||fS t        d| d	      )
Nr   r   r   r   r   r  r`  zNamespace "r8  )r   r|   r6  r+  addr'  r-  rB   rZ   r,  r   )r2   r  r  r'   prefixes_seenur  s          r%   _qnamezC14NWriterTarget._qname  s   ;38!93CuQRy''Q/"eHCC..t/F/FG 	&IAvCxF-7,2&3%(S#EEf%	& !!d&&&))#.34S9I9I5J4K1LL))#.##B'..V}=XQse$c3..r.S= ..t~~> 	FIAvCx''+22C=A,2&3%(S#EE	F
  S= ;se+EFGGr$   c                 T    | j                   s| j                  j                  |       y y r:   )r2  r  rZ   r  s     r%   r   zC14NWriterTarget.dataD  s"    ""JJd# #r$   r   c                     || j                         }| j                   d d = | j                  r| j                  d   s|j                         }| j                  <| j                  d c}| _        |rt        |      r|nd } | j                  g ||  |y |r(| j                  r| j                  t        |             y y y Nr`  )
r  r$  r.  rf  r/  _looks_like_prefix_namer  r0  r"  _escape_cdata_c14n)r2   
_join_textr   r  
qname_texts        r%   r  zC14NWriterTarget._flushH  s    $**%JJqMD$8$8$<::<D*(,(;(;T%D$%!%*A$*GTJDKK**z*%DOOKK*401 $4r$   c                     | j                   ry | j                  r| j                          | j                  d   j	                  ||f       y rD  )r2  r  r  r,  rZ   r  s      r%   r  zC14NWriterTarget.start_nsV  s9    ::KKMr!!3-0r$   c                 ^   | j                   0| j                  s|| j                   v r| xj                  dz  c_        y | j                  r| j                          g }| j                  j                  |       | j                  || j                  v r|||f| _        y | j                  |||       y r
  )	r&  r2  r  r  r+  rZ   r(  r/  r  )r2   r'   r  new_namespacess       r%   r  zC14NWriterTarget.start^  s    )##sd.@.@'@1$::KKM&&~6!!-#9O9O2O#&~">DC/r$   c                    | j                   4|r2|j                         D ci c]  \  }}|| j                   vs|| }}}|h|}i }|'| j                  |      x}	||<   |j                  |	       | j                  X|rV| j	                  |      }
|
r@|
D ]:  }||   }t        |      s| j                  |      x}	||<   |j                  |	       < nd }
nd }
| j                  }t        |d       D ci c]  }| ||       }}|r.|D cg c]  \  }}|rd|z   nd|f }}}|j                          ng }|rVt        |j                               D ]:  \  }}|
||
v r||v r|||      d   }||   \  }}}|j                  |r|n||f       < |j                  d      }| j                  j                  |r|dk(  n| j                  d          | j                  } |d	||   d   z          |r: |d
j                  |D cg c]  \  }}d| dt        |       d c}}              |d       | |t        |||      d                d| _        | j"                  j                  g        y c c}}w c c}w c c}}w c c}}w )Nc                 &    | j                  dd      S )Nr   r   )r9  )r  s    r%   r   z)C14NWriterTarget._start.<locals>.<lambda>  s    !''#q/ r$   r  zxmlns:xmlnsr   z+{http://www.w3.org/XML/1998/namespace}spacepreserver`  r   r   r   r  r  r   T)r%  r   r<  r>  r*  rE  rA  r  sortrZ   rx   r.  r"  r  _escape_attrib_c14nrF  r0  r,  )r2   r'   r  rK  rH  r  r  r   resolved_namesr  qattrs	attr_namer{   parse_qnamer  parsed_qnamesr  r  r  
attr_qnamespace_behaviourr   s                         r%   r  zC14NWriterTarget._starto  s   *u&+kkmTdaq@S@S7SQTTET !151J1J:1VVEN:.JJu''311%8F!' *I!),E.u58<8Q8QRW8XXu 5

5)	* F kk4:153 4qKN* 4 4  $2C '-F"'3?I  NN I u{{}- H1%!v+!~:M%nQ&78;A-:1-=*
Is  *A!FGH  ))$QR##-<Oz)%%b)	+
 cM#&q))*"'')T$!QQqc$7$:#;1=TUVc
 !$]>*3M%Nq%QRSb!C U04
8 Us   I/I/3I5I: J c                    | j                   r| xj                   dz  c_         y | j                  r| j                          | j                  d| j	                  |      d    d       | j
                  j                          t        | j
                        dk(  | _        | j                  j                          | j                  j                          y )Nr   r  r   r   )r2  r  r  r"  rA  r.  r  rB   r1  r+  r,  r   s     r%   r  zC14NWriterTarget.end  s    1$::KKMbS)!,-Q/0  "d223q8##%r$   c                 <   | j                   sy | j                  ry | j                  r| j                  d       n(| j                  r| j
                  r| j                          | j                  dt        |       d       | j                  s| j                  d       y y )Nr   z<!--z-->)r#  r2  r1  r"  r0  r  r  rF  r  s     r%   r  zC14NWriterTarget.comment  sw    ""??KK__KKMd-d34C89KK r$   c                 8   | j                   ry | j                  r| j                  d       n(| j                  r| j                  r| j                          | j                  |rd| dt        |       dnd| d       | j                  s| j                  d       y y )Nr   z<?r   z?>)r2  r1  r"  r0  r  r  rF  )r2   r   r   s      r%   r  zC14NWriterTarget.pi  s    ??KK__KKM:>b,T2326bPRO	UKK r$   r:   )r    r!   r"   r4   reversedr6  r<  rA  r   r  r  r  r  r  r  r  r  r#   r$   r%   r   r     sj    ,  %"&$#$# J 4< &
a#HJ$ !# 210"C"J

r$   r   c                     	 d| v r| j                  dd      } d| v r| j                  dd      } d| v r| j                  dd      } d| v r| j                  dd      } | S # t        t        f$ r t        |        Y y w xY w)	NrB  rC  r   rD  r   rE  rK  &#xD;rF  r   s    r%   rF  rF    s    ) $;<<W-D$;<<V,D$;<<V,D4<<<g.D~& )"4()s   AA A98A9c                 P   	 d| v r| j                  dd      } d| v r| j                  dd      } d| v r| j                  dd      } d| v r| j                  dd      } d	| v r| j                  d	d
      } d| v r| j                  dd      } | S # t        t        f$ r t        |        Y y w xY w)NrB  rC  r   rD  r  rJ  rL  z&#x9;r   z&#xA;rK  r^  rF  r   s    r%   rQ  rQ    s    )$;<<W-D$;<<V,D$;<<X.D4<<<g.D4<<<g.D4<<<g.D~& )"4()s   BB B%$B%)r   )_set_factoriesr:   r   )z  r   )>__all__r   ra  r7  rH   r   r~  collections.abcr   r   r   r  r   r	   r   r   r   r   r   r   r   contextmanagerr   r   r  r1  r/  r   r   r   r   r  r  r  r0  r   r   rU  r   r   r   r   r
   r   r   r   r   r   r   r   r   compileUNICODEr8  rE  r   rF  rQ  rc   _elementtreer`  r  r#   r$   r%   <module>rg     s  !P(  
 	  	    		 		#
^ ^B	 $& $  +" +"`\/ \/B /+ /+b;z0(d
0(d 
!* -2$*38(.(,16(, %3  !

) )8)!T"&0b'' "
!%&*
&/l/d2 2j", 
$v vt^* ^*H7tt 7< %"**\2::>DD  D)&).3 K + 712  		s   E' 'E/.E/