o
    ±ó®gs ã                   @   sØ  d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlZd dlZd dlZd dlZd dlmZ d dlmZmZ d dlmZ d dlmZ d dlmZ d dlmZmZmZ d dlmZ d d	lmZ dadaed
ddZ ze  !d¡ W n e"y   e #d¡‚w edddZ$edddZ%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/dsd d!„Z0d"d#„ Z1G d$d%„ d%ƒZ2G d&d'„ d'ej.ƒZ3G d(d)„ d)ej.ƒZ4i Z5d*e5d+< d,e5d-< d.e5d/< d0e5d1< d2e5d3< d4e5d5< d6e5d7< d8e5d9< d: 6e 7e d¡¡e5d;< d<e5d=< i Z8d>e8d?< d@e8dA< dBe5dC< dDe5dE< dFe5dG< G dHdI„ dIej.ƒZ9G dJdK„ dKej.ƒZ:G dLdM„ dMe2ej.ƒZ;G dNdO„ dOe2ej.ƒZ<G dPdQ„ dQe=ƒZ>e=j?e>_?G dRdS„ dSe=ƒZ@e=j?e@_?G dTdU„ dUe2ej.ƒZAG dVdW„ dWej.ƒZBG dXdY„ dYej.ƒZCG dZd[„ d[ej.ƒZDG d\d]„ d]ej.ƒZEG d^d_„ d_ej.ƒZFG d`da„ daej.ƒZGG dbdc„ dcej.ƒZHG ddde„ deej.ƒZIG dfdg„ dgej.ƒZJG dhdi„ diej.ƒZKG djdk„ dkej.ƒZLdldm„ ZMG dndo„ doej.ƒZNdtdpdq„ZOePdrkrêeOƒ  dS dS )ué    N)Úpartial)ÚproductÚislice)Úsupport)Ú	os_helper)Úwarnings_helper)ÚfindfileÚ
gc_collectÚ	swap_attr)Úimport_fresh_module)ÚTESTFNz
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>
zÁ<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Foo [
<!ELEMENT foo (bar*)>
<!ELEMENT bar (#PCDATA)*>
<!ATTLIST bar xml:lang CDATA "eng">
<!ENTITY qux "quux">
]>
<foo>
<bar>&qux;</bar>
</foo>
F)Úquietc                    s   ‡ ‡fdd„}|S )Nc                    s    ‡‡‡ fdd„}t  |ˆ ¡ |S )Nc                     sD   t jˆ dˆiŽ ˆ| i |¤Ž W d   ƒ d S 1 sw   Y  d S )Nr   )r   Zcheck_warnings)ÚargsÚkwargs)Úfiltersr   Útest© úI/Users/admin/.pyenv/versions/3.10.0/lib/python3.10/test/test_xml_etree.pyÚnewtest~   s   "ÿz1checkwarnings.<locals>.decorator.<locals>.newtest)Ú	functoolsÚupdate_wrapper)r   r   ©r   r   )r   r   Ú	decorator}   s   z checkwarnings.<locals>.decoratorr   )r   r   r   r   r   r   Úcheckwarnings|   s   r   c                   @   ó   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_sanity‡   s   zModuleTest.test_sanityc                 C   s   d}t j| t|dd d S )N)úxml.etree.ElementTreeÚ_elementtree)Z
HTML_EMPTY)Znot_exported)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   †   s    r   TÚunicodec                 K   sT   |dkr	t  ¡ }nt  ¡ }t | ¡}|j|fd|i|¤Ž |r#| ¡ S | d¡ |S )Nr/   Úencodingr   )ÚioÚBytesIOÚStringIOr)   r   ÚwriteÚgetvalueÚseek)ÚelemÚ	to_stringr0   ÚoptionsÚfileÚtreer   r   r   Ú	serialize“   s   


r<   c                 C   s   dd„ | D ƒS )Nc                 S   ó   g | ]}|j ‘qS r   ©Útag©Ú.0r7   r   r   r   Ú
<listcomp>¡   ó    z"summarize_list.<locals>.<listcomp>r   )Úseqr   r   r   Úsummarize_list    ó   rE   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¥   ó   zElementTestCase.setUpClassc                 C   s¬   t j| }zJz|t j|< t ||¡}|t j|< t |¡}W n* tjyG }	 zttdftdfgƒ}
t	 
d||
 ||¡|
 ||¡f ¡|	‚d }	~	ww W |t j|< |S |t j|< w )NZcETrI   z%Failed to round-trip %r from %r to %r)ÚsysrJ   ÚpickleÚdumpsÚloadsÚPicklingErrorÚdictr)   rI   r   Z
TestFailedÚget)r%   ÚobjÚnameÚdumperÚloaderÚprotoZsave_mZ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 ]
\}}|  ||¡ q't	 
dddd¡}|  ||ƒ||ƒ¡ d S )Nr?   ÚtailÚtextÚattrib)ÚassertIsInstancer)   ÚElementrI   ÚassertEqualÚlenÚlistÚzipÚassertEqualElementsÚoperatorÚ
attrgetter)r%   ZaliceÚbobÚxÚyZ
propertiesr   r   r   rf   »   s   z#ElementTestCase.assertEqualElementsN)r,   r-   r.   ÚclassmethodrL   r\   rf   r   r   r   r   rG   ¤   s
    
rG   c                   @   sl  e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Zd-d.„ Zd/d0„ Zd1d2„ Zd3d4„ Zd5d6„ Zd7d8„ Zd9d:„ Zd;d<„ Z d=d>„ Z!d?d@„ Z"dAdB„ Z#dCdD„ Z$dEdF„ Z%dGdH„ Z&dIdJ„ Z'dKdL„ Z(dMdN„ Z)dOdP„ Z*dQdR„ Z+dSdT„ Z,dUdV„ Z-dWdX„ Z.dYS )ZÚElementTreeTestc                 C   s   |   t|ƒ|¡ d S rH   )rb   r<   )r%   r7   Úexpectedr   r   r   Úserialize_checkÉ   ó   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   )rc   rb   )Ú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 %rrr   )rc   ÚkeysÚitemsrb   )Úmappingr|   r}   r{   Úitemrx   r   r   Úcheck_mappingØ   s   


ÿz5ElementTreeTest.test_interface.<locals>.check_mappingc                    s¤   ˆj t | ¡dd t| ƒ}dD ]}ˆj t| |ƒd| d ˆj||d| d qˆ| jƒ ˆ| jƒ | jd ur=ˆ| jƒ | j	d urGˆ| j	ƒ | D ]}ˆ |ƒ qId S )Nznot an elementrr   )r?   r_   r^   r]   zno %s memberzno %s visible by dir)
Ú
assertTruer)   Z	iselementÚdirÚhasattrÚassertInr?   r_   r^   r]   )ÚelementZdirelemÚattrr7   )Úcheck_elementr€   ry   r%   r   r   r‡   â   s$   ÿÿ






ÿz5ElementTreeTest.test_interface.<locals>.check_elementr?   õ   tÃ¤grz   ©r{   z^<Element 't\xe4g' at 0x.*>$c                    s   ˆ j t| dƒd|  d d S )NÚ__call__z%s not callablerr   )r   rƒ   ©Úmethodrx   r   r   Úcheck_methodÿ   s   
ÿz4ElementTreeTest.test_interface.<locals>.check_methodc                    s   ˆ | j ƒ d S rH   )Ú__next__)Úit)r   r   r   Ú
check_iter  rF   z2ElementTreeTest.test_interface.<locals>.check_iterÚ*)r)   ra   r   ÚgetrootÚassertRegexÚreprÚappendÚextendÚinsertÚremoveÚfindÚiterfindÚfindallÚfindtextÚclearrT   Úsetr|   r}   ÚiterÚitertextrb   ÚXMLÚ
fromstringÚPIÚProcessingInstruction)r%   r…   r;   r   r   )r‡   r€   r   ry   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)   ra   rb   r?   ÚassertIsNoner^   r]   r_   )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¯w   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?   rz   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 listrq   z
<subtag />é	   é   )r)   r¡   ro   ra   r•   r˜   r—   r–   rŸ   ÚassertRaisesÚ
ValueErrorrb   ÚstrÚ	exception)r%   r7   Úer…   Z
subelementÚcmr   r   r   Útest_simpleops=  sT   








ÿ

ÿ "
ÿ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>)ro   r)   r¡   rx   r   r   r   Ú
test_cdatai  s   ÿÿÿzElementTreeTest.test_cdatac                 C   s|   t  t d¡¡}tj|d}|  | d¡jd¡ |  | d¡jd¡ tjt	d}|  | d¡jd¡ |  | d¡jd¡ d S )Nr   )r:   r?   úsection/tagr…   zelement/../empty-elementúempty-element)
r1   r2   Ú
SAMPLE_XMLÚencoder)   r   rb   r™   r?   ÚSIMPLE_XMLFILE)r%   Z
stringfiler;   r   r   r   Útest_file_inits  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|ƒ ¡ q'|  t	|j
ƒ|¡ tdƒD ]}t |¡ dt|ƒ ¡ qC|  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º   rc   Ú_cacherb   ZassertGreaterZ
assertLess)r%   r#   r7   ÚiZcache_len_10r   r   r   Útest_path_cache~  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?   ro   )r%   rÎ   Úe1Úe2Úe3r   r   r   Ú	test_copy  s   


zElementTreeTest.test_copyc                 C   s&  t  d¡}| d¡ |  | dd¡d¡ | dd¡ |  | d¡d¡ t jddd}|  | d¡d¡ |  |jddi¡ ddi}t  d|¡}| ¡  |  | d¡d¡ |  |jddi¡ ddi}t jdi |¤Ž}| ¡  |  | d¡d¡ |  |jddi¡ t jdddidd}|  | d¡d¡ |  |jddi¡ t  d¡}d|_| d	d
¡ | dd¡ |  t  |¡d¡ |  t	| 
¡ ƒd	dg¡ |  t	| ¡ ƒddg¡ |  |jd d¡ d|jd< d|jd< |  t  |¡d¡ t  d¡}| dd¡ | dd¡ | dd¡ | dd¡ |  t  |¡d¡ d S )Nr?   r{   Údefaultrz   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)   ra   rT   rb   rž   r_   r   r^   ÚtostringÚsortedr|   r}   )r%   r7   r_   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?   r{   rz   rµ   zattrib aliasingrr   z!<tag><subtag key="value" /></tag>ú<tag />zM<tag><subtag key="value" /><subtag key="value" /><subtag key="value" /></tag>)
r)   ra   ZmakeelementÚassertIsNotr_   r•   ro   r   r–   Útuple)r%   r7   r_   Ú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 sCw   Y  t  ¡ }|  |jd¡ | |¡ |  | ¡ d¡ t  ¡ }t j|d}| |¡ |  | ¡ d¡ d S )Nr/   ©r0   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Ä   r1   r3   r4   rb   r5   ÚSIMPLE_NS_XMLFILEÚopenÚreadÚ	XMLParserr“   ÚversionÚfeedro   ÚcloseÚTreeBuilder)r%   r;   ÚstreamÚfÚdataÚparserræ   r   r   r   Útest_parsefileå  s6   

ÿ

ÿ

ÿ

ÿ

ÿ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>ó    ÚasciisE   <?xml version='1.0' encoding='ascii'?>
<html><body>text</body></html>r   z(<html><body id='body'>text</body></html>rq   Úbody)r)   r¡   rb   rÜ   r¢   ZfromstringlistÚjoinÚtostringlistZXMLIDrc   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ƒ(}|  t¡}|||ƒ W d   ƒ n1 s¿w   Y  |  |j¡ W d   ƒ n1 sÔw   Y  |  t|jƒd¡ t | ¡, |  t¡}|t|ƒ W d   ƒ n1 sýw   Y  |  t|jƒd¡ ~W d   ƒ n	1 sw   Y  t d¡}	d}||	|ƒ}|  dd„ |D ƒddg¡ t 	d¡}	||	ƒ}
t|
ƒ\}}|  ||jfd ¡ |  t j¡}t|
ƒ W d   ƒ n	1 scw   Y  |  t|jƒd!¡ |  tjt¡ t
td"ƒ}| d#¡ W d   ƒ n	1 sŽw   Y  |tƒ}
t|
ƒ\}}|  ||jfd ¡ t | ¡/ |  t j¡}t|
ƒ W d   ƒ n	1 sÂw   Y  |  t|jƒd!¡ ~~
W d   ƒ d S 1 sÞw   Y  d S )$N©Úendr…   c                 S   ó   g | ]	\}}||j f‘qS r   r>   ©rA   Úactionr7   r   r   r   rB   0  ó    z2ElementTreeTest.test_iterparse.<locals>.<listcomp>)rþ   ©rÿ   rÁ   ©rÿ   Úrootr  c                 S   r   r   r>   r  r   r   r   rB   8  r  )©rÿ   ú{namespace}elementr  ©rÿ   ú{namespace}empty-element©rÿ   ú{namespace}rootr   c                 S   r   r   r>   r  r   r   r   rB   A  r  ©Úeventsc                 S   r   r   r>   r  r   r   r   rB   E  r  ©Ústartrÿ   c                 S   r   r   r>   r  r   r   r   rB   I  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   rB   V  s
    þÿ)
©r  )rt   Ú	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   rB   g  s    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   rB   }  s    )r  )rt   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Ä   Únextrb   r?   r  rè   r1   r3   ré   r¸   r¹   ÚassertFalseÚclosedrº   r»   r   Zcheck_no_resource_warningr2   Ú
ParseErrorÚ
addCleanupr   Úunlinkr   r4   )r%   r"  Úcontextr  r7   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?   r^   z<tag>text</tag>Úsubtextrµ   z'<tag>text<subtag>subtext</subtag></tag>ztext<subtag>subtext</subtag>r   Úcommentz*text<!--comment--><subtag>subtext</subtag>r{   rz   z)text<?key value?><subtag>subtext</subtag>)	r)   ra   r^   ro   Ú
SubElementr?   r—   ÚCommentr£   ©r%   r7   r   r   r   Útest_writefile˜  s   
ÿzElementTreeTest.test_writefilec                 C   sÜ   t tƒ}| ¡ }W d   ƒ n1 sw   Y  G dd„ dtƒ}|ƒ }tj|d}| |¡ |  |g d¢¡ t tƒ}| ¡ }W d   ƒ n1 sIw   Y  G dd„ dtƒ}|ƒ }tj|d}| |¡ |  |g d¢¡ d S )Nc                   @   ó$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ú4ElementTreeTest.test_custom_builder.<locals>.Builderc                 S   ó   |   d|f¡ d S ©Nr  ©r•   ©r%   r?   r_   r   r   r   r  ¯  ó   ú:ElementTreeTest.test_custom_builder.<locals>.Builder.startc                 S   r5  ©Nrÿ   r7  ©r%   r?   r   r   r   rÿ   ±  r9  ú8ElementTreeTest.test_custom_builder.<locals>.Builder.endc                 S   ó   d S rH   r   ©r%   r^   r   r   r   rò   ³  ó   ú9ElementTreeTest.test_custom_builder.<locals>.Builder.dataN)r,   r-   r.   r  rÿ   rò   r   r   r   r   ÚBuilder®  ó    rB  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 )r4  c                 S   r5  r6  r7  r8  r   r   r   r  Æ  r9  r:  c                 S   r5  r;  r7  r<  r   r   r   rÿ   È  r9  r=  c                 S   r>  rH   r   r?  r   r   r   rò   Ê  r@  rA  c                 S   ó   |   d||f¡ d S )NÚpir7  )r%   ræ   rò   r   r   r   rE  Ì  rp   z7ElementTreeTest.test_custom_builder.<locals>.Builder.pic                 S   r5  )Nr.  r7  )r%   rò   r   r   r   r.  Î  r9  z<ElementTreeTest.test_custom_builder.<locals>.Builder.commentc                 S   rD  )Nr  r7  )r%   ÚprefixÚurir   r   r   Ústart_nsÐ  rp   z=ElementTreeTest.test_custom_builder.<locals>.Builder.start_nsc                 S   r5  ©Nr  r7  ©r%   rF  r   r   r   Úend_nsÒ  r9  z;ElementTreeTest.test_custom_builder.<locals>.Builder.end_nsN)
r,   r-   r.   r  rÿ   rò   rE  r.  rH  rK  r   r   r   r   rB  Å  s    ))rE  rE  rò   )r.  ú	 comment )r  rt   r  r  r  r  r  r  r  r	  r  ©r  rt   )	ré   rÄ   rê   rd   r)   rë   rí   rb   rè   )r%   rñ   rò   rB  Ú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                   @   ó   e Zd Zdd„ ZdS )z@ElementTreeTest.test_custom_builder_only_end_ns.<locals>.Builderc                 S   r5  rI  r7  rJ  r   r   r   rK  è  r9  zGElementTreeTest.test_custom_builder_only_end_ns.<locals>.Builder.end_nsN)r,   r-   r.   rK  r   r   r   r   rB  ç  ó    rB  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  ÚprM  )rd   r)   rë   rí   ÚtextwrapÚdedentrb   )r%   rB  rN  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w   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   ó   g | ]}t |ƒ‘qS r   ©rE   r@   r   r   r   rB     ó    ÿz1ElementTreeTest.test_children.<locals>.<listcomp>)r…   r…   rÁ   c                 S   rV  r   rW  r@   r   r   r   rB     rX  é   r·   rq   r   )ré   rÄ   r)   rç   rb   r’   rŸ   r¡   rÂ   rc   rd   ÚassertNotEqualr   )r%   rñ   r;   r7   Úchild1Úchild2r   r   r   Útest_childrenü  sJ   ÿ

ÿüÿ
ÿüÿ

zElementTreeTest.test_childrenc                 C   s<   t  d¡}|  t  |¡d¡ t  d¡}|  t  |¡d¡ d S )Nrõ   rö   )r)   r¡   rb   rÜ   r¢   r1  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¡   Úindentrb   rÜ   r1  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 )Nr_  ú	)ÚspacesD   <html>
	<body>
		<p>pre<br />post</p>
		<p>text</p>
	</body>
</html>rt   s>   <html>
<body>
<p>pre<br />post</p>
<p>text</p>
</body>
</html>r`  r1  r   r   r   Útest_indent_spaceS  s   
þ

þz!ElementTreeTest.test_indent_spacec                 C   s„   t  d¡}t  |¡ |  dd„ | ¡ D ƒh d£¡ |  dd„ | ¡ D ƒh d£¡ |  tdd„ | ¡ D ƒƒtdd„ | ¡ D ƒƒ¡ d S )	Nz@<html><body><p>par</p><p>text</p><p><br/></p><p /></body></html>c                 S   ó   h | ]}|j ’qS r   ©r]   ©rA   Zelr   r   r   Ú	<setcomp>p  rC   z<ElementTreeTest.test_indent_space_caching.<locals>.<setcomp>>   Ú
Nú
  ú
    c                 S   rf  r   ©r^   rh  r   r   r   ri  t  rC   >   Nrl  r^   Zparz
      rk  c                 S   rf  r   rg  rh  r   r   r   ri  x  rC   c                 S   s   h | ]}t |jƒ’qS r   )Úidr]   rh  r   r   r   ri  y  s    )r)   r¡   ra  rb   rŸ   rc   r1  r   r   r   Útest_indent_space_cachingl  s   

þþþz)ElementTreeTest.test_indent_space_cachingc                 C   s¤   t  d¡}|  t¡ t j|dd W d   ƒ n1 sw   Y  |  t  |¡d¡ t j|dd |  t  |¡d¡ t  d¡}t j|ddd	 |  t  |¡d
¡ d S )Nr_  éÿÿÿÿ)Ú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>rq   ru   )rq  rd  sI   <html>
  <body>
   <p>pre<br />post</p>
   <p>text</p>
  </body>
 </html>)r)   r¡   r¸   r¹   ra  rb   rÜ   r1  r   r   r   Útest_indent_level|  s&   
ÿþþ

þz!ElementTreeTest.test_indent_levelc                 C   s<   t  d¡}|  t j|ddd¡ |  t j|dddd¡ d S )Nú0<body xmlns="http://effbot.org/ns"><tag/></body>r/   rä   úA<ns0:body xmlns:ns0="http://effbot.org/ns"><ns0:tag /></ns0:body>r  ©r0   Údefault_namespaceú1<body xmlns="http://effbot.org/ns"><tag /></body>©r)   r¡   rb   rÜ   r1  r   r   r   Útest_tostring_default_namespaceœ  s   
þþz/ElementTreeTest.test_tostring_default_namespacec                 C   ó&   t  d¡}|  t j|dddd¡ d S )Nrs  r/   Úfoobarru  zP<ns1:body xmlns="foobar" xmlns:ns1="http://effbot.org/ns"><ns1:tag /></ns1:body>rx  r1  r   r   r   Ú3test_tostring_default_namespace_different_namespace§  ó
   
þzCElementTreeTest.test_tostring_default_namespace_different_namespacec                 C   sP   t  d¡}d}|  t|¡ t j|ddd W d   ƒ d S 1 s!w   Y  d S )Nr²   z>^cannot use non-qualified names with default_namespace option$r/   r{  ru  )r)   r¡   ÚassertRaisesRegexr¹   rÜ   )r%   r7   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³   rx  r1  r   r   r   Ú test_tostring_no_xml_declaration´  s
   
þz0ElementTreeTest.test_tostring_no_xml_declarationc                 C   rz  )Nr²   Úutf8T©r0   Úxml_declarations:   <?xml version='1.0' encoding='utf8'?>
<body><tag /></body>rx  r1  r   r   r   Útest_tostring_xml_declaration»  r}  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/   Tr‚  )r)   r¡   ÚlocaleÚgetpreferredencodingrb   rÜ   )r%   r7   Ú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 ],\}}}|  d|› d|› ¡ |  t j|||d|¡ W d   ƒ q#1 sJw   Y  q#d S )Nõ   <body><tag>Ã¸</tag></body>)ó   <body><tag>&#248;</tag></body>NN)ó   <body><tag>Ã¸</tag></body>úUTF-8N)rŒ  úUS-ASCIIN)óE   <?xml version='1.0' encoding='ISO-8859-1'?>
<body><tag>ø</tag></body>ú
ISO-8859-1N)r‹  r/   N)rŒ  NF)r  rŽ  F)rŒ  r  F)s   <body><tag>ø</tag></body>r‘  F)r‹  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>rŽ  T)sH   <?xml version='1.0' encoding='US-ASCII'?>
<body><tag>&#248;</tag></body>r  T)r  r‘  Tr…  u   '?>
<body><tag>Ã¸</tag></body>r/   Tz	encoding=z xml_declaration=r‚  )r)   r¡   r‡  rˆ  ÚsubTestrb   rÜ   )r%   r7   r‰  Z	TESTCASESZexpected_retvalr0   rƒ  r   r   r   Ú#test_tostring_xml_declaration_casesÊ  sD   

ÿæ
ÿýúþÿ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 )	Nrs  rt   r/   rä   rt  r  ru  rw  )r)   r¡   rb   rú   rû   r1  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²   rt   r/   rä   r³   r÷   T)rƒ  s>   <?xml version='1.0' encoding='us-ascii'?>
<body><tag /></body>r‚  r…  r†  r   z%^<\?xml version='1.0' encoding='.+'?>)z<bodyú>z<tagz />z</body>rq   )r)   r¡   rb   rú   rû   r‡  rˆ  r“   )r%   r7   r‰  Z
stringlistr   r   r   Ú!test_tostringlist_xml_declaration  s"   
þþ
þz1ElementTreeTest.test_tostringlist_xml_declarationc              	      s  d‡ fdd„	}|ddƒ |ddƒ |ddƒ |d	d
ƒ |ddƒ |ddƒ dd„ ‰‡fdd„}g d¢}|D ]}ˆ   t t ||ƒ¡¡d¡ q5g d¢}|D ]}ˆ  ttj||ƒ¡ qLg d¢}|D ]}ˆ  tjtj||ƒ¡ q_ˆ  ttjˆdƒ d¡¡ ˆ  ttjˆdƒ d¡¡ d S )Nrt   c                    s>   d| |f }ˆ   t | | ¡¡j|¡ ˆ   t |¡j|¡ d S )Nz0<?xml version='1.0' encoding='%s'?><xml>%s</xml>)rb   r)   r¡   rÃ   r^   )r0   rù   Úxmlrx   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—  #  ó   z*ElementTreeTest.test_encoding.<locals>.xmlc                    s   ˆ | ƒ  | ¡S rH   )rÃ   rä   )r—  r   r   Úbxml%  rF   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)rt   )	rb   r)   rÜ   r¡   r¸   r¹   r&  rÃ   ÚLookupError)r%   r˜  rŸ  Zsupported_encodingsr0   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>rj  z/<html><link /><script>1 &lt; 2</script></html>
r‹   r—  Úhtmlz*<html><link><script>1 < 2</script></html>
r^   z1 < 2
)r)   r¡   r]   rb   r<   ©r%   r¼   r   r   r   Útest_methodsQ  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¡   rb   r<   rÓ  r   r   r   Útest_issue18347`  s   

ÿÿzElementTreeTest.test_issue18347c                 C   s6  t  d¡}|  t|ddd¡ |  |d¡ |  t j¡}t  d¡ W d   ƒ n1 s+w   Y  |  t|jƒd¡ |  t j¡}t  t	¡ W d   ƒ n1 sOw   Y  |  t|jƒd¡ t  
¡ }d	|jd
< | t	¡ | ¡ }|  |d¡ |  t j¡}t  t¡ W d   ƒ n1 s‹w   Y  |  t|jƒd¡ d S )Nz*<document title='&#x8230;'>test</document>r™  rä   s*   <document title="&#33328;">test</document>u%   <document title="èˆ°">test</document>z<document>&entity;</document>z#undefined entity: line 1, column 10z,undefined entity &entity;: line 5, column 10r^   Úentityz<document>text</document>z,undefined entity &entity;: line 4, column 10)r)   r¡   rb   r<   ro   r¸   r&  rº   r»   Ú
ENTITY_XMLrë   r×  rí   rî   ÚEXTERNAL_ENTITY_XML)r%   r¼   r½   ró   r  r   r   r   Útest_entityg  s8   
ÿÿÿÿÿ

ÿÿ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¡   ro   ÚSAMPLE_XML_NSr1  r   r   r   Útest_namespaceŒ  s$   

ÿ
ÿ
ÿ
ÿzElementTreeTest.test_namespacec                 C   sâ  t  d¡}|  |d¡ t  t  d¡¡}|  |d¡ t  t  dd¡¡}|  |d¡ t  t  dd¡¡}t  |t  dd¡¡}t  |t  dd¡¡}|  |d¡ | ¡  d|jd	< |  |d
¡ | ¡  d|jt  d	¡< |  |d
¡ | ¡  d|jd	< |  |d¡ | ¡  t  d¡|jd	< |  |d¡ | ¡  t  d¡}t  d¡|jd< | |¡ | |¡ |  |d¡ |  t	t  dd¡ƒd¡ |  t	t  d¡ƒd¡ t  dd¡}t  dd¡}|  ||¡ t  dd¡}|  
||¡ |  
|d¡ |  |d¡ d S )Nz{uri}tagz<ns0:tag xmlns:ns0="uri" />rG  r?   Ztag1r´   z;<ns0:tag xmlns:ns0="uri"><ns0:tag1 /><ns0:tag2 /></ns0:tag>rz   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)   ra   ro   ÚQNamer/  r   r_   r•   rb   rº   rZ  )r%   r7   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¡   r1  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   )rA   Úopr?   r   r   r   rB   ú  s    ÿzGElementTreeTest.test_xpath_tokenizer.<locals>.check.<locals>.<listcomp>)rb   Zxpath_tokenizer)rR  rn   Ú
namespaces©r#   r%   r   r   r˜  ù  s
   

ÿþz3ElementTreeTest.test_xpath_tokenizer.<locals>.checkr‘   ztext()r^   ú()z@nameú@rV   z@*zpara[1])Úparaú[Ú1ú]zpara[last()])ræ  rç  Zlasträ  ré  z*/para)r‘   ú/ræ  z/doc/chapter[5]/section[2])rê  Údocrê  Úchapterrç  Ú5ré  rê  Úsectionrç  Ú2ré  zchapter//para)rì  ú//ræ  z//pararð  ræ  z//olist/item)rð  Zolistrê  r   Ú.z.//para)rñ  rð  ræ  ú..z../@lang)rò  rê  rå  Zlangzchapter[title])rì  rç  Útitleré  z#employee[@secretary and @assistant])
Zemployeerç  rå  Z	secretaryrt   Úandrt   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ù  rt   z	@xsd:typez@typez@{*}typez{*}type)rt   rÝ  rH   )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&>ã?>)rb   r)   rÜ   r¤   r£   rx   r   r   r   Útest_processinginstruction0  s   ÿÿÿÿz*ElementTreeTest.test_processinginstructionc                 C   sp   dD ]3}||  ¡ fD ]*}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¡   rb   )r%   r…   r7   rn   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 sw   Y  |  | ¡ d¡ d S )NÚ
cirriculumÚpublicÚexample©ÚstatusZcompanyz1<cirriculum status="public" company="example" />
)r)   ra   r   Úcaptured_stdoutÚdumprb   r5   )r%   r¼   Ústdoutr   r   r   Útest_dump_attribute_orderM  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)   ra   rb   r<   ©r%   r  r   r   r   Útest_tree_write_attribute_orderU  s   
ÿÿz/ElementTreeTest.test_tree_write_attribute_orderc                 C   s$   t  t¡}|  |d jddi¡ d S )Nr   z*{http://www.w3.org/XML/1998/namespace}langZeng)r)   r¢   ÚATTLIST_XMLrb   r_   r	  r   r   r   Útest_attlist_default]  s   
ÿz$ElementTreeTest.test_attlist_defaultN)/r,   r-   r.   ro   r¥   r±   r¾   r¿   rÅ   rË   rÓ   rÞ   rã   rô   rý   r,  r2  rO  rU  r]  r^  rb  re  ro  rr  ry  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   rm   Ç   sZ    V,
6-p=%, -;%!A:rm   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   sF   |d u r|  |¡ d S tdt|ƒ|ƒD ]}|  |||| … ¡ qd S ©Nr   )rí   rÈ   rc   )r%   ró   rò   Ú
chunk_sizerÊ   r   r   r   Ú_feedf  s
   ÿzXMLPullParserTest._feedc                 C   s$   |   dd„ t| ¡ |ƒD ƒ|¡ d S )Nc                 S   s    g | ]\}}||j |jff‘qS r   )r?   r^   )rA   Úeventr7   r   r   r   rB   o  s    ÿz3XMLPullParserTest.assert_events.<locals>.<listcomp>)rb   r   Úread_events©r%   ró   rn   Ú
max_eventsr   r   r   Úassert_eventsm  s   ÿýzXMLPullParserTest.assert_eventsc                 C   s   |   tt| ¡ |ƒƒ|¡ d S rH   )rb   rd   r   r  r  r   r   r   Úassert_event_tupless  s   þz%XMLPullParserTest.assert_event_tuplesc                 C   s(   t | ¡ |ƒ}|  dd„ |D ƒ|¡ d S )Nc                 S   r   r   r>   r  r   r   r   rB   z  r  z7XMLPullParserTest.assert_event_tags.<locals>.<listcomp>)r   r  rb   )r%   ró   rn   r  r  r   r   r   Úassert_event_tagsx  s   ÿz#XMLPullParserTest.assert_event_tagsc              	   C   sô   dD ]u}| j |de t ¡ }|  |g ¡ |  |d|¡ |  |g ¡ |  |d|¡ |  |g ¡ |  |d|¡ |  |dg¡ |  |d|¡ |  |d|¡ |  |dd	g¡ |  |d
|¡ |  |dg¡ |  | ¡ ¡ W d   ƒ q1 srw   Y  qd S )N)Nrq   é   )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_xml}  s0   þþíÿz!XMLPullParserTest.test_simple_xmlc                 C   sœ   t  ¡ }| ¡ }|  |d¡ t|ƒ\}}|  ||jfd¡ |  |d¡ t|ƒ\}}|  ||jfd¡ |  t¡ t|ƒ W d   ƒ d S 1 sGw   Y  d S )Nz-<root>
  <element key='value'>text</element>
rþ   r  r  )	r)   r  r  r  r#  rb   r?   r¸   ÚStopIteration)r%   ró   r   r  r7   r   r   r   Útest_feed_while_iterating”  s   
"ÿz+XMLPullParserTest.test_feed_while_iteratingc                 C   sÊ   t  ¡ }|  |g ¡ |  |d¡ |  |g ¡ |  |d¡ |  |g ¡ |  |d¡ |  |g ¡ |  |d¡ |  |dg¡ |  |d¡ |  |d¡ |  |ddg¡ |  |d	¡ |  |d
g¡ |  | ¡ ¡ d S )Nr  ú<root xmlns='namespace'>
ú"<element key='value'>text</elementr  r  r  r  r	  r  r  )r)   r  r  r  r°   rî   ©r%   ró   r   r   r   Útest_simple_xml_with_ns   s&   þz)XMLPullParserTest.test_simple_xml_with_nsc                 C   sž   t jdd}|  |d¡ |  |d¡ |  t| ¡ ƒdg¡ |  |d¡ |  |d¡ |  |d¡ |  |d	¡ |  |d
¡ |  t| ¡ ƒdg¡ |  | ¡ ¡ d S )Nr  r  r  r"  r  r#  r  r  r  r  r  )r)   r  r  rb   rd   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  )rt   Úabc©r  )rR  Zxyzr·   ©r  ©r  ú{abc}tagrq   ú
<child />
©r  ú
{abc}child©rÿ   r0  ú</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,  rq   r.  r/  r1  r2  r3  r  r4  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ÿ   r9  z</root>r  )r  r  r8  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  r7  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  r0  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  rE  rÿ   r  z<?pitarget?>
rE  Úpitarget)rE  z<?pitarget some text ?>
zpitarget some text )r)   r  r  r  r£   r$  r   r   r   Útest_events_pi7  s   z XMLPullParserTest.test_events_pic                 C   sl   ddh}t j|d}|  |d¡ |  |ddg¡ G dd„ dƒ}t j|ƒ d}|  |d¡ |  |ddg¡ d S )	Nrÿ   r  r  z<foo>bar</foo>)r  rÍ   )rÿ   rÍ   c                   @   r3  )z9XMLPullParserTest.test_events_sequence.<locals>.DummyIterc                 S   s   t g d¢ƒ| _d S )N)r  rÿ   r  )rŸ   r  rx   r   r   r   Ú__init__G  r9  zBXMLPullParserTest.test_events_sequence.<locals>.DummyIter.__init__c                 S   s   | S rH   r   rx   r   r   r   Ú__iter__I  r@  zBXMLPullParserTest.test_events_sequence.<locals>.DummyIter.__iter__c                 S   s
   t | jƒS rH   )r#  r  rx   r   r   r   rŽ   K  ó   
zBXMLPullParserTest.test_events_sequence.<locals>.DummyIter.__next__N)r,   r-   r.   rA  rB  rŽ   r   r   r   r   Ú	DummyIterF  rC  rD  )r)   r  r  r  )r%   Zeventsetró   rD  r   r   r   Útest_events_sequence?  s   z&XMLPullParserTest.test_events_sequencec                 C   s<   |   t¡ tjdd W d   ƒ d S 1 sw   Y  d S )Nr  r  )r¸   r¹   r)   r  rx   r   r   r   Útest_unknown_eventR  s   "ÿz$XMLPullParserTest.test_unknown_eventrH   )r,   r-   r.   r  r  r  r  r  r!  r%  r&  r5  r6  r<  r>  r@  rE  rF  r   r   r   r   r  d  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ƒ‚w |dkrt |¡}|S )Núresource not foundr—  )ÚXINCLUDEÚKeyErrorÚOSErrorr)   r¡   )r%   Úhrefrç   r0   rò   r   r   r   Úxinclude_loaderÝ  s   ÿ
zXIncludeTest.xinclude_loaderc                 C   r>  rH   r   )r%   rV  ró   r0   r   r   r   Únone_loaderæ  r@  zXIncludeTest.none_loaderc                 C   sH   |dkr"t |dƒ}t |¡ ¡ W  d   ƒ S 1 sw   Y  d S d S )Nr—  r  )ré   r)   rç   r’   )r%   rV  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    rL  z”<document>
  <p>Example.</p>
  <root>
   <element key="value">text</element>
   <element>text</element>tail
   <empty-element />
</root>
</document>)r$   r!   rW  ÚincluderY  rb   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 srw   Y  |  t|j	ƒd¡ |  t|ƒd¡ d S )Nr   r    rG  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>rH  zO<document>
  <p>This document has been accessed
  324387 times.</p>
</document>rI  zX<document>
  <p>This document has been <em>accessed</em>
  324387 times.</p>
</document>rJ  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>rK  rR  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!   rW  rZ  rb   r<   r¸   rU  rº   r»   ©r%   r!   r   r½   r   r   r   Útest_xinclude   s:   

ÿ

ÿ

ÿ

ÿ
ÿ
ÿzXIncludeTest.test_xincludec                 C   s>   ddl m} |  d¡}| || j¡ |  dt| d¡ƒ¡ d S )Nr   r    rM  r¶   z.//p)r$   r!   rW  rZ  rb   rc   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 s&w   Y  |  	t
|jƒd¡ t td ¡}|  |j¡}|j|| jd W d   ƒ n1 sTw   Y  |  	t
|jƒd¡ t td ¡}|  |j¡}|j|| jd W d   ƒ n1 s‚w   Y  |  	t
|jƒd	¡ t td
 ¡}|  |j¡}|j|| jd W d   ƒ n1 s°w   Y  |  	t
|jƒd¡ |  d¡}|  |j¡}| || j¡ W d   ƒ n1 sÛw   Y  |  	t
|jƒd¡ |  d¡}|  |j¡}|j|| jd d W d   ƒ n	1 s	w   Y  |  	t
|jƒd¡ |  d¡}|  |j¡}|j|| jdd W d   ƒ n	1 s7w   Y  |  	t
|jƒd¡ |  d¡}|  |j¡}|j|| jdd W d   ƒ n	1 sew   Y  |  	t
|jƒd¡ |  d¡}|  |j¡}|j|| jdd W d   ƒ n	1 s“w   Y  |  	t
|jƒd¡ |  d¡}|  |j¡}|j|| jdd W d   ƒ n	1 sÁw   Y  |  	t
|jƒd¡ d S )Nr   r    rG  )rX   z%cannot load 'disclaimer.xml' as 'xml'rH  z!cannot load 'count.txt' as 'text'rN  z1unknown parse type in xi:include tag ('BAD_TYPE')rO  zYxi:fallback tag must be child of xi:include ('{http://www.w3.org/2001/XInclude}fallback')rP  z#recursive include of Recursive2.xml)Z	max_depthzAmaximum xinclude depth reached when including file Recursive2.xmlrq   zAmaximum xinclude depth reached when including file Recursive3.xmlr·   zAmaximum xinclude depth reached when including file Recursive1.xmlrY  )r$   r!   r)   r¡   rS  r¸   ZFatalIncludeErrorrZ  rX  rb   rº   r»   ÚXINCLUDE_BADrW  ZLimitedRecursiveIncludeErrorr\  r   r   r   Útest_xinclude_failuresG  sŽ   ÿÿÿÿÿÿÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿz#XIncludeTest.test_xinclude_failures)r—  NrH   )
r,   r-   r.   rW  rX  rY  r[  r]  r^  r`  r   r   r   r   rQ  Û  s    

		@rQ  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w   Y  ˆ  t|jƒd¡ d S )Nzcannot serialize 123 (type int))r¸   Ú	TypeErrorr<   rb   rº   r»   )r7   r½   rx   r   r   r˜  –  s   
ÿÿz-BugsTest.test_bug_xmltoolkit21.<locals>.checké{   r7   Z123)r)   ra   r^   r]   rž   )r%   r˜  r7   r   rx   r   Útest_bug_xmltoolkit21“  s   




zBugsTest.test_bug_xmltoolkit21c                 C   s<   t  t¡}t  |¡}|  | d¡d¡ |  | d¡d¡ d S )Nr?   r^   rÀ   r-  )r)   r¡   rÂ   r   rb   rœ   )r%   r7   r;   r   r   r   Útest_bug_xmltoolkit25¯  s   

zBugsTest.test_bug_xmltoolkit25c                 C   s<   t  d¡}|  t| d¡ƒg ¡ |  t| d¡ƒdg¡ d S )Nú"<doc><table><tbody/></table></doc>z.//theadz.//tbodyZtbody)r)   r¡   rb   rE   r›   ©r%   r;   r   r   r   Útest_bug_xmltoolkit28·  s   
zBugsTest.test_bug_xmltoolkit28c                 C   sR   t  d¡}t ¡ }t  |¡ |  | ¡ d¡ W d   ƒ d S 1 s"w   Y  d S )Nrf  z$<doc><table><tbody /></table></doc>
)r)   r¡   r   r  r  rb   r5   )r%   r;   r  r   r   r   Útest_bug_xmltoolkitX1¾  s
   


"þzBugsTest.test_bug_xmltoolkitX1c                 C   s¸   t  d¡}|  t  |d¡d¡ t  d¡}|  |jddi¡ |  t  |d¡d¡ t  d¡}|  t  |d¡d	¡ t  d
¡}|  t  |d¡d¡ t  d¡}| dd¡ |  t  |d¡d¡ d S )Ns2   <?xml version='1.0' encoding='iso-8859-1'?><täg />r   s   <tÃ¤g />sD   <?xml version='1.0' encoding='iso-8859-1'?><tag ättr='v&#228;lue' />u   Ã¤ttru   vÃ¤lues   <tag Ã¤ttr="vÃ¤lue" />s:   <?xml version='1.0' encoding='iso-8859-1'?><täg>text</täg>s   <tÃ¤g>text</tÃ¤g>rˆ   r?   )r)   r¡   rb   rÜ   r_   ra   rž   rg  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w   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¡   rb   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                   @   rP  )z5BugsTest.test_bug_xmltoolkit60.<locals>.ExceptionFilec                 S   s   t ‚rH   )rU  ©r%   rj   r   r   r   rê   õ  r@  z:BugsTest.test_bug_xmltoolkit60.<locals>.ExceptionFile.readN)r,   r-   r.   rê   r   r   r   r   ÚExceptionFileô  rQ  rn  )r¸   rU  r)   rç   )r%   rn  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î   rb   r™   r^   )r%   ZENTITIESró   Útr   r   r   Útest_bug_xmltoolkit62ú  s   

ÿzBugsTest.test_bug_xmltoolkit62zSkips under coverage.c                 C   sB   dd„ }|ƒ  t  d ¡}tdƒD ]}|ƒ  q|  t  d ¡|¡ d S )Nc                  S   s,   t  ¡ } |  di ¡ |  d¡ |  d¡ d S )Nr?   r^   )r)   rï   r  rò   rÿ   )r;   r   r   r   Úxmltoolkit63  s   
z4BugsTest.test_bug_xmltoolkit63.<locals>.xmltoolkit63iè  )rN   ÚgetrefcountrÈ   rb   )r%   rs  Ú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
rm  s0   <SomeTag text="def _f():&#10;  return 3&#10;" />r^   )r)   ra   rb   rÜ   r¡   rT   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                   @   rP  )z2BugsTest.test_bug_200708_close.<locals>.EchoTargetc                 S   s
   t  d¡S )Nr…   ©r)   ra   rx   r   r   r   rî   -  rC  z8BugsTest.test_bug_200708_close.<locals>.EchoTarget.closeN©r,   r-   r.   rî   r   r   r   r   Ú
EchoTarget,  rQ  rz  rå   )r)   rë   rí   rb   rî   r?   )r%   ró   rz  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 sWw   Y  |  t|jƒd¡ d S )	Nz{default}elemrÔ   )rv  z%<elem xmlns="default"><elem /></elem>z{not-default}elemzI<elem xmlns="default" xmlns:ns1="not-default"><elem /><ns1:elem /></elem>r7   z<cannot use non-qualified names with default_namespace option)	r)   ra   r/  rb   r<   r¸   r¹   rº   r»   )r%   r¼   Úsr½   r   r   r   Ú!test_bug_200709_default_namespace3  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)   ra   rb   rÜ   Úregister_namespacerÓ  r   r   r   Ú"test_bug_200709_register_namespaceJ  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)   ra   r•   r0  rb   r?   r£   )r%   rª   r   r   r   Útest_bug_200709_element_commentY  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«   rp  )r©   r¨   r©   r«   )r)   ra   r/  r—   rb   rE   ©r%   rª   r¨   r«   r©   r   r   r   Útest_bug_200709_element_inserte  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)   ra   r/  r0  r•   rb   rE   rŸ   )r%   rª   r¨   Z	comment_br   r   r   Útest_bug_200709_iter_commento  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î   rb   r<   )r%   ri   r¼   r   r   r   Útest_bug_1534630y  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>rx  rÓ  r   r   r   Útest_issue6233  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¡   rb   r?   r   rÜ   )r%   r¼   rq  r   r   r   Útest_issue3151  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¡   rb   rE   rÂ   )r%   r7   Znewelemr   r   r   Útest_issue6565“  s
   

zBugsTest.test_issue6565c                 C   s   t  dd¡ t  dd¡ d S )NZ	test10777zhttp://myuri/)r)   r~  rx   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                       ó   e Zd Z‡ fdd„ZdS )z%BugsTest.test_lost_text.<locals>.Textc                    s
   dˆ _ dS )NÚchangedTrm  rx   ©r¼   r   r   Ú__bool__¤  s   z.BugsTest.test_lost_text.<locals>.Text.__bool__N©r,   r-   r.   r  r   rŒ  r   r   r§   £  ó    r§   r?   r‹  )r)   ra   r^   r    r#  r`   rº   rb   ©r%   r§   rÊ   rq  r   rŒ  r   Útest_lost_text¡  s   
zBugsTest.test_lost_textc                    s|   G ‡ fdd„dƒ}t  d¡‰ ˆ  t  d¡¡ |ƒ ˆ d _ˆ  ¡ }t|ƒ}|  ||¡ |  ˆ d jt¡ |  ˆ d jd¡ d S )Nc                       rŠ  )z%BugsTest.test_lost_tail.<locals>.Textc                    s   dˆ d _ dS ©Nr‹  r   Trg  rx   rŒ  r   r   r  ³  ó   
z.BugsTest.test_lost_tail.<locals>.Text.__bool__NrŽ  r   rŒ  r   r   r§   ²  r  r§   r  r?   r   r‹  )	r)   ra   r•   r]   r    r#  r`   rº   rb   r  r   rŒ  r   Útest_lost_tail°  s   
zBugsTest.test_lost_tailc                    sª   G ‡ ‡fdd„dƒ}t  d¡‰ ˆ  t  |ƒ ¡¡ ˆ  t  d¡¡ ˆ  d¡‰ztˆƒ}W n ty9   |  d¡ Y nw |  |j|¡ |  ˆ d jt	¡ |  
ˆ d jd¡ d S )Nc                       s   e Zd Z‡ ‡fdd„ZdS )z$BugsTest.test_lost_elem.<locals>.Tagc                    s   t  d¡ˆ d< tˆƒ dS r’  )r)   ra   r#  )r%   rÕ   ©r¼   rÊ   r   r   Ú__eq__Ã  s   z+BugsTest.test_lost_elem.<locals>.Tag.__eq__N©r,   r-   r.   r–  r   r•  r   r   r¦   Â  s    r¦   r  r?   zgenerators are not reentrantr   r‹  )r)   ra   r•   rŸ   r#  r¹   ÚskipTestr`   r?   rº   rb   )r%   r¦   rq  r   r•  r   Útest_lost_elemÀ  s   

ÿzBugsTest.test_lost_elemc                 C   s.   d| }t  |¡}|  | d¡| d¡¡ d S )Ns   <a b="%s"/>r¨   r   )r)   r¡   rb   rT   Údecode)r%   r^   r—  r  r   r   r   Úcheck_expat224_utf8_bugÔ  s   
z BugsTest.check_expat224_utf8_bugc                 C   s    d}|   |¡ d}|   |¡ d S )Ns   Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã s  xÃ Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã )r›  r?  r   r   r   Útest_expat224_utf8_bugÙ  s   
zBugsTest.test_expat224_utf8_bugc                 C   s‚   t tdƒ}| ¡ }W d   ƒ n1 sw   Y  t |¡}| d¡}| d¡ ¡ }| dd¡}|dd… }|  	| d¡|¡ d S )Nr  r¨   r   rÛ   ru   é   éüÿÿÿ)
ré   ÚUTF8_BUG_XMLFILErê   r)   r¢   rT   rš  ÚstripÚreplacerb   )r%   ÚfpÚrawr  Zxmlattrr^   r   r   r   Útest_expat224_utf8_bug_fileå  s   
ÿ

z$BugsTest.test_expat224_utf8_bug_filec                 C   s.   |   tt ¡ jd¡ |   tt ¡ jdd ¡ d S )Nr?   )r¸   rb  r)   rï   r  rx   r   r   r   Útest_39495_treebuilder_startò  s   z%BugsTest.test_39495_treebuilder_startN)$r,   r-   r.   rd  re  rh  ri  rj  rk  rl  ro  rr  ÚunittestZskipIfrN   Úgettracerv  rw  r{  r}  r  r€  r‚  rƒ  r„  r…  r†  rˆ  r‰  r‘  r”  r™  r›  rœ  r¤  r¥  r   r   r   r   ra  ‘  s>    			


ra  c                   @   ó\   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?   r_   r^   r]   ÚbazrÌ   )r)   ra   r`   r„   r‚   rb   r?   r°   r^   r]   rà   r_   rZ  )r%   r?   r_   Ú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 s3w   Y  |  	||¡ |  
|j|j¡ |  
|j|j¡ |  
|j|j¡ |  
t|ƒt|ƒ¡ t ||¡D ]
\}}|  ||¡ qf|  
|j|j¡ d S )	NrÎ   zElement.copy() not presentrÍ   rª  r«  rÌ   r¬  Úqix)r‚   r)   ra   r¦  ÚSkipTestr•   ZassertWarnsÚDeprecationWarningrÎ   rà   rb   r?   r^   r]   rc   Ú	itertoolsÚzip_longestÚassertIsr_   ©r%   r­  Zelement_foo2r[  r\  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 ]
\}}|  ||¡ qF|  |j|j¡ d S ©NrÍ   rª  r«  rÌ   r¬  r¯  )r)   ra   r•   rÎ   rà   rb   r?   r^   r]   rc   r²  r³  r´  r_   rµ  r   r   r   Útest___copy__5	  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 ]
\}}|  ||¡ qF|  |j|j¡ |  |j|j¡ d|jd< |  |j|j¡ |  |j|j¡ d S r¶  )r)   ra   r•   rÎ   rÏ   rà   rb   r?   r^   r]   rc   r²  r³  r_   rZ  rµ  r   r   r   Útest___deepcopy__M	  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 sAw   Y  |  t¡ t  d¡dg|d d …< W d   ƒ n1 saw   Y  t|dƒr|dd gdd	d
dœ}|  t|j|¡ t|dƒrG dd„ dt jƒ}|dƒg|d d …< |  tt	j
|¡ d S d S )NÚjoer¨   rÌ   rÍ   r   Ú__setstate__r?   r†   r]   r^   )r?   Ú	_childrenr_   r]   r^   Ú__deepcopy__c                   @   rP  )z9BasicElementTest.test_augmentation_type_errors.<locals>.Ec                 S   r>  rH   r   )r%   Úmemor   r   r   r¼  ‚	  r@  zFBasicElementTest.test_augmentation_type_errors.<locals>.E.__deepcopy__N)r,   r-   r.   r¼  r   r   r   r   ÚE	  rQ  r¾  )r)   ra   r¸   rb  r•   r–   r—   rƒ   rº  rÎ   rÏ   )r%   r¼   Ústater¾  r   r   r   Útest_augmentation_type_errorsk	  s0   

ÿÿ
û
û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                   @   ó   e Zd ZdS )z.BasicElementTest.test_cyclic_gc.<locals>.DummyN©r,   r-   r.   r   r   r   r   ÚDummyˆ	  ó    rÃ  r¹  )r†   rÍ   rÐ   rÑ   rÒ   )	r)   ra   ZdummyrefÚweakrefÚrefr	   r°   r/  r•   )r%   rÃ  r©   Úwrefr¼   rÑ   rÐ   rÒ   r   r   r   Útest_cyclic_gc‡	  s2   









zBasicElementTest.test_cyclic_gcc                    sV   d‰ ‡ fdd„}t  d¡}t ||¡}|  |ƒ jd¡ ~|  ˆ 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)   ra   rÅ  rÆ  rb   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Í   rq   r·   rY  )rj   rk   Úzrj   é   )rÔ   rÊ  )r)   ra   rb   rT   )r%   rÐ   r   r   r   Útest_get_keyword_args¶	  s   z&BasicElementTest.test_get_keyword_argsc              	   C   sØ   t dtjd ƒD ]a}t| jddD ]W\}}|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·   rq   ©ÚrepeatrÍ   é*   )rÌ   ztext goes herezopposite of headÚchildZ
grandchildz.//grandchildr   r†   zother valuer'   rÌ   )rÈ   rO   ÚHIGHEST_PROTOCOLr   rJ   ra   r^   r]   r/  r•   r›   rž   r\   rb   r?   r_   rc   rf   )r%   rY   rW   rX   r¼   rÑ   r   r   r   Útest_pickle»	  s"   ÿòÿzBasicElementTest.test_picklec              	   C   s   t dtjd ƒD ]=}t| jddD ]3\}}d}| |¡}t|dƒr+|  | ¡ d d¡ |  	|d|||¡}|  |j
d¡ |  |d	 j
d
¡ qqd S )Nr·   rq   rÒ  z\<?xml version="1.0"?>
                    <group><dogs>4</dogs>
                    </group>Ú__getstate__r?   Úgroupr'   r   Zdogs)rÈ   rO   rÖ  r   rJ   r¢   rƒ   rb   rØ  r\   r?   )r%   rY   rW   rX   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                   @   r¨  )ÚBadElementTestc                    s|   G ‡ fdd„dƒ}|ƒ g‰ t  d¡}z| ˆ ¡ W n	 ty"   Y nw G dd„ d|t jƒ}|dƒg‰ t  d¡}| ˆ ¡ d S )Nc                       ó   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¬  rx  rx   ©ÚLr   r   Ú	__class__à	  s   z<BadElementTest.test_extend_mutable_list.<locals>.X.__class__N©r,   r-   r.   Úpropertyrß  r   rÝ  r   r   ÚXß	  ó    râ  rÍ   c                   @   rÁ  )z2BadElementTest.test_extend_mutable_list.<locals>.YNrÂ  r   r   r   r   ÚYë	  rÄ  rä  rj   ©r)   ra   r–   rb  ©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y&   Y nw G dd„ d|t jƒ}|dƒt  d¡g‰ t  d¡}| ˆ ¡ d S )Nc                       rÜ  )z3BadElementTest.test_extend_mutable_list2.<locals>.Xc                    s   ˆ d d …= t jS rH   rx  rx   rÝ  r   r   rß  ó	  s   
z=BadElementTest.test_extend_mutable_list2.<locals>.X.__class__Nrà  r   rÝ  r   r   râ  ò	  rã  râ  r¬  rÍ   c                   @   rÁ  )z3BadElementTest.test_extend_mutable_list2.<locals>.YNrÂ  r   r   r   r   rä  þ	  rÄ  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                       rŠ  )z3BadElementTest.test_remove_with_mutating.<locals>.Xc                    ó   ˆ d d …= dS )NFr   ©r%   ÚorŒ  r   r   r–  
  r“  z:BadElementTest.test_remove_with_mutating.<locals>.X.__eq__Nr—  r   rŒ  r   r   râ  
  r  râ  rÍ   rÌ   r¬  )r)   ra   r–   r¸   r¹   r˜   ©r%   râ  r   rŒ  r   Útest_remove_with_mutating
  s   

z(BadElementTest.test_remove_with_mutatingc              	   C   s~   t  d¡}t|d|ƒ* |  t¡ t|ƒ W d   ƒ n1 s w   Y  W d   ƒ d S W d   ƒ d S 1 s8w   Y  d S )NrÍ   r?   )r)   ra   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                       rŠ  )z/BadElementTest.test_element_get_text.<locals>.Xc                    s"   zˆ j  W d S  ty   Y d S w rH   )r^   Ú	NameErrorrx   ©r7   r   r   Ú__del__
  s
   ÿz7BadElementTest.test_element_get_text.<locals>.X.__del__N©r,   r-   r.   rò  r   rñ  r   r   râ  
  r  râ  r?   ÚABCDÚEFGHÚIJKLÚABCDEFGHIJKL)	rº   r)   rï   r  rò   rÿ   rî   rb   r^   ©r%   râ  r¨   r   rñ  r   Útest_element_get_text
  s   


z$BadElementTest.test_element_get_textc                    sˆ   G ‡ fdd„dt ƒ}t ¡ }| di ¡ | di ¡ | d¡ | d¡ | |dƒ¡ | d¡ | d¡ | ¡ ‰ |  ˆ d jd	¡ d S )
Nc                       rŠ  )z/BadElementTest.test_element_get_tail.<locals>.Xc                    s&   zˆ d j  W d S  ty   Y d S w r  )r]   rð  rx   rñ  r   r   rò  .
  s
   ÿz7BadElementTest.test_element_get_tail.<locals>.X.__del__Nró  r   rñ  r   r   râ  -
  r  râ  r  r?   rô  rõ  rö  r   r÷  )	rº   r)   rï   r  rÿ   rò   rî   rb   r]   rø  r   rñ  r   Útest_element_get_tail+
  s   



z$BadElementTest.test_element_get_tailc                    s^   G ‡ fdd„dƒ}t  d¡‰ ˆ  t  d¡¡ ˆ d |ƒ …  ˆ  t  d¡¡ ˆ dd|ƒ …  d S )Nc                       rŠ  )z%BadElementTest.test_subscr.<locals>.Xc                    ré  ©Nrq   r   rx   rŒ  r   r   Ú	__index__C
  r“  z/BadElementTest.test_subscr.<locals>.X.__index__N©r,   r-   r.   rü  r   rŒ  r   r   râ  B
  r  râ  r7   rÕ  r   rÆ   )r)   ra   r•   rì  r   rŒ  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                       rŠ  )z)BadElementTest.test_ass_subscr.<locals>.Xc                    s   g ˆ d d …< dS rû  r   rx   rŒ  r   r   rü  Q
  ó   z3BadElementTest.test_ass_subscr.<locals>.X.__index__Nrý  r   rŒ  r   r   râ  P
  r  râ  r7   rÆ   r   rÕ  )r)   ra   rÈ   r—   )r%   râ  rü   r   rŒ  r   Útest_ass_subscrN
  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   ó   g S rH   r   ©rj   rk   r   r   r   Úelement_factory]
  r@  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_start[
  s   

z%BadElementTest.test_treebuilder_startc                 C   sF   dd„ }t j|d}| di ¡ | d¡ |  t|jd¡ ~tƒ  d S )Nc                 S   r  rH   r   r  r   r   r   r  i
  r@  z<BadElementTest.test_treebuilder_end.<locals>.element_factoryr  r?   rô  )r)   rï   r  rò   r¸   r  rÿ   r	   r  r   r   r   Útest_treebuilder_endg
  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                   @   r   )ÚMutatingElementPathc                 G   s   t j| g|¢R Ž }||_|S rH   )rº   Ú__new__r7   )rK   r7   r   r%   r   r   r   r
  u
  s   zMutatingElementPath.__new__c                 C   s   | j d d …= dS rÉ  rñ  rê  r   r   r   r–  y
  rÿ  zMutatingElementPath.__eq__N)r,   r-   r.   r
  r–  r   r   r   r   r	  t
  s    r	  c                   @   rP  )ÚBadElementPathc                 C   s   dd ‚)Nrq   r   r   rê  r   r   r   r–  
  rž  zBadElementPath.__eq__Nr—  r   r   r   r   r  ~
  rQ  r  c                       sX   e Zd Z‡ fdd„Z‡ fdd„Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
‡  ZS )ÚBadElementPathTestc                    s(   t ƒ  ¡  ddlm} |j| _i |_d S ©Nr   r"   )ÚsuperÚsetUpr$   r#   rÉ   Ú
path_cache©r%   r#   ©rß  r   r   r  „
  s   

zBadElementPathTest.setUpc                    s"   ddl m} | j|_tƒ  ¡  d S r  )r$   r#   r  rÉ   r  ÚtearDownr  r  r   r   r  Š
  s   zBadElementPathTest.tearDownc                 C   ó0   t  d¡}| t  d¡g¡ | t|dƒ¡ d S ©NrÍ   rÌ   rj   )r)   ra   r–   r™   r	  rÓ  r   r   r   Útest_find_with_mutating
  ó   
z*BadElementPathTest.test_find_with_mutatingc                 C   óF   t  d¡}| t  d¡g¡ z
| tdƒ¡ W d S  ty"   Y d S w r  )r)   ra   r–   r™   r  ÚZeroDivisionErrorrÓ  r   r   r   Útest_find_with_error”
  ó   
ÿz'BadElementPathTest.test_find_with_errorc                 C   r  r  )r)   ra   r–   rœ   r	  rÓ  r   r   r   Útest_findtext_with_mutatingœ
  r  z.BadElementPathTest.test_findtext_with_mutatingc                 C   r  r  )r)   ra   r–   rœ   r  r  rÓ  r   r   r   Útest_findtext_with_error¡
  r  z+BadElementPathTest.test_findtext_with_errorc                 C   r  r  )r)   ra   r–   r›   r	  rÓ  r   r   r   Útest_findall_with_mutating©
  r  z-BadElementPathTest.test_findall_with_mutatingc                 C   r  r  )r)   ra   r–   r›   r  r  rÓ  r   r   r   Útest_findall_with_error®
  r  z*BadElementPathTest.test_findall_with_error)r,   r-   r.   r  r  r  r  r  r  r  r  Ú__classcell__r   r   r  r   r  ƒ
  s    r  c                   @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )ÚElementTreeTypeTestc                 C   sX   |   tjt¡ |   tjt¡ |   tjt¡ |   tjt¡ |   tjt¡ |   tjt¡ d S rH   )	r`   r)   r&  rú  rÞ  r   ra   rï   rë   rx   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                   @   rÁ  )zDElementTreeTypeTest.test_Element_subclass_trivial.<locals>.MyElementNrÂ  r   r   r   r   Ú	MyElementÁ
  rÄ  r#  rÍ   r¹  )r)   ra   r`   rb   r?   r^   ©r%   r#  Úmyer   r   r   Útest_Element_subclass_trivialÀ
  s   z1ElementTreeTypeTest.test_Element_subclass_trivialc                    sV   G ‡ fdd„dt jƒ‰ ˆ ddddœddd	}|  |jd
¡ |  t| ¡ ƒg d¢¡ d S )Nc                       s"   e Zd Zi f‡‡ fdd„	Z‡  ZS )zHElementTreeTypeTest.test_Element_subclass_constructor.<locals>.MyElementc                    s"   t ˆ | ƒj|d |fi |¤Ž d S )NÚ__)r  rA  )r%   r?   r_   Úextra)r#  rß  r   r   rA  Ï
  s   "zQElementTreeTypeTest.test_Element_subclass_constructor.<locals>.MyElement.__init__)r,   r-   r.   rA  r   r   ©r#  r  r   r#  Î
  s    r#  rÍ   rq   r·   )rª   r¨   rY  é   )r«   r©   Zfoo__))rª   rq   )r¨   r·   )r«   rY  )r©   r*  )r)   ra   rb   r?   rÝ   r}   )r%   r%  r   r)  r   Ú!test_Element_subclass_constructorÍ
  s   ÿz5ElementTreeTypeTest.test_Element_subclass_constructorc                 C   s.   G dd„ dt jƒ}|dƒ}|  | ¡ d¡ d S )Nc                   @   rP  )zGElementTreeTypeTest.test_Element_subclass_new_method.<locals>.MyElementc                 S   ó   | j S rH   r>   rx   r   r   r   Ú	newmethodÙ
  ó   zQElementTreeTypeTest.test_Element_subclass_new_method.<locals>.MyElement.newmethodN)r,   r-   r.   r-  r   r   r   r   r#  Ø
  rQ  r#  r¹  )r)   ra   rb   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                   @   rÁ  )zAElementTreeTypeTest.test_Element_subclass_find.<locals>.MyElementNrÂ  r   r   r   r   r#  à
  rÄ  r#  rÍ   r^   rÌ   r-  rq   r   )r)   ra   r^   r•   rb   rœ   r™   r?   rd   r›   rc   )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/  r2  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Únexttagr^   r-  rt   rÔ   Útogz<tag><empty /></tag>Úempty)	r)   r¡   rÂ   rb   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¡   rb   r™   r_   r~  ÚSyntaxError)r%   Z
LINEAR_XMLr¼   r   r   r   Útest_find_xpath  s   
zElementFindTest.test_find_xpathc                 C   sp  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d ¡ |  t| d¡ƒdg¡ |  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*¡ƒg ¡ |  t| d+¡ƒg ¡ |  t| d,¡ƒg ¡ |  t| d-¡ƒg ¡ |  t| d.¡ƒg ¡ |  t| d/¡ƒdg¡ |  t| d0¡ƒdg¡ |  t| d1¡ƒdg¡ |  t| d2¡ƒdg¡ |  t| d3¡ƒdg¡ |  t| d4¡ƒg ¡ |  t| d5¡ƒg ¡ |  t| d6¡ƒdgd ¡ |  t| d7¡ƒdgd ¡ |  t| d8¡ƒdgd ¡ |  t| d9¡ƒdgd ¡ |  t| d:¡ƒdgd ¡ |  t| d;¡ƒdgd
 ¡ |  t| d<¡ƒdgd
 ¡ |d |d=< |  t| d(¡ƒd d g¡ |  t| d3¡ƒddg¡ d S )>Nr·   rñ  rù   r?   r6  ztog/foor‘   r‡  z.//tagr*  rÀ   zsection//tagz	section/*)r?   r5  Únextsectionz
section//*)r?   r5  r=  r?   zsection/.//*z*/*z*//*z*/tagz*/./tagr4  z././tagz.//tag[@class]rY  z.//tag[@class="a"]z.//tag[@class!="a"]z.//tag[@class="b"]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.//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']z.//tag[.!='subtext']z.//tag[. !='subtext']z.//tag[.!= "subtext"]z.//tag[ . != "subtext" ]z.//tag[. != 'subtext']z.//tag[. != 'subtext ']z.//tag[.!= ' subtext']rq   )r)   r¡   rÂ   r8  rb   rE   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}tagrY  )r)   r¡   rÛ  rb   rE   r›   rÓ  r   r   r   Útest_test_find_with_ns  s   
þþz&ElementFindTest.test_test_find_with_nsc                 C   sÄ   t  d¡}ddi}|  t|jd|dƒd¡ |  t|jd|dƒd¡ ddi}|  t|jd|dƒd	¡ |  t|jd|dƒd¡ ddd
œ}|  t|jd|dƒd¡ |  t|jd|dƒd	¡ d S )Nú–
            <a xmlns:x="X" xmlns:y="Y">
                <x:b><c/></x:b>
                <b/>
                <c><x:b/><b/></c><y:b/>
            </a>Úxxrâ  z.//xx:b)râ  r·   ú.//brä  rq   )rA  rt   )r)   r¡   rb   rc   r›   )r%   r  Únsmapr   r   r   Útest_findall_different_nsmaps—  s   

z-ElementFindTest.test_findall_different_nsmapsc                 C   sÐ  t  d¡}| t  d¡¡ |  t| d¡ƒg d¢¡ |  t| d¡ƒdg¡ |  t| d¡ƒdg¡ |  t| d	¡ƒd
g¡ |  t| d¡ƒddg¡ |  t| d¡ƒdg¡ |  t| d¡ƒt| d¡ƒ¡ |  t| d¡ƒg d¢¡ |  t| d¡|d g ƒt| d¡ƒ¡ |  t| d¡ƒg d¢¡ |  t| d¡ƒddg¡ |  t| d¡ƒddg¡ |  t| d¡ƒd
g¡ |  t| d¡ƒg d¢¡ |  t| d¡ƒddg¡ |  t| d¡ƒt| d¡ƒ¡ d S )Nr@  r   z{*}b)ú{X}br¨   ú{Y}bz{*}cr«   z{X}*rE  z{Y}*rF  rö  r¨   z{}brø  )rE  r¨   r«   rF  rp  r‘   z.//{*}b)rE  r¨   rE  r¨   rF  z.//{*}cz.//{X}*z.//{Y}*z.//{}*)r«   r¨   r«   r¨   z.//{}brB  )r)   r¡   r•   r0  rb   rE   r›   r	  r   r   r   Útest_findall_wildcard¨  sd   
ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿz%ElementFindTest.test_findall_wildcardc                 C   sF   t  t¡}|  td¡ | d¡ W d   ƒ d S 1 sw   Y  d S )Nzcannot use absolute pathz/tag)r)   r¡   rÂ   r~  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 sJw   Y  |  t|ƒdgd ¡ d S )Nr?   r^   r·   z‰This search is broken in 1.3 and earlier, and will be fixed in a future version.  If you rely on the current behaviour, change it to '.+'z//tagrY  )r)   r¡   rÂ   rb   r   r™   r?   rœ   rE   r›   ÚassertWarnsRegexÚFutureWarning)r%   r¼   rs   r   r   r   r   Útest_find_through_ElementTreeÙ  s   
ÿÿz-ElementFindTest.test_find_through_ElementTreeN)r,   r-   r.   r9  r<  r>  r?  rD  rG  rH  rK  r   r   r   r   r3  ï
  s    p
,r3  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 rH   )rE   rŸ   )r%   r7   r?   r   r   r   Ú_ilisté  rF   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Ò  rt   zthis is a paragraph...zthis is a paragraph.z
this is a F)r8   r   rÿ   rå   )ró   z*<root>a&amp;<sub>b&amp;</sub>c&amp;</root>za&b&c&)r)   r¡   rb   rM  r™   r#  rŸ   r?   rú   r    r<   r"  rë   rï   r   r¸   r  )r%   rë  Z
sourcefileró   r;   r   r   r   Ú
test_basicì  s(   
ÿÿ

zElementIterTest.test_basicc                 C   s°   t  d¡}|  |  |¡dg¡ t  |d¡}|  |  |¡ddg¡ t  |d¡}|  |  |¡g d¢¡ t  |d¡}|  |  |¡g d¢¡ |d |d< |d= |  |  |¡ddg¡ d S )	Nrª   r¨   r«   )rª   r¨   r«   r©   )rª   r¨   r«   r©   rq   r   )r)   ra   rb   rM  r/  r  r   r   r   Útest_corners  s   
zElementIterTest.test_cornersc                 C   s¢   t  d¡}|  |  |d¡dgd ¡ |  |  |d¡dgd ¡ |  t|jddƒdgd ¡ g d¢}|  t| ¡ ƒ|¡ |  |  |¡|¡ |  |  |d¡|¡ d S )	NaJ  
            <document>
                <house>
                    <room>bedroom1</room>
                    <room>bedroom2</room>
                </house>
                <shed>nothing here
                </shed>
                <house>
                    <room>bedroom8</room>
                </house>
            </document>ÚroomrY  Úhouser·   r>   )r   rQ  rP  rP  ZshedrQ  rP  r‘   )r)   r¡   rb   rM  rE   rŸ   )r%   rë  Zall_tagsr   r   r   Útest_iter_by_tag  s   
þz ElementIterTest.test_iter_by_tagc                 C   sL   t  d¡}| ¡ }|  t¡ t |¡ W d   ƒ d S 1 sw   Y  d S )Nrª   )r)   ra   rŸ   r¸   rb  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 s+w   Y  qd S )Nrª   rq   )
r)   ra   rŸ   rÈ   rO   rÖ  r¸   rb  rR   rP   )r%   rª   r   rY   r   r   r   r×  @  s   
ÿÿzElementIterTest.test_picklerH   )	r,   r-   r.   rM  rN  rO  rR  rÓ   r×  r   r   r   r   rL  è  s    
rL  c                   @   sŒ   e Zd ZdZdZdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!S )"ÚTreeBuilderTestz <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html>text<div>subtext</div>tail</html>z<toplevel>sometext</toplevel>c                 C   s”   |   |jd¡ |   |jd¡ |   |jd ¡ |   |ji ¡ t|ƒ}|   t|ƒd¡ |d }|   |jd¡ |   |jd¡ |   |jd¡ |   |ji ¡ d S )NrÒ  r^   rq   r   Zdivr-  r]   )rb   r?   r^   r]   r_   rd   rc   )r%   r¼   ÚchildrenrÕ  r   r   r   Ú_check_sample1_elementP  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                   @   rP  )z<TreeBuilderTest.test_dummy_builder.<locals>.BaseDummyBuilderc                 S   ó   dS )NrÔ  r   rx   r   r   r   rî   _  r@  zBTreeBuilderTest.test_dummy_builder.<locals>.BaseDummyBuilder.closeNry  r   r   r   r   ÚBaseDummyBuilder^  rQ  rW  c                   @   s   e Zd Zdd„  Z ZZdS )z8TreeBuilderTest.test_dummy_builder.<locals>.DummyBuilderc                  W   r>  rH   r   )rª   r   r   r   Ú<lambda>c  ó    zATreeBuilderTest.test_dummy_builder.<locals>.DummyBuilder.<lambda>N)r,   r-   r.   rò   r  rÿ   r   r   r   r   ÚDummyBuilderb  s    rZ  rå   rÔ  )r)   rë   rí   Úsample1rb   rî   Úobjectr°   )r%   rW  rZ  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ï   rb   r.  r?   r0  r^   rc   ©r%   r¨   r   r   r   Útest_treebuilder_commentq  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 rH   )rc   )ræ   r^   r   r   r   rX  ˆ  s    z5TreeBuilderTest.test_treebuilder_pi.<locals>.<lambda>)r)   rï   rb   rE  r?   r£   r^   rc   r_  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                   @   rÁ  )z;TreeBuilderTest.test_late_tail.<locals>.TreeBuilderSubclassNrÂ  r   r   r   r   ÚTreeBuilderSubclassŽ  rÄ  rc  z<a>text<!-- comment -->tail</a>Ztexttailrå   z<a>text<?pi data?>tail</a>)r)   rï   r¢   rb   r^   rë   rí   rî   )r%   rc  r—  rª   ró   r   r   r   Útest_late_tailŒ  s    



zTreeBuilderTest.test_late_tailc                 C   sz  G dd„ dt jƒ}d}t jt jddd}| |¡ | ¡ }|  |d jd¡ |  |d jd	¡ |  |jd
¡ t j|ddd}| |¡ | ¡ }|  |d jd¡ |  |d jd	¡ |  |jd
¡ d}t jt jddd}| |¡ | ¡ }|  |d jd¡ |  |d jd¡ |  |jd¡ t j|ddd}| |¡ | ¡ }|  |d jd¡ |  |d jd¡ |  |jd¡ d S )Nc                   @   rÁ  )zKTreeBuilderTest.test_late_tail_mix_pi_comments.<locals>.TreeBuilderSubclassNrÂ  r   r   r   r   rc  §  rÄ  rc  z/<a>text<?pi1?> <!-- comment -->
<?pi2?>tail</a>T)Zinsert_commentsrå   r   rL  z
tailztext z+<a>text<!-- comment -->
<?pi data?>tail</a>)Z
insert_piszpi datar]   ztext
)r)   rï   rë   rí   rî   rb   r^   r]   )r%   rc  r—  ró   rª   r   r   r   Útest_late_tail_mix_pi_comments¤  s6   



z.TreeBuilderTest.test_late_tail_mix_pi_commentsc                 C   s6   t jt jd dd}| | j¡ | ¡ }|  |¡ d S ©Nr  rå   )r)   rë   rï   rí   r[  rî   rU  ©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                   @   rP  )z4TreeBuilderTest.test_subclass.<locals>.MyTreeBuilderc                 S   ó   |d S ©Nr·   r   rm  r   r   r   r{  Ð  rž  z;TreeBuilderTest.test_subclass.<locals>.MyTreeBuilder.foobarN©r,   r-   r.   r{  r   r   r   r   ÚMyTreeBuilderÏ  rQ  rl  rÆ   rÇ   rå   )	r)   rï   rb   r{  rë   rí   r[  rî   rU  ©r%   rl  Ú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                   @   rP  )z?TreeBuilderTest.test_subclass_comment_pi.<locals>.MyTreeBuilderc                 S   ri  rj  r   rm  r   r   r   r{  Þ  rž  zFTreeBuilderTest.test_subclass_comment_pi.<locals>.MyTreeBuilder.foobarNrk  r   r   r   r   rl  Ý  rQ  rl  )r^  ra  rÆ   rÇ   rå   z<!-- a comment--><?and a pi?>)r)   rï   r0  r£   rb   r{  rë   rí   r[  rî   rU  rm  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 rH   )r•   r)   ra   )r?   r_   ©Zlstr   r   Ú	myfactoryí  s   
z7TreeBuilderTest.test_element_factory.<locals>.myfactoryr  rå   Ztoplevel)r)   rï   rë   rí   Úsample2rî   rb   )r%   rr  rn  ró   r   rq  r   Útest_element_factoryë  s   z$TreeBuilderTest.test_element_factoryc                 C   sF   t j|d}t j|d}| | j¡ | ¡ }|  ||¡ |  |¡ d S rf  )r)   rï   rë   rí   r[  rî   r`   rU  )r%   rK   rn  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                   @   rÁ  )z@TreeBuilderTest.test_element_factory_subclass.<locals>.MyElementNrÂ  r   r   r   r   r#    rÄ  r#  )r)   ra   ru  )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                   @   rÁ  )zLTreeBuilderTest.test_element_factory_pure_python_subclass.<locals>.MyElementNrÂ  r   r   r   r   r#    rÄ  r#  )r)   Z_Element_Pyrb   r-   r¹   ru  )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 rH   ©Ú_doctype©r%   rV   ZpubidÚsystemr   r   r   Údoctype  s   z;TreeBuilderTest.test_doctype.<locals>.DoctypeParser.doctypec                 S   r,  rH   ry  rx   r   r   r   rî     r.  z9TreeBuilderTest.test_doctype.<locals>.DoctypeParser.close)r,   r-   r.   rz  r}  rî   r   r   r   r   ÚDoctypeParser  s    r~  rå   ©rÒ  z&-//W3C//DTD XHTML 1.0 Transitional//ENz7http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd)r)   rë   rí   r[  rb   rî   )r%   r~  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 s+w   Y  qt j|tdd dD ]}t j||tdd}| | j¡ |  | ¡ ¡ q<d 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 rH   ©Úraise_inÚwhat)r%   r‚  rƒ  r   r   r   rA  '  s   
zKTreeBuilderTest.test_builder_lookup_errors.<locals>.RaisingBuilder.__init__c                 S   s"   || j kr|  | j ¡‚dd„ }|S )Nc                  W   r>  rH   r   )r   r   r   r   Úhandle.  r@  z^TreeBuilderTest.test_builder_lookup_errors.<locals>.RaisingBuilder.__getattr__.<locals>.handler  )r%   rV   r„  r   r   r   Ú__getattr__+  s   
zNTreeBuilderTest.test_builder_lookup_errors.<locals>.RaisingBuilder.__getattr__)r,   r-   r.   r¹   rA  r…  r   r   r   r   ÚRaisingBuilder&  s    r†  rå   )r  rò   rÿ   r.  rE  )rƒ  )	r)   rë   r~  r¹   r  rí   r[  r°   rî   )r%   r†  r  ró   r   r   r   Útest_builder_lookup_errors%  s   ÿýz*TreeBuilderTest.test_builder_lookup_errorsN)r,   r-   r.   r[  rs  rU  r]  r`  rb  rd  re  rh  ro  rp  rt  ru  rv  rx  r€  r‡  r   r   r   r   rS  H  s$    $	rS  c                   @   sP   e Zd ZdZdZdZdd„ Zdd„ Zdd	„ Zd
d„ Z	dd„ Z
dd„ Zdd„ ZdS )ÚXMLParserTests   <file><line>22</line></file>sŠ   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html>text</html>uX   <?xml version="1.0" encoding="iso-8859-1"?>
<money value="$Â£â‚¬ð…»">$Â£â‚¬ð…»</money>c                 C   s6   |   |jd¡ |   |d jd¡ |   |d jd¡ d S )Nr:   r   ÚlineZ22)rb   r?   r^   rÓ  r   r   r   Ú_check_sample_elementH  s   z#XMLParserTest._check_sample_elementc                 C   s0   t jdt  ¡ d}| | j¡ |  | ¡ ¡ d S )Nr   )r0   ræ   )r)   rë   rï   rí   r[  rŠ  rî   )r%   Zparser2r   r   r   Útest_constructor_argsM  s
   ÿz#XMLParserTest.test_constructor_argsc                 C   s6   G dd„ dt jƒ}|ƒ }| | j¡ |  | ¡ ¡ d S )Nc                   @   rÁ  )z-XMLParserTest.test_subclass.<locals>.MyParserNrÂ  r   r   r   r   ÚMyParserT  rÄ  rŒ  )r)   rë   rí   r[  rŠ  rî   )r%   rŒ  ró   r   r   r   ro  S  s   zXMLParserTest.test_subclassc                 C   sV   t  ¡  t  dt¡ t ¡ }| | j¡ | ¡  W d   ƒ d S 1 s$w   Y  d S )NÚerror)	ÚwarningsÚcatch_warningsÚsimplefilterr±  r)   rë   rí   rs  rî   r$  r   r   r   Útest_doctype_warningZ  s   

"üz"XMLParserTest.test_doctype_warningc                    s   d ‰ G ‡ fdd„dt jƒ}|ƒ }|  td¡ | | j¡ W d   ƒ n1 s'w   Y  | ¡  |  ˆ ¡ d  ‰ ‰t 	¡ 9 t 
dt¡ t 
dt¡ G ‡fdd„dƒ}||ƒ d}| | j¡ | ¡  |  ˆ ¡ |  ˆd¡ W d   ƒ d S 1 syw   Y  d S )	Nc                       rŠ  )z@XMLParserTest.test_subclass_doctype.<locals>.MyParserWithDoctypec                    s   ||f‰ d S rH   r   )r%   r   r   ry  r   r   r}  d  s   zHXMLParserTest.test_subclass_doctype.<locals>.MyParserWithDoctype.doctypeN©r,   r-   r.   r}  r   ry  r   r   ÚMyParserWithDoctypec  r  r“  r}  r  c                       rŠ  )z:XMLParserTest.test_subclass_doctype.<locals>.DoctypeParserc                    s   |||f‰ d S rH   r   r{  ©Ú	_doctype2r   r   r}  s  rM   zBXMLParserTest.test_subclass_doctype.<locals>.DoctypeParser.doctypeNr’  r   r”  r   r   r~  r  r  r~  rå   r  )r)   rë   rI  ÚRuntimeWarningrí   rs  rî   r°   rŽ  r  r  r±  rb   )r%   r“  ró   r~  r   )rz  r•  r   Útest_subclass_doctypea  s*   ÿ


ÿ"ôz#XMLParserTest.test_subclass_doctypec                 C   st   	 t  ¡ + t  dt¡ t  dt¡ G dd„ dtjƒ}|ƒ }| | j¡ | 	¡  W d   ƒ d S 1 s3w   Y  d S )Nr  c                   @   rÁ  )zDXMLParserTest.test_inherited_doctype.<locals>.MyParserWithoutDoctypeNrÂ  r   r   r   r   ÚMyParserWithoutDoctype„  rÄ  r˜  )
rŽ  r  r  r±  r–  r)   rë   rí   rs  rî   )r%   r˜  ró   r   r   r   Útest_inherited_doctype  s   

"ùz$XMLParserTest.test_inherited_doctypec                 C   sV   t jt  ¡ d}| | j¡ | ¡ }|  |jd¡ |  |jd d¡ |  |j	d¡ d S )Nrå   Zmoneyrz   u
   $Â£â‚¬ð…»)
r)   rë   rï   rí   Úsample3rî   rb   r?   r_   r^   rg  r   r   r   Útest_parse_stringŠ  s   zXMLParserTest.test_parse_stringN)r,   r-   r.   r[  rs  rš  rŠ  r‹  ro  r‘  r—  r™  r›  r   r   r   r   rˆ  ?  s    rˆ  c                   @   rP  )ÚNamespaceParseTestc                 C   s`   dddœ}t  t¡}|  t| d|¡ƒd¡ |  t| d|¡ƒd¡ |  t| d|¡ƒd¡ d S )	NZhellorÍ   )Úhrñ   z{hello}tablerq   z.//{hello}tdr·   z.//{foo}name)r)   r¢   ÚSAMPLE_XML_NS_ELEMSrb   rc   r›   )r%   rC  rë  r   r   r   Útest_find_with_namespace”  s
   

z+NamespaceParseTest.test_find_with_namespaceN)r,   r-   r.   rŸ  r   r   r   r   rœ  “  rQ  rœ  c                   @   sl   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ ZdS )ÚElementSlicingTestc                 C   s   dd„ |D ƒS )Nc                 S   r=   r   r>   )rA   r¼   r   r   r   rB   Ÿ  rC   z1ElementSlicingTest._elem_tags.<locals>.<listcomp>r   )r%   Zelemlistr   r   r   Ú
_elem_tagsž  rF   zElementSlicingTest._elem_tagsc                 C   s   |   t|ƒ¡S rH   )r¡  rd   r1  r   r   r   Ú_subelem_tags¡  rF   z ElementSlicingTest._subelem_tagsc                 C   s.   	 t  d¡}t|ƒD ]
}t  |d| ¡ q
|S )Nrª   za%s)r)   ra   rÈ   r/  )r%   Znumchildrenr¼   rÊ   r   r   r   Ú_make_elem_with_children¤  s
   
z+ElementSlicingTest._make_elem_with_childrenc                    sZ   |   d¡‰ |  ˆ d jd¡ |  ˆ d jd¡ |  t‡ fdd„¡ |  t‡ fdd„¡ d S )	NrÆ   rq   Úa1éþÿÿÿÚa8c                      ó   ˆ d S )Né   r   r   rŒ  r   r   rX  ´  ó    z?ElementSlicingTest.test_getslice_single_index.<locals>.<lambda>c                      r§  )Niôÿÿÿr   r   rŒ  r   r   rX  µ  r©  )r£  rb   r?   r¸   Ú
IndexErrorrx   r   rŒ  r   Útest_getslice_single_index®  s
   
z-ElementSlicingTest.test_getslice_single_indexc                 C   sÂ   |   d¡}|  |  |dd … ¡g d¢¡ |  |  |dd… ¡g d¢¡ |  |  |dd… ¡g d¢¡ |  |  |dd… ¡ddg¡ |  |  |dd… ¡ddg¡ |  |  |d d	… ¡d
dg¡ d S )Nr  rY  )Úa3Úa4Úa5é   r  r¬  r­  rp  r·   Úa0r¤  )r£  rb   r¡  rÓ  r   r   r   Útest_getslice_range·  s   
"z&ElementSlicingTest.test_getslice_rangec              	   C   sÒ   |   d¡}|  |  |ddd… ¡ddg¡ |  |  |d d d… ¡g d¢¡ |  |  |d d d… ¡ddg¡ |  |  |dd d… ¡d	dg¡ |  |  |dd tj… ¡d
g¡ |  |  |dd tjd> … ¡d
g¡ d S )NrÆ   é   rq   r¦  Úa9rY  )r°  r¬  Za6r³  r°  r¤  r¬  é@   ©r£  rb   r¡  rN   Ú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*  rp  )r¬  Úa2r¤  r°  r¥  r¬  r¤  rY  rq   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¬  rp  r¥  r°  rq   r¤  )r£  rb   r¢  rÓ  r   r   r   Útest_delsliceÔ  s$   







z ElementSlicingTest.test_delslicec                 C   sÜ   |   d¡}t d¡|d< |  |  |¡g d¢¡ t d¡|d< |  |  |¡g d¢¡ |  t¡ t d¡|d	< W d   ƒ n1 s@w   Y  |  t¡ t d¡|d
< W d   ƒ n1 s\w   Y  |  |  |¡g d¢¡ d S )Nr*  r¨   rq   ©r°  r¨   r¸  r¬  r«   r¥  )r°  r¨   r«   r¬  r©   r  éûÿÿÿ)r£  r)   ra   rb   r¢  r¸   rª  rÓ  r   r   r   Útest_setslice_single_indexí  s   
ÿÿz-ElementSlicingTest.test_setslice_single_indexc                 C   s¬   |   d¡}dd„ tdƒD ƒ|dd…< |  |  |¡g d¢¡ |   d¡}t d¡g|dd…< |  |  |¡g d	¢¡ |   d¡}d
d„ tdƒD ƒ|dd…< |  |  |¡g d¢¡ d S )Nr*  c                 S   ó   g | ]	}t  d | ¡‘qS ©zb%srx  ©rA   rÊ   r   r   r   rB   ý  r  z:ElementSlicingTest.test_setslice_range.<locals>.<listcomp>r·   rq   rY  )r°  Úb0Úb1r¬  r¨   )r°  r¨   r¬  c                 S   r¾  r¿  rx  rÀ  r   r   r   rB     r  )r°  rÁ  rÂ  Úb2r¬  )r£  rÈ   rb   r¢  r)   ra   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>w   Y  |  t¡ d	d„ td
ƒD ƒ|ddd…< W d   ƒ n1 saw   Y  |  t¡ g |ddd…< W d   ƒ n1 s}w   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   r¾  r¿  rx  rÀ  r   r   r   rB   
  r  z:ElementSlicingTest.test_setslice_steps.<locals>.<listcomp>r·   rq   r  )r°  rÁ  r¸  rÂ  r­  r®  r¨   c                 S   r¾  r¿  rx  rÀ  r   r   r   rB     r  rY  )r°  r¤  r¸  r¬  r­  r®  r*  r»  r«   r´  ©r°  r«   r¸  r¬  ©
r£  rÈ   rb   r¢  r¸   r¹   r)   ra   rN   r¶  rÓ  r   r   r   Útest_setslice_steps  s&   

ÿÿÿ
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>w   Y  |  t¡ d	d„ td
ƒD ƒ|ddd…< W d   ƒ n1 saw   Y  |  t¡ g |ddd…< W d   ƒ n1 s}w   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   r¾  r¿  rx  rÀ  r   r   r   rB     r  zCElementSlicingTest.test_setslice_negative_steps.<locals>.<listcomp>r·   r   rp  )r°  rÂ  rÁ  r¬  r¨   c                 S   r¾  r¿  rx  rÀ  r   r   r   rB   %  r  rY  )r°  r¤  r¸  r¬  rq   r»  r«   rÅ  r©   r´  )r°  r©   r¸  r¬  rÆ  rÓ  r   r   r   Útest_setslice_negative_steps  s*   

ÿÿÿ
z/ElementSlicingTest.test_setslice_negative_stepsN)r,   r-   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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 ]-}|  |¡ |  t||dd¡ |  t|| ¡ dd¡ W d   ƒ q1 s:w   Y  qdD ]9}|  |¡* |  t||dd|  |¡¡ | ¡ }|  t||dd|  |¡¡ W d   ƒ qB1 svw   Y  qBt  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Ü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|  |¡¡ qOd 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>r{   z"<tag key="&lt;&amp;&quot;'&gt;" />s"   <tag key="&lt;&amp;&quot;'&gt;" />zF<?xml version='1.0' encoding='%s'?>
<tag key="&lt;&amp;&quot;'&gt;" />u   Ã¥Ã¶Ã¶<>u   <tag>Ã¥Ã¶Ã¶&lt;&gt;</tag>s   <tag>Ã¥Ã¶Ã¶&lt;&gt;</tag>s%   <tag>&#229;&#246;&#246;&lt;&gt;</tag>u=   <?xml version='1.0' encoding='%s'?>
<tag>Ã¥Ã¶Ã¶&lt;&gt;</tag>u   <tag key="Ã¥Ã¶Ã¶&lt;&gt;" />s   <tag key="Ã¥Ã¶Ã¶&lt;&gt;" />s(   <tag key="&#229;&#246;&#246;&lt;&gt;" />)rš  r   r¢  r¡  rÊ  u@   <?xml version='1.0' encoding='%s'?>
<tag key="Ã¥Ã¶Ã¶&lt;&gt;" />)	r)   ra   r^   rb   r<   r’  ÚupperrÃ   r_   )r%   r7   ÚencrË  r   r   r   rÑ  4  sº   
ÿÿýÿþÿþû
	ÿÿÿþ

ÿÿÿþ
ÿÿÿþ

ÿÿÿþÿzIOTest.test_encodingc                 C   sh   |   tjt¡ t t d¡¡}| t¡ ttdƒ}|  	| 
¡ d¡ W d   ƒ d S 1 s-w   Y  d S )Nú<site />r  ó   <site />)r'  r   r(  r   r)   r   r¡   r4   ré   rb   rê   ©r%   r;   rñ   r   r   r   Útest_write_to_filenamey  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.w   Y  ttdƒ}|  | ¡ d¡ W d   ƒ d S 1 sLw   Y  d S )NrÍ  rÊ  r   rä   r/   r  rÎ  ©r'  r   r(  r   r)   r   r¡   ré   r4   r$  r%  rb   rê   rÏ  r   r   r   Útest_write_to_text_file€  s   þ"ÿzIOTest.test_write_to_text_filec                 C   sž   |   tjt¡ t t d¡¡}ttdƒ}| |¡ |  	|j
¡ W d   ƒ n1 s*w   Y  ttdƒ}|  | ¡ d¡ W d   ƒ d S 1 sHw   Y  d S )NrÍ  r!  r  rÎ  rÑ  rÏ  r   r   r   Útest_write_to_binary_file‰  s   
þ"ÿz IOTest.test_write_to_binary_filec                 C   s0  |   tjt¡ t t d¡¡}ttdƒ}|j|dd |  	|j
¡ W d   ƒ n1 s,w   Y  ttdƒ}|  | ¡ d d¡¡ W d   ƒ n1 sLw   Y  ttddd}|j|dd |  	|j
¡ W d   ƒ n1 spw   Y  ttdƒ}|  | ¡ d d¡¡ W d   ƒ d S 1 s‘w   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é   r4   r$  r%  rb   rê   rÃ   rÏ  r   r   r   Ú"test_write_to_binary_file_with_bom’  s,   þ
þÿþ
þ"ÿz)IOTest.test_write_to_binary_file_with_bomc                 C   ó2   t  ¡ }t d¡}| |¡ |  | ¡ jd¡ d S ©Nz"<?xml version="1.0"?><site></site>Úsite)r)   r   r1   r3   rç   rb   r’   r?   ©r%   r;   rð   r   r   r   Útest_read_from_stringio¦  ó   

zIOTest.test_read_from_stringioc                 C   s:   t  t  d¡¡}t ¡ }|j|dd |  | ¡ d¡ d S ©NrÍ  r/   rä   )r)   r   r¡   r1   r3   r4   rb   r5   rÚ  r   r   r   Útest_write_to_stringio¬  s   zIOTest.test_write_to_stringioc                 C   r×  ©Ns"   <?xml version="1.0"?><site></site>rÙ  )r)   r   r1   r2   rç   rb   r’   r?   ©r%   r;   r£  r   r   r   Útest_read_from_bytesio²  rÜ  zIOTest.test_read_from_bytesioc                 C   s6   t  t  d¡¡}t ¡ }| |¡ |  | ¡ d¡ d S ©NrÍ  rÎ  )r)   r   r¡   r1   r2   r4   rb   r5   rà  r   r   r   Útest_write_to_bytesio¸  s   
zIOTest.test_write_to_bytesioc                   @   rÁ  )zIOTest.dummyNrÂ  r   r   r   r   Údummy¾  rÄ  rä  c                 C   sB   t  d¡}|  ¡ }|j|_t ¡ }| |¡ |  | ¡ j	d¡ d S rØ  )
r1   r3   rä  rê   r)   r   rç   rb   r’   r?   )r%   rð   Úreaderr;   r   r   r   Útest_read_from_user_text_readerÁ  s   

z&IOTest.test_read_from_user_text_readerc                 C   sJ   t  t  d¡¡}t ¡ }|  ¡ }|j|_|j|dd |  | ¡ d¡ d S rÝ  )	r)   r   r¡   r1   r3   rä  r4   rb   r5   )r%   r;   rð   Úwriterr   r   r   Útest_write_to_user_text_writerÉ  s   z%IOTest.test_write_to_user_text_writerc                 C   sJ   t  d¡}|  ¡ }|j|_t ¡ }| |¡ |  | ¡ j	d¡ t ¡ }d S rß  )
r1   r2   rä  rê   r)   r   rç   rb   r’   r?   )r%   r£  rå  r;   r   r   r   Ú!test_read_from_user_binary_readerÑ  s   

z(IOTest.test_read_from_user_binary_readerc                 C   sF   t  t  d¡¡}t ¡ }|  ¡ }|j|_| |¡ |  | ¡ d¡ d S râ  )	r)   r   r¡   r1   r2   rä  r4   rb   r5   ©r%   r;   r£  rç  r   r   r   Ú test_write_to_user_binary_writerÚ  s   
z'IOTest.test_write_to_user_binary_writerc                 C   sb   t  t  d¡¡}t ¡ }|  ¡ }|j|_dd„ |_|j|_|j|dd |  	| 
¡ d d¡¡ d S )NrÍ  c                   S   rV  rÉ  r   r   r   r   r   rX  ç  rY  zBIOTest.test_write_to_user_binary_writer_with_bom.<locals>.<lambda>r   rä   rÔ  )r)   r   r¡   r1   r2   rä  r4   ÚseekableÚtellrb   r5   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/   rt   r   r÷   )r)   r¢   rb   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¢   rb   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É  3  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 rH   )r`   r)   r&  r;  rx   r   r   r   ro    rp   zParseErrorTest.test_subclassc              
   C   s<   zt  |¡ W d S  t jy } z|W  Y d }~S d }~ww rH   )r)   r¢   r&  )r%   r|  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Í   )rq   r   z<tag>&foo;</tag>)rq   r  zfoobar<)rq   r  )rb   rò  Zpositionrx   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.errorsZparsersZexpatÚerrorsrb   rò  ÚcodeZcodesZXML_ERROR_SYNTAX)r%   ZERRORSr   r   r   Útest_error_code  s   
ÿzParseErrorTest.test_error_codeN)r,   r-   r.   ro  rò  ró  rö  r   r   r   r   rñ    s
    rñ  c                   @   rP  )Ú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 sÆw   Y  |  td¡ t jddd W d   ƒ d S 1 säw   Y  d S )Nz
<a>foo</a>rª   )Úpathrâ  )rø  rÔ   râ  ú#rÍ   )rV  rn  )r_   )rV  )rn  r   r{  Zkey1Zvalue1zmust be dict, not strzI'm not a dict)r)   r¡   rb   r™   rœ   r›   rd   rš   ra   r_   rS   r?   r/  r~  rb  )r%   rj   Úelementsr¼   rÑ   r   r   r   Útest_issue14818  s>   
ÿÿÿÿûÿ"ÿzKeywordArgsTest.test_issue14818N)r,   r-   r.   rû  r   r   r   r   r÷    s    r÷  c                   @   r   )ÚNoAcceleratorTestc                 C   s   t st d¡‚d S )Nzonly for the Python version)rI   r¦  r°  rx   r   r   r   r  >  s   
ÿzNoAcceleratorTest.setUpc                 C   s(   |   tjjtj¡ |   tjjtj¡ d S rH   )r`   rI   ra   rA  ÚtypesÚFunctionTyperë   rx   r   r   r   Útest_correct_import_pyETC  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 rH   )rI   Úcanonicalize)r—  r9   r   r   r   Úc14n_roundtripM  r9  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>)rb   r  rÐ  r   r   r   Útest_simple_roundtripW  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>)rS  rT  rb   r  rÐ  r   r   r   Útest_c14n_exclusion  sF   

þþþ
ÿýþþ	þþzC14NTest.test_c14n_exclusionc                    sô  t ddd}ttjj|ƒ‰dd„ tt |¡ƒD ƒ‰dd„ ˆD ƒ}‡fdd„ˆD ƒ‰ ‡ ‡fd	d„|D ƒ}|  d
tdd„ | 	¡ D ƒƒ¡ d/dd„}| 
¡ D ]+\}}|D ]#\}}||dƒdk}	||dƒdk}
||dƒdk}d|v rdd„ |d d  d¡D ƒ}dd„ |d d  d¡D ƒ}nd  }}d dd„ t| 
¡ ƒD ƒ¡}|  |› d|› d¡Ã |dkr¹|s¹|  d|› ¡ |d krÇ|sÇ|  d|› ¡ d|v rÞ|d d  d!¡d urÞ|  d"|› ¡ ˆ|d# ƒ}|d$kr$tˆd%ƒd&ƒ+}t|d&ƒ}t | ¡  d'| ¡ ¡¡}W d   ƒ n	1 sw   Y  W d   ƒ n	1 sw   Y  tj||	|
|||d(}tˆ|d# ƒd)d*d+}| ¡ }|d,krP| d-d.¡}| d-d.¡}W d   ƒ n	1 s[w   Y  |  ||¡ W d   ƒ qR1 sqw   Y  qRqKd S )0Nzc14n-20r   r   c                 S   s"   g | ]}|  d ¡r|dd… ‘qS )ú.xmlNrž  )Úendswith©rA   Úfilenamer   r   r   rB   Ó  s    ÿz+C14NTest.test_xml_c14n2.<locals>.<listcomp>c                 S   s   g | ]	}|  d ¡r|‘qS )Úin)Ú
startswithr
  r   r   r   rB   Õ  s    þÿc                    s8   i | ]}|  d ¡r|dd„ t ˆ |ƒd ¡ ¡ D ƒ“qS )Zc14nc                 S   s,   i | ]}|j  d ¡d |jpd ¡ |f“qS )ú}rp  rt   )r?   Úsplitr^   r   )rA   Z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 | ]!}|  d ˆ› d¡r| dd¡d ˆ v r|ˆ | dd¡d  f‘qS )Zout_rü   rq   rp  )r  Úrsplitr
  )ÚconfigsÚ
input_filer   r   rB   ä  s    ýüÿz6C14NTest.test_xml_c14n2.<locals>.<dictcomp>.<listcomp>r   )rA   )r  Úfiles)r  r   r  ã  s    úþÿé   c                 S   s   g | ]	}|D ]}|‘qqS r   r   )rA   Úoutput_filesÚoutput_filer   r   r   rB   î  s    þÿÿc                 S   s   |   ||df¡d S )Nr   r   ©rT   )ÚconfigZoption_namerÔ   r   r   r   Ú
get_optionò  rp   z+C14NTest.test_xml_c14n2.<locals>.get_optionZIgnoreCommentsÚtrueZTrimTextNodesZPrefixRewriteZ
sequentialZ
QNameAwarec                 S   ó(   g | ]}d |  d¡› d|  d¡› ‘qS ©ú{ZNSr  ÚNamer  rh  r   r   r   rB   þ  ó    ÿÿrq   z/{http://www.w3.org/2010/xml-c14n2}QualifiedAttrc                 S   r  r  r  rh  r   r   r   rB     r!  z){http://www.w3.org/2010/xml-c14n2}Elementú,c                 s   s:    | ]\}\}}|› d |pd  dd„ |D ƒ¡› V  qdS )ú=r"  c                 s   s     | ]}|j  d ¡d V  qdS )r  rp  N)r?   r  )rA   r«   r   r   r   Ú	<genexpr>  s   € z4C14NTest.test_xml_c14n2.<locals>.<genexpr>.<genexpr>N)rú   )rA   rV   rz   rT  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Úrr  rä   ZinC14N3z attr="default"rt   rH   )r   r   Úosrø  rú   rÝ   Úlistdirrb   rc   Úvaluesr}   r›   r’  r˜  r™   ré   r1   r2   rê   r¡  r)   r   )r%   ZdatadirZinput_filesZtestsr  r  r  r  r  Zkeep_commentsr  r'  ZqattrsZqtagsZconfig_descrrñ   Zentity_filer^   rn   r   )r  r  r  r   Útest_xml_c14n2Ï  s¶   ÿ
ú
ù
ÿ
ÿÿÿÿÿÿÿþÿþ

þÿÿÿÿÿ
ÿ€ÿû
€û àåÿzC14NTest.test_xml_c14n2)r,   r-   r.   ZmaxDiffr  r  r,  r   r   r   r   r  Q  s
    (Pr  c                 C   s6  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r-| tg¡ ddlm} tjj}| ¡ }|j}| ¡ |_ttdƒrQt tjtj ¡}nd }z't!j"|Ž  W ddlm} | #¡  | $|¡ ||_|d urutj|Ž  d  aad S ddlm} | #¡  | $|¡ ||_|d ur–tj|Ž  d  aaw )Nr'   r(   )Zblockedr   r"   Ú_set_factories)%r   rI   r)   r   r   r©  rÛ  r  rm   rÉ  rñ  rQ  r!  r3  rL  rS  rˆ  r  ra  r÷  r  r–   rü  r$   r#   r~  Z_namespace_maprÎ   rÉ   rƒ   r-  r0  r£   r   Zrun_unittestr   rp  )ÚmoduleZtest_classesr#   rC  Z
nsmap_copyr  Zold_factoriesr   r   r   Ú	test_main6  sj   ÿîÿ



ø


r/  Ú__main__)Tr/   rH   )QrÎ   r   rÒ  r1   r²  r‡  rg   r)  rO   rN   rS  rý  r¦  rŽ  rÅ  r   r   r   r   r   Ztest.supportr   r   r   r	   r
   Ztest.support.import_helperr   Ztest.support.os_helperr   rI   r)   rÄ   rÃ   ÚUnicodeEncodeErrorr°  rè   rŸ  rÂ   r8  rÛ  rž  rØ  rÙ  r  r   ZTestCaser   r<   rE   rG   rm   r  rS  ÚformatÚescaper_  rQ  ra  r©  rÛ  rº   r	  Ú__hash__r  r  r!  r3  rL  rS  rˆ  rœ  r   rÉ  rñ  r÷  rü  r  r  r/  r,   r   r   r   r   Ú<module>   sà   
ÿ




#         & w	ú	 7  l c 48 z` xT
  R$ 
f
E
ÿ