a
    ¼3j½i ã                   @   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)G dd„ dej*ƒZ+dndd„Z,dd„ Z-G dd „ d ƒZ.G d!d"„ d"ej*ƒZ/G d#d$„ d$ej*ƒZ0i Z1d%e1d&< d'e1d(< d)e1d*< d+e1d,< d-e1d.< d/e1d0< d1e1d2< d3e1d4< d5 2e 3ed¡¡e1d6< d7e1d8< i Z4d9e4d:< d;e4d<< d=e1d>< d?e1d@< dAe1dB< G dCdD„ dDej*ƒZ5G dEdF„ dFej*ƒZ6G dGdH„ dHe.ej*ƒZ7G dIdJ„ dJe.ej*ƒZ8G dKdL„ dLe9ƒZ:e9j;e:_;G dMdN„ dNe9ƒZ<e9j;e<_;G dOdP„ dPe.ej*ƒZ=G dQdR„ dRe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*ƒZHdgdh„ ZIG didj„ djej*ƒZJdodkdl„ZKeLdmkr¬eKƒ  dS )pé    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© úO/www/server/python_manager/versions/3.9.10/lib/python3.9/test/test_xml_etree.pyÚnewtestl   s    z1checkwarnings.<locals>.decorator.<locals>.newtest)Ú	functoolsÚupdate_wrapper)r   r   ©r   r   )r   r   Ú	decoratork   s    z checkwarnings.<locals>.decoratorr   )r   r   r   r   r   r   Úcheckwarningsj   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_sanityu   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$   r)   r   r   r   r   r   t   s   r   TÚunicodec                 K   sX   |dkrt  ¡ }nt  ¡ }t | ¡}|j|fd|i|¤Ž |rF| ¡ S | d¡ |S d S )Nr-   Úencodingr   )ÚioÚBytesIOÚStringIOr'   r   ÚwriteÚgetvalueÚseek)ÚelemÚ	to_stringr.   ÚoptionsÚfileÚtreer   r   r   Ú	serialize   s    


r:   c                 C   s   dd„ | D ƒS )Nc                 S   s   g | ]
}|j ‘qS r   ©Útag©Ú.0r5   r   r   r   Ú
<listcomp>   ó    z"summarize_list.<locals>.<listcomp>r   )Úseqr   r   r   Úsummarize_listŽ   s    rB   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cETrE   z%Failed to round-trip %r from %r to %r)r   ÚsysrF   ÚpickleÚdumpsÚloadsÚPicklingErrorÚdictr'   rE   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 )Nr<   ÚtailÚtextÚattrib)ÚassertIsInstancer'   ÚElementrE   ÚassertEqualÚlenÚlistÚzipÚassertEqualElementsÚoperatorÚ
attrgetter)r#   ZaliceÚbobÚxÚyZ
propertiesr   r   r   ra   ¦   s    z#ElementTestCase.assertEqualElementsN)r*   r+   r,   ÚclassmethodrH   rW   ra   r   r   r   r   rC   ’   s   
rC   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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-dWS )XÚElementTreeTestc                 C   s   |   t|ƒ|¡ d S rD   )r]   r:   )r#   r5   Ú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   )r^   r]   )Ú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 %rrl   )r^   ÚkeysÚitemsr]   )Úmappingrv   rw   ru   Úitemrr   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 elementrl   )r<   rZ   rY   rX   zno %s memberzno %s visible by dir)
Ú
assertTruer'   Z	iselementÚdirÚhasattrÚassertInr<   rZ   rY   rX   )ÚelementZdirelemÚattrr5   )Úcheck_elementrz   rs   r#   r   r   r   Í   s"    ÿÿ





z5ElementTreeTest.test_interface.<locals>.check_elementr<   õ   tÃ¤grt   ©ru   z^<Element 't\xe4g' at 0x.*>$c                    s   ˆ j t| dƒd|  d d S )NÚ__call__z%s not callablerl   )r{   r}   ©Úmethodrr   r   r   Úcheck_methodê   s    ÿz4ElementTreeTest.test_interface.<locals>.check_methodc                    s   ˆ | j ƒ d S rD   )Ú__next__)Úit)r‡   r   r   Ú
check_iter   s    z2ElementTreeTest.test_interface.<locals>.check_iterÚ*)r'   r\   r   ÚgetrootÚassertRegexÚreprÚappendÚextendÚinsertÚremoveÚfindÚiterfindÚfindallÚfindtextÚclearrO   Úsetrv   rw   ÚiterÚitertextr]   ÚXMLÚ
fromstringÚPIÚProcessingInstruction)r#   r   r9   rŠ   r   )r   rz   r‡   rs   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 )Nr<   ÚTagZTAGÚTextZTEXTZTailZTAILÚbÚd)ÚaÚcÚBÚD)ÚAÚC)r'   r\   r]   r<   ÚassertIsNonerY   rX   rZ   )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>r<   rt   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 listrk   z
<subtag />é	   é   )r'   r›   rj   r\   r   r’   r‘   r   r™   ÚassertRaisesÚ
ValueErrorr]   ÚstrÚ	exception)r#   r5   Ú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>)rj   r'   r›   rr   r   r   r   Ú
test_cdataT  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   )r8   r<   úsection/tagr   zelement/../empty-elementúempty-element)
r/   r0   Ú
SAMPLE_XMLÚencoder'   r   r]   r“   r<   ÚSIMPLE_XMLFILE)r#   Z
stringfiler9   r   r   r   Útest_file_init^  s    ÿzElementTreeTest.test_file_initc                 C   sò   ddl m} t t¡}tdƒD ]}t |¡ dt|ƒ ¡ qt	|j
ƒ}tdƒD ]}t |¡ dt|ƒ ¡ qN|  t	|j
ƒ|¡ tdƒD ]}t |¡ dt|ƒ ¡ q†|  t	|j
ƒ|¡ tdƒD ]}t |¡ dt|ƒ ¡ q¾|  t	|j
ƒd¡ d S )Nr   r    é
   z./é   iX  iô  )r"   r!   r'   r›   r¼   Úranger   r“   r´   r^   Ú_cacher]   ZassertGreaterZ
assertLess)r#   r!   r5   ÚiZcache_len_10r   r   r   Útest_path_cachei  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“   r<   rj   )r#   rÈ   Úe1Úe2Úe3r   r   r   Ú	test_copyx  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 )Nr<   ru   Údefaultrt   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;  " />)r<   )r'   r\   rO   r]   r˜   rZ   r—   rY   ÚtostringÚsortedrv   rw   )r#   r5   rZ   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 )
Nr<   ru   rt   r¯   zattrib aliasingrl   z!<tag><subtag key="value" /></tag>ú<tag />zM<tag><subtag key="value" /><subtag key="value" /><subtag key="value" /></tag>)
r'   r\   ZmakeelementÚassertIsNotrZ   r   rj   r—   r   Útuple)r#   r5   rZ   Ú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 )Nr-   ©r.   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¾   r/   r1   r2   r]   r3   ÚSIMPLE_NS_XMLFILEÚopenÚreadÚ	XMLParserr   ÚversionÚfeedrj   ÚcloseÚTreeBuilder)r#   r9   ÚstreamÚfÚdataÚ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>r-   rÞ   )z<html><body>ztext</boz
dy></html>ó   <html><body>text</body></html>r@   ÚasciisE   <?xml version='1.0' encoding='ascii'?>
<html><body>text</body></html>r   z(<html><body id='body'>text</body></html>rk   Úbody)r'   r›   r]   rÖ   rœ   ZfromstringlistÚjoinÚtostringlistZXMLIDr^   r<   )r#   r   ZsequenceÚ_Zidsr   r   r   Útest_parseliteralý  s0    
ÿ
ÿ
ÿÿÿz!ElementTreeTest.test_parseliteralc              	   C   sÎ  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  d S )$N©Úendr   c                 S   s   g | ]\}}||j f‘qS r   r;   ©r>   Úactionr5   r   r   r   r?     r@   z2ElementTreeTest.test_iterparse.<locals>.<listcomp>)r÷   ©rø   r»   ©rø   Úrootrý   c                 S   s   g | ]\}}||j f‘qS r   r;   rù   r   r   r   r?   #  r@   )©rø   ú{namespace}elementrþ   ©rø   ú{namespace}empty-element©rø   ú{namespace}rootr   c                 S   s   g | ]\}}||j f‘qS r   r;   rù   r   r   r   r?   ,  r@   ©Úeventsc                 S   s   g | ]\}}||j f‘qS r   r;   rù   r   r   r   r?   0  r@   ©Ústartrø   c                 S   s   g | ]\}}||j f‘qS r   r;   rù   r   r   r   r?   4  r@   ©©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  r;   rù   r   r   r   r?   A  s   þ)
©r  )rn   Ú	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   r?   R  r@   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   r?   h  r@   )r  )rn   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 />junk)r'   Ú	iterparser¾   Únextr]   r<   rý   râ   r/   r1   rã   r²   r³   ÚassertFalseÚclosedr´   rµ   r   Zcheck_no_resource_warningr0   Ú
ParseErrorÚ
addCleanupÚunlinkr   r2   )r#   r  Úcontextrú   r5   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 )Nr<   rY   z<tag>text</tag>Úsubtextr¯   z'<tag>text<subtag>subtext</subtag></tag>ztext<subtag>subtext</subtag>r   Úcommentz*text<!--comment--><subtag>subtext</subtag>ru   rt   z)text<?key value?><subtag>subtext</subtag>)	r'   r\   rY   rj   Ú
SubElementr<   r‘   ÚCommentr   ©r#   r5   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#   r<   rZ   r   r   r   r  š  s    ú:ElementTreeTest.test_custom_builder.<locals>.Builder.startc                 S   s   |   d|f¡ d S ©Nrø   r,  ©r#   r<   r   r   r   rø   œ  s    ú8ElementTreeTest.test_custom_builder.<locals>.Builder.endc                 S   s   d S rD   r   ©r#   rY   r   r   r   rì   ž  s    ú9ElementTreeTest.test_custom_builder.<locals>.Builder.dataN)r*   r+   r,   r  rø   rì   r   r   r   r   ÚBuilder™  s   r4  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 )r*  c                 S   s   |   d|f¡ d S r+  r,  r-  r   r   r   r  ±  s    r.  c                 S   s   |   d|f¡ d S r/  r,  r0  r   r   r   rø   ³  s    r1  c                 S   s   d S rD   r   r2  r   r   r   rì   µ  s    r3  c                 S   s   |   d||f¡ d S )NÚpir,  )r#   rà   rì   r   r   r   r5  ·  s    z7ElementTreeTest.test_custom_builder.<locals>.Builder.pic                 S   s   |   d|f¡ d S )Nr%  r,  )r#   rì   r   r   r   r%  ¹  s    z<ElementTreeTest.test_custom_builder.<locals>.Builder.commentc                 S   s   |   d||f¡ d S )Nr  r,  )r#   ÚprefixÚurir   r   r   Ústart_ns»  s    z=ElementTreeTest.test_custom_builder.<locals>.Builder.start_nsc                 S   s   |   d|f¡ d S ©Nr  r,  ©r#   r6  r   r   r   Úend_ns½  s    z;ElementTreeTest.test_custom_builder.<locals>.Builder.end_nsN)
r*   r+   r,   r  rø   rì   r5  r%  r8  r;  r   r   r   r   r4  °  s   ))r5  r5  rì   )r%  ú	 comment )r  rn   r  r  r  rþ   r  rþ   r  r   r  ©r  rn   )	rã   r¾   rä   r_   r'   rå   rç   r]   râ   )r#   rë   rì   r4  Ú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 r9  r,  r:  r   r   r   r;  Ó  s    zGElementTreeTest.test_custom_builder_only_end_ns.<locals>.Builder.end_nsN)r*   r+   r,   r;  r   r   r   r   r4  Ò  s   r4  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  Úpr=  )r_   r'   rå   rç   ÚtextwrapÚdedentr]   )r#   r4  r>  rí   r   r   r   Útest_custom_builder_only_end_nsÑ  s
    	z/ElementTreeTest.test_custom_builder_only_end_nsc                 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   ©rB   r=   r   r   r   r?   ì  s   ÿz1ElementTreeTest.test_children.<locals>.<listcomp>)r   r   r»   c                 S   s   g | ]}t |ƒ‘qS r   rD  r=   r   r   r   r?   ó  s   ÿé   r±   rk   r   )rã   r¾   r'   rá   r]   rŒ   r™   r›   r¼   r^   r_   ÚassertNotEqualr—   )r#   rë   r9   r5   Ú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›   r]   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›   Úindentr]   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 )NrK  ú	)ÚspacesD   <html>
	<body>
		<p>pre<br />post</p>
		<p>text</p>
	</body>
</html>rn   s>   <html>
<body>
<p>pre<br />post</p>
<p>text</p>
</body>
</html>rL  r(  r   r   r   Útest_indent_space>  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   ©rX   ©r>   Úelr   r   r   Ú	<setcomp>[  r@   z<ElementTreeTest.test_indent_space_caching.<locals>.<setcomp>>   ú
  NÚ
ú
    c                 S   s   h | ]
}|j ’qS r   ©rY   rS  r   r   r   rU  _  r@   >   NrY   rX  Zparz
      rV  c                 S   s   h | ]
}|j ’qS r   rR  rS  r   r   r   rU  c  r@   c                 S   s   h | ]}t |jƒ’qS r   )ÚidrX   rS  r   r   r   rU  d  r@   )r'   r›   rM  r]   r™   r^   r(  r   r   r   Útest_indent_space_cachingW  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 )NrK  éÿÿÿÿ)Ú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>rk   ro   )r]  rP  sI   <html>
  <body>
   <p>pre<br />post</p>
   <p>text</p>
  </body>
 </html>)r'   r›   r²   r³   rM  r]   rÖ   r(  r   r   r   Útest_indent_levelg  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>r-   rÞ   úA<ns0:body xmlns:ns0="http://effbot.org/ns"><ns0:tag /></ns0:body>r  ©r.   Údefault_namespaceú1<body xmlns="http://effbot.org/ns"><tag /></body>©r'   r›   r]   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 )Nr_  r-   Úfoobarra  zP<ns1:body xmlns="foobar" xmlns:ns1="http://effbot.org/ns"><ns1:tag /></ns1:body>rd  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$r-   rf  ra  )r'   r›   ÚassertRaisesRegexr³   rÖ   )r#   r5   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¬   r-   rÞ   r­   rd  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©r.   Úxml_declarations:   <?xml version='1.0' encoding='utf8'?>
<body><tag /></body>rd  r(  r   r   r   Útest_tostring_xml_declaration¦  s
    
þz-ElementTreeTest.test_tostring_xml_declarationc                 C   s6   t  d¡}t ¡ }|  d|› dt j|ddd¡ d S )Nr¬   ú<?xml version='1.0' encoding='ú'?>
<body><tag /></body>r-   Trl  )r'   r›   ÚlocaleÚgetpreferredencodingr]   rÖ   )r#   r5   Úpreferredencodingr   r   r   Ú.test_tostring_xml_declaration_unicode_encoding­  s    

þz>ElementTreeTest.test_tostring_xml_declaration_unicode_encodingc                 C   s¤   t  d¡}t ¡ }dddddddd	d
dddddd|› dddfg}|D ]X\}}}|  d|› d|› ¡( |  t j|||d|¡ W d   ƒ qF1 s”0    Y  qFd S )Nõ   <body><tag>Ã¸</tag></body>)ó   <body><tag>&#248;</tag></body>NN)ó   <body><tag>Ã¸</tag></body>úUTF-8N)rv  úUS-ASCIIN)óE   <?xml version='1.0' encoding='ISO-8859-1'?>
<body><tag>ø</tag></body>ú
ISO-8859-1N)ru  r-   N)rv  NF)rw  rx  F)rv  ry  F)s   <body><tag>ø</tag></body>r{  F)ru  r-   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>rx  T)sH   <?xml version='1.0' encoding='US-ASCII'?>
<body><tag>&#248;</tag></body>ry  T)rz  r{  Tro  u   '?>
<body><tag>Ã¸</tag></body>r-   Tz	encoding=z xml_declaration=rl  )r'   r›   rq  rr  ÚsubTestr]   rÖ   )r#   r5   rs  Z	TESTCASESZexpected_retvalr.   rm  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 )	Nr_  rn   r-   rÞ   r`  r  ra  rc  )r'   r›   r]   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 ¡ }t j|ddd
}|  d |¡d|› d¡ |  |d d¡ |  g d¢|dd … ¡ d S )Nr¬   rn   r-   rÞ   r­   r@   T)rm  s>   <?xml version='1.0' encoding='us-ascii'?>
<body><tag /></body>rl  ro  rp  r   z%^<\?xml version='1.0' encoding='.+'?>)z<bodyú>z<tagz />z</body>rk   )r'   r›   r]   ró   rô   rq  rr  r   )r#   r5   rs  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 )Nrn   c                    s>   d| |f }ˆ   t | | ¡¡j|¡ ˆ   t |¡j|¡ d S )Nz0<?xml version='1.0' encoding='%s'?><xml>%s</xml>)r]   r'   r›   r½   rY   )r.   rò   Úxmlrr   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 rD   )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)rn   )	r]   r'   rÖ   r›   r²   r³   r  r½   ÚLookupError)r#   r‚  rˆ  Zsupported_encodingsr.   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>rW  z/<html><link /><script>1 &lt; 2</script></html>
r…   r  Úhtmlz*<html><link><script>1 < 2</script></html>
rY   z1 < 2
)r'   r›   rX   r]   r:   ©r#   r¶   r   r   r   Útest_methods<  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›   r]   r:   r¼  r   r   r   Útest_issue18347K  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 10rY   Úentityz<document>text</document>z,undefined entity &entity;: line 4, column 10)r'   r›   r]   r:   rj   r²   r  r´   rµ   Ú
ENTITY_XMLrå   rÀ  rç   rè   ÚEXTERNAL_ENTITY_XML)r#   r¶   r·   rí   rý   r   r   r   Útest_entityR  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›   rj   ÚSAMPLE_XML_NSr(  r   r   r   Útest_namespacew  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" />r7  r<   Ztag1r®   z;<ns0:tag xmlns:ns0="uri"><ns0:tag1 /><ns0:tag2 /></ns0:tag>rt   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'   r\   rj   ÚQNamer&  r—   rZ   r   r]   r´   rF  )r#   r5   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   )r>   Úopr<   r   r   r   r?   å  s   ÿzGElementTreeTest.test_xpath_tokenizer.<locals>.check.<locals>.<listcomp>)r]   Zxpath_tokenizer)r@  ri   Ú
namespaces©r!   r#   r   r   r‚  ä  s
    

ÿþz3ElementTreeTest.test_xpath_tokenizer.<locals>.checkr‹   ztext()rY   ú()z@nameú@rQ   z@*zpara[1])Úparaú[Ú1ú]zpara[last()])rÏ  rÐ  ZlastrÍ  rÒ  z*/para)r‹   ú/rÏ  z/doc/chapter[5]/section[2])rÓ  ÚdocrÓ  ÚchapterrÐ  Ú5rÒ  rÓ  ÚsectionrÐ  Ú2rÒ  zchapter//para)rÕ  ú//rÏ  z//pararÙ  rÏ  z//olist/item)rÙ  ZolistrÓ  ry   Ú.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	secretaryrn   Úandrn   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ã  rn   z	@xsd:typez@typez@{*}typez{*}type)rn   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&>ã?>)r]   r'   rÖ   rž   r   rr   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>)Úlowerr:   r'   r›   r]   )r#   r   r5   ri   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'   r\   r   Úcaptured_stdoutÚdumpr]   r3   )r#   r¶   Ústdoutr   r   r   Útest_dump_attribute_order8  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'   r\   r]   r:   ©r#   rý   r   r   r   Útest_tree_write_attribute_order@  s    
ÿÿz/ElementTreeTest.test_tree_write_attribute_orderN).r*   r+   r,   rj   rŸ   r«   r¸   r¹   r¿   rÅ   rÍ   rØ   rÝ   rî   rö   r#  r)  r?  rC  rI  rJ  rN  rQ  r[  r^  re  rg  ri  rj  rn  rt  r}  r~  r€  rº  r½  r¿  rÃ  rÅ  rÈ  rÉ  rå  ræ  ré  rò  rô  r   r   r   r   rh   ²   sV   V,
6-p=%, -;%!A:rh   c                   @   sŒ   e Zd Zd dd„Zd!dd„Zd"dd„Zd#dd	„Zd
d„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS )$ÚXMLPullParserTestNc                 C   sD   |d u r|  |¡ n,tdt|ƒ|ƒD ]}|  |||| … ¡ q$d S ©Nr   )rç   rÂ   r^   )r#   rí   rì   Ú
chunk_sizerÄ   r   r   r   Ú_feedK  s    zXMLPullParserTest._feedc                 C   s$   |   dd„ t| ¡ |ƒD ƒ|¡ d S )Nc                 S   s    g | ]\}}||j |jff‘qS r   )r<   rY   )r>   Úeventr5   r   r   r   r?   T  s   ÿz3XMLPullParserTest.assert_events.<locals>.<listcomp>)r]   r   Úread_events©r#   rí   ri   Ú
max_eventsr   r   r   Úassert_eventsR  s    ÿýzXMLPullParserTest.assert_eventsc                 C   s   |   tt| ¡ |ƒƒ|¡ d S rD   )r]   r_   r   rú  rû  r   r   r   Úassert_event_tuplesX  s    þz%XMLPullParserTest.assert_event_tuplesc                 C   s(   t | ¡ |ƒ}|  dd„ |D ƒ|¡ d S )Nc                 S   s   g | ]\}}||j f‘qS r   r;   rù   r   r   r   r?   _  r@   z7XMLPullParserTest.assert_event_tags.<locals>.<listcomp>)r   rú  r]   )r#   rí   ri   rü  r  r   r   r   Úassert_event_tags]  s    ÿz#XMLPullParserTest.assert_event_tagsc              	   C   sô   dD ]ê}| j |dÊ t ¡ }|  |g ¡ |  |d|¡ |  |g ¡ |  |d|¡ |  |g ¡ |  |d|¡ |  |dg¡ |  |d|¡ |  |d|¡ |  |dd	g¡ |  |d
|¡ |  |dg¡ |  | ¡ ¡ W d   ƒ q1 sä0    Y  qd S )N)Nrk   é   )r÷  ú<!-- comment -->
z+<root>
  <element key='value'>text</elementú>
r÷   ú<element>text</element>tail
ú<empty-element/>
rû   ú</root>
rü   )r|  r'   ÚXMLPullParserrÿ  rø  rª   rè   )r#   r÷  rí   r   r   r   Útest_simple_xmlb  s,    þþz!XMLPullParserTest.test_simple_xmlc                 C   sš   t  ¡ }| ¡ }|  |d¡ t|ƒ\}}|  ||jfd¡ |  |d¡ t|ƒ\}}|  ||jfd¡ |  t¡ t|ƒ W d   ƒ n1 sŒ0    Y  d S )Nz-<root>
  <element key='value'>text</element>
r÷   r  rü   )	r'   r  rú  rø  r  r]   r<   r²   ÚStopIteration)r#   rí   r‰   rú   r5   r   r   r   Útest_feed_while_iteratingy  s    z+XMLPullParserTest.test_feed_while_iteratingc                 C   sÊ   t  ¡ }|  |g ¡ |  |d¡ |  |g ¡ |  |d¡ |  |g ¡ |  |d¡ |  |g ¡ |  |d¡ |  |dg¡ |  |d¡ |  |d¡ |  |ddg¡ |  |d	¡ |  |d
g¡ |  | ¡ ¡ d S )Nr  ú<root xmlns='namespace'>
ú"<element key='value'>text</elementr  rþ   r  r  r   r  r  )r'   r  rÿ  rø  rª   rè   ©r#   rí   r   r   r   Útest_simple_xml_with_ns…  s&    þz)XMLPullParserTest.test_simple_xml_with_nsc                 C   sž   t jdd}|  |d¡ |  |d¡ |  t| ¡ ƒdg¡ |  |d¡ |  |d¡ |  |d¡ |  |d	¡ |  |d
¡ |  t| ¡ ƒdg¡ |  | ¡ ¡ d S )Nr  r  r  r
  r  r  r  r  r  r  r  )r'   r  rø  r]   r_   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  )rn   Úabc©r  )r@  Zxyzr±   ©rü  ©r  ú{abc}tagrk   ú
<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  rk   r  r  r  r  r  r  r  r  r   r   r   Útest_ns_events_start_endÀ  s:    þýÿþþÿþþz*XMLPullParserTest.test_ns_events_start_endc                 C   s  t jdd}|  |d¡ |  |g ¡ t jdd}|  |d¡ |  |g ¡ t jdd}|  |d¡ |  |dg¡ |  |d¡ |  |d	g¡ |  |d
¡ |  |dg¡ |  |d¡ |  |g d¢¡ |  |d¡ |  | ¡ ¡ |  |dg¡ t jdd}|  |d¡ |  |g ¡ |  |d¡ |  |dg¡ |  |d¡ |  |d	g¡ |  |d
¡ |  |g ¡ |  |d¡ |  |ddg¡ |  |d¡ |  | ¡ ¡ d S )Nr   r  z<root/>
r  ú<!-- text here -->
z<root>
r	  r  r
  r  r÷   z8<element xmlns='foo'>text<empty-element/></element>tail
)©r  ú{foo}element©r  ú{foo}empty-element)rø   r#  )rø   r!  z</root>rü   )r  r  r   r"  )r'   r  rø  rÿ  rý  rª   rè   r  r   r   r   Útest_eventsÛ  sL    ÿÿþzXMLPullParserTest.test_eventsc                 C   s  t jdd}|  |d¡ |  |dt jdffg¡ |  |d¡ |  |dt jdffg¡ |  |d¡ |  |d	g¡ |  |d
¡ |  |dt jdffg¡ |  |d¡ |  |dg¡ |  |d¡ |  |dt jdffg¡ t jdd}|  |d¡ |  |dt jdffg¡ d S )N)r  r%  rø   r  r  r%  z text here z<!-- more text here -->
z more text here z<root-tag>text)r  úroot-tagz<!-- inner comment-->
z inner commentz</root-tag>
)rø   r%  z<!-- outer comment -->
z outer comment )r%  )r'   r  rø  rý  r'  rÿ  r  r   r   r   Útest_events_comment	  s     z%XMLPullParserTest.test_events_commentc                 C   sd   t jdd}|  |d¡ |  |dt jdffg¡ t jdd}|  |d¡ |  |dt jdffg¡ d S )	N)r  r5  rø   r  z<?pitarget?>
r5  Úpitarget)r5  z<?pitarget some text ?>
zpitarget some text )r'   r  rø  rý  r   r  r   r   r   Útest_events_pi  s    z XMLPullParserTest.test_events_pic                 C   sl   ddh}t j|d}|  |d¡ |  |ddg¡ G dd„ dƒ}t j|ƒ d}|  |d¡ |  |ddg¡ d S )	Nrø   r  r  z<foo>bar</foo>)r  rÇ   )rø   rÇ   c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )z9XMLPullParserTest.test_events_sequence.<locals>.DummyIterc                 S   s   t g d¢ƒ| _d S )N)r  rø   r  )r™   r  rr   r   r   r   Ú__init__,  s    zBXMLPullParserTest.test_events_sequence.<locals>.DummyIter.__init__c                 S   s   | S rD   r   rr   r   r   r   Ú__iter__.  s    zBXMLPullParserTest.test_events_sequence.<locals>.DummyIter.__iter__c                 S   s
   t | jƒS rD   )r  r  rr   r   r   r   rˆ   0  s    zBXMLPullParserTest.test_events_sequence.<locals>.DummyIter.__next__N)r*   r+   r,   r)  r*  rˆ   r   r   r   r   Ú	DummyIter+  s   r+  )r'   r  rø  rÿ  )r#   Zeventsetrí   r+  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  rr   r   r   r   Útest_unknown_event7  s    z$XMLPullParserTest.test_unknown_event)N)N)N)N)r*   r+   r,   rø  rý  rþ  rÿ  r  r	  r  r  r  r  r$  r&  r(  r,  r-  r   r   r   r   rõ  I  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á   r.   rì   r   r   r   Úxinclude_loaderÂ  s    
zXIncludeTest.xinclude_loaderc                 C   s   d S rD   r   )r#   r=  rí   r.   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   r3  z”<document>
  <p>Example.</p>
  <root>
   <element key="value">text</element>
   <element>text</element>tail
   <empty-element />
</root>
</document>)r"   r   r>  Úincluder@  r]   r:   )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   r.  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>r/  zO<document>
  <p>This document has been accessed
  324387 times.</p>
</document>r0  zX<document>
  <p>This document has been <em>accessed</em>
  324387 times.</p>
</document>r1  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>r2  r9  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>  rA  r]   r:   r²   r<  r´   rµ   ©r#   r   r  r·   r   r   r   Útest_xincludeå  s8    

ÿ

ÿ

ÿ

ÿ
,
ÿzXIncludeTest.test_xincludec                 C   s>   ddl m} |  d¡}| || j¡ |  dt| d¡ƒ¡ d S )Nr   r   r4  r°   z.//p)r"   r   r>  rA  r]   r^   r•   )r#   r   r  r   r   r   Útest_xinclude_repeated%  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   r.  )rS   z%cannot load 'disclaimer.xml' as 'xml'r/  z!cannot load 'count.txt' as 'text'r5  z1unknown parse type in xi:include tag ('BAD_TYPE')r6  zYxi:fallback tag must be child of xi:include ('{http://www.w3.org/2001/XInclude}fallback')r7  z#recursive include of Recursive2.xml)Z	max_depthzAmaximum xinclude depth reached when including file Recursive2.xmlrk   zAmaximum xinclude depth reached when including file Recursive3.xmlr±   zAmaximum xinclude depth reached when including file Recursive1.xmlrE  )r"   r   r'   r›   r:  r²   ZFatalIncludeErrorrA  r?  r]   r´   rµ   ÚXINCLUDE_BADr>  ZLimitedRecursiveIncludeErrorrC  r   r   r   Útest_xinclude_failures,  sz    .ÿ.ÿ0ÿ0ÿ
.ÿ
2ÿ
2ÿ
2ÿ
2ÿ
2ÿz#XIncludeTest.test_xinclude_failures)r  N)N)
r*   r+   r,   r>  r?  r@  rB  rD  rE  rG  r   r   r   r   r8  À  s   
	
	@r8  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:d;„ 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²   Ú	TypeErrorr:   r]   r´   rµ   )r5   r·   rr   r   r   r‚  {  s
    &ÿz-BugsTest.test_bug_xmltoolkit21.<locals>.checké{   r5   Z123)r'   r\   rY   rX   r˜   )r#   r‚  r5   r   rr   r   Útest_bug_xmltoolkit21x  s    




zBugsTest.test_bug_xmltoolkit21c                 C   s<   t  t¡}t  |¡}|  | d¡d¡ |  | d¡d¡ d S )Nr<   rY   rº   r$  )r'   r›   r¼   r   r]   r–   )r#   r5   r9   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›   r]   rB   r•   ©r#   r9   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 )NrM  z$<doc><table><tbody /></table></doc>
)r'   r›   r   rï  rð  r]   r3   )r#   r9   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‚   r<   )r'   r›   r]   rÖ   rZ   r\   r˜   rN  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›   r]   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 rD   )r<  ©r#   re   r   r   r   rä   Ú  s    z:BugsTest.test_bug_xmltoolkit60.<locals>.ExceptionFile.readN)r*   r+   r,   rä   r   r   r   r   ÚExceptionFileÙ  s   rU  )r²   r<  r'   rá   )r#   rU  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è   r]   r“   rY   )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 )Nr<   rY   )r'   ré   r  rì   rø   )r9   r   r   r   Úxmltoolkit63ó  s    
z4BugsTest.test_bug_xmltoolkit63.<locals>.xmltoolkit63iè  )rI   ÚgetrefcountrÂ   r]   )r#   rZ  Ú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
rY  s0   <SomeTag text="def _f():&#10;  return 3&#10;" />rY   )r'   r\   r]   rÖ   r›   rO   r¼  r   r   r   Útest_bug_200708_newlineÿ  s    ÿÿÿz BugsTest.test_bug_200708_newlinec                 C   s`   t  ¡ }| d¡ |  | ¡ jd¡ G dd„ dƒ}t j|ƒ d}| d¡ |  | ¡ jd¡ d S )Nz<element>some text</element>r   c                   @   s   e Zd Zdd„ ZdS )z2BugsTest.test_bug_200708_close.<locals>.EchoTargetc                 S   s
   t  d¡S )Nr   ©r'   r\   rr   r   r   r   rè     s    z8BugsTest.test_bug_200708_close.<locals>.EchoTarget.closeN©r*   r+   r,   rè   r   r   r   r   Ú
EchoTarget  s   ra  rß   )r'   rå   rç   r]   rè   r<   )r#   rí   ra  r   r   r   Útest_bug_200708_close
  s    

zBugsTest.test_bug_200708_closec                 C   sÎ   t  d¡}t  |d¡}|  t|ddd¡ t  d¡}t  |d¡}t  |d¡}|  t|ddd¡ t  d¡}t  |d¡}t  |d¡}|  t¡}t|dd W d   ƒ n1 s®0    Y  |  t|jƒd¡ d S )	Nz{default}elemrÎ   )rb  z%<elem xmlns="default"><elem /></elem>z{not-default}elemzI<elem xmlns="default" xmlns:ns1="not-default"><elem /><ns1:elem /></elem>r5   z<cannot use non-qualified names with default_namespace option)	r'   r\   r&  r]   r:   r²   r³   r´   rµ   )r#   r¶   Úsr·   r   r   r   Ú!test_bug_200709_default_namespace  s&    
ÿ
ÿ
*ÿz*BugsTest.test_bug_200709_default_namespacec                 C   sd   t  d¡}|  t  |¡d¡ t  dd¡ t  d¡}|  t  |¡d¡ t  d¡}|  t  |¡d¡ d S )Nz/{http://namespace.invalid/does/not/exist/}titlesB   <ns0:title xmlns:ns0="http://namespace.invalid/does/not/exist/" />rÇ   z(http://namespace.invalid/does/not/exist/sB   <foo:title xmlns:foo="http://namespace.invalid/does/not/exist/" />z'{http://purl.org/dc/elements/1.1/}titles8   <dc:title xmlns:dc="http://purl.org/dc/elements/1.1/" />)r'   r\   r]   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'   r\   r   r'  r]   r<   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¥   r\  )r£   r¢   r£   r¥   )r'   r\   r&  r‘   r]   rB   ©r#   r¤   r¢   r¥   r£   r   r   r   Útest_bug_200709_element_insertJ  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'   r\   r&  r'  r   r]   rB   r™   )r#   r¤   r¢   Z	comment_br   r   r   Útest_bug_200709_iter_commentT  s
    


z%BugsTest.test_bug_200709_iter_commentc                 C   sD   t  ¡ }| d¡}| di ¡}| d¡}| ¡ }|  t|ƒd¡ d S )Nrì   r<   rÙ   )r'   ré   rì   r  rø   rè   r]   r:   )r#   rd   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>rd  r¼  r   r   r   Útest_issue6233f  s    
ÿ
ÿzBugsTest.test_issue6233c                 C   s8   t  d¡}|  |jd¡ t  |¡}|  t  |¡d¡ d S )Nz+<prefix:localname xmlns:prefix="${stuff}"/>z{${stuff}}localnames&   <ns0:localname xmlns:ns0="${stuff}" />)r'   r›   r]   r<   r   rÖ   )r#   r¶   rX  r   r   r   Útest_issue3151r  s    

zBugsTest.test_issue3151c                 C   sR   t  d¡}|  t|ƒdg¡ t  t¡}|d d … |d d …< |  t|ƒg d¢¡ d S )Nr¬   r<   ©r<   r<   r×  )r'   r›   r]   rB   r¼   )r#   r5   Znewelemr   r   r   Útest_issue6565x  s
    

zBugsTest.test_issue6565c                 C   s   t  dd¡ t  dd¡ d S )NZ	test10777zhttp://myuri/)r'   re  rr   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ÚchangedTrY  rr   ©r¶   r   r   Ú__bool__‰  s    z.BugsTest.test_lost_text.<locals>.Text.__bool__N©r*   r+   r,   rs  r   rr  r   r   r¡   ˆ  s   r¡   r<   rq  )r'   r\   rY   rš   r  r[   r´   r]   ©r#   r¡   rÄ   rX  r   rr  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 ©Nrq  r   TrR  rr   rr  r   r   rs  ˜  s    
z.BugsTest.test_lost_tail.<locals>.Text.__bool__Nrt  r   rr  r   r   r¡   —  s   r¡   rý   r<   r   rq  )	r'   r\   r   rX   rš   r  r[   r´   r]   ru  r   rr  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 rw  )r'   r\   r  )r#   rÏ   ©r¶   rÄ   r   r   Ú__eq__¨  s    z+BugsTest.test_lost_elem.<locals>.Tag.__eq__N©r*   r+   r,   rz  r   ry  r   r   r    §  s   r    rý   r<   zgenerators are not reentrantr   rq  )r'   r\   r   r™   r  r³   ÚskipTestr[   r<   r´   r]   )r#   r    rX  r   ry  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›   r]   rO   Údecode)r#   rY   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  r2  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Õ   ro   é   éüÿÿÿ)
rã   ÚUTF8_BUG_XMLFILErä   r'   rœ   rO   r~  ÚstripÚreplacer]   )r#   ÚfpÚrawrý   ZxmlattrrY   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 )Nr<   )r²   rI  r'   ré   r  rr   r   r   r   Útest_39495_treebuilder_start×  s    z%BugsTest.test_39495_treebuilder_startN)$r*   r+   r,   rK  rL  rO  rP  rQ  rR  rS  rV  rY  ÚunittestZskipIfrI   Úgettracer]  r^  rb  rd  rf  rg  ri  rj  rk  rl  rm  ro  rp  rv  rx  r}  r  r€  rˆ  r‰  r   r   r   r   rH  v  s<   			


rH  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Úwypr<   rZ   rY   rX   ÚbazrÆ   )r'   r\   r[   r~   r|   r]   r<   rª   rY   rX   rÚ   rZ   rF  )r#   r<   rZ   Ú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'   r\   rŠ  ÚSkipTestr   ZassertWarnsÚDeprecationWarningrÈ   rÚ   r]   r<   rY   rX   r^   Ú	itertoolsÚzip_longestÚassertIsrZ   ©r#   r  Zelement_foo2rG  rH  r   r   r   rÍ   ý  s    
&zBasicElementTest.test_copyc                 C   s¶   t  dddi¡}| t  dddi¡¡ t |¡}|  ||¡ |  |j|j¡ |  |j|j¡ |  |j|j¡ |  t	|ƒt	|ƒ¡ t
 ||¡D ]\}}|  ||¡ qŒ|  |j|j¡ d S ©NrÇ   r  rŽ  rÆ   r  r’  )r'   r\   r   rÈ   rÚ   r]   r<   rY   rX   r^   r•  r–  r—  rZ   r˜  r   r   r   Útest___copy__	  s    
zBasicElementTest.test___copy__c                 C   sð   t  dddi¡}| t  dddi¡¡ t |¡}|  ||¡ |  |j|j¡ |  |j|j¡ |  |j	|j	¡ |  t
|ƒt
|ƒ¡ t ||¡D ]\}}|  ||¡ qŒ|  |j|j¡ |  |j|j¡ d|jd< |  |j|j¡ |  |j|j¡ d S r™  )r'   r\   r   rÈ   rÉ   rÚ   r]   r<   rY   rX   r^   r•  r–  rZ   rF  r˜  r   r   r   Útest___deepcopy__2	  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__r<   r€   rX   rY   )r<   Ú	_childrenrZ   rX   rY   Ú__deepcopy__c                   @   s   e Zd Zdd„ ZdS )z9BasicElementTest.test_augmentation_type_errors.<locals>.Ec                 S   s   d S rD   r   )r#   Úmemor   r   r   rŸ  g	  s    zFBasicElementTest.test_augmentation_type_errors.<locals>.E.__deepcopy__N)r*   r+   r,   rŸ  r   r   r   r   ÚEf	  s   r¡  )r'   r\   r²   rI  r   r   r‘   r}   r  rÈ   rÉ   )r#   r¶   Ústater¡  r   r   r   Útest_augmentation_type_errorsP	  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©r*   r+   r,   r   r   r   r   ÚDummym	  s   r¥  rœ  )r€   rÇ   rÊ   rË   rÌ   )	r'   r\   ZdummyrefÚweakrefÚrefr	   rª   r&  r   )r#   r¥  r£   Úwrefr¶   rË   rÊ   rÌ   r   r   r   Útest_cyclic_gcl	  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'   r\   r¦  r§  r]   r<   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Ç   rk   r±   rE  )re   rf   Úzre   é   )rÎ   r«  )r'   r\   r]   rO   )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±   rk   ©ÚrepeatrÇ   é*   )rÆ   ztext goes herezopposite of headÚchildZ
grandchildz.//grandchildr   r€   zother valuer%   rÆ   )rÂ   rJ   ÚHIGHEST_PROTOCOLr   rF   r\   rY   rX   r&  r   r•   r˜   rW   r]   r<   rZ   r^   ra   )r#   rT   rR   rS   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±   rk   r³  z\<?xml version="1.0"?>
                    <group><dogs>4</dogs>
                    </group>Ú__getstate__r<   Úgroupr%   r   Zdogs)rÂ   rJ   r·  r   rF   rœ   r}   r]   r¹  rW   r<   )r#   rT   rR   rS   ZXMLTEXTrÊ   rË   r   r   r   Útest_pickle_issue18997´	  s    

ÿz'BasicElementTest.test_pickle_issue18997N)r*   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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_  rr   ©ÚLr   r   Ú	__class__Æ	  s    z<BadElementTest.test_extend_mutable_list.<locals>.X.__class__N©r*   r+   r,   Ú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Ã  re   ©r'   r\   r   rI  ©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 rD   r_  rr   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#   Úorr  r   r   rz  ì	  s    
z:BadElementTest.test_remove_with_mutating.<locals>.X.__eq__Nr{  r   rr  r   r   rÂ  ë	  s   rÂ  rÇ   rÆ   r  )r'   r\   r   r²   r³   r’   ©r#   rÂ  r   rr  r   Útest_remove_with_mutatingê	  s    

z(BadElementTest.test_remove_with_mutatingc              	   C   sl   t  d¡}t|d|ƒB |  t¡ t|ƒ W d   ƒ n1 s@0    Y  W d   ƒ n1 s^0    Y  d S )NrÇ   r<   )r'   r\   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 rD   )rY   Ú	NameErrorrr   ©r5   r   r   Ú__del__
  s    
z7BadElementTest.test_element_get_text.<locals>.X.__del__N©r*   r+   r,   rÐ  r   rÏ  r   r   rÂ   
  s   rÂ  r<   ÚABCDÚEFGHÚIJKLÚABCDEFGHIJKL)	r´   r'   ré   r  rì   rø   rè   r]   rY   ©r#   rÂ  r¢   r   rÏ  r   Útest_element_get_textþ	  s    


z$BadElementTest.test_element_get_textc                    sˆ   G ‡ fdd„dt ƒ}t ¡ }| di ¡ | di ¡ | d¡ | d¡ | |dƒ¡ | d¡ | d¡ | ¡ ‰ |  ˆ d jd	¡ d S )
Nc                       s   e Zd Z‡ fdd„ZdS )z/BadElementTest.test_element_get_tail.<locals>.Xc                    s&   zˆ d j  W n ty    Y n0 d S rö  )rX   rÎ  rr   rÏ  r   r   rÐ  
  s    z7BadElementTest.test_element_get_tail.<locals>.X.__del__NrÑ  r   rÏ  r   r   rÂ  
  s   rÂ  rý   r<   rÒ  rÓ  rÔ  r   rÕ  )	r´   r'   ré   r  rø   rì   rè   r]   rX   rÖ  r   rÏ  r   Útest_element_get_tail
  s    



z$BadElementTest.test_element_get_tailc                    s^   G ‡ fdd„dƒ}t  d¡‰ ˆ  t  d¡¡ ˆ d |ƒ …  ˆ  t  d¡¡ ˆ dd|ƒ …  d S )Nc                       s   e Zd Z‡ fdd„ZdS )z%BadElementTest.test_subscr.<locals>.Xc                    s   ˆ d d …= dS ©Nrk   r   rr   rr  r   r   Ú	__index__)
  s    
z/BadElementTest.test_subscr.<locals>.X.__index__N©r*   r+   r,   rÚ  r   rr  r   r   rÂ  (
  s   rÂ  r5   r¶  r   rÀ   )r'   r\   r   rÊ  r   rr  r   Útest_subscr&
  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   rr   rr  r   r   rÚ  7
  s    z3BadElementTest.test_ass_subscr.<locals>.X.__index__NrÛ  r   rr  r   r   rÂ  6
  s   rÂ  r5   rÀ   r   r¶  )r'   r\   rÂ   r‘   )r#   rÂ  rõ   r   rr  r   Útest_ass_subscr4
  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 rD   r   ©re   rf   r   r   r   Úelement_factoryC
  s    z>BadElementTest.test_treebuilder_start.<locals>.element_factory©rß  r<   rÒ  r®   )r'   ré   r  rì   r²   ÚAttributeErrorr	   ©r#   rß  r¢   r   r   r   Útest_treebuilder_startA
  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 rD   r   rÞ  r   r   r   rß  O
  s    z<BadElementTest.test_treebuilder_end.<locals>.element_factoryrà  r<   rÒ  )r'   ré   r  rì   r²   rá  rø   r	   râ  r   r   r   Útest_treebuilder_endM
  s    
z#BadElementTest.test_treebuilder_endN)r*   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S )ÚMutatingElementPathc                 G   s   t j| g|¢R Ž }||_|S rD   )r´   Ú__new__r5   )rG   r5   r   r#   r   r   r   ræ  [
  s    zMutatingElementPath.__new__c                 C   s   | j d d …= dS rª  rÏ  rÈ  r   r   r   rz  _
  s    zMutatingElementPath.__eq__N)r*   r+   r,   ræ  rz  r   r   r   r   rå  Z
  s   rå  c                   @   s   e Zd Zdd„ ZdS )ÚBadElementPathc                 C   s   dd ‚d S )Nrk   r   r   rÈ  r   r   r   rz  e
  s    zBadElementPath.__eq__Nr{  r   r   r   r   rç  d
  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ë  j
  s    
zBadElementPathTest.setUpc                    s"   ddl m} | j|_tƒ  ¡  d S ré  )r"   r!   rì  rÃ   rê  ÚtearDownrí  rî  r   r   rï  p
  s    zBadElementPathTest.tearDownc                 C   s0   t  d¡}| t  d¡g¡ | t|dƒ¡ d S ©NrÇ   rÆ   re   )r'   r\   r   r“   rå  r¼  r   r   r   Útest_find_with_mutatingu
  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'   r\   r   r“   rç  ÚZeroDivisionErrorr¼  r   r   r   Útest_find_with_errorz
  s    
z'BadElementPathTest.test_find_with_errorc                 C   s0   t  d¡}| t  d¡g¡ | t|dƒ¡ d S rð  )r'   r\   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'   r\   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'   r\   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'   r\   r   r•   rç  rò  r¼  r   r   r   Útest_findall_with_error”
  s    
z*BadElementPathTest.test_findall_with_error)r*   r+   r,   rë  rï  rñ  ró  rô  rõ  rö  r÷  Ú__classcell__r   r   rî  r   rè  i
  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 rD   )	r[   r'   r  rä  rÇ  r   r\   ré   rå   rr   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'   r\   r[   r]   r<   rY   ©r#   rû  Úmyer   r   r   Útest_Element_subclass_trivial¦
  s    z1ElementTreeTypeTest.test_Element_subclass_trivialc                    sV   G ‡ fdd„dt jƒ‰ ˆ ddddœddd	}|  |jd
¡ |  t| ¡ ƒg d¢¡ d S )Nc                       s"   e Zd Zi f‡‡ fdd„	Z‡  ZS )zHElementTreeTypeTest.test_Element_subclass_constructor.<locals>.MyElementc                    s"   t ˆ | ƒj|d |fi |¤Ž d S )NÚ__)rê  r)  )r#   r<   rZ   Úextra)rû  r¿  r   r   r)  µ
  s    zQElementTreeTypeTest.test_Element_subclass_constructor.<locals>.MyElement.__init__)r*   r+   r,   r)  rø  r   ©rû  rî  r   rû  ´
  s   rû  rÇ   rk   r±   )r¤   r¢   rE  é   )r¥   r£   Zfoo__))r¤   rk   )r¢   r±   )r¥   rE  )r£   r  )r'   r\   r]   r<   r×   rw   )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 rD   r;   rr   r   r   r   Ú	newmethod¿
  s    zQElementTreeTypeTest.test_Element_subclass_new_method.<locals>.MyElement.newmethodN)r*   r+   r,   r  r   r   r   r   rû  ¾
  s   rû  rœ  )r'   r\   r]   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Ç   rY   rÆ   r$  rk   r   )r'   r\   rY   r   r]   r–   r“   r<   r_   r•   r^   )r#   rû  r¶   ÚsubÚfoundr   r   r   Útest_Element_subclass_findÅ
  s    

z.ElementTreeTypeTest.test_Element_subclass_findN)r*   r+   r,   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 )Nr<   rº   ú./tagr±   zsection/nexttagÚnexttagrY   r$  rn   rÎ   Útogz<tag><empty /></tag>Úempty)	r'   r›   r¼   r]   r“   r<   Ú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›   r]   r“   rZ   rh  ÚSyntaxError)r#   Z
LINEAR_XMLr¶   r   r   r   Útest_find_xpathí
  s    
zElementFindTest.test_find_xpathc                 C   s
  t  t¡}t  t¡|d< |  t| d¡ƒdg¡ |  t| d¡ƒddg¡ |  t| d¡ƒg ¡ |  t| d¡ƒg ¡ |  t| d¡ƒg d¢¡ |  t| d	¡ƒdgd
 ¡ |  t| d¡ƒdg¡ |  t| d¡ƒdgd ¡ |  t| d¡ƒg d¢¡ |  t| d¡ƒg d¢¡ |  t| d¡ƒg d¢¡ |  t| d¡ƒg d¢¡ |  t| d¡ƒg d¢¡ |  t| d¡ƒdg¡ |  t| d¡ƒdg¡ |  t| d¡ƒdgd ¡ |  t| d¡ƒdgd ¡ |  t| d¡ƒdgd ¡ |  t| d¡ƒdg¡ |  t| d¡ƒdgd ¡ |  t| d¡ƒdg¡ |  t| d¡ƒdg¡ |  t| d¡ƒg ¡ |  t| d ¡ƒg ¡ |  t| d!¡ƒdgd ¡ |  | d"¡| d¡¡ |  t| d#¡ƒdg¡ |  t| d$¡ƒdg¡ |  t| d%¡ƒdg¡ |  t| d&¡ƒdg¡ |  t| d'¡ƒdg¡ |  t| d(¡ƒdg¡ |  t| d)¡ƒdg¡ |  t| d*¡ƒdg¡ |  t| d+¡ƒdg¡ |  t| d,¡ƒdg¡ |  t| d-¡ƒg ¡ |  t| d.¡ƒg ¡ |d |d/< |  t| d&¡ƒddg¡ |  t| d,¡ƒddg¡ d S )0Nr±   rÚ  rò   r<   r  ztog/foor‹   rn  z.//tagr  rº   zsection//tagz	section/*)r<   r  Únextsectionz
section//*)r<   r  r  r<   zsection/.//*z*/*z*//*z*/tagz*/./tagr
  z././tagz.//tag[@class]rE  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']rk   )r'   r›   r¼   r  r]   rB   r•   r¼  r   r   r   Útest_findall  sÂ    
ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿzElementFindTest.test_findallc                 C   s\   t  t¡}|  t| d¡ƒg ¡ |  t| d¡ƒdgd ¡ |  t| d¡ƒdgd ¡ d S )Nr<   z{http://effbot.org/ns}tagr±   z.//{http://effbot.org/ns}tagrE  )r'   r›   rÄ  r]   rB   r•   r¼  r   r   r   Útest_test_find_with_nsP  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Ã  rk   )r  rn   )r'   r›   r]   r^   r•   )r#   rý   Únsmapr   r   r   Útest_findall_different_nsmapsZ  s    

z-ElementFindTest.test_findall_different_nsmapsc                 C   sÐ  t  d¡}| t  d¡¡ |  t| d¡ƒg d¢¡ |  t| d¡ƒdg¡ |  t| d¡ƒdg¡ |  t| d	¡ƒd
g¡ |  t| d¡ƒddg¡ |  t| d¡ƒdg¡ |  t| d¡ƒt| d¡ƒ¡ |  t| d¡ƒg d¢¡ |  t| d¡|d g ƒt| d¡ƒ¡ |  t| d¡ƒg d¢¡ |  t| d¡ƒddg¡ |  t| d¡ƒddg¡ |  t| d¡ƒd
g¡ |  t| d¡ƒg d¢¡ |  t| d¡ƒddg¡ |  t| d¡ƒt| d¡ƒ¡ d S )Nr  r   z{*}b)ú{X}br¢   ú{Y}bz{*}cr¥   z{X}*r  z{Y}*r  rà  r¢   z{}brâ  )r  r¢   r¥   r  r\  r‹   z.//{*}b)r  r¢   r  r¢   r  z.//{*}cz.//{X}*z.//{Y}*z.//{}*)r¥   r¢   r¥   r¢   z.//{}br  )r'   r›   r   r'  r]   rB   r•   ró  r   r   r   Útest_findall_wildcardk  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¼   rh  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 )Nr<   rY   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//tagrE  )r'   r›   r¼   r]   r   r“   r<   r–   rB   r•   ÚassertWarnsRegexÚFutureWarning)r#   r¶   rm   r‰   r   r   r   Útest_find_through_ElementTreeœ  s    
ÿ.z-ElementFindTest.test_find_through_ElementTreeN)r*   r+   r,   r  r  r  r  r  r  r  r!  r   r   r   r   r	  Õ
  s   M
,r	  c                   @   s>   e Zd Zddd„Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ ZdS )ÚElementIterTestNc                 C   s   t | |¡ƒS rD   )rB   r™   )r#   r5   r<   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»  rn   zthis is a paragraph...zthis is a paragraph.z
this is a F)r6   r   rø   rß   )rí   z*<root>a&amp;<sub>b&amp;</sub>c&amp;</root>za&b&c&)r'   r›   r]   r#  r“   r  r™   r<   ró   rš   r:   r  rå   ré   r   r²   rá  )r#   rÔ  Z
sourcefilerí   r9   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£   rk   r   )r'   r\   r]   r#  r&  rh  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>ÚroomrE  Úhouser±   r;   )r  r'  r&  r&  Zshedr'  r&  r‹   )r'   r›   r]   r#  rB   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'   r\   r™   r²   rI  rÈ   )r#   r¤   r‰   r   r   r   rÍ   ý  s    
zElementIterTest.test_copyc              	   C   sf   t  d¡}| ¡ }ttjd ƒD ]@}|  ttjf¡ t 	||¡ W d   ƒ q 1 sV0    Y  q d S )Nr¤   rk   )
r'   r\   r™   rÂ   rJ   r·  r²   rI  rM   rK   )r#   r¤   r‰   rT   r   r   r   r¸    s
    
zElementIterTest.test_pickle)N)	r*   r+   r,   r#  r$  r%  r(  rÍ   r¸  r   r   r   r   r"  «  s   
r"  c                   @   sŒ   e Zd ZdZdZdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!S )"ÚTreeBuilderTestz <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html>text<div>subtext</div>tail</html>z<toplevel>sometext</toplevel>c                 C   s”   |   |jd¡ |   |jd¡ |   |jd ¡ |   |ji ¡ t|ƒ}|   t|ƒd¡ |d }|   |jd¡ |   |jd¡ |   |jd¡ |   |ji ¡ d S )Nr»  rY   rk   r   Zdivr$  rX   )r]   r<   rY   rX   rZ   r_   r^   )r#   r¶   Úchildrenr¶  r   r   r   Ú_check_sample1_element  s    z&TreeBuilderTest._check_sample1_elementc                 C   sž   G dd„ dƒ}G dd„ d|ƒ}t j|ƒ d}| | j¡ |  | ¡ d¡ t j|ƒ d}| | j¡ |  | ¡ d¡ t jtƒ d}| | j¡ |  | ¡ ¡ d S )Nc                   @   s   e Zd Zdd„ ZdS )z<TreeBuilderTest.test_dummy_builder.<locals>.BaseDummyBuilderc                 S   s   dS )Nrµ  r   rr   r   r   r   rè   "  s    zBTreeBuilderTest.test_dummy_builder.<locals>.BaseDummyBuilder.closeNr`  r   r   r   r   ÚBaseDummyBuilder!  s   r,  c                   @   s   e Zd Zdd„  Z ZZdS )z8TreeBuilderTest.test_dummy_builder.<locals>.DummyBuilderc                  W   s   d S rD   r   )r¤   r   r   r   Ú<lambda>&  r@   zATreeBuilderTest.test_dummy_builder.<locals>.DummyBuilder.<lambda>N)r*   r+   r,   rì   r  rø   r   r   r   r   ÚDummyBuilder%  s   r.  rß   rµ  )r'   rå   rç   Úsample1r]   rè   Úobjectrª   )r#   r,  r.  rí   r   r   r   Útest_dummy_builder   s    z"TreeBuilderTest.test_dummy_builderc                 C   s   t  ¡ }|  | d¡jt j¡ |  | d¡jd¡ t jt jd}|  | d¡jt j¡ |  | d¡jd¡ t jtd}|  | d¡tdƒ¡ d S )NZctext)Úcomment_factory)r'   ré   r]   r%  r<   r'  rY   r^   ©r#   r¢   r   r   r   Útest_treebuilder_comment4  s    z(TreeBuilderTest.test_treebuilder_commentc                 C   sæ   t  ¡ }|  | dd ¡jt j¡ |  | dd ¡jd¡ t jt jd}|  | d¡jt j¡ |  | d¡jd¡ |  | dd¡jt j¡ |  | dd¡jd¡ t jdd„ d}|  | d¡tdƒd f¡ |  | dd¡tdƒdf¡ d S )Nrà   )Ú
pi_factoryr'  z text zpitarget  text c                 S   s   t | ƒ|fS rD   )r^   )rà   rY   r   r   r   r-  K  r@   z5TreeBuilderTest.test_treebuilder_pi.<locals>.<lambda>)r'   ré   r]   r5  r<   r   rY   r^   r3  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   ÚTreeBuilderSubclassQ  s   r7  z<a>text<!-- comment -->tail</a>Ztexttailrß   z<a>text<?pi data?>tail</a>)r'   ré   rœ   r]   rY   rå   rç   rè   )r#   r7  r  r¤   rí   r   r   r   Útest_late_tailO  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   r7  j  s   r7  z/<a>text<?pi1?> <!-- comment -->
<?pi2?>tail</a>T)Zinsert_commentsrß   r   r<  z
tailztext z+<a>text<!-- comment -->
<?pi data?>tail</a>)Z
insert_piszpi datarX   ztext
)r'   ré   rå   rç   rè   r]   rY   rX   )r#   r7  r  rí   r¤   r   r   r   Útest_late_tail_mix_pi_commentsg  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ç   r/  rè   r+  ©r#   rí   r¶   r   r   r   Ú$test_treebuilder_elementfactory_none‹  s    z4TreeBuilderTest.test_treebuilder_elementfactory_nonec                 C   sX   G dd„ dt jƒ}|ƒ }|  | d¡d¡ t j|d}| | j¡ | ¡ }|  |¡ d S )Nc                   @   s   e Zd Zdd„ ZdS )z4TreeBuilderTest.test_subclass.<locals>.MyTreeBuilderc                 S   s   |d S ©Nr±   r   rT  r   r   r   rf  “  s    z;TreeBuilderTest.test_subclass.<locals>.MyTreeBuilder.foobarN©r*   r+   r,   rf  r   r   r   r   ÚMyTreeBuilder’  s   r?  rÀ   rÁ   rß   )	r'   ré   r]   rf  rå   rç   r/  rè   r+  ©r#   r?  Útbrí   r¶   r   r   r   Útest_subclass‘  s    zTreeBuilderTest.test_subclassc                 C   sl   G dd„ dt jƒ}|t jt jd}|  | d¡d¡ t j|d}| | j¡ | d¡ | 	¡ }|  
|¡ d S )Nc                   @   s   e Zd Zdd„ ZdS )z?TreeBuilderTest.test_subclass_comment_pi.<locals>.MyTreeBuilderc                 S   s   |d S r=  r   rT  r   r   r   rf  ¡  s    zFTreeBuilderTest.test_subclass_comment_pi.<locals>.MyTreeBuilder.foobarNr>  r   r   r   r   r?     s   r?  )r2  r5  rÀ   rÁ   rß   z<!-- a comment--><?and a pi?>)r'   ré   r'  r   r]   rf  rå   rç   r/  rè   r+  r@  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 rD   )r   r'   r\   )r<   rZ   ©Zlstr   r   Ú	myfactory°  s    
z7TreeBuilderTest.test_element_factory.<locals>.myfactoryrà  rß   Ztoplevel)r'   ré   rå   rç   Úsample2rè   r]   )r#   rE  rA  rí   r   rD  r   Útest_element_factory®  s    z$TreeBuilderTest.test_element_factoryc                 C   sF   t j|d}t j|d}| | j¡ | ¡ }|  ||¡ |  |¡ d S r:  )r'   ré   rå   rç   r/  rè   r[   r+  )r#   rG   rA  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'   r\   rH  )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_Pyr]   r+   r³   rH  )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 rD   ©Ú_doctype©r#   rQ   ZpubidÚsystemr   r   r   ÚdoctypeÛ  s    z;TreeBuilderTest.test_doctype.<locals>.DoctypeParser.doctypec                 S   s   | j S rD   rL  rr   r   r   r   rè   Þ  s    z9TreeBuilderTest.test_doctype.<locals>.DoctypeParser.close)r*   r+   r,   rM  rP  rè   r   r   r   r   ÚDoctypeParserØ  s   rQ  rß   ©r»  z&-//W3C//DTD XHTML 1.0 Transitional//ENz7http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd)r'   rå   rç   r/  r]   rè   )r#   rQ  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 rD   ©Úraise_inÚwhat)r#   rU  rV  r   r   r   r)  ê  s    zKTreeBuilderTest.test_builder_lookup_errors.<locals>.RaisingBuilder.__init__c                 S   s"   || j kr|  | j ¡‚dd„ }|S )Nc                  W   s   d S rD   r   )r   r   r   r   Úhandleñ  s    z^TreeBuilderTest.test_builder_lookup_errors.<locals>.RaisingBuilder.__getattr__.<locals>.handlerT  )r#   rQ   rW  r   r   r   Ú__getattr__î  s    
zNTreeBuilderTest.test_builder_lookup_errors.<locals>.RaisingBuilder.__getattr__)r*   r+   r,   r³   r)  rX  r   r   r   r   ÚRaisingBuilderé  s   rY  rß   )r  rì   rø   r%  r5  )rV  )	r'   rå   rh  r³   rá  rç   r/  rª   rè   )r#   rY  rù  rí   r   r   r   Útest_builder_lookup_errorsè  s    0z*TreeBuilderTest.test_builder_lookup_errorsN)r*   r+   r,   r/  rF  r+  r1  r4  r6  r8  r9  r<  rB  rC  rG  rH  rI  rK  rS  rZ  r   r   r   r   r)    s"   $	r)  c                   @   sP   e Zd ZdZdZdZdd„ Zdd„ Zdd	„ Zd
d„ Z	dd„ Z
dd„ Zdd„ ZdS )ÚXMLParserTests   <file><line>22</line></file>sŠ   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html>text</html>uX   <?xml version="1.0" encoding="iso-8859-1"?>
<money value="$Â£â‚¬ð…»">$Â£â‚¬ð…»</money>c                 C   s6   |   |jd¡ |   |d jd¡ |   |d jd¡ d S )Nr8   r   ÚlineZ22)r]   r<   rY   r¼  r   r   r   Ú_check_sample_element  s    z#XMLParserTest._check_sample_elementc                 C   s0   t jdt  ¡ d}| | j¡ |  | ¡ ¡ d S )Nr   )r.   rà   )r'   rå   ré   rç   r/  r]  rè   )r#   Zparser2r   r   r   Útest_constructor_args  s
    ÿz#XMLParserTest.test_constructor_argsc                 C   s6   G dd„ dt jƒ}|ƒ }| | j¡ |  | ¡ ¡ d S )Nc                   @   s   e Zd ZdS )z-XMLParserTest.test_subclass.<locals>.MyParserNr¤  r   r   r   r   ÚMyParser  s   r_  )r'   rå   rç   r/  r]  rè   )r#   r_  rí   r   r   r   rB    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ç   rF  rè   r  r   r   r   Útest_doctype_warning  s
    
z"XMLParserTest.test_doctype_warningc                    sþ   d ‰ G ‡ fdd„dt jƒ}|ƒ }|  td¡ | | j¡ W d   ƒ n1 sN0    Y  | ¡  |  ˆ ¡ d  ‰ ‰t 	¡ p t 
dt¡ t 
dt¡ G ‡fdd„dƒ}||ƒ d}| | j¡ | ¡  |  ˆ ¡ |  ˆd¡ W d   ƒ n1 sð0    Y  d S )	Nc                       s   e Zd Z‡ fdd„ZdS )z@XMLParserTest.test_subclass_doctype.<locals>.MyParserWithDoctypec                    s   ||f‰ d S rD   r   )r#   r   r   rL  r   r   rP  '  s    zHXMLParserTest.test_subclass_doctype.<locals>.MyParserWithDoctype.doctypeN©r*   r+   r,   rP  r   rL  r   r   ÚMyParserWithDoctype&  s   rf  rP  r`  c                       s   e Zd Z‡ fdd„ZdS )z:XMLParserTest.test_subclass_doctype.<locals>.DoctypeParserc                    s   |||f‰ d S rD   r   rN  ©Ú	_doctype2r   r   rP  6  s    zBXMLParserTest.test_subclass_doctype.<locals>.DoctypeParser.doctypeNre  r   rg  r   r   rQ  5  s   rQ  rß   rR  )r'   rå   r  ÚRuntimeWarningrç   rF  rè   rª   ra  rb  rc  r”  r]   )r#   rf  rí   rQ  r   )rM  rh  r   Útest_subclass_doctype$  s&    *


ÿz#XMLParserTest.test_subclass_doctypec                 C   sp   t  ¡ T t  dt¡ t  dt¡ G dd„ dtjƒ}|ƒ }| | j¡ | 	¡  W d  ƒ n1 sb0    Y  dS )z:Ensure that ordinary usage is not deprecated (Issue 19176)r`  c                   @   s   e Zd ZdS )zDXMLParserTest.test_inherited_doctype.<locals>.MyParserWithoutDoctypeNr¤  r   r   r   r   ÚMyParserWithoutDoctypeG  s   rk  N)
ra  rb  rc  r”  ri  r'   rå   rç   rF  rè   )r#   rk  rí   r   r   r   Útest_inherited_doctypeB  s    
z$XMLParserTest.test_inherited_doctypec                 C   sV   t jt  ¡ d}| | j¡ | ¡ }|  |jd¡ |  |jd d¡ |  |j	d¡ d S )Nrß   Zmoneyrt   u
   $Â£â‚¬ð…»)
r'   rå   ré   rç   Úsample3rè   r]   r<   rZ   rY   r;  r   r   r   Útest_parse_stringM  s    zXMLParserTest.test_parse_stringN)r*   r+   r,   r/  rF  rm  r]  r^  rB  rd  rj  rl  rn  r   r   r   r   r[    s   r[  c                   @   s   e Zd Zdd„ ZdS )ÚNamespaceParseTestc                 C   s`   dddœ}t  t¡}|  t| d|¡ƒd¡ |  t| d|¡ƒd¡ |  t| d|¡ƒd¡ d S )	NZhellorÇ   )Úhrë   z{hello}tablerk   z.//{hello}tdr±   z.//{foo}name)r'   rœ   ÚSAMPLE_XML_NS_ELEMSr]   r^   r•   )r#   r  rÔ  r   r   r   Útest_find_with_namespaceW  s
    

z+NamespaceParseTest.test_find_with_namespaceN)r*   r+   r,   rr  r   r   r   r   ro  V  s   ro  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   r;   )r>   r¶   r   r   r   r?   b  r@   z1ElementSlicingTest._elem_tags.<locals>.<listcomp>r   )r#   Zelemlistr   r   r   Ú
_elem_tagsa  s    zElementSlicingTest._elem_tagsc                 C   s   |   t|ƒ¡S rD   )rt  r_   r(  r   r   r   Ú_subelem_tagsd  s    z ElementSlicingTest._subelem_tagsc                 C   s,   t  d¡}t|ƒD ]}t  |d| ¡ q|S )zxCreate an Element with a tag 'a', with the given amount of children
           named 'a0', 'a1' ... and so on.

        r¤   za%s)r'   r\   rÂ   r&  )r#   Znumchildrenr¶   rÄ   r   r   r   Ú_make_elem_with_childreng  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À   rk   Úa1éþÿÿÿÚa8c                      s   ˆ d S )Né   r   r   rr  r   r   r-  w  r@   z?ElementSlicingTest.test_getslice_single_index.<locals>.<lambda>c                      s   ˆ d S )Niôÿÿÿr   r   rr  r   r   r-  x  r@   )rv  r]   r<   r²   Ú
IndexErrorrr   r   rr  r   Útest_getslice_single_indexq  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  rE  )Úa3Úa4Úa5é   r   r}  r~  r\  r±   Úa0rw  )rv  r]   rt  r¼  r   r   r   Útest_getslice_rangez  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À   é   rk   ry  Úa9rE  )r  r}  Za6r„  r  rw  r}  é@   ©rv  r]   rt  rI   Ú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  r\  )r}  Úa2rw  r  rx  r}  rw  rE  rk   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}  r\  rx  r  rk   rw  )rv  r]   ru  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¢   rk   ©r  r¢   r‰  r}  r¥   rx  )r  r¢   r¥   r}  r£   r   éûÿÿÿ)rv  r'   r\   r]   ru  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_  ©r>   rÄ   r   r   r   r?   À  r@   z:ElementSlicingTest.test_setslice_range.<locals>.<listcomp>r±   rk   rE  )r  Úb0Úb1r}  r¢   )r  r¢   r}  c                 S   s   g | ]}t  d | ¡‘qS r  r_  r  r   r   r   r?   È  r@   )r  r‘  r’  Úb2r}  )rv  rÂ   r]   ru  r'   r\   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   r?   Í  r@   z:ElementSlicingTest.test_setslice_steps.<locals>.<listcomp>r±   rk   r   )r  r‘  r‰  r’  r~  r  r¢   c                 S   s   g | ]}t  d | ¡‘qS r  r_  r  r   r   r   r?   Ô  r@   rE  )r  rw  r‰  r}  r~  r  r  rŒ  r¥   r…  ©r  r¥   r‰  r}  ©
rv  rÂ   r]   ru  r²   r³   r'   r\   rI   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   r?   á  r@   zCElementSlicingTest.test_setslice_negative_steps.<locals>.<listcomp>r±   r   r\  )r  r’  r‘  r}  r¢   c                 S   s   g | ]}t  d | ¡‘qS r  r_  r  r   r   r   r?   è  r@   rE  )r  rw  r‰  r}  rk   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)r*   r+   r,   rt  ru  rv  r|  r‚  rˆ  rŠ  r‹  rŽ  r”  r—  r˜  r   r   r   r   rs  `  s   
	

	rs  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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 )Nr<   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>ru   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'   r\   rY   r]   r:   r|  Úupperr½   rZ   )r#   r5   Ú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 />r  ó   <site />)r  r   r  r   r'   r   r›   r2   rã   r]   rä   ©r#   r9   rë   r   r   r   Útest_write_to_filename<  s
    
zIOTest.test_write_to_filenamec                 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  d S )Nr  r«  r   rÞ   r-   r  rž  ©r  r   r  r   r'   r   r›   rã   r2   r  r  r]   rä   rŸ  r   r   r   Útest_write_to_text_fileC  s    *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_fileL  s    
*z IOTest.test_write_to_binary_filec                 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  ú0<?xml version='1.0' encoding='utf-16'?>
<site />r   )Ú	buffering)r  r   r  r   r'   r   r›   rã   r2   r  r  r]   rä   r½   rŸ  r   r   r   Ú"test_write_to_binary_file_with_bomU  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   r/   r1   rá   r]   rŒ   r<   ©r#   r9   rê   r   r   r   Útest_read_from_stringioi  s    

zIOTest.test_read_from_stringioc                 C   s:   t  t  d¡¡}t ¡ }|j|dd |  | ¡ d¡ d S ©Nr  r-   rÞ   )r'   r   r›   r/   r1   r2   r]   r3   r©  r   r   r   Útest_write_to_stringioo  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   r/   r0   rá   r]   rŒ   r<   ©r#   r9   r‡  r   r   r   Útest_read_from_bytesiou  s    

zIOTest.test_read_from_bytesioc                 C   s6   t  t  d¡¡}t ¡ }| |¡ |  | ¡ d¡ d S ©Nr  rž  )r'   r   r›   r/   r0   r2   r]   r3   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§  )
r/   r1   r²  rä   r'   r   rá   r]   rŒ   r<   )r#   rê   Úreaderr9   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›   r/   r1   r²  r2   r]   r3   )r#   r9   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­  )
r/   r0   r²  rä   r'   r   rá   r]   rŒ   r<   )r#   r‡  r³  r9   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›   r/   r0   r²  r2   r]   r3   ©r#   r9   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 )Nr  c                   S   s   dS rª  r   r   r   r   r   r-  ª  r@   zBIOTest.test_write_to_user_binary_writer_with_bom.<locals>.<lambda>r‰  rÞ   r¤  )r'   r   r›   r/   r0   r²  r2   ÚseekableÚtellr]   r3   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>r-   rn   r‰  r@   )r'   rœ   r]   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>r-   z<tag>a<x />b<y />c</tag>T)Zshort_empty_elementsFz<tag>a<x></x>b<y></y>c</tag>)r'   rœ   r]   rÖ   ró  r   r   r   Útest_short_empty_elementsº  s    

þþþz IOTest.test_short_empty_elementsN)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 rD   )r[   r'   r  r  rr   r   r   r   rB  È  s    zParseErrorTest.test_subclassc              
   C   s>   zt  |¡ W n* t jy8 } z|W  Y d }~S d }~0 0 d S rD   )r'   rœ   r  )r#   rc  r¶   r   r   r   Ú
_get_errorË  s    zParseErrorTest._get_errorc                 C   s@   |   |  d¡jd¡ |   |  d¡jd¡ |   |  d¡jd¡ d S )NrÇ   )rk   r   z<tag>&foo;</tag>)rk   r   zfoobar<)rk   r  )r]   rÀ  Zpositionrr   r   r   r   Útest_error_positionÑ  s    z"ParseErrorTest.test_error_positionc                 C   s8   dd l m  m  m} |  |  d¡j|j|j ¡ d S )Nr   rÇ   )	Zxml.parsers.expat.errorsÚparsersZexpatÚerrorsr]   rÀ  ÚcodeZcodesZXML_ERROR_SYNTAX)r#   ZERRORSr   r   r   Útest_error_codeÖ  s    
ÿzParseErrorTest.test_error_codeN)r*   r+   r,   rB  rÀ  rÁ  rÅ  r   r   r   r   r¿  Ç  s   r¿  c                   @   s   e Zd Zdd„ ZdS )ÚKeywordArgsTestc              
   C   sÚ  t  d¡}|  | dd ¡|jdd d¡ |  | dd d ¡|jdd d d¡ |  | dd ¡|jdd d¡ |  t| dd ¡ƒt|jdd dƒ¡ |  t  d¡j	i ¡ t  dt
ddd¡t jdt
ddddt jdt
dd	dd
t jddddt jdt
ddddddg}|D ]*}|  |jd¡ |  |j	t
ddd¡ q
t j|d dddid}|  |j	d d¡ |  td¡ t  dd¡ W d   ƒ n1 s0    Y  |  td¡ t jddd W d   ƒ n1 sÌ0    Y  d S )Nz
<a>foo</a>r¤   )ÚpathrË  )rÇ  rÎ   rË  ú#rÇ   )r=  rZ  )rZ   )r=  )rZ  r   rf  Zkey1Zvalue1zmust be dict, not strzI'm not a dict)r'   r›   r]   r“   r–   r•   r_   r”   r\   rZ   rN   r<   r&  rh  rI  )r#   re   Úelementsr¶   rË   r   r   r   Útest_issue14818ß  s:    
ÿÿÿÿû,zKeywordArgsTest.test_issue14818N)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 )ÚNoAcceleratorTestc                 C   s   t st d¡‚d S )Nzonly for the Python version)rE   rŠ  r“  rr   r   r   r   rë    s    zNoAcceleratorTest.setUpc                 C   s(   |   tjjtj¡ |   tjjtj¡ d S rD   )r[   rE   r\   r)  ÚtypesÚFunctionTyperå   rr   r   r   r   Útest_correct_import_pyET  s    z*NoAcceleratorTest.test_correct_import_pyETN)r*   r+   r,   rë  rÎ  r   r   r   r   rË     s   rË  c                 K   s   t j| fi |¤ŽS rD   )rE   Úcanonicalize)r  r7   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>)r]   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>)rA  rB  r]   rÐ  r¹  r   r   r   Útest_c14n_exclusionB  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©r>   Úfilenamer   r   r   r?   –  s   
ÿz+C14NTest.test_xml_c14n2.<locals>.<listcomp>c                 S   s   g | ]}|  d ¡r|‘qS )Úin)Ú
startswithrÙ  r   r   r   r?   ˜  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 )Ú}r\  rn   )r<   ÚsplitrY   r„  )r>   Ú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õ   rk   r\  )rÜ  ÚrsplitrÙ  )ÚconfigsÚ
input_filer   r   r?   §  s   ýz6C14NTest.test_xml_c14n2.<locals>.<dictcomp>.<listcomp>r   )r>   )rã  Úfiles)rä  r   rà  ¦  s   úþé   c                 S   s   g | ]}|D ]}|‘qqS r   r   )r>   Úoutput_filesÚoutput_filer   r   r   r?   ±  s   ÿc                 S   s   |   ||df¡d S )Nr   r   ©rO   )ÚconfigZoption_namerÎ   r   r   r   Ú
get_optionµ  s    z+C14NTest.test_xml_c14n2.<locals>.get_optionZIgnoreCommentsÚtrueZTrimTextNodesZPrefixRewriteZ
sequentialZ
QNameAwarec                 S   s(   g | ] }d |  d¡› d|  d¡› ‘qS ©Ú{ZNSrÝ  ÚNameré  rS  r   r   r   r?   Á  s   ÿrk   z/{http://www.w3.org/2010/xml-c14n2}QualifiedAttrc                 S   s(   g | ] }d |  d¡› d|  d¡› ‘qS rí  ré  rS  r   r   r   r?   Æ  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Ý  r\  N)r<   rÞ  )r>   r¥   r   r   r   Ú	<genexpr>Ð  r@   z4C14NTest.test_xml_c14n2.<locals>.<genexpr>.<genexpr>N)ró   )r>   rQ   rt   r*  r   r   r   rò  Ï  s   
ÿz*C14NTest.test_xml_c14n2.<locals>.<genexpr>ú(ú)Z
inNsRedeclz2Redeclared namespace handling is not supported in ZinNsSuperfluousz.{http://www.w3.org/2010/xml-c14n2}XPathElementz2QName rewriting in XPath text is not supported in r×  ZinC14N5z	world.txtr  s   &ent2;)Z	from_fileZwith_commentsrÓ  Úrewrite_prefixesZqname_aware_tagsZqname_aware_attrsÚrrk  rÞ   ZinC14N3z attr="default"rn   )N)r   r   ÚosrÇ  ró   r×   Úlistdirr]   r^   Úvaluesrw   r•   r|  r|  r“   rã   r/   r0   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_filerY   ri   r   )rã  rå  rá  r   Útest_xml_c14n2’  s¦    ÿ
ú
ùÿ

ÿÿÿÿÿÿ
ÿþÿþ

þÿÿÿÿÿ
Zû
,zC14NTest.test_xml_c14n2)r*   r+   r,   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   rE   r'   r   rs  rŒ  r¼  rè  rh   r™  r¿  r8  rù  r	  r"  r)  r[  rõ  rH  rÆ  rÑ  r   rË  r"   r!   re  Z_namespace_maprÈ   rÃ   r}   rû  r'  r   r   Zrun_unittestr—   rW  )ÚmoduleZtest_classesr!   r  Z
nsmap_copyrì  Zold_factoriesr   r   r   Ú	test_mainù  sj    ÿîÿ




ø


rý  Ú__main__)Tr-   )N)MrÈ   r   r»  r/   r•  rq  rb   r÷  rJ   rI   rA  rÌ  rŠ  ra  r¦  r   r   r   r   r   Ztest.supportr   r   r   r	   r
   r   rE   r'   r¾   r½   ÚUnicodeEncodeErrorr“  râ   rƒ  r¼   r  rÄ  rq  rÁ  rÂ  r   ZTestCaser   r:   rB   rC   rh   rõ  r:  ÚformatÚescaperF  r8  rH  rŒ  r¼  r´   rå  Ú__hash__rç  rè  rù  r	  r"  r)  r[  ro  rs  r™  r¿  rÆ  rË  rÐ  rÑ  rý  r*   r   r   r   r   Ú<module>   sÐ    




            w	
ú	 7  l d 48 W` xT
  R$ f
E
