a
     Rîhh{ ã                   @   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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+ƒZ0G d%d&„ d&ej+ƒZ1i Z2d'e2d(< d)e2d*< d+e2d,< d-e2d.< d/e2d0< d1e2d2< d3e2d4< d5e2d6< d7 3e 4ed¡¡e2d8< d9e2d:< i Z5d;e5d<< d=e5d>< d?e2d@< dAe2dB< dCe2dD< G dEdF„ dFej+ƒZ6G dGdH„ dHej+ƒZ7G dIdJ„ dJe/ej+ƒZ8G dKdL„ dLe/ej+ƒZ9G dMdN„ dNe:ƒZ;e:j<e;_<G dOdP„ dPe:ƒZ=e:j<e=_<G dQdR„ dRe/ej+ƒZ>G dSdT„ dTej+ƒZ?G dUdV„ dVej+ƒZ@G dWdX„ dXej+ƒZAG dYdZ„ dZej+ƒZBG d[d\„ d\ej+ƒZCG d]d^„ d^ej+ƒZDG d_d`„ d`ej+ƒZEG dadb„ dbej+ƒZFG dcdd„ ddej+ƒZGG dedf„ dfej+ƒZHG dgdh„ dhej+ƒZIdidj„ ZJG dkdl„ dlej+ƒZKdqdmdn„ZLeMdokr´eLƒ  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© ú;/opt/python-3.9.24/usr/lib/python3.9/test/test_xml_etree.pyÚnewtestm   s    z1checkwarnings.<locals>.decorator.<locals>.newtest)Ú	functoolsÚupdate_wrapper)r   r   ©r   r   )r   r   Ú	decoratorl   s    z checkwarnings.<locals>.decoratorr   )r   r   r   r   r   r   Úcheckwarningsk   s    r   c                 C   s   |   dtj ¡ ¡S )Nó   
)ÚreplaceÚosÚlinesepÚencode)Údatar   r   r   Úconvlinesept   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_sanityy   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#   x   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_cdataX  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_initb  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_cachem  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_copy|  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   0  rG   ©Úeventsc                 S   s   g | ]\}}||j f‘qS r   rB   rþ   r   r   r   rF   4  rG   ©Ústartrý   c                 S   s   g | ]\}}||j f‘qS r   rB   rþ   r   r   r   rF   8  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   E  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   V  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   l  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_spaceS  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>p  rG   z<ElementTreeTest.test_indent_space_caching.<locals>.<setcomp>>   ú
  NÚ
ú
    c                 S   s   h | ]
}|j ’qS r   ©r`   r[  r   r   r   r]  t  rG   >   NZparz
      r^  r`   r`  c                 S   s   h | ]
}|j ’qS r   rZ  r[  r   r   r   r]  x  rG   c                 S   s   h | ]}t |jƒ’qS r   )Úidr_   r[  r   r   r   r]  y  rG   )r.   r¢   rU  rd   r    re   r.  r   r   r   Útest_indent_space_cachingl  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_level|  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_methodsN  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_entityd  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Ô  Ú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_orderJ  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_orderR  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d0dd„Zd1d	d
„Zd2d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e ejd'k d(ej› d)¡d*d+„ ƒZd,d-„ ZdS )3ÚXMLPullParserTestNFc                 C   sP   |d u r|  |¡ n,tdt|ƒ|ƒD ]}|  |||| … ¡ q$|rL| ¡  d S ©Nr   )rí   rÈ   re   Úflush)r*   rò   r!   Ú
chunk_sizerü  rÊ   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   h  s   ÿz3XMLPullParserTest.assert_events.<locals>.<listcomp>)rd   r   Úread_events©r*   rò   rp   Ú
max_eventsr   r   r   Úassert_eventsf  s    ÿýzXMLPullParserTest.assert_eventsc                 C   s   |   tt| ¡ |ƒƒ|¡ d S rK   )rd   rf   r   r   r  r   r   r   Úassert_event_tuplesl  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   s  rG   z7XMLPullParserTest.assert_event_tags.<locals>.<listcomp>)r   r   rd   )r*   rò   rp   r  r
  r   r   r   Úassert_event_tagsq  s    ÿz#XMLPullParserTest.assert_event_tagsc                 C   sÊ   t  ¡ }|  |g ¡ |  |d||¡ |  |g ¡ |  |d||¡ |  |g ¡ |  |d||¡ |  |dg¡ |  |d||¡ |  |d||¡ |  |ddg¡ |  |d||¡ |  |d	g¡ |  | ¡ ¡ d S )
Nú<!-- comment -->
z+<root>
  <element key='value'>text</elementú>
rü   ú<element>text</element>tail
ú<empty-element/>
r   ú</root>
r  ©r.   ÚXMLPullParserr  rþ  r±   rî   )r*   rý  rü  rò   r   r   r   Útest_simple_xmlv  s(    þþz!XMLPullParserTest.test_simple_xmlc                 C   s   | j ddd d S )Nrr   T©rý  rü  ©r  ry   r   r   r   Útest_simple_xml_chunk_1‹  s    z)XMLPullParserTest.test_simple_xml_chunk_1c                 C   s   | j ddd d S )Né   Tr  r  ry   r   r   r   Útest_simple_xml_chunk_5Ž  s    z)XMLPullParserTest.test_simple_xml_chunk_5c                 C   s   | j dd d S )Né   )rý  r  ry   r   r   r   Útest_simple_xml_chunk_22‘  s    z*XMLPullParserTest.test_simple_xml_chunk_22c                 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   Ú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ý   r0  )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ý   r2  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_pi7  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__G  s    zBXMLPullParserTest.test_events_sequence.<locals>.DummyIter.__init__c                 S   s   | S rK   r   ry   r   r   r   Ú__iter__I  s    zBXMLPullParserTest.test_events_sequence.<locals>.DummyIter.__iter__c                 S   s
   t | jƒS rK   )r  r
  ry   r   r   r   r   K  s    zBXMLPullParserTest.test_events_sequence.<locals>.DummyIter.__next__N)r1   r2   r3   r6  r7  r   r   r   r   r   Ú	DummyIterF  s   r8  )r.   r  rþ  r  )r*   Zeventsetrò   r8  r   r   r   Útest_events_sequence?  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_eventR  s    z$XMLPullParserTest.test_unknown_event©r¸   é   r   zExpat z" does not support reparse deferralc                 C   sš   t jdd}dD ]}| |¡ q|  |g ¡ t tu rF|  |jj ¡ ¡ | ¡  |  |dg¡ t tu rv|  |jj ¡ ¡ | d¡ | 	¡  |  |dg¡ d S )Nr  r	  ©z<docrƒ  ©r  rÙ  ú</doc>©rý   rÙ  )
r.   r  rí   r  rL   r‚   Ú_parserÚGetReparseDeferralEnabledrü  rî   ©r*   rò   Úchunkr   r   r   Ú#test_flush_reparse_deferral_enabledV  s    
z5XMLPullParserTest.test_flush_reparse_deferral_enabledc                 C   sÄ   t jdd}dD ]}| |¡ qtjdkrVt tur<|  d¡ |jj d¡ |  	|g ¡ t tu rp|  
|jj ¡ ¡ | ¡  |  	|dg¡ t tu r |  
|jj ¡ ¡ | d¡ | ¡  |  	|d	g¡ d S )
Nr  r	  r=  r;  zDXMLParser.(Get|Set)ReparseDeferralEnabled methods not available in CFr>  r?  r@  )r.   r  rí   ÚpyexpatÚversion_inforL   ÚskipTestrA  ZSetReparseDeferralEnabledr  r   rB  rü  rî   rC  r   r   r   Ú$test_flush_reparse_deferral_disabledn  s"    


z6XMLPullParserTest.test_flush_reparse_deferral_disabled)NF)N)N)N)NF)r1   r2   r3   rþ  r  r  r  r  r  r  r  r  r  r  r*  r+  r1  r3  r5  r9  r:  ÚunittestÚskipIfrF  rG  rE  rI  r   r   r   r   rú  [  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*   r[  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*   r[  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%   rQ  z”<document>
  <p>Example.</p>
  <root>
   <element key="value">text</element>
   <element>text</element>tail
   <empty-element />
</root>
</document>)r)   r&   r\  Úincluder^  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%   rL  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>rM  zO<document>
  <p>This document has been accessed
  324387 times.</p>
</document>rN  zX<document>
  <p>This document has been <em>accessed</em>
  324387 times.</p>
</document>rO  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>rP  rW  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&   r\  r_  rd   rA   r¹   rZ  r»   r¼   ©r*   r&   r  r¾   r   r   r   Útest_xinclude2  s8    

ÿ

ÿ

ÿ

ÿ
,
ÿzXIncludeTest.test_xincludec                 C   s>   ddl m} |  d¡}| || j¡ |  dt| d¡ƒ¡ d S )Nr   r%   rR  r·   z.//p)r)   r&   r\  r_  rd   re   rœ   )r*   r&   r  r   r   r   Útest_xinclude_repeatedr  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%   rL  )rZ   z%cannot load 'disclaimer.xml' as 'xml'rM  z!cannot load 'count.txt' as 'text'rS  z1unknown parse type in xi:include tag ('BAD_TYPE')rT  zYxi:fallback tag must be child of xi:include ('{http://www.w3.org/2001/XInclude}fallback')rU  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¢   rX  r¹   ZFatalIncludeErrorr_  r]  rd   r»   r¼   ÚXINCLUDE_BADr\  ZLimitedRecursiveIncludeErrorra  r   r   r   Útest_xinclude_failuresy  sz    .ÿ.ÿ0ÿ0ÿ
.ÿ
2ÿ
2ÿ
2ÿ
2ÿ
2ÿz#XIncludeTest.test_xinclude_failures)r…  N)N)
r1   r2   r3   r\  r]  r^  r`  rb  rc  re  r   r   r   r   rV    s   
	
	@rV  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 )Nrk  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Ÿ   rl  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   )rZ  ©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   rs  )r¹   rZ  r.   rç   )r*   rs  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*   rx  Ú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_newlineL  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   r  rå   )r.   rë   rí   rd   rî   rC   )r*   rò   r  r   r   r   Útest_bug_200708_closeW  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_namespacee  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_comment‹  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_insert—  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_comment¡  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_1534630«  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_issue6233³  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.   rƒ  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   r  r   r  r   r   r¨   Ï  s   r¨   rC   rŽ  )r.   rc   r`   r¡   r  rb   r»   rd   ©r*   r¨   rÊ   rv  r   r  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 ©NrŽ  r   TrZ  ry   r  r   r   r  ß  s    
z.BugsTest.test_lost_tail.<locals>.Text.__bool__Nr‘  r   r  r   r   r¨   Þ  s   r¨   r  rC   r   rŽ  )	r.   rc   r–   r_   r¡   r  rb   r»   rd   r’  r   r  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 r”  )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   rŽ  )r.   rc   r–   r    r  rº   rH  rb   rC   r»   rd   )r*   r§   rv  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<  éüÿÿÿ)
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¹   rg  r.   rï   r  ry   r   r   r   Útest_39495_treebuilder_start	  s    z%BugsTest.test_39495_treebuilder_startN)#r1   r2   r3   ri  rj  rm  rn  ro  rp  rq  rt  rw  rJ  rK  rP   Úgettracer{  r|  r€  r‚  r„  r…  r‡  rˆ  r‰  rŠ  rŒ  r  r“  r•  r™  r›  rœ  r¢  r£  r   r   r   r   rf  Ã  s:   			


rf  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   rJ  ÚSkipTestr–   ZassertWarnsÚDeprecationWarningrÎ   rà   rd   rC   r`   r_   re   Ú	itertoolsÚzip_longestÚassertIsra   ©r*   r©  Zelement_foo2rO  rP  r   r   r   rÓ   D	  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__a	  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__y	  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¸  ®	  s    zFBasicElementTest.test_augmentation_type_errors.<locals>.E.__deepcopy__N)r1   r2   r3   r¸  r   r   r   r   ÚE­	  s   rº  )r.   rc   r¹   rg  r–   r—   r˜   r„   r¶  rÎ   rÏ   )r*   r½   Ústaterº  r   r   r   Útest_augmentation_type_errors—	  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   ÚDummy´	  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_gc³	  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¨  r}  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—   rg  ©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   r}  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*   Úor  r   r   r—  3
  s    
z:BadElementTest.test_remove_with_mutating.<locals>.X.__eq__Nr˜  r   r  r   r   rÛ  2
  s   rÛ  rÍ   rÌ   r¨  )r.   rc   r—   r¹   rº   r™   ©r*   rÛ  r   r  r   Útest_remove_with_mutating1
  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__H
  s    
z7BadElementTest.test_element_get_text.<locals>.X.__del__N©r1   r2   r3   ré  r   rè  r   r   rÛ  G
  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_textE
  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Û  Z
  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_tailX
  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   r  r   r   Ú	__index__p
  s    
z/BadElementTest.test_subscr.<locals>.X.__index__N©r1   r2   r3   ró  r   r  r   r   rÛ  o
  s   rÛ  r<   rÏ  r   rÆ   )r.   rc   r–   rã  r   r  r   Útest_subscrm
  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   r  r   r   ró  ~
  s    z3BadElementTest.test_ass_subscr.<locals>.X.__index__Nrô  r   r  r   r   rÛ  }
  s   rÛ  r<   rÆ   r   rÏ  )r.   rc   rÈ   r˜   )r*   rÛ  rú   r   r  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_factoryŠ
  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_startˆ
  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ø  –
  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_end”
  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ÿ  ¢
  s    zMutatingElementPath.__new__c                 C   s   | j d d …= dS rÃ  rè  rá  r   r   r   r—  ¦
  s    zMutatingElementPath.__eq__N)r1   r2   r3   rÿ  r—  r   r   r   r   rþ  ¡
  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—  ¬
  s    zBadElementPath.__eq__Nr˜  r   r   r   r   r   «
  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  ±
  s    
zBadElementPathTest.setUpc                    s"   ddl m} | j|_tƒ  ¡  d S r  )r)   r(   r  rÉ   r  ÚtearDownr  r  r   r   r  ·
  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   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  r6  )r*   rC   ra   Úextra)r  rØ  r   r   r6  ü
  s    zQElementTreeTypeTest.test_Element_subclass_constructor.<locals>.MyElement.__init__)r1   r2   r3   r6  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_xpath4  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’   r‹  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_findallJ  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_ns—  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   )r0  ru   )r.   r¢   rd   re   rœ   )r*   r  Únsmapr   r   r   Útest_findall_different_nsmaps¡  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}*r4  z{Y}*r5  rå  r©   z{}brç  )r4  r©   r¬   r5  rd  r’   z.//{*}b)r4  r©   r4  r©   r5  z.//{*}cz.//{X}*z.//{Y}*z.//{}*)r¬   r©   r¬   r©   z.//{}br1  )r.   r¢   r–   r-  rd   rI   rœ   rø  r   r   r   Útest_findall_wildcard²  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.  r3  r6  r7  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,  r†  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¹   rg  rÎ   )r*   r«   r   r   r   r   rÓ   D  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¹   rg  rT   rR   )r*   r«   r   r[   r   r   r   rÑ  J  s
    
zElementIterTest.test_pickle)N)	r1   r2   r3   r<  r=  r>  rA  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_elementZ  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î   i  s    zBTreeBuilderTest.test_dummy_builder.<locals>.BaseDummyBuilder.closeNr~  r   r   r   r   ÚBaseDummyBuilderh  s   rE  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>m  rG   zATreeBuilderTest.test_dummy_builder.<locals>.DummyBuilder.<lambda>N)r1   r2   r3   r!   r  rý   r   r   r   r   ÚDummyBuilderl  s   rG  rå   rÎ  )r.   rë   rí   Úsample1rd   rî   Úobjectr±   )r*   rE  rG  rò   r   r   r   Útest_dummy_builderg  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_factoryr4  z text zpitarget  text c                 S   s   t | ƒ|fS rK   )re   )ræ   r`   r   r   r   rF  ’  rG   z5TreeBuilderTest.test_treebuilder_pi.<locals>.<lambda>)r.   rï   rd   r;  rC   r¤   r`   re   rL  r   r   r   Útest_treebuilder_pi‡  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   rP  z<a>text<!-- comment -->tail</a>Ztexttailrå   z<a>text<?pi data?>tail</a>)r.   rï   r£   rd   r`   rë   rí   rî   )r*   rP  r…  r«   rò   r   r   r   Útest_late_tail–  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   rP  ±  s   rP  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*   rP  r…  rò   r«   r   r   r   Útest_late_tail_mix_pi_comments®  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í   rH  rî   rD  ©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   rr  r   r   r   rn  Ú  s    z;TreeBuilderTest.test_subclass.<locals>.MyTreeBuilder.foobarN©r1   r2   r3   rn  r   r   r   r   ÚMyTreeBuilderÙ  s   rX  rÆ   rÇ   rå   )	r.   rï   rd   rn  rë   rí   rH  rî   rD  ©r*   rX  Ú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 rV  r   rr  r   r   r   rn  è  s    zFTreeBuilderTest.test_subclass_comment_pi.<locals>.MyTreeBuilder.foobarNrW  r   r   r   r   rX  ç  s   rX  )rK  rN  rÆ   rÇ   rå   z<!-- a comment--><?and a pi?>)r.   rï   r-  r¤   rd   rn  rë   rí   rH  rî   rD  rY  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*   r^  rZ  rò   r   r]  r   Útest_element_factoryõ  s    z$TreeBuilderTest.test_element_factoryc                 C   sF   t j|d}t j|d}| | j¡ | ¡ }|  ||¡ |  |¡ d S rS  )r.   rï   rë   rí   rH  rî   rb   rD  )r*   rN   rZ  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   ra  )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º   ra  )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   re  ry   r   r   r   rî   %  s    z9TreeBuilderTest.test_doctype.<locals>.DoctypeParser.close)r1   r2   r3   rf  ri  rî   r   r   r   r   ÚDoctypeParser  s   rj  rå   ©r¿  z&-//W3C//DTD XHTML 1.0 Transitional//ENz7http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd)r.   rë   rí   rH  rd   rî   )r*   rj  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*   rn  ro  r   r   r   r6  1  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   Úhandle8  s    z^TreeBuilderTest.test_builder_lookup_errors.<locals>.RaisingBuilder.__getattr__.<locals>.handlerm  )r*   rX   rp  r   r   r   Ú__getattr__5  s    
zNTreeBuilderTest.test_builder_lookup_errors.<locals>.RaisingBuilder.__getattr__)r1   r2   r3   rº   r6  rq  r   r   r   r   ÚRaisingBuilder0  s   rr  rå   )r  r!   rý   r+  r;  )ro  )	r.   rë   rp  rº   rú  rí   rH  r±   rî   )r*   rr  rÿ  rò   r   r   r   Útest_builder_lookup_errors/  s    0z*TreeBuilderTest.test_builder_lookup_errorsN)r1   r2   r3   rH  r_  rD  rJ  rM  rO  rQ  rR  rU  r[  r\  r`  ra  rb  rd  rl  rs  r   r   r   r   rB  R  s"   $	rB  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_elementR  s    z#XMLParserTest._check_sample_elementc                 C   s0   t jdt  ¡ d}| | j¡ |  | ¡ ¡ d S )Nr   )r5   ræ   )r.   rë   rï   rí   rH  rv  rî   )r*   rJ  r   r   r   Útest_constructor_argsW  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   rx  )r.   rë   rí   rH  rv  rî   )r*   rx  rò   r   r   r   r[  ]  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í   r_  rî   r  r   r   r   Útest_doctype_warningd  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   re  r   r   ri  n  s    zHXMLParserTest.test_subclass_doctype.<locals>.MyParserWithDoctype.doctypeN©r1   r2   r3   ri  r   re  r   r   ÚMyParserWithDoctypem  s   r  ri  ry  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   rg  ©Ú	_doctype2r   r   ri  }  s    zBXMLParserTest.test_subclass_doctype.<locals>.DoctypeParser.doctypeNr~  r   r€  r   r   rj  |  s   rj  rå   rk  )r.   rë   r8  ÚRuntimeWarningrí   r_  rî   r±   rz  r{  r|  r­  rd   )r*   r  rò   rj  r   )rf  r  r   Útest_subclass_doctypek  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 )Nry  c                   @   s   e Zd ZdS )zDXMLParserTest.test_inherited_doctype.<locals>.MyParserWithoutDoctypeNr½  r   r   r   r   ÚMyParserWithoutDoctypeŽ  s   r„  )
rz  r{  r|  r­  r‚  r.   rë   rí   r_  rî   )r*   r„  rò   r   r   r   Útest_inherited_doctype‰  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`   rT  r   r   r   Útest_parse_string”  s    zXMLParserTest.test_parse_stringN)r1   r2   r3   rH  r_  r†  rv  rw  r[  r}  rƒ  r…  r‡  r   r   r   r   rt  I  s   rt  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*   r2  rÙ  r   r   r   Útest_find_with_namespacež  s
    

z+NamespaceParseTest.test_find_with_namespaceN)r1   r2   r3   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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   ©  rG   z1ElementSlicingTest._elem_tags.<locals>.<listcomp>r   )r*   Zelemlistr   r   r   Ú
_elem_tags¨  s    zElementSlicingTest._elem_tagsc                 C   s   |   t|ƒ¡S rK   )r  rf   r.  r   r   r   Ú_subelem_tags«  s    z ElementSlicingTest._subelem_tagsc                 C   s,   t  d¡}t|ƒD ]}t  |d| ¡ q|S )Nr«   za%s)r.   rc   rÈ   r,  )r*   Znumchildrenr½   rÊ   r   r   r   Ú_make_elem_with_children®  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   r  r   r   rF  ¾  rG   z?ElementSlicingTest.test_getslice_single_index.<locals>.<lambda>c                      s   ˆ d S )Niôÿÿÿr   r   r  r   r   rF  ¿  rG   )r  rd   rC   r¹   Ú
IndexErrorry   r   r  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¸   Úa0r  )r  rd   r  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š  r  r–  é@   ©r  rd   r  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–  Úa2r  rš  r‘  r–  r  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  r‘  rš  rr   r  )r  rd   rŽ  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¬   r‘  )rš  r©   r¬   r–  rª   r  éûÿÿÿ)r  r.   rc   rd   rŽ  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%sr}  ©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¨  r}  r©  r   r   r   rF     rG   )rš  rª  r«  Úb2r–  )r  rÈ   rd   rŽ  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¨  r}  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¨  r}  r©  r   r   r   rF     rG   rM  )rš  r  r¢  r–  r—  r˜  r  r¥  r¬   rž  ©rš  r¬   r¢  r–  ©
r  rÈ   rd   rŽ  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¨  r}  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¨  r}  r©  r   r   r   rF   /  rG   rM  )rš  r  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   r  rŽ  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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_filenameƒ  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_encodingŠ  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_unicode—  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_file¢  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_file·  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   rF  &  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_elements6  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   r[  D  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*   r  r½   r   r   r   Ú
_get_errorG  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_positionM  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_codeR  s    
ÿzParseErrorTest.test_error_codeN)r1   r2   r3   r[  rß  rà  rã  r   r   r   r   rÞ  C  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Í   )r[  rb  )ra   )r[  )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  rg  )r*   rl   Úelementsr½   rÑ   r   r   r   Útest_issue14818[  s:    
ÿÿÿÿû,zKeywordArgsTest.test_issue14818N)r1   r2   r3   rè  r   r   r   r   rä  X  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   rJ  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   r6  ÚtypesÚFunctionTyperë   ry   r   r   r   Útest_correct_import_pyET‚  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_roundtripŒ  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_roundtrip–  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_option1  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   B  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>L  rG   z4C14NTest.test_xml_c14n2.<locals>.<genexpr>.<genexpr>N)rø   )rE   rX   r{   rC  r   r   r   r  K  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€  rH  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   (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#   rŒ  r¥  rÕ  r  ro   r²  rÞ  rV  r  r"  r;  rB  rt  rú  rf  rä  rï  r—   ré  r)   r(   rƒ  Z_namespace_maprÎ   rÉ   r„   r  r-  r¤   r   Zrun_unittestrž   ru  )ÚmoduleZtest_classesr(   r2  Z
nsmap_copyr  Zold_factoriesr   r   r   Ú	test_mainu  sj    ÿîÿ




ø


r  Ú__main__)Tr4   )N)NrÎ   r   r¿  r6   r®  ri   r   rQ   rF  rP   rG  rê  rJ  rz  r¿  r   r   r   r   r   Ztest.supportr   r   r   r	   r
   r   rL   r.   rÄ   r    ÚUnicodeEncodeErrorr¬  rè   rž  rÃ   r'  rÈ  rŠ  rÅ  rÆ  r   r"   ZTestCaser#   rA   rI   rJ   ro   rú  rX  ÚformatÚescaperd  rV  rf  r¥  rÕ  r»   rþ  Ú__hash__r   r  r  r"  r;  rB  rt  rˆ  rŒ  r²  rÞ  rä  ré  rî  rï  r  r1   r   r   r   r   Ú<module>   sÖ    


	
          .  3	
ú	 7  f d 48 W` xT
   $ f
E
