a
    äzeØs ã                   @   s°  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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 d dlmZmZ d dlmZ d dlmZmZmZmZmZmZ dadaedddZze d	¡ W n eyö   e d
¡‚Y n0 edddZ edddZ!dZ"dZ#dZ$dZ%dZ&dZ'ddœdd„Z(dd„ Z)G dd„ dej*ƒZ+dpdd„Z,dd „ Z-G d!d"„ d"ƒZ.G d#d$„ d$ej*ƒZ/G d%d&„ d&ej*ƒZ0i Z1d'e1d(< d)e1d*< d+e1d,< d-e1d.< d/e1d0< d1e1d2< d3e1d4< d5e1d6< d7 2e 3ed¡¡e1d8< d9e1d:< i Z4d;e4d<< d=e4d>< d?e1d@< dAe1dB< dCe1dD< G dEdF„ dFej*ƒZ5G dGdH„ dHej*ƒZ6G dIdJ„ dJe.ej*ƒZ7G dKdL„ dLe.ej*ƒZ8G dMdN„ dNe9ƒZ:e9j;e:_;G dOdP„ dPe9ƒZ<e9j;e<_;G dQdR„ dRe.ej*ƒZ=G dSdT„ dTej*ƒZ>G dUdV„ dVej*ƒZ?G dWdX„ dXej*ƒZ@G dYdZ„ dZej*ƒZAG d[d\„ d\ej*ƒZBG d]d^„ d^ej*ƒZCG d_d`„ d`ej*ƒZDG dadb„ dbej*ƒZEG dcdd„ ddej*ƒZFG dedf„ dfej*ƒZGG dgdh„ dhej*ƒZHdidj„ ZIG dkdl„ dlej*ƒZJdqdmdn„ZKeLdokr¬eKƒ  dS )ré    N)Úpartial)ÚproductÚislice)Úsupport)ÚTESTFNÚfindfileÚimport_fresh_moduleÚ
gc_collectÚ	swap_attrÚ	swap_itemz
simple.xmlÚxmltestdata©Zsubdirúutf-8z!filename is not encodable to utf8zsimple-ns.xmlzexpat224_utf8_bug.xmlz„<body>
  <tag class='a'>text</tag>
  <tag class='b' />
  <section>
    <tag class='b' id='inner'>subtext</tag>
  </section>
</body>
zz<section>
  <tag class='b' id='inner'>subtext</tag>
  <nexttag />
  <nextsection>
    <tag />
  </nextsection>
</section>
zy
<body xmlns="http://effbot.org/ns">
  <tag>text</tag>
  <tag />
  <section>
    <tag>subtext</tag>
  </section>
</body>
zø
<root>
<h:table xmlns:h="hello">
  <h:tr>
    <h:td>Apples</h:td>
    <h:td>Bananas</h:td>
  </h:tr>
</h:table>

<f:table xmlns:f="foo">
  <f:name>African Coffee Table</f:name>
  <f:width>80</f:width>
  <f:length>120</f:length>
</f:table>
</root>
zy<!DOCTYPE points [
<!ENTITY % user-entities SYSTEM 'user-entities.xml'>
%user-entities;
]>
<document>&entity;</document>
zl<!DOCTYPE points [
<!ENTITY entity SYSTEM "file:///non-existing-file.xml">
]>
<document>&entity;</document>
F)Úquietc                    s   ‡ ‡fdd„}|S )Nc                    s    ‡‡‡ fdd„}t  |ˆ ¡ |S )Nc                     sB   t jˆ dˆiŽ ˆ| i |¤Ž W d   ƒ n1 s40    Y  d S )Nr   )r   Zcheck_warnings)ÚargsÚkwargs)Úfiltersr   Útest© ú)/usr/lib/python3.9/test/test_xml_etree.pyÚnewtestk   s    z1checkwarnings.<locals>.decorator.<locals>.newtest)Ú	functoolsÚupdate_wrapper)r   r   ©r   r   )r   r   Ú	decoratorj   s    z checkwarnings.<locals>.decoratorr   )r   r   r   r   r   r   Úcheckwarningsi   s    r   c                 C   s   |   dtj ¡ ¡S )Nó   
)ÚreplaceÚosÚlinesepÚencode)Údatar   r   r   Úconvlinesepr   s    r"   c                   @   s   e Zd Zdd„ Zdd„ ZdS )Ú
ModuleTestc                 C   s(   ddl m} ddl m} ddl m} d S )Nr   )ÚElementTree©ÚElementInclude©ÚElementPath)Ú	xml.etreer$   r&   r(   )Úselfr$   r&   r(   r   r   r   Útest_sanityw   s    zModuleTest.test_sanityc                 C   s   d}t j| t|dd d S )N)úxml.etree.ElementTreeÚ_elementtree)Z
HTML_EMPTY)Z	blacklist)r   Zcheck__all__ÚET)r*   Únamesr   r   r   Útest_all~   s    zModuleTest.test_allN)Ú__name__Ú
__module__Ú__qualname__r+   r0   r   r   r   r   r#   v   s   r#   TÚunicodec                 K   sX   |dkrt  ¡ }nt  ¡ }t | ¡}|j|fd|i|¤Ž |rF| ¡ S | d¡ |S d S )Nr4   Úencodingr   )ÚioÚBytesIOÚStringIOr.   r$   ÚwriteÚgetvalueÚseek)ÚelemÚ	to_stringr5   ÚoptionsÚfileÚtreer   r   r   Ú	serializeƒ   s    


rA   c                 C   s   dd„ | D ƒS )Nc                 S   s   g | ]
}|j ‘qS r   ©Útag©Ú.0r<   r   r   r   Ú
<listcomp>‘   ó    z"summarize_list.<locals>.<listcomp>r   )Úseqr   r   r   Úsummarize_list   s    rI   c                   @   s(   e Zd Zedd„ ƒZdd„ Zdd„ ZdS )ÚElementTestCasec                 C   s   t th| _d S ©N)ÚpyETr.   Úmodules)Úclsr   r   r   Ú
setUpClass•   s    zElementTestCase.setUpClassc           
      C   sÜ   zvt tj||ƒ t ||¡}W d   ƒ n1 s20    Y  t tj||ƒ t |¡}W d   ƒ n1 sj0    Y  W n` tjyÖ } zFttdft	dfgƒ}	t
 d||	 ||¡|	 ||¡f ¡|‚W Y d }~n
d }~0 0 |S )NZcETrL   z%Failed to round-trip %r from %r to %r)r   ÚsysrM   ÚpickleÚdumpsÚloadsÚPicklingErrorÚdictr.   rL   r   Z
TestFailedÚget)
r*   ÚobjÚnameÚdumperÚloaderÚprotoZtempÚresultÚpeZhumanr   r   r   ÚpickleRoundTrip™   s     *,

þÿýzElementTestCase.pickleRoundTripc                 C   sŒ   |   |tjtjf¡ |   |tjtjf¡ |  tt|ƒƒtt|ƒƒ¡ t||ƒD ]\}}|  ||¡ qNt	 
dddd¡}|  ||ƒ||ƒ¡ d S )NrC   ÚtailÚtextÚattrib)ÚassertIsInstancer.   ÚElementrL   ÚassertEqualÚlenÚlistÚzipÚassertEqualElementsÚoperatorÚ
attrgetter)r*   ZaliceÚbobÚxÚyZ
propertiesr   r   r   rh   ¨   s    z#ElementTestCase.assertEqualElementsN)r1   r2   r3   ÚclassmethodrO   r^   rh   r   r   r   r   rJ   ”   s   
rJ   c                   @   sl  e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Zd-d.„ Zd/d0„ Zd1d2„ Zd3d4„ Zd5d6„ Zd7d8„ Zd9d:„ Zd;d<„ Z d=d>„ Z!d?d@„ Z"dAdB„ Z#dCdD„ Z$dEdF„ Z%dGdH„ Z&dIdJ„ Z'dKdL„ Z(dMdN„ Z)dOdP„ Z*dQdR„ Z+dSdT„ Z,dUdV„ Z-dWdX„ Z.dYS )ZÚElementTreeTestc                 C   s   |   t|ƒ|¡ d S rK   )rd   rA   )r*   r<   Úexpectedr   r   r   Úserialize_check¶   s    zElementTreeTest.serialize_checkc                    s’  ‡fdd„‰‡fdd„‰‡ ‡‡‡fdd„‰ t  d¡}ˆ |ƒ t  |¡}ˆ | ¡ ƒ t jdd	d
}t  |¡}ˆ t|ƒd¡ t jdd	d
}‡fdd„‰ˆ|jƒ ˆ|jƒ ˆ|jƒ ˆ|j	ƒ ˆ|j
ƒ ˆ|jƒ ˆ|jƒ ˆ|jƒ ˆ|jƒ ˆ|jƒ ˆ|jƒ ˆ|jƒ ˆ|jƒ ˆ|jƒ ˆ|jƒ ‡fdd„}|| d¡ƒ || d¡ƒ || d¡ƒ || d¡ƒ ˆ t jt j¡ ˆ t jt j¡ d S )Nc                    sJ   t | ƒ | D ]}ˆ jt |ƒdd| d q| d }| d }| d d…  d S )Né   z%expected one-character string, got %r©ÚmsgÚ ú r   )re   rd   )ÚstringÚcharZ
new_string©r*   r   r   Úcheck_string¼   s    ÿz4ElementTreeTest.test_interface.<locals>.check_stringc                    sR   t | ƒ |  ¡ }|  ¡ }|D ]}| | }qd| d< ˆ j| d dd| d  d d S )NÚvalueÚkeyzexpected value string, got %rrs   )re   ÚkeysÚitemsrd   )Úmappingr}   r~   r|   Úitemry   r   r   Úcheck_mappingÅ   s    

ÿz5ElementTreeTest.test_interface.<locals>.check_mappingc                    s¤   ˆj t | ¡dd t| ƒ}dD ]0}ˆj t| |ƒd| d ˆj||d| d q ˆ| jƒ ˆ| jƒ | jd urzˆ| jƒ | j	d urŽˆ| j	ƒ | D ]}ˆ |ƒ q’d S )Nznot an elementrs   )rC   ra   r`   r_   zno %s memberzno %s visible by dir)
Ú
assertTruer.   Z	iselementÚdirÚhasattrÚassertInrC   ra   r`   r_   )ÚelementZdirelemÚattrr<   )Úcheck_elementr   rz   r*   r   r   rˆ   Ï   s"    ÿÿ





z5ElementTreeTest.test_interface.<locals>.check_elementrC   õ   tÃ¤gr{   ©r|   z^<Element 't\xe4g' at 0x.*>$c                    s   ˆ j t| dƒd|  d d S )NÚ__call__z%s not callablers   )r‚   r„   ©Úmethodry   r   r   Úcheck_methodì   s    ÿz4ElementTreeTest.test_interface.<locals>.check_methodc                    s   ˆ | j ƒ d S rK   )Ú__next__)Úit)rŽ   r   r   Ú
check_iter  s    z2ElementTreeTest.test_interface.<locals>.check_iterÚ*)r.   rc   r$   ÚgetrootÚassertRegexÚreprÚappendÚextendÚinsertÚremoveÚfindÚiterfindÚfindallÚfindtextÚclearrV   Úsetr}   r~   ÚiterÚitertextrd   ÚXMLÚ
fromstringÚPIÚProcessingInstruction)r*   r†   r@   r‘   r   )rˆ   r   rŽ   rz   r*   r   Útest_interface¹   sD    	


















zElementTreeTest.test_interfacec                 C   sú   t  d¡}|  |jd¡ d|_|  |jd¡ d|_|  |jd¡ |  |j¡ d|_|  |jd¡ d|_|  |jd¡ |  |j¡ d|_|  |jd¡ d|_|  |jd¡ |  |ji ¡ dd	d
œ|_|  |jdd	d
œ¡ dddœ|_|  |jdddœ¡ d S )NrC   ÚTagZTAGÚTextZTEXTZTailZTAILÚbÚd)ÚaÚcÚBÚD)ÚAÚC)r.   rc   rd   rC   ÚassertIsNoner`   r_   ra   )r*   r†   r   r   r   Útest_set_attribute  s*    
z"ElementTreeTest.test_set_attributec                 C   s  t  d¡}|  |d¡ t  d¡}| |¡ |  |d¡ | |¡ |  |d¡ | d|¡ |  |d¡ | |¡ | |g¡ |  |d¡ | |¡ | t|gƒ¡ |  |d¡ | |¡ t jddd	}|  |d
¡ t  d¡}| |¡ |  |d¡ | d|¡ |  |d¡ | |¡ |  |d¡ | |¡ |  |d
¡ |  	t
¡}| |¡ W d   ƒ n1 s`0    Y  |  t|jƒd¡ |  |d
¡ |||g|dd…< |  |d d¡ |  |dd… |d |d g¡ |  |d dd… |d |d g¡ |dd…= |  |d¡ d S )Nú<body><tag/></body>ú<body><tag /></body>Útag2z<body><tag /><tag2 /></body>r   z<body><tag2 /><tag /></body>rC   r{   rŠ   z<tag key="value" />Úsubtagz!<tag key="value"><subtag /></tag>z+<tag key="value"><subtag /><subtag /></tag>zlist.remove(x): x not in listrr   z
<subtag />é	   é   )r.   r¢   rq   rc   r–   r™   r˜   r—   r    ÚassertRaisesÚ
ValueErrorrd   ÚstrÚ	exception)r*   r<   Úer†   Z
subelementÚcmr   r   r   Útest_simpleops*  sR    








ÿ

* "
ÿzElementTreeTest.test_simpleopsc                 C   s:   |   t d¡d¡ |   t d¡d¡ |   t d¡d¡ d S )Nz<tag>hello</tag>z)<tag>&#104;&#101;&#108;&#108;&#111;</tag>z<tag><![CDATA[hello]]></tag>)rq   r.   r¢   ry   r   r   r   Ú
test_cdataV  s    ÿÿÿzElementTreeTest.test_cdatac                 C   s|   t  t d¡¡}tj|d}|  | d¡jd¡ |  | d¡jd¡ tjt	d}|  | d¡jd¡ |  | d¡jd¡ d S )Nr   )r?   rC   úsection/tagr†   zelement/../empty-elementúempty-element)
r6   r7   Ú
SAMPLE_XMLr    r.   r$   rd   rš   rC   ÚSIMPLE_XMLFILE)r*   Z
stringfiler@   r   r   r   Útest_file_init`  s    ÿzElementTreeTest.test_file_initc                 C   sò   ddl m} t t¡}tdƒD ]}t |¡ dt|ƒ ¡ qt	|j
ƒ}tdƒD ]}t |¡ dt|ƒ ¡ qN|  t	|j
ƒ|¡ tdƒD ]}t |¡ dt|ƒ ¡ q†|  t	|j
ƒ|¡ tdƒD ]}t |¡ dt|ƒ ¡ q¾|  t	|j
ƒd¡ d S )Nr   r'   é
   z./é   iX  iô  )r)   r(   r.   r¢   rÃ   Úranger$   rš   r»   re   Ú_cacherd   ZassertGreaterZ
assertLess)r*   r(   r<   ÚiZcache_len_10r   r   r   Útest_path_cachek  s    
&
&&&zElementTreeTest.test_path_cachec                 C   sZ   dd l }t d¡}|  |¡}| |¡}d| d¡_|  |d¡ |  |d¡ |  |d¡ d S )Nr   z<tag>hello<foo/></tag>ÚbarÚfooz<tag>hello<bar /></tag>z<tag>hello<foo /></tag>)Úcopyr.   r¢   Údeepcopyrš   rC   rq   )r*   rÎ   Úe1Úe2Úe3r   r   r   Ú	test_copyz  s    


zElementTreeTest.test_copyc                 C   s&  t  d¡}| d¡ |  | dd¡d¡ | dd¡ |  | d¡d¡ t jddd}|  | d¡d¡ |  |jddi¡ ddi}t  d|¡}| ¡  |  | d¡d¡ |  |jddi¡ ddi}t jdi |¤Ž}| ¡  |  | d¡d¡ |  |jddi¡ t jdddidd}|  | d¡d¡ |  |jddi¡ t  d¡}d|_| d	d
¡ | dd¡ |  t  |¡d¡ |  t	| 
¡ ƒd	dg¡ |  t	| ¡ ƒddg¡ |  |jd d¡ d|jd< d|jd< |  t  |¡d¡ t  d¡}| dd¡ | dd¡ | dd¡ | dd¡ |  t  |¡d¡ d S )NrC   r|   Údefaultr{   rŠ   Úotherr   ZaaÚtestaÚtestvalÚtestbÚtest2s-   <test testa="testval" testb="test2">aa</test>)rÖ   r×   )rØ   rÙ   Ztest1Ztestcs;   <test testa="testval" testb="test1" testc="test2">aa</test>r«   úr©   ú
r¬   z	
 rª   z

		  s[   <test a="&#13;" b="&#13;&#10;" c="&#09;&#10;&#13; " d="&#10;&#10;&#13;&#13;&#09;&#09;  " />)rC   )r.   rc   rV   rd   rŸ   ra   rž   r`   ÚtostringÚsortedr}   r~   )r*   r<   ra   r   r   r   Útest_attrib†  s\    


ÿÿ

ÿ
ÿzElementTreeTest.test_attribc                 C   sÆ   t  d¡}ddi}| d|¡}| j|j|dd | |¡ |  |d¡ | ¡  |  |d¡ | |¡ |  |d¡ | ||g¡ |  |d	¡ |g|d d …< |  |d¡ t	|gƒ|d d …< |  |d¡ d S )
NrC   r|   r{   r¶   zattrib aliasingrs   z!<tag><subtag key="value" /></tag>ú<tag />zM<tag><subtag key="value" /><subtag key="value" /><subtag key="value" /></tag>)
r.   rc   ZmakeelementÚassertIsNotra   r–   rq   rž   r—   Útuple)r*   r<   ra   Úsubelemr   r   r   Útest_makeelement¼  s$    


ÿz ElementTreeTest.test_makeelementc                 C   sò   t  t¡}t ¡ }|j|dd |  | ¡ d¡ t  t¡}t ¡ }|j|dd |  | ¡ d¡ t	tƒ}| 
¡ }W d   ƒ n1 s†0    Y  t  ¡ }|  |jd¡ | |¡ |  | ¡ d¡ t  ¡ }t j|d}| |¡ |  | ¡ d¡ d S )Nr4   ©r5   zi<root>
   <element key="value">text</element>
   <element>text</element>tail
   <empty-element />
</root>z›<ns0:root xmlns:ns0="namespace">
   <ns0:element key="value">text</ns0:element>
   <ns0:element>text</ns0:element>tail
   <ns0:empty-element />
</ns0:root>z^Expat ©Útarget)r.   ÚparserÄ   r6   r8   r9   rd   r:   ÚSIMPLE_NS_XMLFILEÚopenÚreadÚ	XMLParserr”   ÚversionÚfeedrq   ÚcloseÚTreeBuilder)r*   r@   ÚstreamÚfr!   Úparserræ   r   r   r   Útest_parsefileÒ  s4    

ÿ

ÿ
&

ÿ

ÿzElementTreeTest.test_parsefilec                 C   sâ   t  d¡}|  t j|ddd¡ t  d¡}|  t j|ddd¡ g d¢}t  |¡}|  t  |¡d¡ |  d t  |¡¡d¡ |  t  |d¡d¡ t  d¡\}}|  t	|ƒd	¡ t  d
¡\}}|  t	|ƒd¡ |  |d j
d¡ d S )Nú<html><body>text</body></html>r4   rä   )z<html><body>ztext</boz
dy></html>ó   <html><body>text</body></html>rG   ÚasciisE   <?xml version='1.0' encoding='ascii'?>
<html><body>text</body></html>r   z(<html><body id='body'>text</body></html>rr   Úbody)r.   r¢   rd   rÜ   r£   ZfromstringlistÚjoinÚtostringlistZXMLIDre   rC   )r*   r†   ZsequenceÚ_Zidsr   r   r   Útest_parseliteralÿ  s0    
ÿ
ÿ
ÿÿÿz!ElementTreeTest.test_parseliteralc              	   C   s8  t j}|tƒ}t|ƒ\}}|  ||jfd¡ |  dd„ |D ƒg d¢¡ |  |jjd¡ |tƒ}|  dd„ |D ƒg d¢¡ d}|t|ƒ}|  d	d„ |D ƒg ¡ d}|t|d
}|  dd„ |D ƒg ¡ d}|t|ƒ}|  dd„ |D ƒg d¢¡ d}|t|ƒ}|  dd„ |D ƒg d¢¡ d}|t 	d¡|ƒ}dd„ |D ƒ}|  |ddg¡ d}t
tdƒR}|  t¡}|||ƒ W d   ƒ n1 s€0    Y  |  |j¡ W d   ƒ n1 s¬0    Y  |  t|jƒd¡ t | ¡Z |  t¡}|t|ƒ W d   ƒ n1 s 0    Y  |  t|jƒd¡ ~W d   ƒ n1 s40    Y  t d¡}	d}||	|ƒ}|  dd„ |D ƒddg¡ t 	d¡}	||	ƒ}
t|
ƒ\}}|  ||jfd ¡ |  t j¡}t|
ƒ W d   ƒ n1 sÌ0    Y  |  t|jƒd!¡ |  tjt¡ t
td"ƒ}| d#¡ W d   ƒ n1 s"0    Y  |tƒ}
t|
ƒ\}}|  ||jfd ¡ t | ¡\ |  t j¡}t|
ƒ W d   ƒ n1 sŠ0    Y  |  t|jƒd!¡ ~~
W d   ƒ n1 sÀ0    Y  t | ¡ |tƒ}
~
W d   ƒ n1 sö0    Y  |  t¡ |d$ƒ W d   ƒ n1 s*0    Y  d S )%N©Úendr†   c                 S   s   g | ]\}}||j f‘qS r   rB   ©rE   Úactionr<   r   r   r   rF     rG   z2ElementTreeTest.test_iterparse.<locals>.<listcomp>)rü   ©rý   rÂ   ©rý   Úrootr  c                 S   s   g | ]\}}||j f‘qS r   rB   rþ   r   r   r   rF   %  rG   )©rý   ú{namespace}elementr  ©rý   ú{namespace}empty-element©rý   ú{namespace}rootr   c                 S   s   g | ]\}}||j f‘qS r   rB   rþ   r   r   r   rF   .  rG   ©Úeventsc                 S   s   g | ]\}}||j f‘qS r   rB   rþ   r   r   r   rF   2  rG   ©Ústartrý   c                 S   s   g | ]\}}||j f‘qS r   rB   rþ   r   r   r   rF   6  rG   ©©r  r  ©r  r†   rü   r  rü   )r  rÂ   r   r  )r  rý   ústart-nsúend-nsc                 S   s*   g | ]"\}}|d v r||j fn||f‘qS )r  rB   rþ   r   r   r   rF   C  s   þ)
©r  )ru   Ú	namespace©r  r  ©r  r  r  r  r  ©r  r  r  r  ©r  N©r  r  z<root xmlns=''/>c                 S   s   g | ]\}}|‘qS r   r   rþ   r   r   r   rF   T  rG   r  r  ©r  rý   ZbogusÚrbzunknown event 'bogus's‡   <?xml version='1.0' encoding='iso-8859-1'?>
<body xmlns='http://&#233;ffbot.org/ns'
      xmlns:clé='http://effbot.org/ns'>text</body>
)r  c                 S   s   g | ]\}}||f‘qS r   r   rþ   r   r   r   rF   j  rG   )r  )ru   u   http://Ã©ffbot.org/ns)r  )u   clÃ©úhttp://effbot.org/nsz<document />junk)rý   Údocumentz.junk after document element: line 1, column 12Úwbs   <document />junkZnonexistent)r.   Ú	iterparserÄ   Únextrd   rC   r  rè   r6   r8   ré   r¹   rº   ÚassertFalseÚclosedr»   r¼   r   Zcheck_no_resource_warningr7   Ú
ParseErrorÚ
addCleanupÚunlinkr   r9   ÚFileNotFoundError)r*   r  Úcontextrÿ   r<   r
  Úresrñ   r¾   Úsourcer   r   r   r   Útest_iterparse  s–    



þþ*,*"ÿ
þ
(ÿ*(ÿ$"zElementTreeTest.test_iterparsec                 C   s†   t  d¡}d|_|  |d¡ dt  |d¡_|  |d¡ d |_|  |d¡ | dt  d	¡¡ |  |d
¡ t  dd¡|d< |  |d¡ d S )NrC   r`   z<tag>text</tag>Úsubtextr¶   z'<tag>text<subtag>subtext</subtag></tag>ztext<subtag>subtext</subtag>r   Úcommentz*text<!--comment--><subtag>subtext</subtag>r|   r{   z)text<?key value?><subtag>subtext</subtag>)	r.   rc   r`   rq   Ú
SubElementrC   r˜   ÚCommentr¤   ©r*   r<   r   r   r   Útest_writefile  s    
ÿzElementTreeTest.test_writefilec                 C   sÜ   t tƒ}| ¡ }W d   ƒ n1 s&0    Y  G dd„ dtƒ}|ƒ }tj|d}| |¡ |  |g d¢¡ t tƒ}| ¡ }W d   ƒ n1 s’0    Y  G dd„ dtƒ}|ƒ }tj|d}| |¡ |  |g d¢¡ d S )Nc                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ú4ElementTreeTest.test_custom_builder.<locals>.Builderc                 S   s   |   d|f¡ d S ©Nr  ©r–   ©r*   rC   ra   r   r   r   r  ¤  s    ú:ElementTreeTest.test_custom_builder.<locals>.Builder.startc                 S   s   |   d|f¡ d S ©Nrý   r2  ©r*   rC   r   r   r   rý   ¦  s    ú8ElementTreeTest.test_custom_builder.<locals>.Builder.endc                 S   s   d S rK   r   ©r*   r`   r   r   r   r!   ¨  s    ú9ElementTreeTest.test_custom_builder.<locals>.Builder.dataN)r1   r2   r3   r  rý   r!   r   r   r   r   ÚBuilder£  s   r:  rå   r  c                   @   sD   e Z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 )r0  c                 S   s   |   d|f¡ d S r1  r2  r3  r   r   r   r  »  s    r4  c                 S   s   |   d|f¡ d S r5  r2  r6  r   r   r   rý   ½  s    r7  c                 S   s   d S rK   r   r8  r   r   r   r!   ¿  s    r9  c                 S   s   |   d||f¡ d S )NÚpir2  )r*   ræ   r!   r   r   r   r;  Á  s    z7ElementTreeTest.test_custom_builder.<locals>.Builder.pic                 S   s   |   d|f¡ d S )Nr+  r2  )r*   r!   r   r   r   r+  Ã  s    z<ElementTreeTest.test_custom_builder.<locals>.Builder.commentc                 S   s   |   d||f¡ d S )Nr  r2  )r*   ÚprefixÚurir   r   r   Ústart_nsÅ  s    z=ElementTreeTest.test_custom_builder.<locals>.Builder.start_nsc                 S   s   |   d|f¡ d S ©Nr  r2  ©r*   r<  r   r   r   Úend_nsÇ  s    z;ElementTreeTest.test_custom_builder.<locals>.Builder.end_nsN)
r1   r2   r3   r  rý   r!   r;  r+  r>  rA  r   r   r   r   r:  º  s   ))r;  r;  r!   )r+  ú	 comment )r  ru   r  r  r  r  r  r  r  r  r  ©r  ru   )	ré   rÄ   rê   rf   r.   rë   rí   rd   rè   )r*   rñ   r!   r:  Úbuilderrò   r   r   r   Útest_custom_builderž  s    
&

&
z#ElementTreeTest.test_custom_builderc                 C   sF   G dd„ dt ƒ}|ƒ }tj|d}| t d¡¡ |  |g d¢¡ d S )Nc                   @   s   e Zd Zdd„ ZdS )z@ElementTreeTest.test_custom_builder_only_end_ns.<locals>.Builderc                 S   s   |   d|f¡ d S r?  r2  r@  r   r   r   rA  Ý  s    zGElementTreeTest.test_custom_builder_only_end_ns.<locals>.Builder.end_nsN)r1   r2   r3   rA  r   r   r   r   r:  Ü  s   r:  rå   a              <?pi data?>
            <!-- comment -->
            <root xmlns='namespace' xmlns:p='pns' xmlns:a='ans'>
               <a:element key='value'>text</a:element>
               <p:element>text</p:element>tail
               <empty-element/>
            </root>
            ))r  r«   )r  ÚprC  )rf   r.   rë   rí   ÚtextwrapÚdedentrd   )r*   r:  rD  rò   r   r   r   Útest_custom_builder_only_end_nsÛ  s
    	z/ElementTreeTest.test_custom_builder_only_end_nsc                 C   s8   t jd d}|  |jt j¡ t  ¡ }|  |jt j¡ d S )Nrå   )r.   rë   rb   ræ   rï   )r*   rò   Úparser2r   r   r   Ú%test_initialize_parser_without_targetñ  s    z5ElementTreeTest.test_initialize_parser_without_targetc                 C   s|  t tdƒ}t |¡}W d   ƒ n1 s*0    Y  |  dd„ | ¡  ¡ D ƒg d¢g g g g¡ |  dd„ | ¡ D ƒg d¢g g g g¡ t t¡}|  t	t
|ƒƒd¡ |  t	t
|d ƒƒd¡ |  |d d … t
|ƒ¡ |d	 }|d }|dd…= |  t	t
|ƒƒd¡ |  ||d	 ¡ |  ||d ¡ ||g|d	d…< |  ||d	 ¡ |  ||d ¡ |  ||d	 ¡ | ¡  |  t
|ƒg ¡ d S )
Nr  c                 S   s   g | ]}t |ƒ‘qS r   ©rI   rD   r   r   r   rF   ÿ  s   ÿz1ElementTreeTest.test_children.<locals>.<listcomp>)r†   r†   rÂ   c                 S   s   g | ]}t |ƒ‘qS r   rL  rD   r   r   r   rF     s   ÿé   r¸   rr   r   )ré   rÄ   r.   rç   rd   r“   r    r¢   rÃ   re   rf   ÚassertNotEqualrž   )r*   rñ   r@   r<   Úchild1Úchild2r   r   r   Útest_childrenú  sH    (

ÿüÿ
ÿüÿ

zElementTreeTest.test_childrenc                 C   s<   t  d¡}|  t  |¡d¡ t  d¡}|  t  |¡d¡ d S )Nrô   rõ   )r.   r¢   rd   rÜ   r£   r.  r   r   r   Útest_writestring  s    

z ElementTreeTest.test_writestringc                 C   sè   t  d¡}t  |¡ |  t  |¡d¡ t  d¡}t  |¡ |  t  |¡d¡ t  d¡}t  |¡ |  t  |¡d¡ t  d¡}t  |¡ |  t  |¡d¡ t  d¡}t  |¡ |  t  |¡d	¡ t  d
¡}t  |¡ |  t  |¡d¡ d S )Nz<root></root>s   <root />rô   s"   <html>
  <body>text</body>
</html>z!<html> <body>text</body>  </html>z"<html><body>text</body>tail</html>s%   <html>
  <body>text</body>tail</html>z=<html><body><p>par</p>
<p>text</p>	<p><br/></p></body></html>s^   <html>
  <body>
    <p>par</p>
    <p>text</p>
    <p>
      <br />
    </p>
  </body>
</html>ú8<html><body><p>pre<br/>post</p><p>text</p></body></html>sJ   <html>
  <body>
    <p>pre<br />post</p>
    <p>text</p>
  </body>
</html>©r.   r¢   Úindentrd   rÜ   r.  r   r   r   Útest_indent%  s0    









þ

þzElementTreeTest.test_indentc                 C   sX   t  d¡}t j|dd |  t  |¡d¡ t  d¡}t j|dd |  t  |¡d¡ d S )NrS  ú	)ÚspacesD   <html>
	<body>
		<p>pre<br />post</p>
		<p>text</p>
	</body>
</html>ru   s>   <html>
<body>
<p>pre<br />post</p>
<p>text</p>
</body>
</html>rT  r.  r   r   r   Útest_indent_spaceQ  s    
þ

þz!ElementTreeTest.test_indent_spacec                 C   s„   t  d¡}t  |¡ |  dd„ | ¡ D ƒh d£¡ |  dd„ | ¡ D ƒh d£¡ |  tdd„ | ¡ D ƒƒtdd„ | ¡ D ƒƒ¡ d S )	Nz@<html><body><p>par</p><p>text</p><p><br/></p><p /></body></html>c                 S   s   h | ]
}|j ’qS r   ©r_   ©rE   Úelr   r   r   Ú	<setcomp>n  rG   z<ElementTreeTest.test_indent_space_caching.<locals>.<setcomp>>   Ú
Nú
    ú
  c                 S   s   h | ]
}|j ’qS r   ©r`   r[  r   r   r   r]  r  rG   >   r`   Nr`  Zparz
      r_  c                 S   s   h | ]
}|j ’qS r   rZ  r[  r   r   r   r]  v  rG   c                 S   s   h | ]}t |jƒ’qS r   )Úidr_   r[  r   r   r   r]  w  rG   )r.   r¢   rU  rd   r    re   r.  r   r   r   Útest_indent_space_cachingj  s    

þþþz)ElementTreeTest.test_indent_space_cachingc                 C   s¤   t  d¡}|  t¡ t j|dd W d   ƒ n1 s80    Y  |  t  |¡d¡ t j|dd |  t  |¡d¡ t  d¡}t j|ddd	 |  t  |¡d
¡ d S )NrS  éÿÿÿÿ)Úlevels9   <html><body><p>pre<br />post</p><p>text</p></body></html>r¸   s^   <html>
      <body>
        <p>pre<br />post</p>
        <p>text</p>
      </body>
    </html>rr   rv   )re  rX  sI   <html>
  <body>
   <p>pre<br />post</p>
   <p>text</p>
  </body>
 </html>)r.   r¢   r¹   rº   rU  rd   rÜ   r.  r   r   r   Útest_indent_levelz  s$    
,þþ

þz!ElementTreeTest.test_indent_levelc                 C   s<   t  d¡}|  t j|ddd¡ |  t j|dddd¡ d S )Nú0<body xmlns="http://effbot.org/ns"><tag/></body>r4   rä   úA<ns0:body xmlns:ns0="http://effbot.org/ns"><ns0:tag /></ns0:body>r  ©r5   Údefault_namespaceú1<body xmlns="http://effbot.org/ns"><tag /></body>©r.   r¢   rd   rÜ   r.  r   r   r   Útest_tostring_default_namespaceš  s    
þþz/ElementTreeTest.test_tostring_default_namespacec                 C   s&   t  d¡}|  t j|dddd¡ d S )Nrg  r4   Úfoobarri  zP<ns1:body xmlns="foobar" xmlns:ns1="http://effbot.org/ns"><ns1:tag /></ns1:body>rl  r.  r   r   r   Ú3test_tostring_default_namespace_different_namespace¥  s
    
þzCElementTreeTest.test_tostring_default_namespace_different_namespacec                 C   sN   t  d¡}d}|  t|¡  t j|ddd W d   ƒ n1 s@0    Y  d S )Nr³   z>^cannot use non-qualified names with default_namespace option$r4   rn  ri  )r.   r¢   ÚassertRaisesRegexrº   rÜ   )r*   r<   ZEXPECTED_MSGr   r   r   Ú5test_tostring_default_namespace_original_no_namespace¬  s    
zEElementTreeTest.test_tostring_default_namespace_original_no_namespacec                 C   s$   t  d¡}|  t j|ddd¡ d S )Nr³   r4   rä   r´   rl  r.  r   r   r   Ú test_tostring_no_xml_declaration²  s
    
þz0ElementTreeTest.test_tostring_no_xml_declarationc                 C   s&   t  d¡}|  t j|dddd¡ d S )Nr³   Úutf8T©r5   Úxml_declarations:   <?xml version='1.0' encoding='utf8'?>
<body><tag /></body>rl  r.  r   r   r   Útest_tostring_xml_declaration¹  s
    
þz-ElementTreeTest.test_tostring_xml_declarationc                 C   s&   t  d¡}|  t j|dddd¡ d S )Nr³   r4   Trt  ú;<?xml version='1.0' encoding='utf-8'?>
<body><tag /></body>rl  r.  r   r   r   Ú.test_tostring_xml_declaration_unicode_encodingÀ  s
    
þz>ElementTreeTest.test_tostring_xml_declaration_unicode_encodingc              	   C   st   t  d¡}g d¢}|D ]X\}}}|  d|› d|› ¡( |  t j|||d|¡ W d   ƒ q1 sd0    Y  qd S )Nõ   <body><tag>Ã¸</tag></body>))ó   <body><tag>&#248;</tag></body>NN)ó   <body><tag>Ã¸</tag></body>úUTF-8N)rz  úUS-ASCIIN)óE   <?xml version='1.0' encoding='ISO-8859-1'?>
<body><tag>ø</tag></body>ú
ISO-8859-1N)ry  r4   N)rz  NF)r{  r|  F)rz  r}  F)s   <body><tag>ø</tag></body>r  F)ry  r4   F)sH   <?xml version='1.0' encoding='us-ascii'?>
<body><tag>&#248;</tag></body>NT)sA   <?xml version='1.0' encoding='UTF-8'?>
<body><tag>Ã¸</tag></body>r|  T)sH   <?xml version='1.0' encoding='US-ASCII'?>
<body><tag>&#248;</tag></body>r}  T)r~  r  T)uA   <?xml version='1.0' encoding='utf-8'?>
<body><tag>Ã¸</tag></body>r4   Tz	encoding=z xml_declaration=rt  )r.   r¢   ÚsubTestrd   rÜ   )r*   r<   Z	TESTCASESZexpected_retvalr5   ru  r   r   r   Ú#test_tostring_xml_declaration_casesÇ  s    
ÿ
ýúz3ElementTreeTest.test_tostring_xml_declaration_casesc              	   C   sH   t  d¡}|  d t j|dd¡d¡ |  d t j|ddd¡d¡ d S )	Nrg  ru   r4   rä   rh  r  ri  rk  )r.   r¢   rd   rø   rù   r.  r   r   r   Ú#test_tostringlist_default_namespaceó  s    
þþz3ElementTreeTest.test_tostringlist_default_namespacec                 C   s   t  d¡}|  d t j|dd¡d¡ |  d t j|dd¡d	¡ t j|ddd
}|  d |¡d¡ |  |d d¡ |  g d¢|dd … ¡ d S )Nr³   ru   r4   rä   r´   rG   T)ru  s>   <?xml version='1.0' encoding='us-ascii'?>
<body><tag /></body>rt  rw  r   z%^<\?xml version='1.0' encoding='.+'?>)z<bodyú>z<tagz />z</body>rr   )r.   r¢   rd   rø   rù   r”   )r*   r<   Z
stringlistr   r   r   Ú!test_tostringlist_xml_declarationþ  s     
þþþz1ElementTreeTest.test_tostringlist_xml_declarationc              	      s  d‡ fdd„	}|ddƒ |ddƒ |ddƒ |d	d
ƒ |ddƒ |ddƒ dd„ ‰‡fdd„}g d¢}|D ] }ˆ   t t ||ƒ¡¡d¡ qjg d¢}|D ]}ˆ  ttj||ƒ¡ q˜g d¢}|D ]}ˆ  tjtj||ƒ¡ q¾ˆ  ttjˆdƒ d¡¡ ˆ  ttjˆdƒ d¡¡ d S )Nru   c                    s>   d| |f }ˆ   t | | ¡¡j|¡ ˆ   t |¡j|¡ d S )Nz0<?xml version='1.0' encoding='%s'?><xml>%s</xml>)rd   r.   r¢   r    r`   )r5   r÷   Úxmlry   r   r   Úcheck  s
    ÿz,ElementTreeTest.test_encoding.<locals>.checkrö   r«   úus-asciiú
iso-8859-1õ   Â½ziso-8859-15u   â‚¬Úcp437u   âˆšú	mac-romanu   Ëšc                 S   s   d|  S )Nz*<?xml version='1.0' encoding='%s'?><xml />r   rä   r   r   r   r…    s    z*ElementTreeTest.test_encoding.<locals>.xmlc                    s   ˆ | ƒ  | ¡S rK   )r    rä   )r…  r   r   Úbxml   s    z+ElementTreeTest.test_encoding.<locals>.bxml)Crö   r   z	utf-8-sigúutf-16úutf-16beúutf-16lez	iso8859-1z	iso8859-2z	iso8859-3z	iso8859-4z	iso8859-5z	iso8859-6z	iso8859-7z	iso8859-8z	iso8859-9z
iso8859-10z
iso8859-13z
iso8859-14z
iso8859-15z
iso8859-16rŠ  Zcp720Zcp737Úcp775Úcp850Úcp852Úcp855Zcp856Úcp857Úcp858Úcp860Úcp861Úcp862Úcp863Úcp865Úcp866Úcp869Zcp874Zcp1006Úcp1125Úcp1250Úcp1251Úcp1252Úcp1253Úcp1254Úcp1255Úcp1256Úcp1257Úcp1258zmac-cyrillicz	mac-greekzmac-icelandz
mac-latin2r‹  zmac-turkishz
iso2022-jpziso2022-jp-1ziso2022-jp-2ziso2022-jp-2004ziso2022-jp-3ziso2022-jp-extzkoi8-rzkoi8-tzkoi8-uÚkz1048ÚhzÚptcp154s   <xml />)Úbig5Ú	big5hkscsÚcp932Úcp949Úcp950zeuc-jpzeuc-jis-2004zeuc-jisx0213zeuc-krÚgb2312ÚgbkÚgb18030z
iso2022-krÚjohabz	shift-jiszshift-jis-2004zshift-jisx0213zutf-7)
Úcp037Úcp424Úcp500Úcp864Zcp875Úcp1026Úcp1140Úutf_32Ú	utf_32_beÚ	utf_32_leZ	undefinedZxxx)ru   )	rd   r.   rÜ   r¢   r¹   rº   r"  r    ÚLookupError)r*   r†  rŒ  Zsupported_encodingsr5   Z&unsupported_ascii_compatible_encodingsZ(unsupported_ascii_incompatible_encodingsr   ©r*   r…  r   Útest_encoding  s(    





	zElementTreeTest.test_encodingc                 C   st   t  d¡}d|_|  t|ƒd¡ |  t|d dd¡ |  t|ddd¡ |  t|ddd¡ |  t|ddd	¡ d S )
Nz-<html><link/><script>1 &lt; 2</script></html>r^  z/<html><link /><script>1 &lt; 2</script></html>
rŒ   r…  Úhtmlz*<html><link><script>1 < 2</script></html>
r`   z1 < 2
)r.   r¢   r_   rd   rA   ©r*   r½   r   r   r   Útest_methodsL  s    

ÿÿÿÿzElementTreeTest.test_methodsc                 C   s2   t  d¡}|  t|ƒd¡ |  t|ddd¡ d S )Nz(<html><CamelCase>text</CamelCase></html>r¿  rŒ   ©r.   r¢   rd   rA   rÀ  r   r   r   Útest_issue18347[  s    

ÿÿzElementTreeTest.test_issue18347c                 C   s8  t  d¡}|  t|ddd¡ |  |d¡ |  t j¡}t  d¡ W d   ƒ n1 sV0    Y  |  t|jƒd¡ |  t j¡}t  t	¡ W d   ƒ n1 sž0    Y  |  t|jƒd¡ t  
¡ }d	|jd
< | t	¡ | ¡ }|  |d¡ |  t j¡}t  t¡ W d   ƒ n1 s0    Y  |  t|jƒd¡ d S )Nz*<document title='&#x8230;'>test</document>r‡  rä   s*   <document title="&#33328;">test</document>u%   <document title="èˆ°">test</document>z<document>&entity;</document>z#undefined entity: line 1, column 10z,undefined entity &entity;: line 5, column 10r`   Úentityz<document>text</document>z,undefined entity &entity;: line 4, column 10)r.   r¢   rd   rA   rq   r¹   r"  r»   r¼   Ú
ENTITY_XMLrë   rÄ  rí   rî   ÚEXTERNAL_ENTITY_XML)r*   r½   r¾   rò   r  r   r   r   Útest_entityb  s2    
ÿ(ÿ(ÿ

*ÿzElementTreeTest.test_entityc                 C   sr   t  d¡}|  |d¡ t  d¡}|  |d¡ t  d¡}|  |d¡ t  d¡}|  |d¡ t  t¡}|  |d	¡ d S )
Nz<tag xml:lang='en' />z<tag xml:lang="en" />zC<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' />zC<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" />z7<html:html xmlns:html='http://www.w3.org/1999/xhtml' />z7<html:html xmlns:html="http://www.w3.org/1999/xhtml" />zG<soap:Envelope xmlns:soap='http://schemas.xmlsoap.org/soap/envelope' />zE<ns0:Envelope xmlns:ns0="http://schemas.xmlsoap.org/soap/envelope" />zŸ<ns0:body xmlns:ns0="http://effbot.org/ns">
  <ns0:tag>text</ns0:tag>
  <ns0:tag />
  <ns0:section>
    <ns0:tag>subtext</ns0:tag>
  </ns0:section>
</ns0:body>)r.   r¢   rq   ÚSAMPLE_XML_NSr.  r   r   r   Útest_namespace‡  s$    

ÿ
ÿ
ÿ
ÿzElementTreeTest.test_namespacec                 C   sâ  t  d¡}|  |d¡ t  t  d¡¡}|  |d¡ t  t  dd¡¡}|  |d¡ t  t  dd¡¡}t  |t  dd¡¡}t  |t  dd¡¡}|  |d¡ | ¡  d|jd	< |  |d
¡ | ¡  d|jt  d	¡< |  |d
¡ | ¡  d|jd	< |  |d¡ | ¡  t  d¡|jd	< |  |d¡ | ¡  t  d¡}t  d¡|jd< | |¡ | |¡ |  |d¡ |  t	t  dd¡ƒd¡ |  t	t  d¡ƒd¡ t  dd¡}t  dd¡}|  ||¡ t  dd¡}|  
||¡ |  
|d¡ |  |d¡ d S )Nz{uri}tagz<ns0:tag xmlns:ns0="uri" />r=  rC   Ztag1rµ   z;<ns0:tag xmlns:ns0="uri"><ns0:tag1 /><ns0:tag2 /></ns0:tag>r{   z{uri}keyz+<ns0:tag xmlns:ns0="uri" ns0:key="value" />z
{uri}valuez0<ns0:tag xmlns:ns0="uri" ns0:key="{uri}value" />z/<ns0:tag xmlns:ns0="uri" ns0:key="ns0:value" />z{uri2}valuez	{uri1}keyz{<ns0:tag xmlns:ns0="uri" xmlns:ns1="uri1" xmlns:ns2="uri2"><tag ns1:key="ns2:value" /><tag ns1:key="ns2:value" /></ns0:tag>Únsz{ns}tagz	other-tagzns:tag)r.   rc   rq   ÚQNamer,  rž   ra   r–   rd   r»   rN  )r*   r<   râ   Zq1Zq2r   r   r   Ú
test_qname¨  sb    
ÿ
ÿÿ
ÿÿ


ÿzElementTreeTest.test_qnamec                 C   s   t  d¡}d S )NzŠ<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html>text</html>)r.   r¢   r.  r   r   r   Útest_doctype_publicé  s    z#ElementTreeTest.test_doctype_publicc                    sô  ddl m‰  d?‡ ‡fdd„	}|ddgƒ |dddgƒ |d	d
dgƒ |dd
dgƒ |dg d¢ƒ |dg d¢ƒ |dg d¢ƒ |dg d¢ƒ |dg d¢ƒ |dddgƒ |dg d¢ƒ |ddgƒ |dg d¢ƒ |ddgƒ |d g d!¢ƒ |d"g d#¢ƒ |d$g d%¢ƒ |d&d
d'gƒ |d(d(gƒ |d)g d*¢ƒ |d+g d,¢ƒ |d-d-gƒ |d.d.gƒ |d/d/gƒ |d0d0gƒ |d1g d2¢ƒ |d3g d4¢d5d6iƒ |d7d8gd9d6iƒ |d:d
d8gd5d6iƒ |d;d
d7gd9d6iƒ |d<d
d=gd9d6iƒ |d&d
d'gd6d6d>œƒ d S )@Nr   r'   c                    s"   ˆ  dd„ ˆ  | |¡D ƒ|¡ d S )Nc                 S   s   g | ]\}}|p|‘qS r   r   )rE   ÚoprC   r   r   r   rF   õ  s   ÿzGElementTreeTest.test_xpath_tokenizer.<locals>.check.<locals>.<listcomp>)rd   Zxpath_tokenizer)rF  rp   Ú
namespaces©r(   r*   r   r   r†  ô  s
    

ÿþz3ElementTreeTest.test_xpath_tokenizer.<locals>.checkr’   ztext()r`   ú()z@nameú@rX   z@*zpara[1])Úparaú[Ú1ú]zpara[last()])rÓ  rÔ  ZlastrÑ  rÖ  z*/para)r’   ú/rÓ  z/doc/chapter[5]/section[2])r×  Údocr×  ÚchapterrÔ  Ú5rÖ  r×  ÚsectionrÔ  Ú2rÖ  zchapter//para)rÙ  ú//rÓ  z//pararÝ  rÓ  z//olist/item)rÝ  Zolistr×  r€   Ú.z.//para)rÞ  rÝ  rÓ  ú..z../@lang)rß  r×  rÒ  Úlangzchapter[title])rÙ  rÔ  ÚtitlerÖ  z#employee[@secretary and @assistant])
ZemployeerÔ  rÒ  Z	secretaryru   Úandru   rÒ  Z	assistantrÖ  z	@{ns}attrz{ns}attrú{http://spam}eggz
./spam.egg)rÞ  r×  zspam.eggz.//{http://spam}egg)rÞ  rÝ  rã  z{ns}*ú{}*ú{*}tagú{*}*z	.//{*}tag)rÞ  rÝ  rå  z
./xsd:type)rÞ  r×  ú&{http://www.w3.org/2001/XMLSchema}typeZxsdz http://www.w3.org/2001/XMLSchemaÚtyperç  ru   z	@xsd:typez@typez@{*}typez{*}type)ru   rÊ  )N)r)   r(   )r*   r†  r   rÐ  r   Útest_xpath_tokenizerñ  sd    ÿ
ÿÿ
ÿ
ÿ
ÿ
ÿÿz$ElementTreeTest.test_xpath_tokenizerc                 C   sn   |   t t dd¡¡d¡ |   t t dd¡¡d¡ |   t t dd¡¡d¡ |   t t dd¡d¡d¡ d S )	Nr   Zinstructions   <?test instruction?>z
<testing&>s   <?test <testing&>?>u   <testing&>Ã£zlatin-1s=   <?xml version='1.0' encoding='latin-1'?>
<?test <testing&>ã?>)rd   r.   rÜ   r¥   r¤   ry   r   r   r   Útest_processinginstruction+  s    ÿÿÿÿz*ElementTreeTest.test_processinginstructionc                 C   sp   dD ]f}||  ¡ fD ]T}d| }tt d| ¡dd}|  ||¡ tt d||f ¡dd}|  ||¡ qqd S )N)ZAREAZBASEZBASEFONTZBRZCOLÚFRAMEZHRZIMGZINPUTZISINDEXZLINKZMETAZPARAMz<%s>z<%s />r¿  rŒ   z	<%s></%s>)ÚlowerrA   r.   r¢   rd   )r*   r†   r<   rp   Z
serializedr   r   r   Ú#test_html_empty_elems_serialization;  s    ÿz3ElementTreeTest.test_html_empty_elems_serializationc                 C   sV   t jdddd}t ¡ }t  |¡ W d   ƒ n1 s80    Y  |  | ¡ d¡ d S )NÚ
cirriculumÚpublicÚexample©ÚstatusZcompanyz1<cirriculum status="public" company="example" />
)r.   rc   r   Úcaptured_stdoutÚdumprd   r:   )r*   r½   Ústdoutr   r   r   Útest_dump_attribute_orderH  s    
(
ÿz)ElementTreeTest.test_dump_attribute_orderc                 C   s8   t jdddd}|  t|ƒd¡ |  t|ddd¡ d S )	Nrî  rï  rð  rñ  z0<cirriculum status="public" company="example" />r¿  rŒ   z;<cirriculum status="public" company="example"></cirriculum>)r.   rc   rd   rA   ©r*   r  r   r   r   Útest_tree_write_attribute_orderP  s    
ÿÿz/ElementTreeTest.test_tree_write_attribute_orderN)/r1   r2   r3   rq   r¦   r²   r¿   rÀ   rÅ   rË   rÓ   rÞ   rã   ró   rû   r)  r/  rE  rI  rK  rQ  rR  rV  rY  rc  rf  rm  ro  rq  rr  rv  rx  r  r‚  r„  r¾  rÁ  rÃ  rÇ  rÉ  rÌ  rÍ  ré  rê  rí  rö  rø  r   r   r   r   ro   ´   sX   V,
6-x=	%, ,;%!A:ro   c                   @   sŒ   e Zd Zd dd„Zd!dd„Zd"dd„Zd#dd	„Zd
d„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS )$ÚXMLPullParserTestNc                 C   sD   |d u r|  |¡ n,tdt|ƒ|ƒD ]}|  |||| … ¡ q$d S ©Nr   )rí   rÈ   re   )r*   rò   r!   Ú
chunk_sizerÊ   r   r   r   Ú_feed[  s    zXMLPullParserTest._feedc                 C   s$   |   dd„ t| ¡ |ƒD ƒ|¡ d S )Nc                 S   s    g | ]\}}||j |jff‘qS r   )rC   r`   )rE   Úeventr<   r   r   r   rF   d  s   ÿz3XMLPullParserTest.assert_events.<locals>.<listcomp>)rd   r   Úread_events©r*   rò   rp   Ú
max_eventsr   r   r   Úassert_eventsb  s    ÿýzXMLPullParserTest.assert_eventsc                 C   s   |   tt| ¡ |ƒƒ|¡ d S rK   )rd   rf   r   rþ  rÿ  r   r   r   Úassert_event_tuplesh  s    þz%XMLPullParserTest.assert_event_tuplesc                 C   s(   t | ¡ |ƒ}|  dd„ |D ƒ|¡ d S )Nc                 S   s   g | ]\}}||j f‘qS r   rB   rþ   r   r   r   rF   o  rG   z7XMLPullParserTest.assert_event_tags.<locals>.<listcomp>)r   rþ  rd   )r*   rò   rp   r   r
  r   r   r   Úassert_event_tagsm  s    ÿz#XMLPullParserTest.assert_event_tagsc              	   C   sô   dD ]ê}| j |dÊ t ¡ }|  |g ¡ |  |d|¡ |  |g ¡ |  |d|¡ |  |g ¡ |  |d|¡ |  |dg¡ |  |d|¡ |  |d|¡ |  |dd	g¡ |  |d
|¡ |  |dg¡ |  | ¡ ¡ W d   ƒ q1 sä0    Y  qd S )N)Nrr   é   )rû  ú<!-- comment -->
z+<root>
  <element key='value'>text</elementú>
rü   ú<element>text</element>tail
ú<empty-element/>
r   ú</root>
r  )r€  r.   ÚXMLPullParserr  rü  r±   rî   )r*   rû  rò   r   r   r   Útest_simple_xmlr  s,    þþz!XMLPullParserTest.test_simple_xmlc                 C   sš   t  ¡ }| ¡ }|  |d¡ t|ƒ\}}|  ||jfd¡ |  |d¡ t|ƒ\}}|  ||jfd¡ |  t¡ t|ƒ W d   ƒ n1 sŒ0    Y  d S )Nz-<root>
  <element key='value'>text</element>
rü   r	  r  )	r.   r
  rþ  rü  r  rd   rC   r¹   ÚStopIteration)r*   rò   r   rÿ   r<   r   r   r   Útest_feed_while_iterating‰  s    z+XMLPullParserTest.test_feed_while_iteratingc                 C   sÊ   t  ¡ }|  |g ¡ |  |d¡ |  |g ¡ |  |d¡ |  |g ¡ |  |d¡ |  |g ¡ |  |d¡ |  |dg¡ |  |d¡ |  |d¡ |  |ddg¡ |  |d	¡ |  |d
g¡ |  | ¡ ¡ d S )Nr  ú<root xmlns='namespace'>
ú"<element key='value'>text</elementr  r  r  r  r  r	  r  )r.   r
  r  rü  r±   rî   ©r*   rò   r   r   r   Útest_simple_xml_with_ns•  s&    þz)XMLPullParserTest.test_simple_xml_with_nsc                 C   sž   t jdd}|  |d¡ |  |d¡ |  t| ¡ ƒdg¡ |  |d¡ |  |d¡ |  |d¡ |  |d	¡ |  |d
¡ |  t| ¡ ƒdg¡ |  | ¡ ¡ d S )Nr  r	  r  r  r  r  r  r  r  r	  r  )r.   r
  rü  rd   rf   rþ  r±   rî   r  r   r   r   Útest_ns_eventsª  s    
þz XMLPullParserTest.test_ns_eventsc                 C   s€   t jdd}|  |d¡ | j|ddgdd | j|dgd	d |  |d
¡ |  |ddg¡ |  |d¡ | ¡  |  |dg¡ d S )N)r  r  rý   r	  ú <tag xmlns='abc' xmlns:p='xyz'>
©r  )ru   Úabc©r  )rF  Zxyzr¸   ©r   ©r  ú{abc}tagrr   ú
<child />
©r  ú
{abc}child©rý   r  ú</tag>
©rý   r  ©r.   r
  rü  r  r  rî   r  r   r   r   Útest_ns_events_start¹  s.    þýÿþþÿz&XMLPullParserTest.test_ns_events_startc                 C   s”   t jdd}|  |d¡ | j|ddgdd | j|dgd	d |  |d
¡ |  |ddg¡ |  |d¡ | ¡  | j|dgd	d |  |ddg¡ d S )N)r  r  rý   r  r	  r  r  r  r¸   r  r  rr   r  r  r  r  r  r  r   r  r   r   r   Útest_ns_events_start_endÐ  s:    þýÿþþÿþþz*XMLPullParserTest.test_ns_events_start_endc                 C   s  t jdd}|  |d¡ |  |g ¡ t jdd}|  |d¡ |  |g ¡ t jdd}|  |d¡ |  |dg¡ |  |d¡ |  |d	g¡ |  |d
¡ |  |dg¡ |  |d¡ |  |g d¢¡ |  |d¡ |  | ¡ ¡ |  |dg¡ t jdd}|  |d¡ |  |g ¡ |  |d¡ |  |dg¡ |  |d¡ |  |d	g¡ |  |d
¡ |  |g ¡ |  |d¡ |  |ddg¡ |  |d¡ |  | ¡ ¡ d S )Nr   r	  z<root/>
r  ú<!-- text here -->
z<root>
r  r  r  r  rü   z8<element xmlns='foo'>text<empty-element/></element>tail
)©r  ú{foo}element©r  ú{foo}empty-element)rý   r'  )rý   r%  z</root>r  )r  r  r$  r&  )r.   r
  rü  r  r  r±   rî   r  r   r   r   Útest_eventsë  sL    ÿÿþzXMLPullParserTest.test_eventsc                 C   s  t jdd}|  |d¡ |  |dt jdffg¡ |  |d¡ |  |dt jdffg¡ |  |d¡ |  |d	g¡ |  |d
¡ |  |dt jdffg¡ |  |d¡ |  |dg¡ |  |d¡ |  |dt jdffg¡ t jdd}|  |d¡ |  |dt jdffg¡ d S )N)r  r+  rý   r	  r#  r+  z text here z<!-- more text here -->
z more text here z<root-tag>text)r  úroot-tagz<!-- inner comment-->
z inner commentz</root-tag>
)rý   r)  z<!-- outer comment -->
z outer comment )r+  )r.   r
  rü  r  r-  r  r  r   r   r   Útest_events_comment  s     z%XMLPullParserTest.test_events_commentc                 C   sd   t jdd}|  |d¡ |  |dt jdffg¡ t jdd}|  |d¡ |  |dt jdffg¡ d S )	N)r  r;  rý   r	  z<?pitarget?>
r;  Úpitarget)r;  z<?pitarget some text ?>
zpitarget some text )r.   r
  rü  r  r¤   r  r   r   r   Útest_events_pi,  s    z XMLPullParserTest.test_events_pic                 C   sl   ddh}t j|d}|  |d¡ |  |ddg¡ G dd„ dƒ}t j|ƒ d}|  |d¡ |  |ddg¡ d S )	Nrý   r  r	  z<foo>bar</foo>)r  rÍ   )rý   rÍ   c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )z9XMLPullParserTest.test_events_sequence.<locals>.DummyIterc                 S   s   t g d¢ƒ| _d S )N)r  rý   r  )r    r
  ry   r   r   r   Ú__init__<  s    zBXMLPullParserTest.test_events_sequence.<locals>.DummyIter.__init__c                 S   s   | S rK   r   ry   r   r   r   Ú__iter__>  s    zBXMLPullParserTest.test_events_sequence.<locals>.DummyIter.__iter__c                 S   s
   t | jƒS rK   )r  r
  ry   r   r   r   r   @  s    zBXMLPullParserTest.test_events_sequence.<locals>.DummyIter.__next__N)r1   r2   r3   r-  r.  r   r   r   r   r   Ú	DummyIter;  s   r/  )r.   r
  rü  r  )r*   Zeventsetrò   r/  r   r   r   Útest_events_sequence4  s    z&XMLPullParserTest.test_events_sequencec                 C   s:   |   t¡ tjdd W d   ƒ n1 s,0    Y  d S )Nr  r	  )r¹   rº   r.   r
  ry   r   r   r   Útest_unknown_eventG  s    z$XMLPullParserTest.test_unknown_event)N)N)N)N)r1   r2   r3   rü  r  r  r  r  r  r  r  r!  r"  r(  r*  r,  r0  r1  r   r   r   r   rù  Y  s   



.rù  z´<?xml version='1.0'?>
<document xmlns:xi="http://www.w3.org/2001/XInclude">
  <p>120 Mz is adequate for an average home user.</p>
  <xi:include href="disclaimer.xml"/>
</document>
úC1.xmlzÐ<?xml version='1.0'?>
<disclaimer>
  <p>The opinions represented herein represent those of the individual
  and should not be interpreted as official policy endorsed by this
  organization.</p>
</disclaimer>
zdisclaimer.xmlz¶<?xml version='1.0'?>
<document xmlns:xi="http://www.w3.org/2001/XInclude">
  <p>This document has been accessed
  <xi:include href="count.txt" parse="text"/> times.</p>
</document>
úC2.xmlZ324387z	count.txtz¿<?xml version='1.0'?>
<document xmlns:xi="http://www.w3.org/2001/XInclude">
  <p>This document has been <em>accessed</em>
  <xi:include href="count.txt" parse="text"/> times.</p>
</document>
úC2b.xmlzÙ<?xml version='1.0'?>
<document xmlns:xi="http://www.w3.org/2001/XInclude">
  <p>The following is the source of the "data.xml" resource:</p>
  <example><xi:include href="data.xml" parse="text"/></example>
</document>
úC3.xmlzQ<?xml version='1.0'?>
<data>
  <item><![CDATA[Brooks & Shields]]></item>
</data>
zdata.xmlaW  <?xml version='1.0'?>
<div xmlns:xi="http://www.w3.org/2001/XInclude">
  <xi:include href="example.txt" parse="text">
    <xi:fallback>
      <xi:include href="fallback-example.txt" parse="text">
        <xi:fallback><a href="mailto:bob@example.org">Report error</a></xi:fallback>
      </xi:include>
    </xi:fallback>
  </xi:include>
</div>
úC5.xmlz„<?xml version='1.0'?>
<document xmlns:xi="http://www.w3.org/2001/XInclude">
  <p>Example.</p>
  <xi:include href="{}"/>
</document>
údefault.xmla  <?xml version='1.0'?>
<document xmlns:xi="http://www.w3.org/2001/XInclude">
  <p>The following is the source code of Recursive1.xml:</p>
  <xi:include href="C1.xml"/>
  <xi:include href="C1.xml"/>
  <xi:include href="C1.xml"/>
  <xi:include href="C1.xml"/>
</document>
úinclude_c1_repeated.xmlzÅ<?xml version='1.0'?>
<document xmlns:xi="http://www.w3.org/2001/XInclude">
  <p>120 Mz is adequate for an average home user.</p>
  <xi:include href="disclaimer.xml" parse="BAD_TYPE"/>
</document>
úB1.xmlzn<?xml version='1.0'?>
<div xmlns:xi="http://www.w3.org/2001/XInclude">
    <xi:fallback></xi:fallback>
</div>
úB2.xmlz»<?xml version='1.0'?>
<document xmlns:xi="http://www.w3.org/2001/XInclude">
  <p>The following is the source code of Recursive2.xml:</p>
  <xi:include href="Recursive2.xml"/>
</document>
úRecursive1.xmlz»<?xml version='1.0'?>
<document xmlns:xi="http://www.w3.org/2001/XInclude">
  <p>The following is the source code of Recursive3.xml:</p>
  <xi:include href="Recursive3.xml"/>
</document>
zRecursive2.xmlz»<?xml version='1.0'?>
<document xmlns:xi="http://www.w3.org/2001/XInclude">
  <p>The following is the source code of Recursive1.xml:</p>
  <xi:include href="Recursive1.xml"/>
</document>
zRecursive3.xmlc                   @   sH   e Zd Zddd„Zddd„Zdd„ Zd	d
„ Zdd„ Zdd„ Zdd„ Z	dS )ÚXIncludeTestr…  Nc                 C   s>   zt | }W n ty&   tdƒ‚Y n0 |dkr:t |¡}|S )Núresource not foundr…  )ÚXINCLUDEÚKeyErrorÚOSErrorr.   r¢   )r*   Úhrefrç   r5   r!   r   r   r   Úxinclude_loaderÒ  s    
zXIncludeTest.xinclude_loaderc                 C   s   d S rK   r   )r*   rA  rò   r5   r   r   r   Únone_loaderÛ  s    zXIncludeTest.none_loaderc                 C   sJ   |dkrBt |dƒ}t |¡ ¡ W  d   ƒ S 1 s60    Y  nd S d S )Nr…  r  )ré   r.   rç   r“   )r*   rA  rç   rñ   r   r   r   Ú
_my_loaderÞ  s    .zXIncludeTest._my_loaderc                 C   s8   ddl m} |  d¡}| || j¡ |  t|ƒd¡ d S )Nr   r%   r7  z”<document>
  <p>Example.</p>
  <root>
   <element key="value">text</element>
   <element>text</element>tail
   <empty-element />
</root>
</document>)r)   r&   rB  ÚincluderD  rd   rA   )r*   r&   rØ  r   r   r   Útest_xinclude_defaultç  s    

ÿz"XIncludeTest.test_xinclude_defaultc                 C   s  ddl m} |  d¡}| || j¡ |  t|ƒd¡ |  d¡}| || j¡ |  t|ƒd¡ |  d¡}| || j¡ |  t|ƒd¡ |  d	¡}| || j¡ |  t|ƒd
¡ |  d¡}|  t¡}| || j¡ W d   ƒ n1 sä0    Y  |  t|j	ƒd¡ |  t|ƒd¡ d S )Nr   r%   r2  a  <document>
  <p>120 Mz is adequate for an average home user.</p>
  <disclaimer>
  <p>The opinions represented herein represent those of the individual
  and should not be interpreted as official policy endorsed by this
  organization.</p>
</disclaimer>
</document>r3  zO<document>
  <p>This document has been accessed
  324387 times.</p>
</document>r4  zX<document>
  <p>This document has been <em>accessed</em>
  324387 times.</p>
</document>r5  zæ<document>
  <p>The following is the source of the "data.xml" resource:</p>
  <example>&lt;?xml version='1.0'?&gt;
&lt;data&gt;
  &lt;item&gt;&lt;![CDATA[Brooks &amp; Shields]]&gt;&lt;/item&gt;
&lt;/data&gt;
</example>
</document>r6  r=  aI  <div xmlns:ns0="http://www.w3.org/2001/XInclude">
  <ns0:include href="example.txt" parse="text">
    <ns0:fallback>
      <ns0:include href="fallback-example.txt" parse="text">
        <ns0:fallback><a href="mailto:bob@example.org">Report error</a></ns0:fallback>
      </ns0:include>
    </ns0:fallback>
  </ns0:include>
</div>)
r)   r&   rB  rE  rd   rA   r¹   r@  r»   r¼   ©r*   r&   r  r¾   r   r   r   Útest_xincludeõ  s8    

ÿ

ÿ

ÿ

ÿ
,
ÿzXIncludeTest.test_xincludec                 C   s>   ddl m} |  d¡}| || j¡ |  dt| d¡ƒ¡ d S )Nr   r%   r8  r·   z.//p)r)   r&   rB  rE  rd   re   rœ   )r*   r&   r  r   r   r   Útest_xinclude_repeated5  s    
z#XIncludeTest.test_xinclude_repeatedc                 C   s¨  ddl m} t td ¡}|  |j¡ }|j|| jd W d   ƒ n1 sL0    Y  |  	t
|jƒd¡ t td ¡}|  |j¡ }|j|| jd W d   ƒ n1 s¨0    Y  |  	t
|jƒd¡ t td ¡}|  |j¡ }|j|| jd W d   ƒ n1 s0    Y  |  	t
|jƒd	¡ t td
 ¡}|  |j¡ }|j|| jd W d   ƒ n1 sd0    Y  |  	t
|jƒd¡ |  d¡}|  |j¡}| || j¡ W d   ƒ n1 s¼0    Y  |  	t
|jƒd¡ |  d¡}|  |j¡"}|j|| jd d W d   ƒ n1 s0    Y  |  	t
|jƒd¡ |  d¡}|  |j¡"}|j|| jdd W d   ƒ n1 st0    Y  |  	t
|jƒd¡ |  d¡}|  |j¡"}|j|| jdd W d   ƒ n1 sÐ0    Y  |  	t
|jƒd¡ |  d¡}|  |j¡"}|j|| jdd W d   ƒ n1 s,0    Y  |  	t
|jƒd¡ |  d¡}|  |j¡"}|j|| jdd W d   ƒ n1 sˆ0    Y  |  	t
|jƒd¡ d S )Nr   r%   r2  )rZ   z%cannot load 'disclaimer.xml' as 'xml'r3  z!cannot load 'count.txt' as 'text'r9  z1unknown parse type in xi:include tag ('BAD_TYPE')r:  zYxi:fallback tag must be child of xi:include ('{http://www.w3.org/2001/XInclude}fallback')r;  z#recursive include of Recursive2.xml)Z	max_depthzAmaximum xinclude depth reached when including file Recursive2.xmlrr   zAmaximum xinclude depth reached when including file Recursive3.xmlr¸   zAmaximum xinclude depth reached when including file Recursive1.xmlrM  )r)   r&   r.   r¢   r>  r¹   ZFatalIncludeErrorrE  rC  rd   r»   r¼   ÚXINCLUDE_BADrB  ZLimitedRecursiveIncludeErrorrG  r   r   r   Útest_xinclude_failures<  sz    .ÿ.ÿ0ÿ0ÿ
.ÿ
2ÿ
2ÿ
2ÿ
2ÿ
2ÿz#XIncludeTest.test_xinclude_failures)r…  N)N)
r1   r2   r3   rB  rC  rD  rF  rH  rI  rK  r   r   r   r   r<  Ð  s   
	
	@r<  c                   @   sü   e Z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e e ¡ d¡dd„ ƒZdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd d!„ Zd"d#„ Zd$d%„ Zd&d'„ Zd(d)„ Zd*d+„ Zd,d-„ Zd.d/„ Zd0d1„ Zd2d3„ Zd4d5„ Z d6d7„ Z!d8d9„ Z"d:S );ÚBugsTestc                    sŽ   ‡ fdd„}t  d¡}||ƒ t  d¡}d|_||ƒ t  d¡}d|_||ƒ t  d¡}| dd¡ ||ƒ t  d¡}| dd¡ ||ƒ d S )Nc                    sH   ˆ   t¡}t| ƒ W d   ƒ n1 s(0    Y  ˆ  t|jƒd¡ d S )Nzcannot serialize 123 (type int))r¹   Ú	TypeErrorrA   rd   r»   r¼   )r<   r¾   ry   r   r   r†  ‹  s
    &ÿz-BugsTest.test_bug_xmltoolkit21.<locals>.checké{   r<   Z123)r.   rc   r`   r_   rŸ   )r*   r†  r<   r   ry   r   Útest_bug_xmltoolkit21ˆ  s    




zBugsTest.test_bug_xmltoolkit21c                 C   s<   t  t¡}t  |¡}|  | d¡d¡ |  | d¡d¡ d S )NrC   r`   rÁ   r*  )r.   r¢   rÃ   r$   rd   r   )r*   r<   r@   r   r   r   Útest_bug_xmltoolkit25¤  s    

zBugsTest.test_bug_xmltoolkit25c                 C   s<   t  d¡}|  t| d¡ƒg ¡ |  t| d¡ƒdg¡ d S )Nú"<doc><table><tbody/></table></doc>z.//theadz.//tbodyZtbody)r.   r¢   rd   rI   rœ   ©r*   r@   r   r   r   Útest_bug_xmltoolkit28¬  s    
zBugsTest.test_bug_xmltoolkit28c                 C   sP   t  d¡}t ¡ *}t  |¡ |  | ¡ d¡ W d   ƒ n1 sB0    Y  d S )NrQ  z$<doc><table><tbody /></table></doc>
)r.   r¢   r   ró  rô  rd   r:   )r*   r@   rõ  r   r   r   Útest_bug_xmltoolkitX1³  s    


zBugsTest.test_bug_xmltoolkitX1c                 C   s¸   t  d¡}|  t  |d¡d¡ t  d¡}|  |jddi¡ |  t  |d¡d¡ t  d¡}|  t  |d¡d	¡ t  d
¡}|  t  |d¡d¡ t  d¡}| dd¡ |  t  |d¡d¡ d S )Ns2   <?xml version='1.0' encoding='iso-8859-1'?><täg />r   s   <tÃ¤g />sD   <?xml version='1.0' encoding='iso-8859-1'?><tag ättr='v&#228;lue' />u   Ã¤ttru   vÃ¤lues   <tag Ã¤ttr="vÃ¤lue" />s:   <?xml version='1.0' encoding='iso-8859-1'?><täg>text</täg>s   <tÃ¤g>text</tÃ¤g>r‰   rC   )r.   r¢   rd   rÜ   ra   rc   rŸ   rR  r   r   r   Útest_bug_xmltoolkit39»  s$    

ÿ
ÿ

ÿzBugsTest.test_bug_xmltoolkit39c                 C   s2   t  d¡}|  t|ddd¡ |  t|ƒd¡ d S )Nz=<!DOCTYPE doc [<!ENTITY ldots '&#x8230;'>]><doc>&ldots;</doc>r‡  rä   s   <doc>&#33328;</doc>u   <doc>èˆ°</doc>rÂ  rÀ  r   r   r   Útest_bug_xmltoolkit54Ô  s
    
ÿzBugsTest.test_bug_xmltoolkit54c                 C   sL   |   tj¡}t d¡ W d   ƒ n1 s,0    Y  |  t|jƒd¡ d S )Ns?   <!DOCTYPE doc SYSTEM 'doc.dtd'><doc>&ldots;&ndots;&rdots;</doc>z+undefined entity &ldots;: line 1, column 36)r¹   r.   r"  r¢   rd   r»   r¼   )r*   r¾   r   r   r   Útest_bug_xmltoolkit55Ý  s
    (ÿzBugsTest.test_bug_xmltoolkit55c                 C   s$   G dd„ dƒ}|   ttj|ƒ ¡ d S )Nc                   @   s   e Zd Zdd„ ZdS )z5BugsTest.test_bug_xmltoolkit60.<locals>.ExceptionFilec                 S   s   t ‚d S rK   )r@  ©r*   rl   r   r   r   rê   ê  s    z:BugsTest.test_bug_xmltoolkit60.<locals>.ExceptionFile.readN)r1   r2   r3   rê   r   r   r   r   ÚExceptionFileé  s   rY  )r¹   r@  r.   rç   )r*   rY  r   r   r   Útest_bug_xmltoolkit60æ  s    zBugsTest.test_bug_xmltoolkit60c                 C   sH   dddœ}t  ¡ }|j |¡ | d¡ | ¡ }|  | d¡jd¡ d S )Nu   â€™u   â€˜)ZrsquoZlsquoaF  <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE patent-application-publication SYSTEM "pap-v15-2001-01-31.dtd" []>
<patent-application-publication>
<subdoc-abstract>
<paragraph id="A-0001" lvl="0">A new cultivar of Begonia plant named &lsquo;BCT9801BEG&rsquo;.</paragraph>
</subdoc-abstract>
</patent-application-publication>z.//paragraphu7   A new cultivar of Begonia plant named â€˜BCT9801BEGâ€™.)	r.   rë   rÄ  Úupdaterí   rî   rd   rš   r`   )r*   ZENTITIESrò   Útr   r   r   Útest_bug_xmltoolkit62ï  s    

ÿzBugsTest.test_bug_xmltoolkit62zSkips under coverage.c                 C   sB   dd„ }|ƒ  t  d ¡}tdƒD ]
}|ƒ  q |  t  d ¡|¡ d S )Nc                  S   s,   t  ¡ } |  di ¡ |  d¡ |  d¡ d S )NrC   r`   )r.   rï   r  r!   rý   )r@   r   r   r   Úxmltoolkit63  s    
z4BugsTest.test_bug_xmltoolkit63.<locals>.xmltoolkit63iè  )rP   ÚgetrefcountrÈ   rd   )r*   r^  ÚcountrÊ   r   r   r   Útest_bug_xmltoolkit63   s    
zBugsTest.test_bug_xmltoolkit63c              	   C   s`   t jddd}|  t  |¡d¡ |  t  t  |¡¡ d¡d¡ |  t  t  t  |¡¡¡d¡ d S )NZSomeTagzdef _f():
  return 3
ra  s0   <SomeTag text="def _f():&#10;  return 3&#10;" />r`   )r.   rc   rd   rÜ   r¢   rV   rÀ  r   r   r   Útest_bug_200708_newline  s    ÿÿÿz BugsTest.test_bug_200708_newlinec                 C   s`   t  ¡ }| d¡ |  | ¡ jd¡ G dd„ dƒ}t j|ƒ d}| d¡ |  | ¡ jd¡ d S )Nz<element>some text</element>r†   c                   @   s   e Zd Zdd„ ZdS )z2BugsTest.test_bug_200708_close.<locals>.EchoTargetc                 S   s
   t  d¡S )Nr†   ©r.   rc   ry   r   r   r   rî   "  s    z8BugsTest.test_bug_200708_close.<locals>.EchoTarget.closeN©r1   r2   r3   rî   r   r   r   r   Ú
EchoTarget!  s   re  rå   )r.   rë   rí   rd   rî   rC   )r*   rò   re  r   r   r   Útest_bug_200708_close  s    

zBugsTest.test_bug_200708_closec                 C   sÎ   t  d¡}t  |d¡}|  t|ddd¡ t  d¡}t  |d¡}t  |d¡}|  t|ddd¡ t  d¡}t  |d¡}t  |d¡}|  t¡}t|dd W d   ƒ n1 s®0    Y  |  t|jƒd¡ d S )	Nz{default}elemrÔ   )rj  z%<elem xmlns="default"><elem /></elem>z{not-default}elemzI<elem xmlns="default" xmlns:ns1="not-default"><elem /><ns1:elem /></elem>r<   z<cannot use non-qualified names with default_namespace option)	r.   rc   r,  rd   rA   r¹   rº   r»   r¼   )r*   r½   Úsr¾   r   r   r   Ú!test_bug_200709_default_namespace(  s&    
ÿ
ÿ
*ÿz*BugsTest.test_bug_200709_default_namespacec                 C   sd   t  d¡}|  t  |¡d¡ t  dd¡ t  d¡}|  t  |¡d¡ t  d¡}|  t  |¡d¡ d S )Nz/{http://namespace.invalid/does/not/exist/}titlesB   <ns0:title xmlns:ns0="http://namespace.invalid/does/not/exist/" />rÍ   z(http://namespace.invalid/does/not/exist/sB   <foo:title xmlns:foo="http://namespace.invalid/does/not/exist/" />z'{http://purl.org/dc/elements/1.1/}titles8   <dc:title xmlns:dc="http://purl.org/dc/elements/1.1/" />)r.   rc   rd   rÜ   Úregister_namespacerÀ  r   r   r   Ú"test_bug_200709_register_namespace?  s    
ÿ
ÿ
ÿz+BugsTest.test_bug_200709_register_namespacec                 C   s`   t  d¡}| t  d¡¡ |  |d jt j¡ t  d¡}| t  d¡¡ |  |d jt j¡ d S )Nr«   rÍ   r   )r.   rc   r–   r-  rd   rC   r¤   )r*   r«   r   r   r   Útest_bug_200709_element_commentN  s    

z(BugsTest.test_bug_200709_element_commentc                 C   sp   t  d¡}t  |d¡}t  |d¡}t  d¡}| d|¡ |  t|ƒg d¢¡ | d|¡ |  t|ƒg d¢¡ d S )	Nr«   r©   r¬   rª   r   )rª   r©   r¬   rd  )rª   r©   rª   r¬   )r.   rc   r,  r˜   rd   rI   ©r*   r«   r©   r¬   rª   r   r   r   Útest_bug_200709_element_insertZ  s    

z'BugsTest.test_bug_200709_element_insertc                 C   sJ   t  d¡}t  |d¡}t  d¡}| |¡ |  t| t j¡ƒt jg¡ d S )Nr«   r©   zTEST-b)r.   rc   r,  r-  r–   rd   rI   r    )r*   r«   r©   Z	comment_br   r   r   Útest_bug_200709_iter_commentd  s
    


z%BugsTest.test_bug_200709_iter_commentc                 C   sD   t  ¡ }| d¡}| di ¡}| d¡}| ¡ }|  t|ƒd¡ d S )Nr!   rC   rß   )r.   rï   r!   r  rý   rî   rd   rA   )r*   rk   r½   r   r   r   Útest_bug_1534630n  s    

zBugsTest.test_bug_1534630c                 C   s@   t  d¡}|  t  |d¡d¡ t  d¡}|  t  |d¡d¡ d S )Ns7   <?xml version='1.0' encoding='utf-8'?><body>tÃ£g</body>rö   s<   <?xml version='1.0' encoding='ascii'?>
<body>t&#227;g</body>s;   <?xml version='1.0' encoding='iso-8859-1'?><body>tãg</body>rl  rÀ  r   r   r   Útest_issue6233v  s    
ÿ
ÿzBugsTest.test_issue6233c                 C   sR   t  d¡}|  t|ƒdg¡ t  t¡}|d d … |d d …< |  t|ƒg d¢¡ d S )Nr³   rC   ©rC   rC   rÛ  )r.   r¢   rd   rI   rÃ   )r*   r<   Znewelemr   r   r   Útest_issue6565‚  s
    

zBugsTest.test_issue6565c                 C   s   t  dd¡ t  dd¡ d S )NZ	test10777zhttp://myuri/)r.   ri  ry   r   r   r   Útest_issue10777‰  s    zBugsTest.test_issue10777c                    s`   G ‡ fdd„dƒ}t  d¡‰ |ƒ ˆ _ˆ  ¡ }t|ƒ}|  ||¡ |  ˆ jt¡ |  ˆ jd¡ d S )Nc                       s   e Zd Z‡ fdd„ZdS )z%BugsTest.test_lost_text.<locals>.Textc                    s
   dˆ _ dS )NÚchangedTra  ry   ©r½   r   r   Ú__bool__“  s    z.BugsTest.test_lost_text.<locals>.Text.__bool__N©r1   r2   r3   rv  r   ru  r   r   r¨   ’  s   r¨   rC   rt  )r.   rc   r`   r¡   r  rb   r»   rd   ©r*   r¨   rÊ   r\  r   ru  r   Útest_lost_text  s    
zBugsTest.test_lost_textc                    s|   G ‡ fdd„dƒ}t  d¡‰ ˆ  t  d¡¡ |ƒ ˆ d _ˆ  ¡ }t|ƒ}|  ||¡ |  ˆ d jt¡ |  ˆ d jd¡ d S )Nc                       s   e Zd Z‡ fdd„ZdS )z%BugsTest.test_lost_tail.<locals>.Textc                    s   dˆ d _ dS ©Nrt  r   TrZ  ry   ru  r   r   rv  ¢  s    
z.BugsTest.test_lost_tail.<locals>.Text.__bool__Nrw  r   ru  r   r   r¨   ¡  s   r¨   r  rC   r   rt  )	r.   rc   r–   r_   r¡   r  rb   r»   rd   rx  r   ru  r   Útest_lost_tailŸ  s    
zBugsTest.test_lost_tailc                    sª   G ‡ ‡fdd„dƒ}t  d¡‰ ˆ  t  |ƒ ¡¡ ˆ  t  d¡¡ ˆ  d¡‰ztˆƒ}W n tyr   |  d¡ Y n0 |  |j|¡ |  ˆ d jt	¡ |  
ˆ d jd¡ d S )Nc                       s   e Zd Z‡ ‡fdd„ZdS )z$BugsTest.test_lost_elem.<locals>.Tagc                    s   t  d¡ˆ d< tˆƒ dS rz  )r.   rc   r  )r*   rÕ   ©r½   rÊ   r   r   Ú__eq__²  s    z+BugsTest.test_lost_elem.<locals>.Tag.__eq__N©r1   r2   r3   r}  r   r|  r   r   r§   ±  s   r§   r  rC   zgenerators are not reentrantr   rt  )r.   rc   r–   r    r  rº   ÚskipTestrb   rC   r»   rd   )r*   r§   r\  r   r|  r   Útest_lost_elem¯  s    

zBugsTest.test_lost_elemc                 C   s.   d| }t  |¡}|  | d¡| d¡¡ d S )Ns   <a b="%s"/>r©   r   )r.   r¢   rd   rV   Údecode)r*   r`   r…  r  r   r   r   Úcheck_expat224_utf8_bugÃ  s    
z BugsTest.check_expat224_utf8_bugc                 C   s    d}|   |¡ d}|   |¡ d S )Ns   Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã s  xÃ Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã )r‚  r8  r   r   r   Útest_expat224_utf8_bugÈ  s    
zBugsTest.test_expat224_utf8_bugc                 C   s‚   t tdƒ}| ¡ }W d   ƒ n1 s(0    Y  t |¡}| d¡}| d¡ ¡ }| dd¡}|dd… }|  	| d¡|¡ d S )Nr  r©   r   rÛ   rv   é   éüÿÿÿ)
ré   ÚUTF8_BUG_XMLFILErê   r.   r£   rV   r  Ústripr   rd   )r*   ÚfpÚrawr  Zxmlattrr`   r   r   r   Útest_expat224_utf8_bug_fileÔ  s    &

z$BugsTest.test_expat224_utf8_bug_filec                 C   s.   |   tt ¡ jd¡ |   tt ¡ jdd ¡ d S )NrC   )r¹   rM  r.   rï   r  ry   r   r   r   Útest_39495_treebuilder_startá  s    z%BugsTest.test_39495_treebuilder_startN)#r1   r2   r3   rO  rP  rS  rT  rU  rV  rW  rZ  r]  ÚunittestZskipIfrP   Úgettracera  rb  rf  rh  rj  rk  rm  rn  ro  rp  rr  rs  ry  r{  r€  r‚  rƒ  rŠ  r‹  r   r   r   r   rL  †  s:   			


rL  c                   @   s\   e Z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 )ÚBasicElementTestc                 C   sÐ   d}ddi}t  ||¡}|  |t j¡ |  dt|ƒ¡ |  dt|ƒ¡ |  dt|ƒ¡ |  dt|ƒ¡ |  |j|¡ |  |j¡ |  |j	¡ |  
|j|¡ |  |j|¡ d|d	< |  
|j|¡ |  |j|¡ d S )
NrÍ   ÚzixÚwyprC   ra   r`   r_   ÚbazrÌ   )r.   rc   rb   r…   rƒ   rd   rC   r±   r`   r_   rà   ra   rN  )r*   rC   ra   Úelement_foor   r   r   Útest___init__ì  s     zBasicElementTest.test___init__c                 C   sö   dt tjƒvrt d¡‚t dddi¡}| t dddi¡¡ |  t¡ | ¡ }W d   ƒ n1 sf0    Y  |  	||¡ |  
|j|j¡ |  
|j|j¡ |  
|j|j¡ |  
t|ƒt|ƒ¡ t ||¡D ]\}}|  ||¡ qÌ|  
|j|j¡ d S )	NrÎ   zElement.copy() not presentrÍ   r  r  rÌ   r‘  Úqix)rƒ   r.   rc   rŒ  ÚSkipTestr–   ZassertWarnsÚDeprecationWarningrÎ   rà   rd   rC   r`   r_   re   Ú	itertoolsÚzip_longestÚassertIsra   ©r*   r’  Zelement_foo2rO  rP  r   r   r   rÓ   	  s    
&zBasicElementTest.test_copyc                 C   s¶   t  dddi¡}| t  dddi¡¡ t |¡}|  ||¡ |  |j|j¡ |  |j|j¡ |  |j|j¡ |  t	|ƒt	|ƒ¡ t
 ||¡D ]\}}|  ||¡ qŒ|  |j|j¡ d S ©NrÍ   r  r  rÌ   r‘  r”  )r.   rc   r–   rÎ   rà   rd   rC   r`   r_   re   r—  r˜  r™  ra   rš  r   r   r   Útest___copy__$	  s    
zBasicElementTest.test___copy__c                 C   sð   t  dddi¡}| t  dddi¡¡ t |¡}|  ||¡ |  |j|j¡ |  |j|j¡ |  |j	|j	¡ |  t
|ƒt
|ƒ¡ t ||¡D ]\}}|  ||¡ qŒ|  |j|j¡ |  |j|j¡ d|jd< |  |j|j¡ |  |j|j¡ d S r›  )r.   rc   r–   rÎ   rÏ   rà   rd   rC   r`   r_   re   r—  r˜  ra   rN  rš  r   r   r   Útest___deepcopy__<	  s    

z"BasicElementTest.test___deepcopy__c                 C   s<  t  d¡}|  t|jd¡ |  t|jt  d¡dg¡ |  t|jdd¡ t  d¡g|d d …< |  t¡ d|d< W d   ƒ n1 s‚0    Y  |  t¡& t  d¡dg|d d …< W d   ƒ n1 sÂ0    Y  t|dƒrødd gdd	d
dœ}|  t|j|¡ t|dƒr8G dd„ dt jƒ}|dƒg|d d …< |  tt	j
|¡ d S )NÚjoer©   rÌ   rÍ   r   Ú__setstate__rC   r‡   r_   r`   )rC   Ú	_childrenra   r_   r`   Ú__deepcopy__c                   @   s   e Zd Zdd„ ZdS )z9BasicElementTest.test_augmentation_type_errors.<locals>.Ec                 S   s   d S rK   r   )r*   Úmemor   r   r   r¡  q	  s    zFBasicElementTest.test_augmentation_type_errors.<locals>.E.__deepcopy__N)r1   r2   r3   r¡  r   r   r   r   ÚEp	  s   r£  )r.   rc   r¹   rM  r–   r—   r˜   r„   rŸ  rÎ   rÏ   )r*   r½   Ústater£  r   r   r   Útest_augmentation_type_errorsZ	  s*    
&4
ûz.BasicElementTest.test_augmentation_type_errorsc                 C   sì   G dd„ dƒ}|ƒ }t jd|d|_t |¡}~tƒ  |  |ƒ ¡ t  d¡}|ƒ }||_t |¡}t j|d|d}~~~tƒ  |  |ƒ ¡ t  d¡}t  d¡}t  d¡}| |¡ | |¡ | |¡ t |¡}~~~tƒ  |  |ƒ ¡ d S )	Nc                   @   s   e Zd ZdS )z.BasicElementTest.test_cyclic_gc.<locals>.DummyN©r1   r2   r3   r   r   r   r   ÚDummyw	  s   r§  rž  )r‡   rÍ   rÐ   rÑ   rÒ   )	r.   rc   ZdummyrefÚweakrefÚrefr	   r±   r,  r–   )r*   r§  rª   Úwrefr½   rÑ   rÐ   rÒ   r   r   r   Útest_cyclic_gcv	  s2    









zBasicElementTest.test_cyclic_gcc                    s\   d‰ ‡ fdd„}t  d¡}t ||¡}|  |ƒ jd¡ ~tƒ  |  ˆ d¡ |  |ƒ d ¡ d S )NFc                    s   d‰ d S ©NTr   )Úw©Úflagr   r   Úwref_cb›	  s    z.BasicElementTest.test_weakref.<locals>.wref_cbr½   T)r.   rc   r¨  r©  rd   rC   r	   )r*   r°  r½   rª  r   r®  r   Útest_weakref™	  s    
zBasicElementTest.test_weakrefc                 C   sB   t jddddd}|  |jdddd¡ |  |jd	ddd¡ d S )
NrÍ   rr   r¸   rM  )rl   rm   Úzrl   é   )rÔ   r­  )r.   rc   rd   rV   )r*   rÐ   r   r   r   Útest_get_keyword_args¦	  s    z&BasicElementTest.test_get_keyword_argsc              	   C   sØ   t dtjd ƒD ]Â}t| jddD ]®\}}|jddd}d|_d|_| |d	¡ 	| d
¡¡ | 	| d	¡¡ | 
d¡d  dd¡ |  |d|||¡}|  |jd¡ |  |jd d¡ |  t|ƒd¡ |  ||¡ q"qd S )Nr¸   rr   ©ÚrepeatrÍ   é*   )rÌ   ztext goes herezopposite of headÚchildZ
grandchildz.//grandchildr   r‡   zother valuer,   rÌ   )rÈ   rQ   ÚHIGHEST_PROTOCOLr   rM   rc   r`   r_   r,  r–   rœ   rŸ   r^   rd   rC   ra   re   rh   )r*   r[   rY   rZ   r½   rÑ   r   r   r   Útest_pickle«	  s    ÿzBasicElementTest.test_picklec              	   C   s   t dtjd ƒD ]z}t| jddD ]f\}}d}| |¡}t|dƒrV|  | ¡ d d¡ |  	|d|||¡}|  |j
d¡ |  |d	 j
d
¡ q"qd S )Nr¸   rr   rµ  z\<?xml version="1.0"?>
                    <group><dogs>4</dogs>
                    </group>Ú__getstate__rC   Úgroupr,   r   Zdogs)rÈ   rQ   r¹  r   rM   r£   r„   rd   r»  r^   rC   )r*   r[   rY   rZ   ZXMLTEXTrÐ   rÑ   r   r   r   Útest_pickle_issue18997¾	  s    

ÿz'BasicElementTest.test_pickle_issue18997N)r1   r2   r3   r“  rÓ   rœ  r  r¥  r«  r±  r´  rº  r½  r   r   r   r   rŽ  ê  s   #rŽ  c                   @   s\   e Z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 )ÚBadElementTestc                    s|   G ‡ fdd„dƒ}|ƒ g‰ t  d¡}z| ˆ ¡ W n tyD   Y n0 G dd„ d|t jƒ}|dƒg‰ t  d¡}| ˆ ¡ d S )Nc                       s   e Zd Ze‡ fdd„ƒZdS )z2BadElementTest.test_extend_mutable_list.<locals>.Xc                    s   t  d¡gˆ d d …< t jS )Nr‘  rc  ry   ©ÚLr   r   Ú	__class__Ð	  s    z<BadElementTest.test_extend_mutable_list.<locals>.X.__class__N©r1   r2   r3   ÚpropertyrÁ  r   r¿  r   r   ÚXÏ	  s   rÄ  rÍ   c                   @   s   e Zd ZdS )z2BadElementTest.test_extend_mutable_list.<locals>.YNr¦  r   r   r   r   ÚYÛ	  s   rÅ  rl   ©r.   rc   r—   rM  ©r*   rÄ  r½   rÅ  r   r¿  r   Útest_extend_mutable_listÎ	  s    


z'BadElementTest.test_extend_mutable_listc                    sŒ   G ‡ fdd„dƒ}|ƒ t  d¡g‰ t  d¡}z| ˆ ¡ W n tyL   Y n0 G dd„ d|t jƒ}|dƒt  d¡g‰ t  d¡}| ˆ ¡ d S )Nc                       s   e Zd Ze‡ fdd„ƒZdS )z3BadElementTest.test_extend_mutable_list2.<locals>.Xc                    s   ˆ d d …= t jS rK   rc  ry   r¿  r   r   rÁ  ã	  s    
z=BadElementTest.test_extend_mutable_list2.<locals>.X.__class__NrÂ  r   r¿  r   r   rÄ  â	  s   rÄ  r‘  rÍ   c                   @   s   e Zd ZdS )z3BadElementTest.test_extend_mutable_list2.<locals>.YNr¦  r   r   r   r   rÅ  î	  s   rÅ  rÌ   rÆ  rÇ  r   r¿  r   Útest_extend_mutable_list2á	  s    

z(BadElementTest.test_extend_mutable_list2c                    sz   G ‡ fdd„dt jƒ}t  d¡‰ ˆ  |dƒg¡ |  tˆ jt  d¡¡ t  d¡‰ ˆ  t  d¡g¡ |  tˆ j|dƒ¡ d S )Nc                       s   e Zd Z‡ fdd„ZdS )z3BadElementTest.test_remove_with_mutating.<locals>.Xc                    s   ˆ d d …= dS )NFr   ©r*   Úoru  r   r   r}  ö	  s    
z:BadElementTest.test_remove_with_mutating.<locals>.X.__eq__Nr~  r   ru  r   r   rÄ  õ	  s   rÄ  rÍ   rÌ   r‘  )r.   rc   r—   r¹   rº   r™   ©r*   rÄ  r   ru  r   Útest_remove_with_mutatingô	  s    

z(BadElementTest.test_remove_with_mutatingc              	   C   sl   t  d¡}t|d|ƒB |  t¡ t|ƒ W d   ƒ n1 s@0    Y  W d   ƒ n1 s^0    Y  d S )NrÍ   rC   )r.   rc   r
   r¹   ÚRuntimeErrorr•   rÀ  r   r   r   Útest_recursive_repr
  s    
z"BadElementTest.test_recursive_reprc                    sn   G ‡ fdd„dt ƒ}t ¡ }| di ¡ | d¡ | |dƒ¡ | d¡ | d¡ | ¡ ‰ |  ˆ jd¡ d S )Nc                       s   e Zd Z‡ fdd„ZdS )z/BadElementTest.test_element_get_text.<locals>.Xc                    s"   z
ˆ j  W n ty   Y n0 d S rK   )r`   Ú	NameErrorry   ©r<   r   r   Ú__del__
  s    
z7BadElementTest.test_element_get_text.<locals>.X.__del__N©r1   r2   r3   rÒ  r   rÑ  r   r   rÄ  

  s   rÄ  rC   ÚABCDÚEFGHÚIJKLÚABCDEFGHIJKL)	r»   r.   rï   r  r!   rý   rî   rd   r`   ©r*   rÄ  r©   r   rÑ  r   Útest_element_get_text
  s    


z$BadElementTest.test_element_get_textc                    sˆ   G ‡ fdd„dt ƒ}t ¡ }| di ¡ | di ¡ | d¡ | d¡ | |dƒ¡ | d¡ | d¡ | ¡ ‰ |  ˆ d jd	¡ d S )
Nc                       s   e Zd Z‡ fdd„ZdS )z/BadElementTest.test_element_get_tail.<locals>.Xc                    s&   zˆ d j  W n ty    Y n0 d S rú  )r_   rÐ  ry   rÑ  r   r   rÒ  
  s    z7BadElementTest.test_element_get_tail.<locals>.X.__del__NrÓ  r   rÑ  r   r   rÄ  
  s   rÄ  r  rC   rÔ  rÕ  rÖ  r   r×  )	r»   r.   rï   r  rý   r!   rî   rd   r_   rØ  r   rÑ  r   Útest_element_get_tail
  s    



z$BadElementTest.test_element_get_tailc                    s^   G ‡ fdd„dƒ}t  d¡‰ ˆ  t  d¡¡ ˆ d |ƒ …  ˆ  t  d¡¡ ˆ dd|ƒ …  d S )Nc                       s   e Zd Z‡ fdd„ZdS )z%BadElementTest.test_subscr.<locals>.Xc                    s   ˆ d d …= dS ©Nrr   r   ry   ru  r   r   Ú	__index__3
  s    
z/BadElementTest.test_subscr.<locals>.X.__index__N©r1   r2   r3   rÜ  r   ru  r   r   rÄ  2
  s   rÄ  r<   r¸  r   rÆ   )r.   rc   r–   rÌ  r   ru  r   Útest_subscr0
  s    
zBadElementTest.test_subscrc                    sP   G ‡ fdd„dƒ}t  d¡‰ tdƒD ]}ˆ  dt  d¡¡ q$g ˆ dd|ƒ …< d S )Nc                       s   e Zd Z‡ fdd„ZdS )z)BadElementTest.test_ass_subscr.<locals>.Xc                    s   g ˆ d d …< dS rÛ  r   ry   ru  r   r   rÜ  A
  s    z3BadElementTest.test_ass_subscr.<locals>.X.__index__NrÝ  r   ru  r   r   rÄ  @
  s   rÄ  r<   rÆ   r   r¸  )r.   rc   rÈ   r˜   )r*   rÄ  rú   r   ru  r   Útest_ass_subscr>
  s
    
zBadElementTest.test_ass_subscrc                 C   sH   dd„ }t j|d}| di ¡ | d¡ |  t|jdi ¡ ~tƒ  d S )Nc                 S   s   g S rK   r   ©rl   rm   r   r   r   Úelement_factoryM
  s    z>BadElementTest.test_treebuilder_start.<locals>.element_factory©rá  rC   rÔ  rµ   )r.   rï   r  r!   r¹   ÚAttributeErrorr	   ©r*   rá  r©   r   r   r   Útest_treebuilder_startK
  s    
z%BadElementTest.test_treebuilder_startc                 C   sF   dd„ }t j|d}| di ¡ | d¡ |  t|jd¡ ~tƒ  d S )Nc                 S   s   g S rK   r   rà  r   r   r   rá  Y
  s    z<BadElementTest.test_treebuilder_end.<locals>.element_factoryrâ  rC   rÔ  )r.   rï   r  r!   r¹   rã  rý   r	   rä  r   r   r   Útest_treebuilder_endW
  s    
z#BadElementTest.test_treebuilder_endN)r1   r2   r3   rÈ  rÉ  rÍ  rÏ  rÙ  rÚ  rÞ  rß  rå  ræ  r   r   r   r   r¾  Í	  s   r¾  c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚMutatingElementPathc                 G   s   t j| g|¢R Ž }||_|S rK   )r»   Ú__new__r<   )rN   r<   r   r*   r   r   r   rè  e
  s    zMutatingElementPath.__new__c                 C   s   | j d d …= dS r¬  rÑ  rÊ  r   r   r   r}  i
  s    zMutatingElementPath.__eq__N)r1   r2   r3   rè  r}  r   r   r   r   rç  d
  s   rç  c                   @   s   e Zd Zdd„ ZdS )ÚBadElementPathc                 C   s   dd ‚d S )Nrr   r   r   rÊ  r   r   r   r}  o
  s    zBadElementPath.__eq__Nr~  r   r   r   r   ré  n
  s   ré  c                       sX   e Zd Z‡ fdd„Z‡ fdd„Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
‡  ZS )ÚBadElementPathTestc                    s(   t ƒ  ¡  ddlm} |j| _i |_d S ©Nr   r'   )ÚsuperÚsetUpr)   r(   rÉ   Ú
path_cache©r*   r(   ©rÁ  r   r   rí  t
  s    
zBadElementPathTest.setUpc                    s"   ddl m} | j|_tƒ  ¡  d S rë  )r)   r(   rî  rÉ   rì  ÚtearDownrï  rð  r   r   rñ  z
  s    zBadElementPathTest.tearDownc                 C   s0   t  d¡}| t  d¡g¡ | t|dƒ¡ d S ©NrÍ   rÌ   rl   )r.   rc   r—   rš   rç  rÀ  r   r   r   Útest_find_with_mutating
  s    
z*BadElementPathTest.test_find_with_mutatingc                 C   sF   t  d¡}| t  d¡g¡ z| tdƒ¡ W n ty@   Y n0 d S rò  )r.   rc   r—   rš   ré  ÚZeroDivisionErrorrÀ  r   r   r   Útest_find_with_error„
  s    
z'BadElementPathTest.test_find_with_errorc                 C   s0   t  d¡}| t  d¡g¡ | t|dƒ¡ d S rò  )r.   rc   r—   r   rç  rÀ  r   r   r   Útest_findtext_with_mutatingŒ
  s    
z.BadElementPathTest.test_findtext_with_mutatingc                 C   sF   t  d¡}| t  d¡g¡ z| tdƒ¡ W n ty@   Y n0 d S rò  )r.   rc   r—   r   ré  rô  rÀ  r   r   r   Útest_findtext_with_error‘
  s    
z+BadElementPathTest.test_findtext_with_errorc                 C   s0   t  d¡}| t  d¡g¡ | t|dƒ¡ d S rò  )r.   rc   r—   rœ   rç  rÀ  r   r   r   Útest_findall_with_mutating™
  s    
z-BadElementPathTest.test_findall_with_mutatingc                 C   sF   t  d¡}| t  d¡g¡ z| tdƒ¡ W n ty@   Y n0 d S rò  )r.   rc   r—   rœ   ré  rô  rÀ  r   r   r   Útest_findall_with_errorž
  s    
z*BadElementPathTest.test_findall_with_error)r1   r2   r3   rí  rñ  ró  rõ  rö  r÷  rø  rù  Ú__classcell__r   r   rð  r   rê  s
  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 )ÚElementTreeTypeTestc                 C   sX   |   tjt¡ |   tjt¡ |   tjt¡ |   tjt¡ |   tjt¡ |   tjt¡ d S rK   )	rb   r.   r"  rè  rË  r$   rc   rï   rë   ry   r   r   r   Útest_istype¨
  s    zElementTreeTypeTest.test_istypec                 C   sZ   G dd„ dt jƒ}|dƒ}|  |t j¡ |  ||¡ |  |jd¡ d|_|  |jd¡ d S )Nc                   @   s   e Zd ZdS )zDElementTreeTypeTest.test_Element_subclass_trivial.<locals>.MyElementNr¦  r   r   r   r   Ú	MyElement±
  s   rý  rÍ   rž  )r.   rc   rb   rd   rC   r`   ©r*   rý  Úmyer   r   r   Útest_Element_subclass_trivial°
  s    z1ElementTreeTypeTest.test_Element_subclass_trivialc                    sV   G ‡ fdd„dt jƒ‰ ˆ ddddœddd	}|  |jd
¡ |  t| ¡ ƒg d¢¡ d S )Nc                       s"   e Zd Zi f‡‡ fdd„	Z‡  ZS )zHElementTreeTypeTest.test_Element_subclass_constructor.<locals>.MyElementc                    s"   t ˆ | ƒj|d |fi |¤Ž d S )NÚ__)rì  r-  )r*   rC   ra   Úextra)rý  rÁ  r   r   r-  ¿
  s    zQElementTreeTypeTest.test_Element_subclass_constructor.<locals>.MyElement.__init__)r1   r2   r3   r-  rú  r   ©rý  rð  r   rý  ¾
  s   rý  rÍ   rr   r¸   )r«   r©   rM  é   )r¬   rª   Zfoo__))r«   rr   )r©   r¸   )r¬   rM  )rª   r  )r.   rc   rd   rC   rÝ   r~   )r*   rÿ  r   r  r   Ú!test_Element_subclass_constructor½
  s    ÿz5ElementTreeTypeTest.test_Element_subclass_constructorc                 C   s.   G dd„ dt jƒ}|dƒ}|  | ¡ d¡ d S )Nc                   @   s   e Zd Zdd„ ZdS )zGElementTreeTypeTest.test_Element_subclass_new_method.<locals>.MyElementc                 S   s   | j S rK   rB   ry   r   r   r   Ú	newmethodÉ
  s    zQElementTreeTypeTest.test_Element_subclass_new_method.<locals>.MyElement.newmethodN)r1   r2   r3   r  r   r   r   r   rý  È
  s   rý  rž  )r.   rc   rd   r  rþ  r   r   r   Ú test_Element_subclass_new_methodÇ
  s    z4ElementTreeTypeTest.test_Element_subclass_new_methodc                 C   s–   G dd„ dt jƒ}t  d¡}d|_|dƒ}d|_| |¡ |  | d¡d¡ |  | d¡jd¡ t| 	d¡ƒ}|  t
|ƒd|¡ |  |d jd¡ d S )	Nc                   @   s   e Zd ZdS )zAElementTreeTypeTest.test_Element_subclass_find.<locals>.MyElementNr¦  r   r   r   r   rý  Ð
  s   rý  rÍ   r`   rÌ   r*  rr   r   )r.   rc   r`   r–   rd   r   rš   rC   rf   rœ   re   )r*   rý  r½   ÚsubÚfoundr   r   r   Útest_Element_subclass_findÏ
  s    

z.ElementTreeTypeTest.test_Element_subclass_findN)r1   r2   r3   rü  r   r  r  r
  r   r   r   r   rû  §
  s
   
rû  c                   @   sL   e Z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 )ÚElementFindTestc                 C   sò   t  t¡}|  | d¡jd¡ |  | d¡jd¡ |  | d¡jd¡ t  t¡|d< |  | d¡jd¡ |  | d¡d¡ |  | d¡d¡ |  | d¡d	¡ |  | dd
¡d	¡ |  | d¡¡ |  | dd
¡d
¡ |  t  d¡ d¡d	¡ d S )NrC   rÁ   ú./tagr¸   zsection/nexttagÚnexttagr`   r*  ru   rÔ   Útogz<tag><empty /></tag>Úempty)	r.   r¢   rÃ   rd   rš   rC   ÚSAMPLE_SECTIONr   r±   rÀ  r   r   r   Útest_find_simpleà
  s    
z ElementFindTest.test_find_simplec                 C   sÒ   d}t  |¡}|  | d¡jd d¡ |  | d¡jd d¡ |  | d¡jd d¡ |  | d	¡jd d
¡ |  | d¡jd d¡ |  td|jd¡ |  td|jd¡ |  td|jd¡ |  td|jd¡ d S )Nz“
        <body>
            <tag class='a'/>
            <tag class='b'/>
            <tag class='c'/>
            <tag class='d'/>
        </body>z./tag[1]Úclassr«   z./tag[2]r©   z./tag[last()]rª   z./tag[last()-1]r¬   z./tag[last()-2]ZXPathz./tag[0]z	./tag[-1]z./tag[last()-0]z./tag[last()+1])r.   r¢   rd   rš   ra   rp  ÚSyntaxError)r*   Z
LINEAR_XMLr½   r   r   r   Útest_find_xpath÷
  s    
zElementFindTest.test_find_xpathc                 C   s
  t  t¡}t  t¡|d< |  t| d¡ƒdg¡ |  t| d¡ƒddg¡ |  t| d¡ƒg ¡ |  t| d¡ƒg ¡ |  t| d¡ƒg d¢¡ |  t| d	¡ƒdgd
 ¡ |  t| d¡ƒdg¡ |  t| d¡ƒdgd ¡ |  t| d¡ƒg d¢¡ |  t| d¡ƒg d¢¡ |  t| d¡ƒg d¢¡ |  t| d¡ƒg d¢¡ |  t| d¡ƒg d¢¡ |  t| d¡ƒdg¡ |  t| d¡ƒdg¡ |  t| d¡ƒdgd ¡ |  t| d¡ƒdgd ¡ |  t| d¡ƒdgd ¡ |  t| d¡ƒdg¡ |  t| d¡ƒdgd ¡ |  t| d¡ƒdg¡ |  t| d¡ƒdg¡ |  t| d¡ƒg ¡ |  t| d ¡ƒg ¡ |  t| d!¡ƒdgd ¡ |  | d"¡| d¡¡ |  t| d#¡ƒdg¡ |  t| d$¡ƒdg¡ |  t| d%¡ƒdg¡ |  t| d&¡ƒdg¡ |  t| d'¡ƒdg¡ |  t| d(¡ƒdg¡ |  t| d)¡ƒdg¡ |  t| d*¡ƒdg¡ |  t| d+¡ƒdg¡ |  t| d,¡ƒdg¡ |  t| d-¡ƒg ¡ |  t| d.¡ƒg ¡ |d |d/< |  t| d&¡ƒddg¡ |  t| d,¡ƒddg¡ d S )0Nr¸   rÞ  r÷   rC   r  ztog/foor’   rq  z.//tagr  rÁ   zsection//tagz	section/*)rC   r  Únextsectionz
section//*)rC   r  r  rC   zsection/.//*z*/*z*//*z*/tagz*/./tagr  z././tagz.//tag[@class]rM  z.//tag[@class="a"]z.//tag[@class="b"]z.//tag[@id]z.//section[tag]rÛ  z.//section[element]z../tagzsection/../tagz	section//z.//section[tag='subtext']z.//section[tag ='subtext']z.//section[tag= 'subtext']z.//section[tag = 'subtext']z.//section[ tag = 'subtext' ]z.//tag[.='subtext']z.//tag[. ='subtext']z.//tag[.= "subtext"]z.//tag[ . = "subtext" ]z.//tag[. = 'subtext']z.//tag[. = 'subtext ']z.//tag[.= ' subtext']rr   )r.   r¢   rÃ   r  rd   rI   rœ   rÀ  r   r   r   Útest_findall  sÂ    
ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿzElementFindTest.test_findallc                 C   s\   t  t¡}|  t| d¡ƒg ¡ |  t| d¡ƒdgd ¡ |  t| d¡ƒdgd ¡ d S )NrC   z{http://effbot.org/ns}tagr¸   z.//{http://effbot.org/ns}tagrM  )r.   r¢   rÈ  rd   rI   rœ   rÀ  r   r   r   Útest_test_find_with_nsZ  s    
þþz&ElementFindTest.test_test_find_with_nsc                 C   sÄ   t  d¡}ddi}|  t|jd|dƒd¡ |  t|jd|dƒd¡ ddi}|  t|jd|dƒd	¡ |  t|jd|dƒd¡ ddd
œ}|  t|jd|dƒd¡ |  t|jd|dƒd	¡ d S )Nú–
            <a xmlns:x="X" xmlns:y="Y">
                <x:b><c/></x:b>
                <b/>
                <c><x:b/><b/></c><y:b/>
            </a>ÚxxrÄ  z.//xx:b)rÏ  r¸   ú.//brÅ  rr   )r  ru   )r.   r¢   rd   re   rœ   )r*   r  Únsmapr   r   r   Útest_findall_different_nsmapsd  s    

z-ElementFindTest.test_findall_different_nsmapsc                 C   sÐ  t  d¡}| t  d¡¡ |  t| d¡ƒg d¢¡ |  t| d¡ƒdg¡ |  t| d¡ƒdg¡ |  t| d	¡ƒd
g¡ |  t| d¡ƒddg¡ |  t| d¡ƒdg¡ |  t| d¡ƒt| d¡ƒ¡ |  t| d¡ƒg d¢¡ |  t| d¡|d g ƒt| d¡ƒ¡ |  t| d¡ƒg d¢¡ |  t| d¡ƒddg¡ |  t| d¡ƒddg¡ |  t| d¡ƒd
g¡ |  t| d¡ƒg d¢¡ |  t| d¡ƒddg¡ |  t| d¡ƒt| d¡ƒ¡ d S )Nr  r   z{*}b)ú{X}br©   ú{Y}bz{*}cr¬   z{X}*r  z{Y}*r  rä  r©   z{}bræ  )r  r©   r¬   r  rd  r’   z.//{*}b)r  r©   r  r©   r  z.//{*}cz.//{X}*z.//{Y}*z.//{}*)r¬   r©   r¬   r©   z.//{}br  )r.   r¢   r–   r-  rd   rI   rœ   r÷  r   r   r   Útest_findall_wildcardu  sd    
ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿz%ElementFindTest.test_findall_wildcardc                 C   sD   t  t¡}|  td¡ | d¡ W d   ƒ n1 s60    Y  d S )Nzcannot use absolute pathz/tag)r.   r¢   rÃ   rp  r  rœ   rÀ  r   r   r   Útest_bad_find¡  s    
zElementFindTest.test_bad_findc                 C   s¸   t  t¡}|  t  |¡ d¡jd¡ |  t  |¡ d¡d¡ |  tt  |¡ 	d¡ƒdgd ¡ d}|  
t|¡  t  |¡ 	d¡}W d   ƒ n1 s”0    Y  |  t|ƒdgd ¡ d S )NrC   r`   r¸   z‰This 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 '.+'z//tagrM  )r.   r¢   rÃ   rd   r$   rš   rC   r   rI   rœ   ÚassertWarnsRegexÚFutureWarning)r*   r½   rt   r   r   r   r   Útest_find_through_ElementTree¦  s    
ÿ.z-ElementFindTest.test_find_through_ElementTreeN)r1   r2   r3   r  r  r  r  r  r  r   r#  r   r   r   r   r  ß
  s   M
,r  c                   @   s>   e Zd Zddd„Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ ZdS )ÚElementIterTestNc                 C   s   t | |¡ƒS rK   )rI   r    )r*   r<   rC   r   r   r   Ú_ilist¶  s    zElementIterTest._ilistc                 C   s4  t  d¡}|  |  |¡g d¢¡ |  |  | d¡¡ddg¡ |  t| ¡ ƒjd¡ |  d | 	¡ ¡d¡ |  d | d¡ 	¡ ¡d¡ |  t| 	¡ ƒd	¡ t
|d
d}|  tt  |¡ƒd d¡ t
|d
d}t jt  ¡ d}|  tt j||dƒd d¡ t  d ¡}|  t|j¡ t  d¡}|  d | 	¡ ¡d¡ d S )Nz7<html><body>this is a <i>paragraph</i>.</body>..</html>)r¿  r÷   rÊ   r÷   rÊ   r¿  ru   zthis is a paragraph...zthis is a paragraph.z
this is a F)r=   r   rý   rå   )rò   z*<root>a&amp;<sub>b&amp;</sub>c&amp;</root>za&b&c&)r.   r¢   rd   r%  rš   r  r    rC   rø   r¡   rA   r  rë   rï   r$   r¹   rã  )r*   rØ  Z
sourcefilerò   r@   r   r   r   Ú
test_basic¹  s(    
ÿÿ

zElementIterTest.test_basicc                 C   s°   t  d¡}|  |  |¡dg¡ t  |d¡}|  |  |¡ddg¡ t  |d¡}|  |  |¡g d¢¡ t  |d¡}|  |  |¡g d¢¡ |d |d< |d= |  |  |¡ddg¡ d S )	Nr«   r©   r¬   )r«   r©   r¬   rª   )r«   r©   r¬   rª   rr   r   )r.   rc   rd   r%  r,  rl  r   r   r   Útest_cornersÔ  s    
zElementIterTest.test_cornersc                 C   s¢   t  d¡}|  |  |d¡dgd ¡ |  |  |d¡dgd ¡ |  t|jddƒdgd ¡ g d¢}|  t| ¡ ƒ|¡ |  |  |¡|¡ |  |  |d¡|¡ d S )	NaJ  
            <document>
                <house>
                    <room>bedroom1</room>
                    <room>bedroom2</room>
                </house>
                <shed>nothing here
                </shed>
                <house>
                    <room>bedroom8</room>
                </house>
            </document>ÚroomrM  Úhouser¸   rB   )r  r)  r(  r(  Zshedr)  r(  r’   )r.   r¢   rd   r%  rI   r    )r*   rØ  Zall_tagsr   r   r   Útest_iter_by_tagê  s    
þz ElementIterTest.test_iter_by_tagc                 C   sJ   t  d¡}| ¡ }|  t¡ t |¡ W d   ƒ n1 s<0    Y  d S )Nr«   )r.   rc   r    r¹   rM  rÎ   )r*   r«   r   r   r   r   rÓ     s    
zElementIterTest.test_copyc              	   C   sf   t  d¡}| ¡ }ttjd ƒD ]@}|  ttjf¡ t 	||¡ W d   ƒ q 1 sV0    Y  q d S )Nr«   rr   )
r.   rc   r    rÈ   rQ   r¹  r¹   rM  rT   rR   )r*   r«   r   r[   r   r   r   rº    s
    
zElementIterTest.test_pickle)N)	r1   r2   r3   r%  r&  r'  r*  rÓ   rº  r   r   r   r   r$  µ  s   
r$  c                   @   sŒ   e Z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„ 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 )"ÚTreeBuilderTestz <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html>text<div>subtext</div>tail</html>z<toplevel>sometext</toplevel>c                 C   s”   |   |jd¡ |   |jd¡ |   |jd ¡ |   |ji ¡ t|ƒ}|   t|ƒd¡ |d }|   |jd¡ |   |jd¡ |   |jd¡ |   |ji ¡ d S )Nr¿  r`   rr   r   Zdivr*  r_   )rd   rC   r`   r_   ra   rf   re   )r*   r½   Úchildrenr¸  r   r   r   Ú_check_sample1_element  s    z&TreeBuilderTest._check_sample1_elementc                 C   sž   G dd„ dƒ}G dd„ d|ƒ}t j|ƒ d}| | j¡ |  | ¡ d¡ t j|ƒ d}| | j¡ |  | ¡ d¡ t jtƒ d}| | j¡ |  | ¡ ¡ d S )Nc                   @   s   e Zd Zdd„ ZdS )z<TreeBuilderTest.test_dummy_builder.<locals>.BaseDummyBuilderc                 S   s   dS )Nr·  r   ry   r   r   r   rî   ,  s    zBTreeBuilderTest.test_dummy_builder.<locals>.BaseDummyBuilder.closeNrd  r   r   r   r   ÚBaseDummyBuilder+  s   r.  c                   @   s   e Zd Zdd„  Z ZZdS )z8TreeBuilderTest.test_dummy_builder.<locals>.DummyBuilderc                  W   s   d S rK   r   )r«   r   r   r   Ú<lambda>0  rG   zATreeBuilderTest.test_dummy_builder.<locals>.DummyBuilder.<lambda>N)r1   r2   r3   r!   r  rý   r   r   r   r   ÚDummyBuilder/  s   r0  rå   r·  )r.   rë   rí   Úsample1rd   rî   Úobjectr±   )r*   r.  r0  rò   r   r   r   Útest_dummy_builder*  s    z"TreeBuilderTest.test_dummy_builderc                 C   s   t  ¡ }|  | d¡jt j¡ |  | d¡jd¡ t jt jd}|  | d¡jt j¡ |  | d¡jd¡ t jtd}|  | d¡tdƒ¡ d S )NZctext)Úcomment_factory)r.   rï   rd   r+  rC   r-  r`   re   ©r*   r©   r   r   r   Útest_treebuilder_comment>  s    z(TreeBuilderTest.test_treebuilder_commentc                 C   sæ   t  ¡ }|  | dd ¡jt j¡ |  | dd ¡jd¡ t jt jd}|  | d¡jt j¡ |  | d¡jd¡ |  | dd¡jt j¡ |  | dd¡jd¡ t jdd„ d}|  | d¡tdƒd f¡ |  | dd¡tdƒdf¡ d S )Nræ   )Ú
pi_factoryr+  z text zpitarget  text c                 S   s   t | ƒ|fS rK   )re   )ræ   r`   r   r   r   r/  U  rG   z5TreeBuilderTest.test_treebuilder_pi.<locals>.<lambda>)r.   rï   rd   r;  rC   r¤   r`   re   r5  r   r   r   Útest_treebuilder_piJ  s    z#TreeBuilderTest.test_treebuilder_pic                 C   s®   G dd„ dt jƒ}d}t  |¡}|  |jd¡ t j|ƒ d}| |¡ | ¡ }|  |jd¡ d}t  |¡}|  |jd¡ d}t j|ƒ d}| |¡ | ¡ }|  |jd¡ d S )Nc                   @   s   e Zd ZdS )z;TreeBuilderTest.test_late_tail.<locals>.TreeBuilderSubclassNr¦  r   r   r   r   ÚTreeBuilderSubclass[  s   r9  z<a>text<!-- comment -->tail</a>Ztexttailrå   z<a>text<?pi data?>tail</a>)r.   rï   r£   rd   r`   rë   rí   rî   )r*   r9  r…  r«   rò   r   r   r   Útest_late_tailY  s     



zTreeBuilderTest.test_late_tailc                 C   sz  G dd„ dt jƒ}d}t jt jddd}| |¡ | ¡ }|  |d jd¡ |  |d jd	¡ |  |jd
¡ t j|ddd}| |¡ | ¡ }|  |d jd¡ |  |d jd	¡ |  |jd
¡ d}t jt jddd}| |¡ | ¡ }|  |d jd¡ |  |d jd¡ |  |jd¡ t j|ddd}| |¡ | ¡ }|  |d jd¡ |  |d jd¡ |  |jd¡ d S )Nc                   @   s   e Zd ZdS )zKTreeBuilderTest.test_late_tail_mix_pi_comments.<locals>.TreeBuilderSubclassNr¦  r   r   r   r   r9  t  s   r9  z/<a>text<?pi1?> <!-- comment -->
<?pi2?>tail</a>T)Zinsert_commentsrå   r   rB  z
tailztext z+<a>text<!-- comment -->
<?pi data?>tail</a>)Z
insert_piszpi datar_   ztext
)r.   rï   rë   rí   rî   rd   r`   r_   )r*   r9  r…  rò   r«   r   r   r   Útest_late_tail_mix_pi_commentsq  s6    



z.TreeBuilderTest.test_late_tail_mix_pi_commentsc                 C   s6   t jt jd dd}| | j¡ | ¡ }|  |¡ d S ©Nrâ  rå   )r.   rë   rï   rí   r1  rî   r-  ©r*   rò   r½   r   r   r   Ú$test_treebuilder_elementfactory_none•  s    z4TreeBuilderTest.test_treebuilder_elementfactory_nonec                 C   sX   G dd„ dt jƒ}|ƒ }|  | d¡d¡ t j|d}| | j¡ | ¡ }|  |¡ d S )Nc                   @   s   e Zd Zdd„ ZdS )z4TreeBuilderTest.test_subclass.<locals>.MyTreeBuilderc                 S   s   |d S ©Nr¸   r   rX  r   r   r   rn    s    z;TreeBuilderTest.test_subclass.<locals>.MyTreeBuilder.foobarN©r1   r2   r3   rn  r   r   r   r   ÚMyTreeBuilderœ  s   rA  rÆ   rÇ   rå   )	r.   rï   rd   rn  rë   rí   r1  rî   r-  ©r*   rA  Útbrò   r½   r   r   r   Útest_subclass›  s    zTreeBuilderTest.test_subclassc                 C   sl   G dd„ dt jƒ}|t jt jd}|  | d¡d¡ t j|d}| | j¡ | d¡ | 	¡ }|  
|¡ d S )Nc                   @   s   e Zd Zdd„ ZdS )z?TreeBuilderTest.test_subclass_comment_pi.<locals>.MyTreeBuilderc                 S   s   |d S r?  r   rX  r   r   r   rn  «  s    zFTreeBuilderTest.test_subclass_comment_pi.<locals>.MyTreeBuilder.foobarNr@  r   r   r   r   rA  ª  s   rA  )r4  r7  rÆ   rÇ   rå   z<!-- a comment--><?and a pi?>)r.   rï   r-  r¤   rd   rn  rë   rí   r1  rî   r-  rB  r   r   r   Útest_subclass_comment_pi©  s    
z(TreeBuilderTest.test_subclass_comment_pic                    sN   g ‰ ‡ fdd„}t j|d}t j|d}| | j¡ | ¡  |  ˆ dg¡ d S )Nc                    s   ˆ   | ¡ t | |¡S rK   )r–   r.   rc   )rC   ra   ©Zlstr   r   Ú	myfactoryº  s    
z7TreeBuilderTest.test_element_factory.<locals>.myfactoryrâ  rå   Ztoplevel)r.   rï   rë   rí   Úsample2rî   rd   )r*   rG  rC  rò   r   rF  r   Útest_element_factory¸  s    z$TreeBuilderTest.test_element_factoryc                 C   sF   t j|d}t j|d}| | j¡ | ¡ }|  ||¡ |  |¡ d S r<  )r.   rï   rë   rí   r1  rî   rb   r-  )r*   rN   rC  rò   r½   r   r   r   Ú_check_element_factory_classÆ  s    z,TreeBuilderTest._check_element_factory_classc                 C   s    G dd„ dt jƒ}|  |¡ d S )Nc                   @   s   e Zd ZdS )z@TreeBuilderTest.test_element_factory_subclass.<locals>.MyElementNr¦  r   r   r   r   rý  Ð  s   rý  )r.   rc   rJ  )r*   rý  r   r   r   Útest_element_factory_subclassÏ  s    z-TreeBuilderTest.test_element_factory_subclassc                 C   s4   t j}|  |jd¡ G dd„ d|tƒ}|  |¡ d S )Nr,   c                   @   s   e Zd ZdS )zLTreeBuilderTest.test_element_factory_pure_python_subclass.<locals>.MyElementNr¦  r   r   r   r   rý  Ý  s   rý  )r.   Z_Element_Pyrd   r2   rº   rJ  )r*   Úbaserý  r   r   r   Ú)test_element_factory_pure_python_subclassÔ  s    z9TreeBuilderTest.test_element_factory_pure_python_subclassc                 C   s<   G dd„ dƒ}t j|ƒ d}| | j¡ |  | ¡ d¡ d S )Nc                   @   s    e Zd ZdZdd„ Zdd„ ZdS )z3TreeBuilderTest.test_doctype.<locals>.DoctypeParserNc                 S   s   |||f| _ d S rK   ©Ú_doctype©r*   rX   ZpubidÚsystemr   r   r   Údoctypeå  s    z;TreeBuilderTest.test_doctype.<locals>.DoctypeParser.doctypec                 S   s   | j S rK   rN  ry   r   r   r   rî   è  s    z9TreeBuilderTest.test_doctype.<locals>.DoctypeParser.close)r1   r2   r3   rO  rR  rî   r   r   r   r   ÚDoctypeParserâ  s   rS  rå   ©r¿  z&-//W3C//DTD XHTML 1.0 Transitional//ENz7http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd)r.   rë   rí   r1  rd   rî   )r*   rS  rò   r   r   r   Útest_doctypeá  s    	
ÿzTreeBuilderTest.test_doctypec              	   C   s°   G dd„ dƒ}t j|ƒ d dD ]@}|  t|¡  t j||ƒd W d   ƒ q 1 sV0    Y  q t j|tdd dD ]2}t j||tdd}| | j¡ |  | ¡ ¡ qxd S )Nc                   @   s"   e Zd Zdefdd„Zdd„ ZdS )zBTreeBuilderTest.test_builder_lookup_errors.<locals>.RaisingBuilderNc                 S   s   || _ || _d S rK   ©Úraise_inÚwhat)r*   rW  rX  r   r   r   r-  ô  s    zKTreeBuilderTest.test_builder_lookup_errors.<locals>.RaisingBuilder.__init__c                 S   s"   || j kr|  | j ¡‚dd„ }|S )Nc                  W   s   d S rK   r   )r   r   r   r   Úhandleû  s    z^TreeBuilderTest.test_builder_lookup_errors.<locals>.RaisingBuilder.__getattr__.<locals>.handlerV  )r*   rX   rY  r   r   r   Ú__getattr__ø  s    
zNTreeBuilderTest.test_builder_lookup_errors.<locals>.RaisingBuilder.__getattr__)r1   r2   r3   rº   r-  rZ  r   r   r   r   ÚRaisingBuilderó  s   r[  rå   )r  r!   rý   r+  r;  )rX  )	r.   rë   rp  rº   rã  rí   r1  r±   rî   )r*   r[  rý  rò   r   r   r   Útest_builder_lookup_errorsò  s    0z*TreeBuilderTest.test_builder_lookup_errorsN)r1   r2   r3   r1  rH  r-  r3  r6  r8  r:  r;  r>  rD  rE  rI  rJ  rK  rM  rU  r\  r   r   r   r   r+    s"   $	r+  c                   @   sP   e Zd Z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„ ZdS )ÚXMLParserTests   <file><line>22</line></file>sŠ   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html>text</html>uX   <?xml version="1.0" encoding="iso-8859-1"?>
<money value="$Â£â‚¬ð…»">$Â£â‚¬ð…»</money>c                 C   s6   |   |jd¡ |   |d jd¡ |   |d jd¡ d S )Nr?   r   ÚlineZ22)rd   rC   r`   rÀ  r   r   r   Ú_check_sample_element  s    z#XMLParserTest._check_sample_elementc                 C   s0   t jdt  ¡ d}| | j¡ |  | ¡ ¡ d S )Nr   )r5   ræ   )r.   rë   rï   rí   r1  r_  rî   )r*   rJ  r   r   r   Útest_constructor_args  s
    ÿz#XMLParserTest.test_constructor_argsc                 C   s6   G dd„ dt jƒ}|ƒ }| | j¡ |  | ¡ ¡ d S )Nc                   @   s   e Zd ZdS )z-XMLParserTest.test_subclass.<locals>.MyParserNr¦  r   r   r   r   ÚMyParser!  s   ra  )r.   rë   rí   r1  r_  rî   )r*   ra  rò   r   r   r   rD     s    zXMLParserTest.test_subclassc                 C   sT   t  ¡ 8 t  dt¡ t ¡ }| | j¡ | ¡  W d   ƒ n1 sF0    Y  d S )NÚerror)	ÚwarningsÚcatch_warningsÚsimplefilterr–  r.   rë   rí   rH  rî   r  r   r   r   Útest_doctype_warning'  s
    
z"XMLParserTest.test_doctype_warningc                    sþ   d ‰ G ‡ fdd„dt jƒ}|ƒ }|  td¡ | | j¡ W d   ƒ n1 sN0    Y  | ¡  |  ˆ ¡ d  ‰ ‰t 	¡ p t 
dt¡ t 
dt¡ G ‡fdd„dƒ}||ƒ d}| | j¡ | ¡  |  ˆ ¡ |  ˆd¡ W d   ƒ n1 sð0    Y  d S )	Nc                       s   e Zd Z‡ fdd„ZdS )z@XMLParserTest.test_subclass_doctype.<locals>.MyParserWithDoctypec                    s   ||f‰ d S rK   r   )r*   r   r   rN  r   r   rR  1  s    zHXMLParserTest.test_subclass_doctype.<locals>.MyParserWithDoctype.doctypeN©r1   r2   r3   rR  r   rN  r   r   ÚMyParserWithDoctype0  s   rh  rR  rb  c                       s   e Zd Z‡ fdd„ZdS )z:XMLParserTest.test_subclass_doctype.<locals>.DoctypeParserc                    s   |||f‰ d S rK   r   rP  ©Ú	_doctype2r   r   rR  @  s    zBXMLParserTest.test_subclass_doctype.<locals>.DoctypeParser.doctypeNrg  r   ri  r   r   rS  ?  s   rS  rå   rT  )r.   rë   r!  ÚRuntimeWarningrí   rH  rî   r±   rc  rd  re  r–  rd   )r*   rh  rò   rS  r   )rO  rj  r   Útest_subclass_doctype.  s&    *


ÿz#XMLParserTest.test_subclass_doctypec                 C   sp   t  ¡ T t  dt¡ t  dt¡ G dd„ dtjƒ}|ƒ }| | j¡ | 	¡  W d  ƒ n1 sb0    Y  dS )z:Ensure that ordinary usage is not deprecated (Issue 19176)rb  c                   @   s   e Zd ZdS )zDXMLParserTest.test_inherited_doctype.<locals>.MyParserWithoutDoctypeNr¦  r   r   r   r   ÚMyParserWithoutDoctypeQ  s   rm  N)
rc  rd  re  r–  rk  r.   rë   rí   rH  rî   )r*   rm  rò   r   r   r   Útest_inherited_doctypeL  s    
z$XMLParserTest.test_inherited_doctypec                 C   sV   t jt  ¡ d}| | j¡ | ¡ }|  |jd¡ |  |jd d¡ |  |j	d¡ d S )Nrå   Zmoneyr{   u
   $Â£â‚¬ð…»)
r.   rë   rï   rí   Úsample3rî   rd   rC   ra   r`   r=  r   r   r   Útest_parse_stringW  s    zXMLParserTest.test_parse_stringN)r1   r2   r3   r1  rH  ro  r_  r`  rD  rf  rl  rn  rp  r   r   r   r   r]    s   r]  c                   @   s   e Zd Zdd„ ZdS )ÚNamespaceParseTestc                 C   s`   dddœ}t  t¡}|  t| d|¡ƒd¡ |  t| d|¡ƒd¡ |  t| d|¡ƒd¡ d S )	NZhellorÍ   )Úhrñ   z{hello}tablerr   z.//{hello}tdr¸   z.//{foo}name)r.   r£   ÚSAMPLE_XML_NS_ELEMSrd   re   rœ   )r*   r  rØ  r   r   r   Útest_find_with_namespacea  s
    

z+NamespaceParseTest.test_find_with_namespaceN)r1   r2   r3   rt  r   r   r   r   rq  `  s   rq  c                   @   sl   e Z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S )ÚElementSlicingTestc                 C   s   dd„ |D ƒS )Nc                 S   s   g | ]
}|j ‘qS r   rB   )rE   r½   r   r   r   rF   l  rG   z1ElementSlicingTest._elem_tags.<locals>.<listcomp>r   )r*   Zelemlistr   r   r   Ú
_elem_tagsk  s    zElementSlicingTest._elem_tagsc                 C   s   |   t|ƒ¡S rK   )rv  rf   r.  r   r   r   Ú_subelem_tagsn  s    z ElementSlicingTest._subelem_tagsc                 C   s,   t  d¡}t|ƒD ]}t  |d| ¡ q|S )zxCreate an Element with a tag 'a', with the given amount of children
           named 'a0', 'a1' ... and so on.

        r«   za%s)r.   rc   rÈ   r,  )r*   Znumchildrenr½   rÊ   r   r   r   Ú_make_elem_with_childrenq  s    
z+ElementSlicingTest._make_elem_with_childrenc                    sZ   |   d¡‰ |  ˆ d jd¡ |  ˆ d jd¡ |  t‡ fdd„¡ |  t‡ fdd„¡ d S )	NrÆ   rr   Úa1éþÿÿÿÚa8c                      s   ˆ d S )Né   r   r   ru  r   r   r/    rG   z?ElementSlicingTest.test_getslice_single_index.<locals>.<lambda>c                      s   ˆ d S )Niôÿÿÿr   r   ru  r   r   r/  ‚  rG   )rx  rd   rC   r¹   Ú
IndexErrorry   r   ru  r   Útest_getslice_single_index{  s
    
z-ElementSlicingTest.test_getslice_single_indexc                 C   sÂ   |   d¡}|  |  |dd … ¡g d¢¡ |  |  |dd… ¡g d¢¡ |  |  |dd… ¡g d¢¡ |  |  |dd… ¡ddg¡ |  |  |dd… ¡ddg¡ |  |  |d d	… ¡d
dg¡ d S )Nr„  rM  )Úa3Úa4Úa5é   r  r  r€  rd  r¸   Úa0ry  )rx  rd   rv  rÀ  r   r   r   Útest_getslice_range„  s    
z&ElementSlicingTest.test_getslice_rangec              	   C   sÒ   |   d¡}|  |  |ddd… ¡ddg¡ |  |  |d d d… ¡g d¢¡ |  |  |d d d… ¡ddg¡ |  |  |dd d… ¡d	dg¡ |  |  |dd tj… ¡d
g¡ |  |  |dd tjd> … ¡d
g¡ d S )NrÆ   é   rr   r{  Úa9rM  )rƒ  r  Za6r†  rƒ  ry  r  é@   ©rx  rd   rv  rP   ÚmaxsizerÀ  r   r   r   Útest_getslice_stepsŽ  s    
     z&ElementSlicingTest.test_getslice_stepsc              	   C   s¼   |   d¡}|  |  |d d d… ¡g d¢¡ |  |  |d d d… ¡ddg¡ |  |  |dd tj … ¡dg¡ |  |  |dd tj d … ¡dg¡ |  |  |dd tj d	> … ¡dg¡ d S )
Nr  rd  )r  Úa2ry  rƒ  rz  r  ry  rM  rr   r‡  rˆ  rÀ  r   r   r   Útest_getslice_negative_steps˜  s    
  "&z/ElementSlicingTest.test_getslice_negative_stepsc                 C   sþ   |   d¡}|dd…= |  |  |¡ddg¡ |   d¡}|dd …= |  |  |¡g ¡ |   d¡}|d d d…= |  |  |¡g ¡ |   d¡}|d d d…= |  |  |¡ddg¡ |   d¡}|d	d d…= |  |  |¡ddg¡ |   d¡}|d d d…= |  |  |¡d
g¡ d S )Nr  r   r¸   r‹  r  rd  rz  rƒ  rr   ry  )rx  rd   rw  rÀ  r   r   r   Útest_delslice¡  s$    







z ElementSlicingTest.test_delslicec                 C   sÜ   |   d¡}t d¡|d< |  |  |¡g d¢¡ t d¡|d< |  |  |¡g d¢¡ |  t¡ t d¡|d	< W d   ƒ n1 s€0    Y  |  t¡ t d¡|d
< W d   ƒ n1 s¸0    Y  |  |  |¡g d¢¡ d S )Nr  r©   rr   ©rƒ  r©   r‹  r  r¬   rz  )rƒ  r©   r¬   r  rª   r  éûÿÿÿ)rx  r.   rc   rd   rw  r¹   r}  rÀ  r   r   r   Útest_setslice_single_indexº  s    
,,z-ElementSlicingTest.test_setslice_single_indexc                 C   s¬   |   d¡}dd„ tdƒD ƒ|dd…< |  |  |¡g d¢¡ |   d¡}t d¡g|dd…< |  |  |¡g d	¢¡ |   d¡}d
d„ tdƒD ƒ|dd…< |  |  |¡g d¢¡ d S )Nr  c                 S   s   g | ]}t  d | ¡‘qS ©zb%src  ©rE   rÊ   r   r   r   rF   Ê  rG   z:ElementSlicingTest.test_setslice_range.<locals>.<listcomp>r¸   rr   rM  )rƒ  Úb0Úb1r  r©   )rƒ  r©   r  c                 S   s   g | ]}t  d | ¡‘qS r‘  rc  r’  r   r   r   rF   Ò  rG   )rƒ  r“  r”  Úb2r  )rx  rÈ   rd   rw  r.   rc   rÀ  r   r   r   Útest_setslice_rangeÈ  s    


z&ElementSlicingTest.test_setslice_rangec                 C   sˆ  |   d¡}dd„ tdƒD ƒ|ddd…< |  |  |¡g d¢¡ |   d¡}|  t¡& t d¡g|ddd…< W d   ƒ n1 s|0    Y  |  t¡, d	d„ td
ƒD ƒ|ddd…< W d   ƒ n1 sÂ0    Y  |  t¡ g |ddd…< W d   ƒ n1 sú0    Y  |  |  |¡g d¢¡ |   d¡}t d¡g|dd tj	…< |  |  |¡g d¢¡ t d¡g|dd tj	d> …< |  |  |¡g d¢¡ d S )Nr„  c                 S   s   g | ]}t  d | ¡‘qS r‘  rc  r’  r   r   r   rF   ×  rG   z:ElementSlicingTest.test_setslice_steps.<locals>.<listcomp>r¸   rr   r  )rƒ  r“  r‹  r”  r€  r  r©   c                 S   s   g | ]}t  d | ¡‘qS r‘  rc  r’  r   r   r   rF   Þ  rG   rM  )rƒ  ry  r‹  r  r€  r  r  rŽ  r¬   r‡  ©rƒ  r¬   r‹  r  ©
rx  rÈ   rd   rw  r¹   rº   r.   rc   rP   r‰  rÀ  r   r   r   Útest_setslice_stepsÕ  s     

4:,
z&ElementSlicingTest.test_setslice_stepsc                 C   sÀ  |   d¡}dd„ tdƒD ƒ|ddd…< |  |  |¡g d¢¡ |   d¡}|  t¡& t d¡g|ddd…< W d   ƒ n1 s|0    Y  |  t¡, d	d„ td
ƒD ƒ|ddd…< W d   ƒ n1 sÂ0    Y  |  t¡ g |ddd…< W d   ƒ n1 sú0    Y  |  |  |¡g d¢¡ |   d¡}t d¡g|dd tj	 …< |  |  |¡g d¢¡ t d¡g|dd tj	 d …< |  |  |¡g d¢¡ t d¡g|dd tj	 d> …< |  |  |¡g d¢¡ d S )Nr  c                 S   s   g | ]}t  d | ¡‘qS r‘  rc  r’  r   r   r   rF   ë  rG   zCElementSlicingTest.test_setslice_negative_steps.<locals>.<listcomp>r¸   r   rd  )rƒ  r”  r“  r  r©   c                 S   s   g | ]}t  d | ¡‘qS r‘  rc  r’  r   r   r   rF   ò  rG   rM  )rƒ  ry  r‹  r  rr   rŽ  r¬   r—  rª   r‡  )rƒ  rª   r‹  r  r˜  rÀ  r   r   r   Útest_setslice_negative_stepsé  s$    

4:,
z/ElementSlicingTest.test_setslice_negative_stepsN)r1   r2   r3   rv  rw  rx  r~  r„  rŠ  rŒ  r  r  r–  r™  rš  r   r   r   r   ru  j  s   
	

	ru  c                   @   s²   e Z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G 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)S )*ÚIOTestc              	   C   sÌ  t  d¡}d|_|  t|ƒd¡ dD ]Z}|  |¡< |  t||dd¡ |  t|| ¡ dd¡ W d   ƒ q$1 st0    Y  q$dD ]r}|  |¡T |  t||dd|  |¡¡ | ¡ }|  t||dd|  |¡¡ W d   ƒ q„1 sì0    Y  q„t  d¡}d	|_|  t|ƒd
¡ |  t|ddd¡ |  t|ddd¡ dD ]$}|  t||dd|  |¡¡ qDt  d¡}d	|jd< |  t|ƒd¡ |  t|ddd¡ |  t|ddd¡ dD ]$}|  t||dd|  |¡¡ qºt  d¡}d|_|  t|ƒd¡ |  t|ddd¡ |  t|ddd¡ dD ]$}|  t||dd|  |¡¡ q,t  d¡}d|jd< |  t|ƒd¡ |  t|ddd¡ |  t|ddd¡ dD ]$}|  t||dd|  |¡¡ q¢d S )NrC   r  z<tag>abc</tag>)r   r‡  rä   s   <tag>abc</tag>)rˆ  r  úutf-32z2<?xml version='1.0' encoding='%s'?>
<tag>abc</tag>z<&"'>z<tag>&lt;&amp;"'&gt;</tag>r   s   <tag>&lt;&amp;"'&gt;</tag>r‡  z><?xml version='1.0' encoding='%s'?>
<tag>&lt;&amp;"'&gt;</tag>r|   z"<tag key="&lt;&amp;&quot;'&gt;" />s"   <tag key="&lt;&amp;&quot;'&gt;" />zF<?xml version='1.0' encoding='%s'?>
<tag key="&lt;&amp;&quot;'&gt;" />u   Ã¥Ã¶Ã¶<>u   <tag>Ã¥Ã¶Ã¶&lt;&gt;</tag>s   <tag>Ã¥Ã¶Ã¶&lt;&gt;</tag>s%   <tag>&#229;&#246;&#246;&lt;&gt;</tag>u=   <?xml version='1.0' encoding='%s'?>
<tag>Ã¥Ã¶Ã¶&lt;&gt;</tag>u   <tag key="Ã¥Ã¶Ã¶&lt;&gt;" />s   <tag key="Ã¥Ã¶Ã¶&lt;&gt;" />s(   <tag key="&#229;&#246;&#246;&lt;&gt;" />)rˆ  r  r  rŽ  rœ  u@   <?xml version='1.0' encoding='%s'?>
<tag key="Ã¥Ã¶Ã¶&lt;&gt;" />)	r.   rc   r`   rd   rA   r€  Úupperr    ra   )r*   r<   Úencr  r   r   r   r¾    sÀ    
ÿÿ$ÿÿÿÿÿÿ$
ÿÿÿÿÿ

ÿÿÿÿÿ
ÿÿÿÿÿ

ÿÿÿÿÿzIOTest.test_encodingc                 C   sf   |   tjt¡ t t d¡¡}| t¡ ttdƒ }|  	| 
¡ d¡ W d   ƒ n1 sX0    Y  d S )Nõ   <site>Ã¸</site>r  ó   <site>&#248;</site>)r#  r   r$  r   r.   r$   r¢   r9   ré   rd   rê   ©r*   r@   rñ   r   r   r   Útest_write_to_filenameF  s
    
zIOTest.test_write_to_filenamec                 C   s¶   |   tjt¡ t t d¡¡}|jtdd ttdƒ }|  	| 
¡ d¡ W d   ƒ n1 s\0    Y  |jtdd ttdƒ$}|  	| 
¡ tdƒ¡ W d   ƒ n1 s¨0    Y  d S )NrŸ  r   rä   r  ó   <site>Ã¸</site>r  ó:   <?xml version='1.0' encoding='ISO-8859-1'?>
<site>ø</site>)r#  r   r$  r   r.   r$   r¢   r9   ré   rd   rê   r"   r¡  r   r   r   Ú$test_write_to_filename_with_encodingM  s    .ÿz+IOTest.test_write_to_filename_with_encodingc                 C   s¤   |   tjt¡ ttdƒ}|j}W d   ƒ n1 s40    Y  t t¡ t t d¡¡}|j	tdd ttdƒ }|  
| ¡ d¡ W d   ƒ n1 s–0    Y  d S )Nr­  rŸ  r4   rä   r  r£  )r#  r   r$  r   ré   r5   r.   r$   r¢   r9   rd   rê   )r*   rñ   r5   r@   r   r   r   Ú!test_write_to_filename_as_unicodeZ  s    $
z(IOTest.test_write_to_filename_as_unicodec                 C   s°  |   tjt¡ t t d¡¡}ttddd*}|j|dd |  	|j
¡ W d   ƒ n1 s\0    Y  ttdƒ }|  | ¡ d¡ W d   ƒ n1 s–0    Y  ttddd	d
*}|j|dd |  	|j
¡ W d   ƒ n1 sà0    Y  ttdƒ }|  | ¡ d¡ W d   ƒ n1 s0    Y  ttddd*}|j|dd |  	|j
¡ W d   ƒ n1 sf0    Y  ttdƒ }|  | ¡ d¡ W d   ƒ n1 s¢0    Y  d S )NrŸ  r­  r   rä   r4   r  r£  rö   Úxmlcharrefreplace)r5   Úerrorsr   r  s   <site>ø</site>©r#  r   r$  r   r.   r$   r¢   ré   r9   r   r!  rd   rê   r¡  r   r   r   Útest_write_to_text_filee  s"    *.*0,zIOTest.test_write_to_text_filec                 C   sœ   |   tjt¡ t t d¡¡}ttdƒ&}| |¡ |  	|j
¡ W d   ƒ n1 sT0    Y  ttdƒ }|  | ¡ d¡ W d   ƒ n1 sŽ0    Y  d S )NrŸ  r  r  r   r©  r¡  r   r   r   Útest_write_to_binary_filez  s    
*z IOTest.test_write_to_binary_filec                 C   s   |   tjt¡ t t d¡¡}ttdƒ*}|j|dd |  	|j
¡ W d   ƒ n1 sX0    Y  ttdƒ }|  | ¡ d¡ W d   ƒ n1 s’0    Y  ttdƒ*}|j|dd |  	|j
¡ W d   ƒ n1 sÖ0    Y  ttdƒ }|  | ¡ d¡ W d   ƒ n1 s0    Y  d S )	NrŸ  r  r   rä   r  r£  r  r¤  r©  r¡  r   r   r   Ú'test_write_to_binary_file_with_encodingƒ  s    *.*
ÿz.IOTest.test_write_to_binary_file_with_encodingc                 C   s0  |   tjt¡ t t d¡¡}ttdƒ*}|j|dd |  	|j
¡ W d   ƒ n1 sX0    Y  ttdƒ&}|  | ¡ d d¡¡ W d   ƒ n1 s˜0    Y  ttddd*}|j|dd |  	|j
¡ W d   ƒ n1 sà0    Y  ttdƒ&}|  | ¡ d d¡¡ W d   ƒ n1 s"0    Y  d S )	NrŸ  r  r  rä   r  u7   <?xml version='1.0' encoding='utf-16'?>
<site>Ã¸</site>r   )Ú	buffering)r#  r   r$  r   r.   r$   r¢   ré   r9   r   r!  rd   rê   r    r¡  r   r   r   Ú"test_write_to_binary_file_with_bom”  s(    *
ÿÿ"*
ÿÿz)IOTest.test_write_to_binary_file_with_bomc                 C   s2   t  ¡ }t d¡}| |¡ |  | ¡ jd¡ d S ©Nz"<?xml version="1.0"?><site></site>Úsite)r.   r$   r6   r8   rç   rd   r“   rC   ©r*   r@   rð   r   r   r   Útest_read_from_stringio¨  s    

zIOTest.test_read_from_stringioc                 C   s:   t  t  d¡¡}t ¡ }|j|dd |  | ¡ d¡ d S ©NrŸ  r4   rä   )r.   r$   r¢   r6   r8   r9   rd   r:   r±  r   r   r   Útest_write_to_stringio®  s    zIOTest.test_write_to_stringioc                 C   s2   t  ¡ }t d¡}| |¡ |  | ¡ jd¡ d S ©Ns"   <?xml version="1.0"?><site></site>r°  )r.   r$   r6   r7   rç   rd   r“   rC   ©r*   r@   r‰  r   r   r   Útest_read_from_bytesio´  s    

zIOTest.test_read_from_bytesioc                 C   s6   t  t  d¡¡}t ¡ }| |¡ |  | ¡ d¡ d S ©NrŸ  r   )r.   r$   r¢   r6   r7   r9   rd   r:   r¶  r   r   r   Útest_write_to_bytesioº  s    
zIOTest.test_write_to_bytesioc                   @   s   e Zd ZdS )zIOTest.dummyNr¦  r   r   r   r   ÚdummyÀ  s   rº  c                 C   sB   t  d¡}|  ¡ }|j|_t ¡ }| |¡ |  | ¡ j	d¡ d S r¯  )
r6   r8   rº  rê   r.   r$   rç   rd   r“   rC   )r*   rð   Úreaderr@   r   r   r   Útest_read_from_user_text_readerÃ  s    

z&IOTest.test_read_from_user_text_readerc                 C   sJ   t  t  d¡¡}t ¡ }|  ¡ }|j|_|j|dd |  | ¡ d¡ d S r³  )	r.   r$   r¢   r6   r8   rº  r9   rd   r:   )r*   r@   rð   Úwriterr   r   r   Útest_write_to_user_text_writerË  s    z%IOTest.test_write_to_user_text_writerc                 C   sJ   t  d¡}|  ¡ }|j|_t ¡ }| |¡ |  | ¡ j	d¡ t ¡ }d S rµ  )
r6   r7   rº  rê   r.   r$   rç   rd   r“   rC   )r*   r‰  r»  r@   r   r   r   Ú!test_read_from_user_binary_readerÓ  s    

z(IOTest.test_read_from_user_binary_readerc                 C   sF   t  t  d¡¡}t ¡ }|  ¡ }|j|_| |¡ |  | ¡ d¡ d S r¸  )	r.   r$   r¢   r6   r7   rº  r9   rd   r:   ©r*   r@   r‰  r½  r   r   r   Ú test_write_to_user_binary_writerÜ  s    
z'IOTest.test_write_to_user_binary_writerc                 C   sb   t  t  d¡¡}t ¡ }|  ¡ }|j|_dd„ |_|j|_|j|dd |  	| 
¡ d d¡¡ d S )Nz<site />c                   S   s   dS r¬  r   r   r   r   r   r/  é  rG   zBIOTest.test_write_to_user_binary_writer_with_bom.<locals>.<lambda>r  rä   z0<?xml version='1.0' encoding='utf-16'?>
<site />)r.   r$   r¢   r6   r7   rº  r9   ÚseekableÚtellrd   r:   r    rÀ  r   r   r   Ú)test_write_to_user_binary_writer_with_bomä  s    

ÿÿz0IOTest.test_write_to_user_binary_writer_with_bomc              	   C   sR   t  d¡}|  t  |d¡d t  |d¡¡¡ |  t  |d¡d t  |d¡¡¡ d S )Nz<tag>foo</tag>r4   ru   r  rG   )r.   r£   rd   rÜ   rø   rù   r÷  r   r   r   Útest_tostringlist_invariantð  s    

þ
þz"IOTest.test_tostringlist_invariantc                 C   sR   t  d¡}|  t  |d¡d¡ |  t j|dddd¡ |  t j|dddd¡ d S )Nz<tag>a<x />b<y></y>c</tag>r4   z<tag>a<x />b<y />c</tag>T)Zshort_empty_elementsFz<tag>a<x></x>b<y></y>c</tag>)r.   r£   rd   rÜ   r÷  r   r   r   Útest_short_empty_elementsù  s    

þþþz IOTest.test_short_empty_elementsN)r1   r2   r3   r¾  r¢  r¥  r¦  rª  r«  r¬  r®  r²  r´  r·  r¹  rº  r¼  r¾  r¿  rÁ  rÄ  rÅ  rÆ  r   r   r   r   r›     s(   E			r›  c                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚParseErrorTestc                 C   s   |   t ¡ t¡ d S rK   )rb   r.   r"  r  ry   r   r   r   rD    s    zParseErrorTest.test_subclassc              
   C   s>   zt  |¡ W n* t jy8 } z|W  Y d }~S d }~0 0 d S rK   )r.   r£   r"  )r*   rg  r½   r   r   r   Ú
_get_error
  s    zParseErrorTest._get_errorc                 C   s@   |   |  d¡jd¡ |   |  d¡jd¡ |   |  d¡jd¡ d S )NrÍ   )rr   r   z<tag>&foo;</tag>)rr   r  zfoobar<)rr   r„  )rd   rÈ  Zpositionry   r   r   r   Útest_error_position  s    z"ParseErrorTest.test_error_positionc                 C   s8   dd l m  m  m} |  |  d¡j|j|j ¡ d S )Nr   rÍ   )	Zxml.parsers.expat.errorsÚparsersZexpatr¨  rd   rÈ  ÚcodeZcodesZXML_ERROR_SYNTAX)r*   ZERRORSr   r   r   Útest_error_code  s    
ÿzParseErrorTest.test_error_codeN)r1   r2   r3   rD  rÈ  rÉ  rÌ  r   r   r   r   rÇ    s   rÇ  c                   @   s   e Zd Zdd„ ZdS )ÚKeywordArgsTestc              
   C   sÚ  t  d¡}|  | dd ¡|jdd d¡ |  | dd d ¡|jdd d d¡ |  | dd ¡|jdd d¡ |  t| dd ¡ƒt|jdd dƒ¡ |  t  d¡j	i ¡ t  dt
ddd¡t jdt
ddddt jdt
dd	dd
t jddddt jdt
ddddddg}|D ]*}|  |jd¡ |  |j	t
ddd¡ q
t j|d dddid}|  |j	d d¡ |  td¡ t  dd¡ W d   ƒ n1 s0    Y  |  td¡ t jddd W d   ƒ n1 sÌ0    Y  d S )Nz
<a>foo</a>r«   )ÚpathrÏ  )rÎ  rÔ   rÏ  ú#rÍ   )rA  rb  )ra   )rA  )rb  r   rn  Zkey1Zvalue1zmust be dict, not strzI'm not a dict)r.   r¢   rd   rš   r   rœ   rf   r›   rc   ra   rU   rC   r,  rp  rM  )r*   rl   Úelementsr½   rÑ   r   r   r   Útest_issue14818  s:    
ÿÿÿÿû,zKeywordArgsTest.test_issue14818N)r1   r2   r3   rÑ  r   r   r   r   rÍ    s   rÍ  c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚNoAcceleratorTestc                 C   s   t st d¡‚d S )Nzonly for the Python version)rL   rŒ  r•  ry   r   r   r   rí  @  s    zNoAcceleratorTest.setUpc                 C   s(   |   tjjtj¡ |   tjjtj¡ d S rK   )rb   rL   rc   r-  ÚtypesÚFunctionTyperë   ry   r   r   r   Útest_correct_import_pyETE  s    z*NoAcceleratorTest.test_correct_import_pyETN)r1   r2   r3   rí  rÕ  r   r   r   r   rÒ  ?  s   rÒ  c                 K   s   t j| fi |¤ŽS rK   )rL   Úcanonicalize)r…  r>   r   r   r   Úc14n_roundtripO  s    r×  c                   @   s(   e Zd ZdZdd„ Zdd„ Zdd„ ZdS )ÚC14NTestNc                 C   s   |   tdƒd¡ |   tdƒd¡ |   tdƒd¡ |   tdƒd¡ |   td	ƒd
¡ |   tdƒd¡ |   tdƒd¡ |   tdƒd¡ |   tdƒd¡ |   tdƒd¡ |   tdƒd¡ |   tdƒd¡ d}|   t|ƒ|¡ d}|   t|ƒ|¡ d}|   t|ƒ|¡ d S )Nz<doc/>z<doc></doc>z<doc xmlns='uri'/>z<doc xmlns="uri"></doc>z <prefix:doc xmlns:prefix='uri'/>z,<prefix:doc xmlns:prefix="uri"></prefix:doc>z+<doc xmlns:prefix='uri'><prefix:bar/></doc>z7<doc><prefix:bar xmlns:prefix="uri"></prefix:bar></doc>z¢<elem xmlns:wsu='http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd' xmlns:SOAP-ENV='http://schemas.xmlsoap.org/soap/envelope/' />z<elem></elem>z*<doc>Hello, world!<!-- Comment 1 --></doc>z<doc>Hello, world!</doc>z<value>&#x32;</value>z<value>2</value>zG<compute><![CDATA[value>"0" && value<"10" ?"valid":"error"]]></compute>zI<compute>value&gt;"0" &amp;&amp; value&lt;"10" ?"valid":"error"</compute>zS<compute expr='value>"0" &amp;&amp; value&lt;"10" ?"valid":"error"'>valid</compute>z{<compute expr="value>&quot;0&quot; &amp;&amp; value&lt;&quot;10&quot; ?&quot;valid&quot;:&quot;error&quot;">valid</compute>z7<norm attr=' &apos;   &#x20;&#13;&#xa;&#9;   &apos; '/>z/<norm attr=" '    &#xD;&#xA;&#x9;   ' "></norm>z6<normNames attr='   A   &#x20;&#13;&#xa;&#9;   B   '/>z=<normNames attr="   A    &#xD;&#xA;&#x9;   B   "></normNames>z7<normId id=' &apos;   &#x20;&#13;&#xa;&#9;   &apos; '/>z1<normId id=" '    &#xD;&#xA;&#x9;   ' "></normId>z5<X xmlns="http://nps/a"><Y targets="abc,xyz"></Y></X>zJ<X xmlns="http://nps/a"><Y xmlns="http://nsp/b" targets="abc,xyz"></Y></X>zN<X xmlns="http://nps/a"><Y xmlns:b="http://nsp/b" b:targets="abc,xyz"></Y></X>)rd   r×  r½  r   r   r   Útest_simple_roundtripY  sP    
ÿ
ÿ
ÿ
ÿ
ÿ
ÿ
ÿ
ÿ
ÿ
ÿ
ÿzC14NTest.test_simple_roundtripc                 C   sÒ   t  d¡}|  t|ddd¡ |  t|ddgdd¡ |  t|ddgd	d
¡ |  t|ddgdgdd¡ |  t|dddgd	d¡ |  t|ddgdd¡ |  t|dddgd	d¡ |  t|ddgdd¡ d S )Nzï        <root xmlns:x="http://example.com/x">
            <a x:attr="attrx">
                <b>abtext</b>
            </a>
            <b>btext</b>
            <c>
                <x:d>dtext</x:d>
            </c>
        </root>
        T)Ú
strip_textz‘<root><a xmlns:x="http://example.com/x" x:attr="attrx"><b>abtext</b></a><b>btext</b><c><x:d xmlns:x="http://example.com/x">dtext</x:d></c></root>z{http://example.com/x}attr)rÚ  Úexclude_attrszc<root><a><b>abtext</b></a><b>btext</b><c><x:d xmlns:x="http://example.com/x">dtext</x:d></c></root>z{http://example.com/x}d)rÚ  Úexclude_tagszb<root><a xmlns:x="http://example.com/x" x:attr="attrx"><b>abtext</b></a><b>btext</b><c></c></root>)rÚ  rÛ  rÜ  z4<root><a><b>abtext</b></a><b>btext</b><c></c></root>r«   r©   zC<root><c><x:d xmlns:x="http://example.com/x">dtext</x:d></c></root>)rÜ  za<root>
    
    
    <c>
        <x:d xmlns:x="http://example.com/x">dtext</x:d>
    </c>
</root>zI<root><a xmlns:x="http://example.com/x" x:attr="attrx"></a><c></c></root>zu<root>
    <a xmlns:x="http://example.com/x" x:attr="attrx">
        
    </a>
    
    <c>
        
    </c>
</root>)rG  rH  rd   r×  r½  r   r   r   Útest_c14n_exclusion  sF    

þþþ
ÿýþþ	þþzC14NTest.test_c14n_exclusionc                    s  t ddd}ttjj|ƒ‰dd„ tt |¡ƒD ƒ‰dd„ ˆD ƒ}‡fdd„ˆD ƒ‰ ‡ ‡fd	d„|D ƒ}|  d
tdd„ | 	¡ D ƒƒ¡ d/dd„}| 
¡ D ]f\}}|D ]V\}}||dƒdk}	||dƒdk}
||dƒdk}d|v rdd„ |d d  d¡D ƒ}dd„ |d d  d¡D ƒ}nd  }}d dd„ t| 
¡ ƒD ƒ¡}|  |› d|› d¡’ |dkrz|sz|  d|› ¡ |d krš|sš|  d|› ¡ d|v rÌ|d d  d!¡d urÌ|  d"|› ¡ ˆ|d# ƒ}|d$krXtˆd%ƒd&ƒV}t|d&ƒ*}t | ¡  d'| ¡ ¡¡}W d   ƒ n1 s.0    Y  W d   ƒ n1 sN0    Y  tj||	|
|||d(}tˆ|d# ƒd)d*d+:}| ¡ }|d,kr°| d-d.¡}| d-d.¡}W d   ƒ n1 sÆ0    Y  |  ||¡ W d   ƒ q¤1 sò0    Y  q¤q–d S )0Nzc14n-20r   r   c                 S   s"   g | ]}|  d ¡r|dd… ‘qS )ú.xmlNr…  )Úendswith©rE   Úfilenamer   r   r   rF   Õ  s   
ÿz+C14NTest.test_xml_c14n2.<locals>.<listcomp>c                 S   s   g | ]}|  d ¡r|‘qS )Úin)Ú
startswithrà  r   r   r   rF   ×  s   
ÿc                    s8   i | ]0}|  d ¡r|dd„ t ˆ |ƒd ¡ ¡ D ƒ“qS )Zc14nc                 S   s,   i | ]$}|j  d ¡d |jpd ¡ |f“qS )Ú}rd  ru   )rC   Úsplitr`   r‡  )rE   Úoptionr   r   r   Ú
<dictcomp>Ü  s   ÿz6C14NTest.test_xml_c14n2.<locals>.<dictcomp>.<dictcomp>rÞ  )rã  r.   rç   r“   rà  )Ú	full_pathr   r   rç  Û  s
   
úýz+C14NTest.test_xml_c14n2.<locals>.<dictcomp>c                    s"   i | ]‰ ˆ ‡‡ fd d„ˆD ƒ“qS )c                    sJ   g | ]B}|  d ˆ› d¡r| dd¡d ˆ v r|ˆ | dd¡d  f‘qS )Zout_rú   rr   rd  )rã  Úrsplitrà  )ÚconfigsÚ
input_filer   r   rF   æ  s   ýz6C14NTest.test_xml_c14n2.<locals>.<dictcomp>.<listcomp>r   )rE   )rê  Úfiles)rë  r   rç  å  s   úþé   c                 S   s   g | ]}|D ]}|‘qqS r   r   )rE   Úoutput_filesÚoutput_filer   r   r   rF   ð  s   ÿc                 S   s   |   ||df¡d S )Nr   r   ©rV   )ÚconfigZoption_namerÔ   r   r   r   Ú
get_optionô  s    z+C14NTest.test_xml_c14n2.<locals>.get_optionZIgnoreCommentsÚtrueZTrimTextNodesZPrefixRewriteZ
sequentialZ
QNameAwarec                 S   s(   g | ] }d |  d¡› d|  d¡› ‘qS ©Ú{ZNSrä  ÚNamerð  r[  r   r   r   rF      s   ÿrr   z/{http://www.w3.org/2010/xml-c14n2}QualifiedAttrc                 S   s(   g | ] }d |  d¡› d|  d¡› ‘qS rô  rð  r[  r   r   r   rF     s   ÿz){http://www.w3.org/2010/xml-c14n2}Elementú,c                 s   s8   | ]0\}\}}|› d |p*d  dd„ |D ƒ¡› V  qdS )ú=r÷  c                 s   s   | ]}|j  d ¡d V  qdS )rä  rd  N)rC   rå  )rE   r¬   r   r   r   Ú	<genexpr>  rG   z4C14NTest.test_xml_c14n2.<locals>.<genexpr>.<genexpr>N)rø   )rE   rX   r{   r,  r   r   r   rù    s   
ÿz*C14NTest.test_xml_c14n2.<locals>.<genexpr>ú(ú)Z
inNsRedeclz2Redeclared namespace handling is not supported in ZinNsSuperfluousz.{http://www.w3.org/2010/xml-c14n2}XPathElementz2QName rewriting in XPath text is not supported in rÞ  ZinC14N5z	world.txtr  s   &ent2;)Z	from_fileZwith_commentsrÚ  Úrewrite_prefixesZqname_aware_tagsZqname_aware_attrsÚrrs  rä   ZinC14N3z attr="default"ru   )N)r   r   r   rÎ  rø   rÝ   Úlistdirrd   re   Úvaluesr~   rœ   r€  r  rš   ré   r6   r7   rê   r   r.   rÖ  )r*   ZdatadirZinput_filesZtestsrò  rë  rî  rï  rñ  Zkeep_commentsrÚ  rü  ZqattrsZqtagsZconfig_descrrñ   Zentity_filer`   rp   r   )rê  rì  rè  r   Útest_xml_c14n2Ñ  s¦    ÿ
ú
ùÿ

ÿÿÿÿÿÿ
ÿþÿþ

þÿÿÿÿÿ
Zû
,zC14NTest.test_xml_c14n2)r1   r2   r3   ZmaxDiffrÙ  rÝ  r   r   r   r   r   rØ  S  s   (PrØ  c                 C   s:  t ddgda| d u rt} | attttttt	t
ttttttttttg}tturZ| tg¡ ddlm} tjj}| ¡ }|j}| ¡ |_ttdƒr¢t tjtj ¡}nd }zLt!j"|Ž  W ddlm} | #¡  | $|¡ ||_|d urêtj|Ž  d  aanBddlm} | #¡  | $|¡ ||_|d ur,tj|Ž  d  aa0 d S )Nr,   r-   )Zblockedr   r'   Ú_set_factories)%r   rL   r.   r#   ru  rŽ  r¾  rê  ro   r›  rÇ  r<  rû  r  r$  r+  r]  rù  rL  rÍ  rØ  r—   rÒ  r)   r(   ri  Z_namespace_maprÎ   rÉ   r„   r  r-  r¤   r   Zrun_unittestrž   r[  )ÚmoduleZtest_classesr(   r  Z
nsmap_copyrî  Zold_factoriesr   r   r   Ú	test_main8  sj    ÿîÿ




ø


r  Ú__main__)Tr4   )N)MrÎ   r   r¿  r6   r—  ri   r   rQ   rP   rG  rÓ  rŒ  rc  r¨  r   r   r   r   r   Ztest.supportr   r   r   r	   r
   r   rL   r.   rÄ   r    ÚUnicodeEncodeErrorr•  rè   r†  rÃ   r  rÈ  rs  rÅ  rÆ  r   r"   ZTestCaser#   rA   rI   rJ   ro   rù  r>  ÚformatÚescaperJ  r<  rL  rŽ  r¾  r»   rç  Ú__hash__ré  rê  rû  r  r$  r+  r]  rq  ru  r›  rÇ  rÍ  rÒ  r×  rØ  r  r1   r   r   r   r   Ú<module>   sÒ    


	
          . w	
ú	 7  f d 48 W` xT
   $ f
E
