Your IP : 216.73.216.213


Current Path : /proc/242857/root/opt/alt/python34/lib64/python3.4/test/__pycache__/
Upload File :
Current File : //proc/242857/root/opt/alt/python34/lib64/python3.4/test/__pycache__/test_xml_etree.cpython-34.pyc

�
f f?��
@sdddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
mZddlm
Z
ddlmZmZmZmZdadaeddd�Zyejd�Wn!ek
rejd	��YnXed
dd�ZdZdZd
ZdZdZGdd�dej�Z dddd�Z!dd�Z"Gdd�d�Z#Gdd�dej�Z$Gdd�dej�Z%iZ&de&d<d e&d!<d"e&d#<d$e&d%<d&e&d'<d(e&d)<d*e&d+<d,e&d-<d.j'ej(ed��e&d/<iZ)d0e)d1<d2e)d3<Gd4d5�d5ej�Z*Gd6d7�d7ej�Z+Gd8d9�d9e#ej�Z,Gd:d;�d;e#ej�Z-Gd<d=�d=e.�Z/e.j0e/_0Gd>d?�d?e.�Z1e.j0e1_0Gd@dA�dAe#ej�Z2GdBdC�dCej�Z3GdDdE�dEej�Z4GdFdG�dGej�Z5GdHdI�dIej�Z6GdJdK�dKej�Z7GdLdM�dMej�Z8GdNdO�dOej�Z9GdPdQ�dQej�Z:GdRdS�dSej�Z;GdTdU�dUej�Z<GdVdW�dWej�Z=GdXdY�dYe>�Z?ddZd[�Z@eAd\kr`e@�ndS)]�N)�product)�support)�TESTFN�findfile�import_fresh_module�
gc_collectz
simple.xmlZsubdirZxmltestdatazutf-8z!filename is not encodable to utf8z
simple-ns.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>
c@seZdZdd�ZdS)�
ModuleTestcCs4ddlm}ddlm}ddlm}dS)Nr)�ElementTree)�ElementInclude)�ElementPath)�	xml.etreer	r
r)�selfr	r
r�r�8/opt/alt/python34/lib64/python3.4/test/test_xml_etree.py�test_sanity`szModuleTest.test_sanityN)�__name__�
__module__�__qualname__rrrrrr]srT�unicodecKsq|dkrtj�}ntj�}tj|�}|j|d||�|r\|j�S|jd�|SdS)Nr�encodingr)�io�BytesIO�StringIO�ETr	�write�getvalue�seek)�elem�	to_stringrZoptions�file�treerrr�	serializehs

r!cCsdd�|D�S)NcSsg|]}|j�qSr)�tag)�.0rrrr�
<listcomp>vs	z"summarize_list.<locals>.<listcomp>r)�seqrrr�summarize_listusr&c@s:eZdZedd��Zdd�Zdd�ZdS)�ElementTestCasecCstth|_dS)N)�pyETr�modules)�clsrrr�
setUpClasszszElementTestCase.setUpClasscCs�tj|}z�y?|tj|<tj||�}|tj|<tj|�}Wn}tjk
r�}	zZttdftdfg�}
t	j
d||
j||�|
j||�f�|	�WYdd}	~	XnXWd|tj|<X|S)NZcETr(z%Failed to round-trip %r from %r to %r)�sysr)�pickle�dumps�loads�
PicklingError�dictrr(rZ
TestFailed�get)r
�obj�name�dumper�loader�protoZsave_mZtemp�resultZpeZhumanrrr�pickleRoundTrip~s


	3zElementTestCase.pickleRoundTripcCs�|j|tjtjf�|j|tjtjf�|jtt|��tt|���x-t||�D]\}}|j||�qpWt	j
dddd�}|j||�||��dS)Nr"�tail�text�attrib)�assertIsInstancer�Elementr(�assertEqual�len�list�zip�assertEqualElements�operator�
attrgetter)r
Zalice�bob�x�yZ
propertiesrrrrC�s(z#ElementTestCase.assertEqualElementsN)rrr�classmethodr+r9rCrrrrr'ysr'c@sTeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3d4�Zd5d6�Zd7S)8�ElementTreeTestcCs|jt|�|�dS)N)r?r!)r
r�expectedrrr�serialize_check�szElementTreeTest.serialize_checkcsC�fdd���fdd������fdd��tjd�}�|�tj|�}�|j��tjdd	d
�}tj|�}�jt|�d�tjdd	d
�}�fdd
���|j��|j��|j��|j	��|j
��|j��|j��|j
��|j��|j��|j��|j��|j��|j��|j��|j��|j��fdd�}||jd��||jd��||jd��||jd���jtjtj��jtjtj�dS)Ncsat|�x.|D]&}�jt|�ddd|�qW|d}|d}|dd�dS)N��msgz%expected one-character string, got %r�� r)r@r?)�string�charZ
new_string)r
rr�check_string�s



z4ElementTreeTest.test_interface.<locals>.check_stringcsmt|�|j�}|j�}x|D]}||}q)Wd|d<�j|dddd|d�dS)N�value�keyrNzexpected value string, got %r)r@�keys�itemsr?)�mappingrVrWrU�item)r
rr�
check_mapping�s


z5ElementTreeTest.test_interface.<locals>.check_mappingcs�jtj|�dd��jt|d�dd��jt|d�dd��jt|d�dd��jt|d	�dd
��|j��|j�|jdk	r��|j�n|jdk	r��|j�nx|D]}�|�q�WdS)NrNznot an elementr"z
no tag memberr<zno attrib memberr;zno text memberr:zno tail member)�
assertTruerZ	iselement�hasattrr"r<r;r:)�elementr)�
check_elementrZrSr
rrr^�s


z5ElementTreeTest.test_interface.<locals>.check_elementr"utägrUrTz^<Element 't\xe4g' at 0x.*>$cs$�jt|d�dd|�dS)N�__call__rNz%s not callable)r[r\)�method)r
rr�check_method�sz4ElementTreeTest.test_interface.<locals>.check_methodcs�|j�dS)N)�__next__)�it)rarr�
check_iter�sz2ElementTreeTest.test_interface.<locals>.check_iter�*)rr>r	�getroot�assertRegex�repr�append�extend�insert�remove�getchildren�find�iterfind�findall�findtext�clearr2�setrVrW�iter�itertext�getiteratorr?�XML�
fromstring�PI�ProcessingInstruction)r
r]r rdr)r^rZrarSr
r�test_interface�sH	


















zElementTreeTest.test_interfacecCsqtjd�}|j|jd�d|_|j|jd�d|_|j|jd�|j|j�d|_|j|jd�d|_|j|jd�|j|j�d|_|j|jd�d|_|j|jd�|j|ji�idd	6d
d6|_|j|jidd	6d
d6�idd
6dd6|_|j|jidd
6dd6�dS)Nr"ZTagZTAGZTextZTEXTZTailZTAIL�b�a�d�c�B�A�D�C)rr>r?r"�assertIsNoner;r:r<)r
r]rrr�test_set_attribute�s*						!z"ElementTreeTest.test_set_attributecCs\tjd�}|j|d�tjd�}|j|�|j|d�|j|�|j|d�|jd|�|j|d�|j|�|j|g�|j|d�|j|�tjddd	�}|j|d
�tjd�}|j|�|j|d�|jd|�|j|d
�|j|�|j|d�|j|�|j|d
�|jt	��}|j|�WdQX|j
t|j�d�|j|d
�|||g|dd�<|j|dd�|j
|dd�|d|dg�|j
|ddd�|d|dg�|dd�=|j|d
�dS)Nz<body><tag/></body>z<body><tag /></body>�tag2z<body><tag /><tag2 /></body>rz<body><tag2 /><tag /></body>r"rUrTz<tag key="value" />�subtagz!<tag key="value"><subtag /></tag>z+<tag key="value"><subtag /><subtag /></tag>zlist.remove(x): x not in listrMz
<subtag />�	�)
rrwrLr>rirlrkrj�assertRaises�
ValueErrorr?�str�	exception)r
r�er]Z
subelement�cmrrr�test_simpleopssH




	

(+
	zElementTreeTest.test_simpleopscCsO|jtjd�d�|jtjd�d�|jtjd�d�dS)Nz<tag>hello</tag>z)<tag>&#104;&#101;&#108;&#108;&#111;</tag>z<tag><![CDATA[hello]]></tag>)rLrrw)r
rrr�
test_cdata;szElementTreeTest.test_cdatacCs�tjtjd��}tjd|�}|j|jd�jd�|j|jd�jd�tjdt	�}|j|jd�jd�|j|jd�jd�dS)Nzutf-8rr"zsection/tagr]zelement/../empty-elementz
empty-element)
rr�
SAMPLE_XML�encoderr	r?rnr"�SIMPLE_XMLFILE)r
Z
stringfiler rrr�test_file_initEszElementTreeTest.test_file_initcCsYddlm}tjt�}x4td�D]&}tj|�jdt|��q,Wt	|j
�}x4td�D]&}tj|�jdt|��qrW|jt	|j
�|�x4td�D]&}tj|�jdt|��q�W|jt	|j
�|�x4td�D]&}tj|�jdt|��qW|j
t	|j
�d�dS)Nr)r�
z./�iXi�)rrrrwr��ranger	rnr�r@�_cacher?Z
assertGreaterZ
assertLess)r
rr�iZcache_len_10rrr�test_path_cachePs$$$$zElementTreeTest.test_path_cachecCsddl}tjd�}|j|�}|j|�}d|jd�_|j|d�|j|d�|j|d�dS)Nrz<tag>hello<foo/></tag>�bar�fooz<tag>hello<bar /></tag>z<tag>hello<foo /></tag>)�copyrrw�deepcopyrnr"rL)r
r��e1�e2�e3rrr�	test_copy_szElementTreeTest.test_copycCs�tjd�}|jd�|j|jdd�d�|jdd�|j|jd�d�tjddd�}|j|jd�d�|j|jidd6�idd6}tjd|�}|j�|j|jd�d�|j|jidd6�idd6}tjd|�}|j�|j|jd�d�|j|jidd6�tjdidd6dd�}|j|jd�d�|j|jidd6�tjd�}d|_|jdd	�|jd
d�|jtj|�d�|jt	|j
��dd
g�|jt	|j��ddg�|j|jd
d�d
|jd
<d|jd<|jtj|�d�dS)Nr"rU�defaultrT�other�testZaa�testa�testval�testb�test2s-<test testa="testval" testb="test2">aa</test>Ztest1Ztestcs;<test testa="testval" testb="test1" testc="test2">aa</test>)r�r�)r�r�)rr>r2r?rsr<rrr;�tostring�sortedrVrW)r
rr<rrr�test_attribksF




	"


zElementTreeTest.test_attribcCstjd�}idd6}|jd|�}|j|j|dd�|j|�|j|d�|j�|j|d�|j|�|j|d�|j||g�|j|d	�|g|dd�<|j|d�t	|g�|dd�<|j|d�dS)
Nr"rTrUr�rNzattrib aliasingz!<tag><subtag key="value" /></tag>z<tag />zM<tag><subtag key="value" /><subtag key="value" /><subtag key="value" /></tag>)
rr>ZmakeelementZassertIsNotr<rirLrrrj�tuple)r
rr<�subelemrrr�test_makeelement�s"



	z ElementTreeTest.test_makeelementc	Cs0tjt�}tj�}|j|dd�|j|j�d�tjt�}tj�}|j|dd�|j|j�d�t	t��}|j
�}WdQXtj�}|j|j
d�|j|�|j|j�d�tj�}tjd|�}|j|�|j|j�d�dS)Nrrzi<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�rrrr?r�SIMPLE_NS_XMLFILE�open�read�	XMLParserrg�version�feedrL�close�TreeBuilder)r
r �stream�f�data�parserr�rrr�test_parsefile�s,

zElementTreeTest.test_parsefilecCsBtjd�}|jtj|dd�d�tjd�}|jtj|dd�d�dddg}tj|�}|jtj|�d�|jdjtj|��d�|jtj|d	�d
�tjd�\}}|jt	|�d�tjd�\}}|jt	|�d
�|j|dj
d�dS)Nz<html><body>text</body></html>rrz<html><body>ztext</boz
dy></html>s<html><body>text</body></html>��asciisE<?xml version='1.0' encoding='ascii'?>
<html><body>text</body></html>rz(<html><body id='body'>text</body></html>rM�body)rrwr?r�rxZfromstringlist�join�tostringlistZXMLIDr@r")r
r]Zsequence�_Zidsrrr�test_parseliteral�s&z!ElementTreeTest.test_parseliteralc4Cs�tj}|t�}t|�\}}|j||jfd(�|jdd�|D�d)d*d+g�|j|jjd�|t�}|jdd�|D�d,d-d.d/g�f}|t|�}|jdd�|D�g�f}|td|�}|jd
d�|D�g�d0}|t|�}|jdd�|D�d1d2d3d4d5d6d7d8g�d9}|t|�}|jdd�|D�d;d<d=d>d?d@dAdBdCdDg
�dE}|tj	d�|�}dd�|D�}|j|ddg�dF}t
td��<}|jt��}|||�WdQX|j
|j�WdQX|jt|j�d�tjdd��e}	tjddt�|jt��}|t|�WdQX|jt|j�d�~tj�WdQX|j|	g�tjd�}
dG}||
|�}|jdd�|D�dIdKg�tj	d#�}
||
�}t|�\}}|j||jfdL�|jtj��}t|�WdQX|jt|j�d%�t
td&��}|jd'�WdQX|t�}t|�\}}|j||jfdM�tjdd��h}	tjddt�|jtj��}t|�WdQX|jt|j�d%�~~tj�WdQX|j|	g�dS)NN�endr]cSs%g|]\}}||jf�qSr)r")r#�actionrrrrr$�s	z2ElementTreeTest.test_iterparse.<locals>.<listcomp>�
empty-element�rootcSs%g|]\}}||jf�qSr)r")r#r�rrrrr$s	�{namespace}element�{namespace}empty-element�{namespace}rootcSs%g|]\}}||jf�qSr)r")r#r�rrrrr$
s	�eventscSs%g|]\}}||jf�qSr)r")r#r�rrrrr$s	�startcSs%g|]\}}||jf�qSr)r")r#r�rrrrr$s	�start-ns�end-nscSs=g|]3\}}|dkr-||jfn	||f�qS)r�r�)zstartzend)r")r#r�rrrrr$s	rO�	namespacez<root xmlns=''/>cSsg|]\}}|�qSrr)r#r�rrrrr$0s	�bogus�rbzunknown event 'bogus'�recordT�always�categorys�<?xml version='1.0' encoding='iso-8859-1'?>
<body xmlns='http://&#233;ffbot.org/ns'
      xmlns:cl�='http://effbot.org/ns'>text</body>
cSs"g|]\}}||f�qSrr)r#r�rrrrr$Is	�http://éffbot.org/ns�clé�http://effbot.org/nsz<document />junk�documentz.junk after document element: line 1, column 12�wbs<document />junk)�end�element)r�r�)r�r�)r��root)r�r�)r�r�)r�r�)r�r�)�startr�)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�r�r��rOz	namespace)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)r�N)r�r�)r�r�r�)r��rOr�)r�r��r�r�)r�r�)r��document)r�r�)r�	iterparser��nextr?r"r�r�rrr�r�r��assertFalse�closedr�r��warnings�catch_warnings�filterwarnings�ResourceWarningrrr�
ParseErrorrr)r
r��contextr�rr��resr�r��w�sourcercrrr�test_iterparse�s�	



	
zElementTreeTest.test_iterparsecCs�tjd�}d|_|j|d�dtj|d�_|j|d�d|_|j|d�|jdtjd	��|j|d
�tjdd�|d<|j|d
�dS)Nr"r;z<tag>text</tag>�subtextr�z'<tag>text<subtag>subtext</subtag></tag>ztext<subtag>subtext</subtag>r�commentz*text<!--comment--><subtag>subtext</subtag>rUrTz)text<?key value?><subtag>subtext</subtag>)	rr>r;rL�
SubElementr"rk�Commentry)r
rrrr�test_writefilefs			zElementTreeTest.test_writefilecCstt��}|j�}WdQXGdd�dt�}|�}tjd|�}|j|�|j|ddddddddg�tt��}|j�}WdQXGd	d�dt�}|�}tjd|�}|j|�|j|dddddddd d!d"g
�dS)#Nc@s4eZdZdd�Zdd�Zdd�ZdS)z4ElementTreeTest.test_custom_builder.<locals>.BuildercSs|jd|f�dS)Nr�)ri)r
r"r<rrrr�}sz:ElementTreeTest.test_custom_builder.<locals>.Builder.startcSs|jd|f�dS)Nr�)ri)r
r"rrrr�sz8ElementTreeTest.test_custom_builder.<locals>.Builder.endcSsdS)Nr)r
r;rrrr��sz9ElementTreeTest.test_custom_builder.<locals>.Builder.dataN)rrrr�r�r�rrrr�Builder|sr�r�r�r�r]r��
empty-elementc@sLeZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)z4ElementTreeTest.test_custom_builder.<locals>.BuildercSs|jd|f�dS)Nr�)ri)r
r"r<rrrr��sz:ElementTreeTest.test_custom_builder.<locals>.Builder.startcSs|jd|f�dS)Nr�)ri)r
r"rrrr��sz8ElementTreeTest.test_custom_builder.<locals>.Builder.endcSsdS)Nr)r
r;rrrr��sz9ElementTreeTest.test_custom_builder.<locals>.Builder.datacSs|jd||f�dS)N�pi)ri)r
r�r�rrrr��sz7ElementTreeTest.test_custom_builder.<locals>.Builder.picSs|jd|f�dS)Nr�)ri)r
r�rrrr��sz<ElementTreeTest.test_custom_builder.<locals>.Builder.commentN)rrrr�r�r�r�r�rrrrr��s
r�r�r��	 comment �{namespace}root�{namespace}element�{namespace}empty-element)�start�root)r��element)�endr)r�r)rr)r�r�)rr�)rr)�pirzdata)zcommentr�)r�r�)r�r�)rr�)r�r�)rr�)r�r�)rr�)rr�)	r�r�r�rArr�r�r?r�)r
r�r�r�Zbuilderr�rrr�test_custom_builderws@	
	
	
	z#ElementTreeTest.test_custom_buildercCs�ttd��}tj|�}WdQX|jdd�|j�j�D�dddggggg�|jdd�|j�D�dddggggg�tjt	�}|jt
|j��d�|jt
|dj��d	�|j|dd�|j��|d
}|d}|d	d�=|jt
|j��d�|j||d
�|j||d	�||g|d
d�<|j||d
�|j||d	�|j||d
�|j
�|j|j�g�dS)Nr�cSs"g|]}t|j���qSr)r&rm)r#rrrrr$�s	z4ElementTreeTest.test_getchildren.<locals>.<listcomp>r]z
empty-elementcSs"g|]}t|j���qSr)r&rm)r#rrrrr$�s	�r�rMr)r�r�rr�r?rfrtrvrwr�r@rm�assertNotEqualrr)r
r�r rZchild1Zchild2rrr�test_getchildren�s<


  



z ElementTreeTest.test_getchildrencCsTtjd�}|jtj|�d�tjd�}|jtj|�d�dS)Nz<html><body>text</body></html>s<html><body>text</body></html>)rrwr?r�rx)r
rrrr�test_writestring�sz ElementTreeTest.test_writestringcAs�d�fdd�}|dd�|dd�|dd�|d	d
�|dd�|d
d�dd���fdd�}ddddddddddddddd d!d"d#d$d%dd&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEd
dFdGdHdIdJdKdLdMdNdOdPgA}x6|D].}�jtjtj||���dQ�qQWdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcg}x*|D]"}�jttj||��q�Wdddedfdgdhdidjdkdldmg
}x-|D]%}�jtjtj||��qW�jttj�dn�jd���jttj�do�jd��dS)pNrOcsUd||f}�jtj|j|��j|��jtj|�j|�dS)Nz0<?xml version='1.0' encoding='%s'?><xml>%s</xml>)r?rrwr�r;)rr��xml)r
rr�check�s
%z,ElementTreeTest.test_encoding.<locals>.checkr�r}zus-asciiz
iso-8859-1�½ziso-8859-15u€�cp437u√z	mac-romanu˚cSsd|S)Nz*<?xml version='1.0' encoding='%s'?><xml />r)rrrrr	�sz*ElementTreeTest.test_encoding.<locals>.xmlcs�|�j|�S)N)r�)r)r	rr�bxml�sz+ElementTreeTest.test_encoding.<locals>.bxmlzutf-8z	utf-8-sigzutf-16zutf-16bezutf-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-16Zcp720Zcp737�cp775�cp850�cp852�cp855Zcp856�cp857�cp858�cp860�cp861�cp862�cp863�cp865�cp866�cp869Zcp874Zcp1006�cp1125�cp1250�cp1251�cp1252�cp1253�cp1254�cp1255�cp1256�cp1257�cp1258zmac-cyrillicz	mac-greekzmac-icelandz
mac-latin2zmac-turkishz
iso2022-jpziso2022-jp-1ziso2022-jp-2ziso2022-jp-2004ziso2022-jp-3ziso2022-jp-extzkoi8-rzkoi8-u�hz�ptcp154s<xml />�big5�	big5hkscs�cp932�cp949�cp950zeuc-jpzeuc-jis-2004zeuc-jisx0213zeuc-kr�gb2312�gbk�gb18030z
iso2022-kr�johabz	shift-jiszshift-jis-2004zshift-jisx0213zutf-7�cp037�cp424�cp500�cp864Zcp875�cp1026�cp1140�utf_32�	utf_32_be�	utf_32_leZ	undefinedZxxx)	r?rr�rwr�r�r�r��LookupError)r
r
r
Zsupported_encodingsrZ&unsupported_ascii_compatible_encodingsZ(unsupported_ascii_incompatible_encodingsr)r
r	r�
test_encoding�sR





	
,				
 
#%zElementTreeTest.test_encodingcCs�tjd�}d|_|jt|�d�|jt|dd�d�|jt|dd�d�|jt|dd�d�|jt|dd�d	�dS)
Nz-<html><link/><script>1 &lt; 2</script></html>�
z/<html><link /><script>1 &lt; 2</script></html>
r`r	�htmlz*<html><link><script>1 < 2</script></html>
r;z1 < 2
)rrwr:r?r!)r
r�rrr�test_methodss	zElementTreeTest.test_methodscCsEtjd�}|jt|�d�|jt|dd�d�dS)Nz(<html><CamelCase>text</CamelCase></html>r`r<)rrwr?r!)r
r�rrr�test_issue18347$s
zElementTreeTest.test_issue18347cCstjd�}|jt|dd�d�|j|d�|jtj��}tjd�WdQX|jt|j�d�|jtj��}tjt	�WdQX|jt|j�d�tj
�}d	|jd
<|jt	�|j
�}|j|d�dS)Nz*<document title='&#x8230;'>test</document>rzus-asciis*<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>)rrwr?r!rLr�r�r�r��
ENTITY_XMLr�r?r�r�)r
r�r�r�r�rrr�test_entity+s"

zElementTreeTest.test_entitycCs�tjd�}|j|d�tjd�}|j|d�tjd�}|j|d�tjd�}|j|d�tjt�}|j|d	�dS)
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>)rrwrL�
SAMPLE_XML_NS)r
rrrr�test_namespaceIs				zElementTreeTest.test_namespacecCs�tjd�}|j|d�tjtjd��}|j|d�tjtjdd��}|j|d�tjtjdd��}tj|tjdd��}tj|tjdd��}|j|d�|j�d|jd	<|j|d
�|j�d|jtjd	�<|j|d
�|j�d|jd	<|j|d�|j�tjd�|jd	<|j|d
�|j�tjd�}tjd�|jd<|j|�|j|�|j|d�|jt	tjdd��d�|jt	tjd��d�tjdd�}tjdd�}|j||�tjdd�}|j
||�|j
|d�|j|d�dS)Nz{uri}tagz<ns0:tag xmlns:ns0="uri" />Zurir"Ztag1r�z;<ns0:tag xmlns:ns0="uri"><ns0:tag1 /><ns0:tag2 /></ns0:tag>rTz{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-tagzns:tag)rr>rL�QNamer�rrr<rir?r�r)r
rr�Zq1Zq2rrr�
test_qnamejsV	

	
	

	
	


	"zElementTreeTest.test_qnamecCstjd�}dS)Nz�<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html>text</html>)rrw)r
rrrr�test_doctype_public�sz#ElementTreeTest.test_doctype_publiccs�ddlm���fdd�}|ddg�|dddg�|d	d
dg�|dd
dg�|d
ddddg�|ddddddg�|ddddg�|dddddddddddddg�|ddddg�|dddg�|ddd dd!g�|d"d"g�|d#d"ddg�|d$d$g�|d%d$dd
d&g�|d'ddd(dg�|d)d*dd
d+d,d-d,d
d.dg
�|d/d/g�|d0d"dd1g�|d2d"dd/g�dS)3Nr)rcs*�jdd��j|�D�|�dS)NcSs"g|]\}}|p|�qSrr)r#�opr"rrrr$�s	zGElementTreeTest.test_xpath_tokenizer.<locals>.check.<locals>.<listcomp>)r?Zxpath_tokenizer)�prK)rr
rrr
�sz3ElementTreeTest.test_xpath_tokenizer.<locals>.checkreztext()r;z()z@name�@r4z@*zpara[1]Zpara�[�1�]zpara[last()]�lastz*/para�/z/doc/chapter[5]/section[2]�docZchapter�5�section�2z
chapter//paraz//z//paraz//olist/itemZolistrY�.z.//paraz..z../@langZlangzchapter[title]�titlez#employee[@secretary and @assistant]ZemployeeZ	secretaryrO�andZ	assistantz{http://spam}eggz
./spam.eggzspam.eggz.//{http://spam}egg)rr)r
r
r)rr
r�test_xpath_tokenizer�s2	"z$ElementTreeTest.test_xpath_tokenizercCs�|jtjtjdd��d�|jtjtjdd��d�|jtjtjdd��d�|jtjtjdd�d�d�dS)	Nr�Zinstructions<?test instruction?>z
<testing&>s<?test <testing&>?>u<testing&>ãzlatin-1s=<?xml version='1.0' encoding='latin-1'?>
<?test <testing&>�?>)r?rr�rzry)r
rrr�test_processinginstruction�s!z*ElementTreeTest.test_processinginstructionc
Cs�x�ddddddddd	d
ddd
g
D]�}x�||j�gD]t}d|}ttjd|�dd�}|j||�ttjd||f�dd�}|j||�qGWq.WdS)NZAREAZBASEZBASEFONTZBRZCOLZFRAMEZHRZIMGZINPUTZISINDEXZLINKZMETAZPARAMz<%s>z<%s />r`r<z	<%s></%s>)�lowerr!rrwr?)r
r]rrKZ
serializedrrr�#test_html_empty_elems_serialization�s
	z3ElementTreeTest.test_html_empty_elems_serializationN)rrrrLr{r�r�r�r�r�r�r�r�r�r�r�r�rrrr:r=r>rArCrFrGrWrXrZrrrrrJ�s6V)
--u8%;!A#rJc@seZdZddd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dd�Z
dd�ZdS)�XMLPullParserTestNcCs^|dkr|j|�n>x;tdt|�|�D]!}|j||||��q5WdS)Nr)r�r�r@)r
r�r��
chunk_sizer�rrr�_feed�szXMLPullParserTest._feedcCs-|j�}|jdd�|D�|�dS)NcSs%g|]\}}||jf�qSr)r")r#r�rrrrr$�s	z7XMLPullParserTest.assert_event_tags.<locals>.<listcomp>)�read_eventsr?)r
r�rKr�rrr�assert_event_tags�sz#XMLPullParserTest.assert_event_tagsc
Cs+x$dD]}|jd|��tj�}|j|g�|j|d|�|j|g�|j|d|�|j|g�|j|d|�|j|dg�|j|d	|�|j|d
|�|j|ddg�|j|d|�|j|dg�|j|j��WdQXqWdS)NrM�r\z<!-- comment -->
z+<root>
  <element key='value'>text</elementz>
r�r]z<element>text</element>tail
z<empty-element/>
�
empty-elementz</root>
r�)NrMr`)�end�element)rbrc)rbra)rbzroot)�subTestr�
XMLPullParserr_r]r�r�)r
r\r�rrr�test_simple_xmls(
		
z!XMLPullParserTest.test_simple_xmlc	Cs�tj�}|j�}|j|d�t|�\}}|j||jfd�|j|d�t|�\}}|j||jfd�|jt��t|�WdQXdS)Nz-<root>
  <element key='value'>text</element>
r�r]z</root>
r�)�endzelement)rgzroot)	rrer^r]r�r?r"r��
StopIteration)r
r�rcr�rrrr�test_feed_while_iteratingsz+XMLPullParserTest.test_feed_while_iteratingcCstj�}|j|g�|j|d�|j|g�|j|d�|j|g�|j|d�|j|g�|j|d�|j|dg�|j|d�|j|d�|j|d
dg�|j|d
�|j|dg�|j|j��dS)Nz<!-- comment -->
z<root xmlns='namespace'>
z"<element key='value'>text</elementz>
r��{namespace}elementz<element>text</element>tail
z<empty-element/>
�{namespace}empty-elementz</root>
�{namespace}root)�endrj)rmrj)rmrk)rmrl)rrer_r]r�r�)r
r�rrr�test_simple_xml_with_ns%s$	
z)XMLPullParserTest.test_simple_xml_with_nscCs�tjdd
�}|j|d�|j|d�|jt|j��dg�|j|d�|j|d	�|j|d
�|j|d�|j|d�|jt|j��dg�|j|j��dS)Nr��start-ns�end-nsz<!-- comment -->
z<root xmlns='namespace'>
rOr�z"<element key='value'>text</elementz>
z<element>text</element>tail
z<empty-element/>
z</root>
)rorp�rOz	namespace)rorq)rpN)rrer]r?rAr^r�r�)r
r�rrr�test_ns_events:s
z XMLPullParserTest.test_ns_eventscCstjdf�}|j|d�|j|g�tjdd�}|j|d�|j|g�|j|d�|j|dg�|j|d�|j|dg�|j|d
�|j|dg�|j|d�|j|ddddg�|j|d�|j|j��|j|dg�tjdd�}|j|d�|j|g�|j|d�|j|dg�|j|d�|j|dg�|j|d
�|j|g�|j|d�|j|ddg�|j|d�|j|j��dS)Nr�z<root/>
r�r�z<!-- comment -->
z<root>
r�z"<element key='value'>text</elementr]z>
z8<element xmlns='foo'>text<empty-element/></element>tail
�{foo}element�{foo}empty-elementz</root>)�start�end)ru�root)ru�element)rvrx)rurs)rurt)rvrt)rvrs)rvrw)ru)rurw)rurx)rurs)rurt)rrer]r_r�r�)r
r�rrr�test_eventsIsL		
		
zXMLPullParserTest.test_eventscCs�ddh}tjd|�}|j|d�|j|dd	g�Gdd�d�}tjd|��}|j|d�|j|d
dg�dS)Nr�r�r�z<foo>bar</foo>r�c@s4eZdZdd�Zdd�Zdd�ZdS)z9XMLPullParserTest.test_events_sequence.<locals>.DummyItercSstdddg�|_dS)Nr�r�zstart-ns)rtr�)r
rrr�__init__}szBXMLPullParserTest.test_events_sequence.<locals>.DummyIter.__init__cSs|S)Nr)r
rrr�__iter__szBXMLPullParserTest.test_events_sequence.<locals>.DummyIter.__iter__cSs
t|j�S)N)r�r�)r
rrrrb�szBXMLPullParserTest.test_events_sequence.<locals>.DummyIter.__next__N)rrrrzr{rbrrrr�	DummyIter|sr|)�start�foo)�endr~)r}r~)rr~)rrer]r_)r
Zeventsetr�r|rrr�test_events_sequenceusz&XMLPullParserTest.test_events_sequencecCs*|jt��tjdd�WdQXdS)Nr�r�r�r�)zstartzendzbogus)r�r�rre)r
rrr�test_unknown_event�sz$XMLPullParserTest.test_unknown_event)rrrr]r_rfrirnrrryr�r�rrrrr[�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>
zC1.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>
zdisclaimer.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>
zC2.xmlZ324387z	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>
zC2b.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>
zC3.xmlzQ<?xml version='1.0'?>
<data>
  <item><![CDATA[Brooks & Shields]]></item>
</data>
zdata.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>
zC5.xmlz�<?xml version='1.0'?>
<document xmlns:xi="http://www.w3.org/2001/XInclude">
  <p>Example.</p>
  <xi:include href="{}"/>
</document>
zdefault.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>
zB1.xmlzn<?xml version='1.0'?>
<div xmlns:xi="http://www.w3.org/2001/XInclude">
    <xi:fallback></xi:fallback>
</div>
zB2.xmlc@saeZdZdddd�Zddd�Zdd�Zd	d
�Zdd�Zd
d�ZdS)�XIncludeTestr	NcCsQyt|}Wntk
r.td��YnX|dkrMtj|�}n|S)Nzresource not foundr	)�XINCLUDE�KeyError�OSErrorrrw)r
�hrefr�rr�rrr�xinclude_loader�s
zXIncludeTest.xinclude_loadercCsdS)Nr)r
r�r�rrrr�none_loader�szXIncludeTest.none_loaderc	CsB|dkr:t|d��}tj|�j�SWdQXndSdS)Nr	r�)r�rr�rf)r
r�r�r�rrr�
_my_loader�szXIncludeTest._my_loadercCsLddlm}|jd�}|j||j�|jt|�d�dS)Nr)r
zdefault.xmlz�<document>
  <p>Example.</p>
  <root>
   <element key="value">text</element>
   <element>text</element>tail
   <empty-element />
</root>
</document>)rr
r��includer�r?r!)r
r
rPrrr�test_xinclude_defaults
z"XIncludeTest.test_xinclude_defaultc
Cs]ddlm}|jd�}|j||j�|jt|�d�|jd�}|j||j�|jt|�d�|jd�}|j||j�|jt|�d�|jd	�}|j||j�|jt|�d
�|jd�}|jt��}|j||j�WdQX|jt|j	�d�|jt|�d
�dS)Nr)r
zC1.xmla<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>zC2.xmlzO<document>
  <p>This document has been accessed
  324387 times.</p>
</document>zC2b.xmlzX<document>
  <p>This document has been <em>accessed</em>
  324387 times.</p>
</document>zC3.xmlz�<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>zC5.xmlzresource not foundaI<div xmlns:ns0="http://www.w3.org/2001/XInclude">
  <ns0:include href="example.txt" parse="text">
    <ns0:fallback>
      <ns0:include href="fallback-example.txt" parse="text">
        <ns0:fallback><a href="mailto:bob@example.org">Report error</a></ns0:fallback>
      </ns0:include>
    </ns0:fallback>
  </ns0:include>
</div>)
rr
r�r�r?r!r�r�r�r�)r
r
r�r�rrr�
test_xincludes.
zXIncludeTest.test_xincludecCs�ddlm}tjtd�}|j|j��}|j|d|j�WdQX|j	t
|j�d�tjtd�}|j|j��}|j|d|j�WdQX|j	t
|j�d�tjtd�}|j|j��}|j|d|j�WdQX|j	t
|j�d	�tjtd
�}|j|j��}|j|d|j�WdQX|j	t
|j�d�dS)Nr)r
zC1.xmlr6z%cannot load 'disclaimer.xml' as 'xml'zC2.xmlz!cannot load 'count.txt' as 'text'zB1.xmlz1unknown parse type in xi:include tag ('BAD_TYPE')zB2.xmlzYxi:fallback tag must be child of xi:include ('{http://www.w3.org/2001/XInclude}fallback'))
rr
rrwr�r�ZFatalIncludeErrorr�r�r?r�r��XINCLUDE_BAD)r
r
r�r�rrr�test_xinclude_failuresSs*z#XIncludeTest.test_xinclude_failures)	rrrr�r�r�r�r�r�rrrrr��s		@r�c@seZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-S).�BugsTestcs��fdd�}tjd�}||�tjd�}d|_||�tjd�}d|_||�tjd�}|jdd�||�tjd�}|jdd�||�dS)Nc	s?�jt��}t|�WdQX�jt|j�d�dS)Nzcannot serialize 123 (type int))r��	TypeErrorr!r?r�r�)rr�)r
rrr
{sz-BugsTest.test_bug_xmltoolkit21.<locals>.check�{rZ123)rr>r;r:rs)r
r
rr)r
r�test_bug_xmltoolkit21xs
	
	

zBugsTest.test_bug_xmltoolkit21cCsTtjt�}tj|�}|j|jd�d�|j|jd�d�dS)Nr"r;zsection/tagr�)rrwr�r	r?rq)r
rr rrr�test_bug_xmltoolkit25�szBugsTest.test_bug_xmltoolkit25cCsTtjd�}|jt|jd��g�|jt|jd��dg�dS)Nz"<doc><table><tbody/></table></doc>z.//theadz.//tbodyZtbody)rrwr?r&rp)r
r rrr�test_bug_xmltoolkit28�szBugsTest.test_bug_xmltoolkit28c
CsKtjd�}tj��*}tj|�|j|j�d�WdQXdS)Nz"<doc><table><tbody/></table></doc>z$<doc><table><tbody /></table></doc>
)rrwrZcaptured_stdout�dumpr?r)r
r �stdoutrrr�test_bug_xmltoolkitX1�s
zBugsTest.test_bug_xmltoolkitX1cCstjd�}|jtj|d�d�tjd�}|j|jidd6�|jtj|d�d�tjd�}|jtj|d�d	�tjd
�}|jtj|d�d�tjd�}|jdd�|jtj|d�d�dS)Ns2<?xml version='1.0' encoding='iso-8859-1'?><t�g />zutf-8s<täg />sD<?xml version='1.0' encoding='iso-8859-1'?><tag �ttr='v&#228;lue' />uvälueuättrs<tag ättr="välue" />s:<?xml version='1.0' encoding='iso-8859-1'?><t�g>text</t�g>s<täg>text</täg>utägr")rrwr?r�r<r>rs)r
r rrr�test_bug_xmltoolkit39�szBugsTest.test_bug_xmltoolkit39cCsEtjd�}|jt|dd�d�|jt|�d�dS)Nz=<!DOCTYPE doc [<!ENTITY ldots '&#x8230;'>]><doc>&ldots;</doc>rzus-asciis<doc>&#33328;</doc>u<doc>舰</doc>)rrwr?r!)r
r�rrr�test_bug_xmltoolkit54�szBugsTest.test_bug_xmltoolkit54c	CsE|jtj��}tjd�WdQX|jt|j�d�dS)Ns?<!DOCTYPE doc SYSTEM 'doc.dtd'><doc>&ldots;&ndots;&rdots;</doc>z+undefined entity &ldots;: line 1, column 36)r�rr�rwr?r�r�)r
r�rrr�test_bug_xmltoolkit55�szBugsTest.test_bug_xmltoolkit55cCs0Gdd�d�}|jttj|��dS)Nc@seZdZdd�ZdS)z5BugsTest.test_bug_xmltoolkit60.<locals>.ExceptionFilecSs
t�dS)N)r�)r
rGrrrr��sz:BugsTest.test_bug_xmltoolkit60.<locals>.ExceptionFile.readN)rrrr�rrrr�
ExceptionFile�sr�)r�r�rr�)r
r�rrr�test_bug_xmltoolkit60�szBugsTest.test_bug_xmltoolkit60cCsiidd6dd6}tj�}|jj|�|jd�|j�}|j|jd�jd�dS)Nu’Zrsquou‘ZlsquoaF<?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.//paragraphu7A new cultivar of Begonia plant named ‘BCT9801BEG’.)	rr�r?�updater�r�r?rnr;)r
ZENTITIESr��trrr�test_bug_xmltoolkit62�szBugsTest.test_bug_xmltoolkit62cCs]dd�}|�tjd�}xtd�D]
}|�q/W|jtjd�|�dS)NcSs:tj�}|jdi�|jd�|jd�dS)Nr"r;)rr�r�r�r�)r rrr�xmltoolkit63�s
z4BugsTest.test_bug_xmltoolkit63.<locals>.xmltoolkit63i�)r,�getrefcountr�r?)r
r��countr�rrr�test_bug_xmltoolkit63�szBugsTest.test_bug_xmltoolkit63cCs�tjddd�}|jtj|�d�|jtjtj|��jd�d�|jtjtjtj|���d�dS)NZSomeTagr;zdef _f():
  return 3
s0<SomeTag text="def _f():&#10;  return 3&#10;" />)rr>r?r�rwr2)r
r�rrr�test_bug_200708_newline�s$$z BugsTest.test_bug_200708_newlinecCs�tj�}|jd�|j|j�jd�Gdd�d�}tj|��}|jd�|j|j�jd�dS)Nz<element>some text</element>r]c@seZdZdd�ZdS)z2BugsTest.test_bug_200708_close.<locals>.EchoTargetcSs
tjd�S)Nr])rr>)r
rrrr�sz8BugsTest.test_bug_200708_close.<locals>.EchoTarget.closeN)rrrr�rrrr�
EchoTargetsr�)rr�r�r?r�r")r
r�r�rrr�test_bug_200708_close	s

zBugsTest.test_bug_200708_closecCstjd�}tj|d�}|jt|dd�d�tjd�}tj|d�}tj|d�}|jt|dd�d�tjd�}tj|d�}tj|d�}|jt��}t|dd�WdQX|jt|j�d�dS)	Nz
{default}elemZdefault_namespacer�z%<elem xmlns="default"><elem /></elem>z{not-default}elemzI<elem xmlns="default" xmlns:ns1="not-default"><elem /><ns1:elem /></elem>rz<cannot use non-qualified names with default_namespace option)	rr>r�r?r!r�r�r�r�)r
r��sr�rrr�!test_bug_200709_default_namespaces z*BugsTest.test_bug_200709_default_namespacecCs�tjd�}|jtj|�d�tjdd�tjd�}|jtj|�d�tjd�}|jtj|�d�dS)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/" />)rr>r?r��register_namespace)r
r�rrr�"test_bug_200709_register_namespace.sz+BugsTest.test_bug_200709_register_namespacecCs�tjd�}|jtjd��|j|djtj�tjd�}|jtjd��|j|djtj�dS)Nr}r�r)rr>rir�r?r"ry)r
r}rrr�test_bug_200709_element_comment=sz(BugsTest.test_bug_200709_element_commentcCs�tjd�}tj|d�}tj|d�}tjd�}|jd|�|jt|�dddg�|jd|�|jt|�ddddg�dS)Nr}r|rr~rrM���)rr>r�rkr?r&)r
r}r|rr~rrr�test_bug_200709_element_insertIsz'BugsTest.test_bug_200709_element_insertcCsitjd�}tj|d�}tjd�}|j|�|jt|jtj��tjg�dS)Nr}r|zTEST-b)rr>r�r�rir?r&rt)r
r}r|Z	comment_brrr�test_bug_200709_iter_commentSs

z%BugsTest.test_bug_200709_iter_commentcCsbtj�}|jd�}|jdi�}|jd�}|j�}|jt|�d�dS)Nr�r"z<tag />)rr�r�r�r�r�r?r!)r
rFr�rrr�test_bug_1534630]szBugsTest.test_bug_1534630cCsZtjd�}|jtj|d�d�tjd�}|jtj|d�d�dS)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>)rrwr?r�)r
r�rrr�test_issue6233eszBugsTest.test_issue6233cCsNtjd�}|j|jd�tj|�}|jtj|�d�dS)Nz+<prefix:localname xmlns:prefix="${stuff}"/>z{${stuff}}localnames&<ns0:localname xmlns:ns0="${stuff}" />)rrwr?r"r	r�)r
r�r�rrr�test_issue3151qszBugsTest.test_issue3151cCsttjd�}|jt|�dg�tjt�}|dd�|dd�<|jt|�dddg�dS)Nz<body><tag/></body>r"rR)rrwr?r&r�)r
rZnewelemrrr�test_issue6565ws
zBugsTest.test_issue6565cCs$tjdd�tjdd�dS)NZ	test10777z
http://myuri/)rr�)r
rrr�test_issue10777~szBugsTest.test_issue10777N)rrrr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrr�vs,			

r�c@sXeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�BasicElementTestcCsgtjd�}|jt|jd�|jt|jtjd�dg�|jt|jdd�dS)N�joer|r�r�r)rr>r�r�rirjrk)r
r�rrr�test_augmentation_type_errors�s%z.BasicElementTest.test_augmentation_type_errorscCsLGdd�d�}|�}tjdd|�|_tj|�}~t�|j|��tjd�}|�}||_tj|�}tj|dd|�}~~~t�|j|��tjd�}tjd�}tjd�}|j|�|j|�|j|�tj|�}~~~t�|j|��dS)	Nc@seZdZdS)z.BasicElementTest.test_cyclic_gc.<locals>.DummyN)rrrrrrr�Dummy�sr�r��attrr�r�r�r�)	rr>Zdummyref�weakref�refrr�r�ri)r
r�r~�wrefr�r�r�r�rrr�test_cyclic_gc�s2				


	zBasicElementTest.test_cyclic_gccsyd��fdd�}tjd�}tj||�}|j|�jd�~|j�d�|j|�d�dS)NFcs
d�dS)NTr)r�)�flagrr�wref_cb�sz.BasicElementTest.test_weakref.<locals>.wref_cbr�T)rr>r�r�r?r")r
r�r�r�r)r�r�test_weakref�szBasicElementTest.test_weakrefcCsctjddddddd�}|j|jddd	�d�|j|jd
dd	�d	�dS)Nr�rGrMrHr��zrr��r�)rr>r?r2)r
r�rrr�test_get_keyword_args�s!z&BasicElementTest.test_get_keyword_argscCs2x+tdtjd�D]}x
t|jdd�D]�\}}|jddd�}d|_d|_|j|d	�j	|jd
��|j	|jd	��|j
d�djd
d�|j|d|||�}|j
|jd�|j
|jdd�|j
t|�d�|j||�q3WqWdS)Nr�rM�repeatr�r��*ztext goes herezopposite of head�childZ
grandchildz
.//grandchildrr�zother valuezxml.etree.ElementTree)r�r-�HIGHEST_PROTOCOLrr)r>r;r:r�rirprsr9r?r"r<r@rC)r
r7r5r6r�r�rrr�test_pickle�s"		"zBasicElementTest.test_picklecCs�x�tdtjd�D]�}x�t|jdd�D]�\}}d}|j|�}t|d�r�|j|j�dd�n|j	|d|||�}|j|j
d�|j|d	j
d
�q3WqWdS)Nr�rMr�z\<?xml version="1.0"?>
                    <group><dogs>4</dogs>
                    </group>�__getstate__r"�groupzxml.etree.ElementTreerZdogs)r�r-r�rr)rxr\r?r�r9r")r
r7r5r6ZXMLTEXTr�r�rrr�test_pickle_issue18997�s"z'BasicElementTest.test_pickle_issue18997N)	rrrr�r�r�r�r�r�rrrrr��s#r�c@s4eZdZdd�Zdd�Zdd�ZdS)�BadElementTestc
s�G�fdd�d�}|�g�tjd�}y|j��Wntk
rYYnXGdd�d|tj�}|d�g�tjd�}|j��dS)Ncs(eZdZe�fdd��ZdS)z2BadElementTest.test_extend_mutable_list.<locals>.Xcs#tjd�g�dd�<tjS)N�baz)rr>)r
)�Lrr�	__class__�sz<BadElementTest.test_extend_mutable_list.<locals>.X.__class__N)rrr�propertyr�r)r�rr�X�sr�r�c@seZdZdS)z2BadElementTest.test_extend_mutable_list.<locals>.YN)rrrrrrr�Y�sr�rG)rr>rjr�)r
r�r�r�r)r�r�test_extend_mutable_list�s
z'BadElementTest.test_extend_mutable_listc
s�G�fdd�d�}|�tjd�g�tjd�}y|j��Wntk
reYnXGdd�d|tj�}|d�tjd�g�tjd�}|j��dS)Ncs(eZdZe�fdd��ZdS)z3BadElementTest.test_extend_mutable_list2.<locals>.Xcs�dd�=tjS)N)rr>)r
)r�rrr��s
z=BadElementTest.test_extend_mutable_list2.<locals>.X.__class__N)rrrr�r�r)r�rrr��sr�r�r�c@seZdZdS)z3BadElementTest.test_extend_mutable_list2.<locals>.YN)rrrrrrrr�sr�r�)rr>rjr�)r
r�r�r�r)r�r�test_extend_mutable_list2�s
z(BadElementTest.test_extend_mutable_list2cs�G�fdd�dtj�}tjd���j|d�g�|jt�jtjd��tjd���jtjd�g�|jt�j|d��dS)Ncs"eZdZ�fdd�ZdS)z3BadElementTest.test_remove_with_mutating.<locals>.Xcs�dd�=dS)NFr)r
�o)r�rr�__eq__s
z:BadElementTest.test_remove_with_mutating.<locals>.X.__eq__N)rrrr�r)r�rrr�sr�r�r�r�)rr>rjr�r�rl)r
r�r)r�r�test_remove_with_mutating
sz(BadElementTest.test_remove_with_mutatingN)rrrr�r�r�rrrrr��sr�c@s(eZdZdd�Zdd�ZdS)�MutatingElementPathcGstj||�}||_|S)N)r��__new__r)r*r�argsr
rrrr�s	zMutatingElementPath.__new__cCs|jdd�=dS)NT)r)r
r�rrrr� szMutatingElementPath.__eq__N)rrrr�r�rrrrr�sr�c@seZdZdd�ZdS)�BadElementPathcCsdd�dS)NrMrr)r
r�rrrr�&szBadElementPath.__eq__N)rrrr�rrrrr�%sr�cs|eZdZ�fdd�Z�fdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
�S)�BadElementPathTestcs6t�j�ddlm}|j|_i|_dS)Nr)r)�super�setUprrr��
path_cache)r
r)r�rrr�+s
zBadElementPathTest.setUpcs-ddlm}|j|_t�j�dS)Nr)r)rrr�r�r��tearDown)r
r)r�rrr�1szBadElementPathTest.tearDowncCsBtjd�}|jtjd�g�|jt|d��dS)Nr�r�rG)rr>rjrnr�)r
r�rrr�test_find_with_mutating6sz*BadElementPathTest.test_find_with_mutatingcCsXtjd�}|jtjd�g�y|jtd��Wntk
rSYnXdS)Nr�r�rG)rr>rjrnr��ZeroDivisionError)r
r�rrr�test_find_with_error;s
z'BadElementPathTest.test_find_with_errorcCsBtjd�}|jtjd�g�|jt|d��dS)Nr�r�rG)rr>rjrqr�)r
r�rrr�test_findtext_with_mutatingCsz.BadElementPathTest.test_findtext_with_mutatingcCsXtjd�}|jtjd�g�y|jtd��Wntk
rSYnXdS)Nr�r�rG)rr>rjrqr�r�)r
r�rrr�test_findtext_with_errorHs
z+BadElementPathTest.test_findtext_with_errorcCsBtjd�}|jtjd�g�|jt|d��dS)Nr�r�rG)rr>rjrpr�)r
r�rrr�test_findall_with_mutatingPsz-BadElementPathTest.test_findall_with_mutatingcCsXtjd�}|jtjd�g�y|jtd��Wntk
rSYnXdS)Nr�r�rG)rr>rjrpr�r�)r
r�rrr�test_findall_with_errorUs
z*BadElementPathTest.test_findall_with_error)rrrr�r�r�r�r�r�r�r�rr)r�rr�*sr�c@s@eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�ElementTreeTypeTestcCsv|jtjt�|jtjt�|jtjt�|jtjt�|jtjt�|jtjt�dS)N)	r=rr��typerEr	r>r�r�)r
rrr�test_istype_szElementTreeTypeTest.test_istypecCs{Gdd�dtj�}|d�}|j|tj�|j||�|j|jd�d|_|j|jd�dS)Nc@seZdZdS)zDElementTreeTypeTest.test_Element_subclass_trivial.<locals>.MyElementN)rrrrrrr�	MyElementhsr�r�r�)rr>r=r?r"r;)r
r��myerrr�test_Element_subclass_trivialgs	z1ElementTreeTypeTest.test_Element_subclass_trivialcs�G�fdd�dtj���didd6dd6dd	d
d�}|j|jd�|jt|j��d
dddg�dS)Ncs(eZdZi��fdd�Z�S)zHElementTreeTypeTest.test_Element_subclass_constructor.<locals>.MyElementcs$t�|�j|d||�dS)N�__)r�rz)r
r"r<Zextra)r�r�rrrzvszQElementTreeTypeTest.test_Element_subclass_constructor.<locals>.MyElement.__init__)rrrrzr)r�)r�rr�usr�r�rMr}r�r|rrr~�Zfoo__)r}rM)r|r�)rr)r~r�)rr>r?r"r�rW)r
r�r)r�r�!test_Element_subclass_constructorts
)z5ElementTreeTypeTest.test_Element_subclass_constructorcCs?Gdd�dtj�}|d�}|j|j�d�dS)Nc@seZdZdd�ZdS)zGElementTreeTypeTest.test_Element_subclass_new_method.<locals>.MyElementcSs|jS)N)r")r
rrr�	newmethod�szQElementTreeTypeTest.test_Element_subclass_new_method.<locals>.MyElement.newmethodN)rrrr�rrrrr�sr�r�)rr>r?r�)r
r�r�rrr� test_Element_subclass_new_method~sz4ElementTreeTypeTest.test_Element_subclass_new_methodN)rrrr�r�r�r�rrrrr�^s

r�c@sdeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dS)�ElementFindTestcCsQtjt�}|j|jd�jd�|j|jd�jd�|j|jd�jd�tjt�|d<|j|jd�jd�|j|jd�d�|j|jd�d�|j|jd�d	�|j|jdd
�d	�|j|jd��|j|jdd
�d
�|jtjd�jd
�d	�dS)Nr"zsection/tagz./tagr�zsection/nexttag�nexttagr;r�rOr��togz<tag><empty /></tag>�empty)	rrwr�r?rnr"�SAMPLE_SECTIONrqr�)r
r�rrr�test_find_simple�sz ElementFindTest.test_find_simplecCsd}tj|�}|j|jd�jdd�|j|jd�jdd�|j|jd�jdd�|j|jd	�jdd
�|j|jd�jdd�|jtd|jd
�|jtd|jd�|jtd|jd�|jtd|jd�dS)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]rz./tag[last()-2]ZXPathz./tag[0]z	./tag[-1]z./tag[last()-0]z./tag[last()+1])rrwr?rnr<�assertRaisesRegex�SyntaxError)r
Z
LINEAR_XMLr�rrr�test_find_xpath�s     zElementFindTest.test_find_xpathcCs�tjt�}tjt�|d<|jt|jd��dg�|jt|jd��ddg�|jt|jd��g�|jt|jd��g�|jt|jd��dddg�|jt|jd	��dgd
�|jt|jd��dg�|jt|jd��dgd�|jt|jd
��dddg�|jt|jd��ddddg�|jt|jd��ddddg�|jt|jd��dddg�|jt|jd��ddddg�|jt|jd��dg�|jt|jd��dg�|jt|jd��dgd�|jt|jd��dgd�|jt|jd��dgd�|jt|jd��dg�|jt|jd��dgd�|jt|jd��dg�|jt|jd��dg�|jt|jd��g�|jt|jd��g�|jt|jd ��dgd�|j|jd!�|jd��dS)"Nr�rTr�r"r�ztog/foorerRz.//tagr�zsection/tagzsection//tagz	section/*r�Znextsectionz
section//*zsection/.//*z*/*z*//*z*/tagz*/./tagz./tagz././tagz.//tag[@class]rz.//tag[@class="a"]z.//tag[@class="b"]z.//tag[@id]z.//section[tag]z.//section[element]z../tagzsection/../tagz	section//)rrwr�r�r?r&rp)r
r�rrr�test_findall�sR"%"&""&&


zElementFindTest.test_findallcCs~tjt�}|jt|jd��g�|jt|jd��dgd�|jt|jd��dgd�dS)Nr"z{http://effbot.org/ns}tagr�z.//{http://effbot.org/ns}tagr)rrwrBr?r&rp)r
r�rrr�test_test_find_with_ns�sz&ElementFindTest.test_test_find_with_nscCs�tjd�}idd6}|jt|jdd|��d�|jt|jdd|��d�idd6}|jt|jdd|��d	�|jt|jdd|��d�dS)
Nz�
            <a xmlns:x="X" xmlns:y="Y">
                <x:b><c/></x:b>
                <b/>
                <c><x:b/><b/></c><y:b/>
            </a>r�Zxxz.//xx:b�
namespacesr�z.//br�rM)rrwr?r@rp)r
r��nsmaprrr�test_findall_different_nsmaps�s	
%%
%z-ElementFindTest.test_findall_different_nsmapsc	Cs9tjt�}|jtd��|jd�WdQXdS)Nzcannot use absolute pathz/tag)rrwr�r�r�rp)r
r�rrr�
test_bad_find�szElementFindTest.test_bad_findcCs�tjt�}|jtj|�jd�jd�|jtj|�jd�d�|jttj|�j	d��dgd�|jttj|�j	d��dgd�dS)Nr"r;r�z//tagr)
rrwr�r?r	rnr"rqr&rp)r
r�rrr�test_find_through_ElementTree�s%"!!z-ElementFindTest.test_find_through_ElementTreeN)
rrrr�r�r�r�rrrrrrrr��s,
r�c@s[eZdZddd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�ZdS)�ElementIterTestNcCst|j|��S)N)r&rt)r
rr"rrr�_ilist
szElementIterTest._ilistcCs�tjd�}|j|j|�dddg�|j|j|jd��ddg�|jt|j��jd�|jdj|j	��d�|jdj|jd�j	��d�|jt|j	��d�t
|d	d
�}|jttj|��dd�t
|d	d
�}tjd
tj
��}|jttj|d|��dd�tjd�}|jt|j�tjd�}|jdj|j	��d�dS)Nz7<html><body>this is a <i>paragraph</i>.</body>..</html>r<r�r�rOzthis is a paragraph...zthis is a paragraph.z
this is a rFrr�r�r�z*<root>a&amp;<sub>b&amp;</sub>c&amp;</root>za&b&c&)rrwr?rrnr�rtr"r�rur!r�r�r�r	r��AttributeError)r
rPZ
sourcefiler�r rrr�
test_basic
s$"(!#"zElementIterTest.test_basiccCs�tjd�}|j|j|�dg�tj|d�}|j|j|�ddg�tj|d�}|j|j|�dddg�tj|d�}|j|j|�ddddg�|d|d<|d=|j|j|�ddg�dS)Nr}r|rr~rMr)rr>r?rr�)r
r}r|rr~rrr�test_corners(s"%zElementIterTest.test_cornerscCs�tjd�}|j|j|d�dgd�|j|j|d�dgd�|jt|jdd��dgd�dddddddg}|j|j|�|�|j|j|d	�|�dS)
NaJ
            <document>
                <house>
                    <room>bedroom1</room>
                    <room>bedroom2</room>
                </house>
                <shed>nothing here
                </shed>
                <house>
                    <room>bedroom8</room>
                </house>
            </document>ZroomrZhouser�r"r�Zshedre)rrwr?rr&rt)r
rPZall_tagsrrr�test_iter_by_tag>s	##z ElementIterTest.test_iter_by_tagc	CsBtjd�}|j�}|jt��tj|�WdQXdS)Nr})rr>rtr�r�r�)r
r}rcrrrr�ZszElementIterTest.test_copycCsltjd�}|j�}xJttjd�D]5}|jttjf��tj	||�WdQXq/WdS)Nr}rM)
rr>rtr�r-r�r�r�r0r.)r
r}rcr7rrrr�`s
zElementIterTest.test_pickle)	rrrrrrrr�r�rrrrr	src@s�eZdZdZdZdd�Zdd�Zdd�Zd	d
�Zdd�Z	d
d�Z
dd�Zdd�Zdd�Z
dS)�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>cCs�|j|jd�|j|jd�|j|jd�|j|ji�t|�}|jt|�d�|d}|j|jd�|j|jd�|j|jd�|j|ji�dS)Nr<r;rMrZdivr�r:)r?r"r;r:r<rAr@)r
r�Zchildrenr�rrr�_check_sample1_elementps
z&TreeBuilderTest._check_sample1_elementcCs�Gdd�d�}Gdd�d|�}tjd|��}|j|j�|j|j�d�tjd|��}|j|j�|j|j�d�tjdt��}|j|j�|j|j��dS)Nc@seZdZdd�ZdS)z<TreeBuilderTest.test_dummy_builder.<locals>.BaseDummyBuildercSsdS)Nr�r)r
rrrr�szBTreeBuilderTest.test_dummy_builder.<locals>.BaseDummyBuilder.closeN)rrrr�rrrr�BaseDummyBuilder~src@s$eZdZdd�ZZZdS)z8TreeBuilderTest.test_dummy_builder.<locals>.DummyBuildercWsdS)Nr)r}rrr�<lambda>�szATreeBuilderTest.test_dummy_builder.<locals>.DummyBuilder.<lambda>N)rrrr�r�r�rrrr�DummyBuilder�sr
r�r�)rr�r��sample1r?r��objectr�)r
rr
r�rrr�test_dummy_builder}sz"TreeBuilderTest.test_dummy_buildercCsKtjdtjdd��}|j|j�|j�}|j|�dS)Nr��element_factory)rr�r�r�rr�r
)r
r�r�rrr�$test_treebuilder_elementfactory_none�sz4TreeBuilderTest.test_treebuilder_elementfactory_nonecCszGdd�dtj�}|�}|j|jd�d�tjd|�}|j|j�|j�}|j|�dS)Nc@seZdZdd�ZdS)z4TreeBuilderTest.test_subclass.<locals>.MyTreeBuildercSs|dS)Nr�r)r
rGrrr�foobar�sz;TreeBuilderTest.test_subclass.<locals>.MyTreeBuilder.foobarN)rrrrrrrr�
MyTreeBuilder�srr�r�r�)	rr�r?rr�r�rr�r
)r
r�tbr�r�rrr�
test_subclass�s	zTreeBuilderTest.test_subclasscsmg��fdd�}tjd|�}tjd|�}|j|j�|j�|j�dg�dS)Ncs�j|�tj||�S)N)rirr>)r"r<)�lstrr�	myfactory�s
z7TreeBuilderTest.test_element_factory.<locals>.myfactoryrr�Ztoplevel)rr�r�r��sample2r�r?)r
rrr�r)rr�test_element_factory�s
z$TreeBuilderTest.test_element_factorycCsatjd|�}tjd|�}|j|j�|j�}|j||�|j|�dS)Nrr�)rr�r�r�rr�r=r
)r
r*rr�r�rrr�_check_element_factory_class�sz,TreeBuilderTest._check_element_factory_classcCs*Gdd�dtj�}|j|�dS)Nc@seZdZdS)z@TreeBuilderTest.test_element_factory_subclass.<locals>.MyElementN)rrrrrrrr��sr�)rr>r)r
r�rrr�test_element_factory_subclass�sz-TreeBuilderTest.test_element_factory_subclasscCsFtj}|j|jd�Gdd�d|t�}|j|�dS)Nzxml.etree.ElementTreec@seZdZdS)zLTreeBuilderTest.test_element_factory_pure_python_subclass.<locals>.MyElementN)rrrrrrrr��sr�)rZ_Element_Pyr?rr�r)r
�baser�rrr�)test_element_factory_pure_python_subclass�s	z9TreeBuilderTest.test_element_factory_pure_python_subclasscCsRGdd�d�}tjd|��}|j|j�|j|j�d�dS)Nc@s.eZdZdZdd�Zdd�ZdS)z3TreeBuilderTest.test_doctype.<locals>.DoctypeParserNcSs|||f|_dS)N)�_doctype)r
r4�pubid�systemrrr�doctype�sz;TreeBuilderTest.test_doctype.<locals>.DoctypeParser.doctypecSs|jS)N)r)r
rrrr��sz9TreeBuilderTest.test_doctype.<locals>.DoctypeParser.close)rrrrr"r�rrrr�
DoctypeParser�sr#r�r<�&-//W3C//DTD XHTML 1.0 Transitional//EN�7http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd)zhtmlr$r%)rr�r�rr?r�)r
r#r�rrr�test_doctype�s	zTreeBuilderTest.test_doctypeN)rrrrrr
rrrrrrrr&rrrrr	hs
	
r	c@sveZdZdZdZdZdd�Zdd�Zdd	�Zd
d�Z	dd
�Z
dd�Zdd�ZdS)�
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>cCsE|j|jd�|j|djd�|j|djd�dS)Nrr�lineZ22)r?r"r;)r
r�rrr�_check_sample_element�sz#XMLParserTest._check_sample_elementcCs�tjdtj�d�}|j|j�|j|j��tjdddigdtj��}|j|j�|j|j��dS)Nzutf-8rr<r�)rr�r�r�rr)r�)r
r�Zparser2rrr�test_constructor_args�s	z#XMLParserTest.test_constructor_argscCsIGdd�dtj�}|�}|j|j�|j|j��dS)Nc@seZdZdS)z-XMLParserTest.test_subclass.<locals>.MyParserN)rrrrrrr�MyParser�sr+)rr�r�rr)r�)r
r+r�rrrr�s	zXMLParserTest.test_subclasscCs�tj�}|jt��|jddd�WdQX|jd�|j�tj��;tj	dt�tj�}|j|j
�|j�WdQXdS)Nr<z&-//W3C//DTD XHTML 1.0 Transitional//ENz7http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtdz<html/>�error)rr��assertWarns�DeprecationWarningr"r�r�r�r��simplefilterr)r
r�rrr�test_doctype_warning	s



z"XMLParserTest.test_doctype_warningcsd�G�fdd�dtj�}|�}|jt��|j|j�WdQX|j�|j�d
�d��tj	��wtj
dt�G�fdd�d�}|d	|��}|j|j�|j�|j��|j�d�WdQXdS)Ncs"eZdZ�fdd�ZdS)z@XMLParserTest.test_subclass_doctype.<locals>.MyParserWithDoctypecs|||f�dS)Nr)r
r4r r!)rrrr"	szHXMLParserTest.test_subclass_doctype.<locals>.MyParserWithDoctype.doctypeN)rrrr"r)rrr�MyParserWithDoctype	sr1r<�&-//W3C//DTD XHTML 1.0 Transitional//EN�7http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtdr,cs"eZdZ�fdd�ZdS)z:XMLParserTest.test_subclass_doctype.<locals>.DoctypeParsercs|||f�dS)Nr)r
r4r r!)�	_doctype2rrr"$	szBXMLParserTest.test_subclass_doctype.<locals>.DoctypeParser.doctypeN)rrrr"r)r4rrr##	sr#r�)�htmlr2r3)r5r2r3)rr�r-r.r�rr�r?r�r�r/r�)r
r1r�r#r)rr4r�test_subclass_doctype	s(	
	



	z#XMLParserTest.test_subclass_doctypecCsctj��Qtjdt�Gdd�dtj�}|�}|j|j�|j�WdQXdS)z:Ensure that ordinary usage is not deprecated (Issue 19176)r,c@seZdZdS)zDXMLParserTest.test_inherited_doctype.<locals>.MyParserWithoutDoctypeN)rrrrrrr�MyParserWithoutDoctype4	sr7N)	r�r�r/r.rr�r�rr�)r
r7r�rrr�test_inherited_doctype0	s
	z$XMLParserTest.test_inherited_doctypecCsutjdtj��}|j|j�|j�}|j|jd�|j|jdd�|j|j	d�dS)Nr�ZmoneyrTu
$£€𐅻)
rr�r�r��sample3r�r?r"r<r;)r
r�r�rrr�test_parse_string:	szXMLParserTest.test_parse_stringN)
rrrrrr9r)r*rr0r6r8r:rrrrr'�s
r'c@seZdZdd�ZdS)�NamespaceParseTestcCs�idd6dd6}tjt�}|jt|jd|��d�|jt|jd|��d�|jt|jd	|��d�dS)
NZhello�hr�r�z{hello}tablerMz.//{hello}tdr�z.//{foo}name)rrx�SAMPLE_XML_NS_ELEMSr?r@rp)r
r�rPrrr�test_find_with_namespaceD	s
""z+NamespaceParseTest.test_find_with_namespaceN)rrrr>rrrrr;C	sr;c@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�ZdS)�ElementSlicingTestcCsdd�|D�S)NcSsg|]}|j�qSr)r")r#r�rrrr$O	s	z1ElementSlicingTest._elem_tags.<locals>.<listcomp>r)r
Zelemlistrrr�
_elem_tagsN	szElementSlicingTest._elem_tagscCs|jt|��S)N)r@rA)r
rrrr�
_subelem_tagsQ	sz ElementSlicingTest._subelem_tagscCs>tjd�}x(t|�D]}tj|d|�qW|S)zxCreate an Element with a tag 'a', with the given amount of children
           named 'a0', 'a1' ... and so on.

        r}za%s)rr>r�r�)r
Znumchildrenr�r�rrr�_make_elem_with_childrenT	sz+ElementSlicingTest._make_elem_with_childrencsy|jd��|j�djd�|j�d	jd�|jt�fdd��|jt�fdd��dS)
Nr�rM�a1r��a8cs�dS)N�rr)r�rrrd	sz?ElementSlicingTest.test_getslice_single_index.<locals>.<lambda>cs�dS)NrEi�rr)r�rrre	s���)rBr?r"r��
IndexError)r
r)r�r�test_getslice_single_index^	s
z-ElementSlicingTest.test_getslice_single_indexcCs|jd�}|j|j|dd��dddg�|j|j|dd��dddg�|j|j|dd��dddg�|j|j|dd��ddg�|j|j|dd��ddg�|j|j|dd	��d
dg�dS)
N�r�a3�a4�a5�r`rMr��a0rCr�)rBr?r@)r
r�rrr�test_getslice_rangeg	s,,,))z&ElementSlicingTest.test_getslice_rangecCs%|jd�}|j|j|ddd��ddg�|j|j|ddd��ddd	dg�|j|j|ddd��ddg�|j|j|ddd��d
dg�|j|j|ddtj��dg�|j|j|ddtjd>��dg�dS)Nr��rMrDZa9rrNrJZa6rC�@)rBr?r@r,�maxsize)r
r�rrr�test_getslice_stepsq	s,2,,,z&ElementSlicingTest.test_getslice_stepscCs|jd�}|j|j|ddd
��ddddg�|j|j|ddd��ddg�|j|j|ddtj��dg�|j|j|ddtjd��dg�|j|j|ddtjd	>��dg�dS)Nr�rMrJ�a2rCrNr�rrQr�rF)rBr?r@r,rR)r
r�rrr�test_getslice_negative_steps{	s2,-1z/ElementSlicingTest.test_getslice_negative_stepscCsc|jd�}|dd�=|j|j|�ddg�|jd�}|dd�=|j|j|�g�|jd�}|ddd	�=|j|j|�g�|jd�}|ddd
�=|j|j|�ddg�|jd�}|ddd�=|j|j|�ddg�|jd�}|ddd�=|j|j|�dg�dS)Nr�rr�rTrJrMrNrCr�rF)rBr?rA)r
r�rrr�
test_delslice�	s$

z ElementSlicingTest.test_delslicecCs�|jd�}tjd�|d<|j|j|�ddddg�tjd�|d<|j|j|�ddddg�|jt��tjd	�|d
<WdQX|jt��tjd	�|d<WdQX|j|j|�ddddg�dS)
Nr�r|rMrNrTrJrr�r~r`rF���)rBrr>r?rAr�rG)r
r�rrr�test_setslice_single_index�	s%%z-ElementSlicingTest.test_setslice_single_indexcCs|jd�}dd�td�D�|dd�<|j|j|�ddd	d
g�|jd�}tjd�g|dd�<|j|j|�ddd
g�|jd�}dd�td�D�|dd�<|j|j|�ddd	d
d
g�dS)Nr�cSs#g|]}tjd|��qS)zb%s)rr>)r#r�rrrr$�	s	z:ElementSlicingTest.test_setslice_range.<locals>.<listcomp>r�rMrrN�b0�b1rJr|cSs#g|]}tjd|��qS)zb%s)rr>)r#r�rrrr$�	s	Zb2)rBr�r?rArr>)r
r�rrr�test_setslice_range�	s#%"#z&ElementSlicingTest.test_setslice_rangecCs�|jd�}dd�td�D�|ddd�<|j|j|�ddd	d
ddg�|jd�}|jt��$tjd
�g|ddd�<WdQX|jt��+dd�td�D�|ddd�<WdQX|jt��g|ddd�<WdQX|j|j|�ddd	dddg�|jd�}tjd
�g|ddtj	�<|j|j|�dd
d	dg�tjd�g|ddtj	d>�<|j|j|�ddd	dg�dS)NrIcSs#g|]}tjd|��qS)zb%s)rr>)r#r�rrrr$�	s	z:ElementSlicingTest.test_setslice_steps.<locals>.<listcomp>r�rMr`rNrYrTrZrKrLr|cSs#g|]}tjd|��qS)zb%s)rr>)r#r�rrrr$�	s	rrCrJr�rrQ)
rBr�r?rAr�r�rr>r,rR)r
r�rrr�test_setslice_steps�	s &+%,+"%&z&ElementSlicingTest.test_setslice_stepscCs|jd�}dd�td�D�|ddd�<|j|j|�ddd	d
g�|jd�}|jt��$tjd�g|ddd�<WdQX|jt��+dd�td
�D�|ddd�<WdQX|jt��g|ddd�<WdQX|j|j|�dddd
g�|jd�}tjd�g|ddtj	�<|j|j|�dddd
g�tjd�g|ddtj	d�<|j|j|�dddd
g�tjd�g|ddtj	d>�<|j|j|�dddd
g�dS)Nr�cSs#g|]}tjd|��qS)zb%s)rr>)r#r�rrrr$�	s	zCElementSlicingTest.test_setslice_negative_steps.<locals>.<listcomp>r�rrMrNrZrYrJr|cSs#g|]}tjd|��qS)zb%s)rr>)r#r�rrrr$�	s	rrCrTrr~rQr�r�r�r�)
rBr�r?rAr�r�rr>r,rR)r
r�rrr�test_setslice_negative_steps�	s$&%%,%#%'%'z/ElementSlicingTest.test_setslice_negative_stepsN)rrrr@rArBrHrOrSrUrVrXr[r\r]rrrrr?M	s
	

	
r?c@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�ZGdd�d�Z
dd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%S)&�IOTestcCstjt�dS)N)r�unlinkr)r
rrrr��	szIOTest.tearDownc
Cs�tjd�}d|_|jt|�d�xbdD]Z}|j|��C|jt|d|�d�|jt|d|j��d�WdQXq5Wx�d D]z}|j|��c|jt|d|�d|j|��|j�}|jt|d|�d|j|��WdQXq�Wtjd�}d|_|jt|�d
�|jt|dd�d�|jt|dd�d�x7d!D]/}|jt|d|�d|j|��q�Wtjd�}d|jd<|jt|�d�|jt|dd�d�|jt|dd�d�x7d"D]/}|jt|d|�d|j|��q)Wtjd�}d|_|jt|�d�|jt|dd�d�|jt|dd�d�x7d#D]/}|jt|d|�d|j|��q�Wtjd�}d|jd<|jt|�d�|jt|dd�d�|jt|dd�d�x7d$D]/}|jt|d|�d|j|��qmWdS)%Nr"�abcz<tag>abc</tag>�utf-8�us-asciirs<tag>abc</tag>�
iso-8859-1�utf-16�utf-32z2<?xml version='1.0' encoding='%s'?>
<tag>abc</tag>z<&"'>z<tag>&lt;&amp;"'&gt;</tag>s<tag>&lt;&amp;"'&gt;</tag>z><?xml version='1.0' encoding='%s'?>
<tag>&lt;&amp;"'&gt;</tag>rUz"<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;" />�utf-16le�utf-16beu@<?xml version='1.0' encoding='%s'?>
<tag key="åöö&lt;&gt;" />)rarb)rcrdre)rcrdre)rcrdre)rcrdre)rcrdrfrgre)	rr>r;r?r!rd�upperr�r<)r
r�encrhrrrr:�	s|	

	


	


zIOTest.test_encodingc
CsWtjtjd��}|jt�ttd��}|j|j�d�WdQXdS)Nz<site />r�s<site />)rr	rwrrr�r?r�)r
r r�rrr�test_write_to_filename,
s
zIOTest.test_write_to_filenamecCs�tjtjd��}ttddd��*}|j|dd�|j|j�WdQXttd��}|j|j	�d�WdQXdS)Nz<site />r�rzutf-8rr�s<site />)
rr	rwr�rrr�r�r?r�)r
r r�rrr�test_write_to_text_file2
szIOTest.test_write_to_text_filecCstjtjd��}ttd��$}|j|�|j|j�WdQXttd��}|j|j	�d�WdQXdS)Nz<site />r�r�s<site />)
rr	rwr�rrr�r�r?r�)r
r r�rrr�test_write_to_binary_file:
s
z IOTest.test_write_to_binary_filecCstjtjd��}ttd��*}|j|dd�|j|j�WdQXttd��&}|j|j	�dj
d��WdQXttddd��*}|j|dd�|j|j�WdQXttd��&}|j|j	�dj
d��WdQXdS)	Nz<site />r�rzutf-16r�z0<?xml version='1.0' encoding='utf-16'?>
<site />�	bufferingr)rr	rwr�rrr�r�r?r�r�)r
r r�rrr�"test_write_to_binary_file_with_bomB
sz)IOTest.test_write_to_binary_file_with_bomcCsEtj�}tjd�}|j|�|j|j�jd�dS)Nz"<?xml version="1.0"?><site></site>�site)rr	rrr�r?rfr")r
r r�rrr�test_read_from_stringioU
s
zIOTest.test_read_from_stringiocCsQtjtjd��}tj�}|j|dd�|j|j�d�dS)Nz<site />rr)rr	rwrrrr?r)r
r r�rrr�test_write_to_stringio[
szIOTest.test_write_to_stringiocCsEtj�}tjd�}|j|�|j|j�jd�dS)Ns"<?xml version="1.0"?><site></site>ro)rr	rrr�r?rfr")r
r �rawrrr�test_read_from_bytesioa
s
zIOTest.test_read_from_bytesiocCsKtjtjd��}tj�}|j|�|j|j�d�dS)Nz<site />s<site />)rr	rwrrrr?r)r
r rrrrr�test_write_to_bytesiog
s
zIOTest.test_write_to_bytesioc@seZdZdS)zIOTest.dummyN)rrrrrrr�dummym
srucCs]tjd�}|j�}|j|_tj�}|j|�|j|j�j	d�dS)Nz"<?xml version="1.0"?><site></site>ro)
rrrur�rr	r�r?rfr")r
r��readerr rrr�test_read_from_user_text_readerp
s
z&IOTest.test_read_from_user_text_readercCsitjtjd��}tj�}|j�}|j|_|j|dd�|j|j�d�dS)Nz<site />rr)	rr	rwrrrurr?r)r
r r��writerrrr�test_write_to_user_text_writerx
sz%IOTest.test_write_to_user_text_writercCsitjd�}|j�}|j|_tj�}|j|�|j|j�j	d�tj�}dS)Ns"<?xml version="1.0"?><site></site>ro)
rrrur�rr	r�r?rfr")r
rrrvr rrr�!test_read_from_user_binary_reader�
s
z(IOTest.test_read_from_user_binary_readercCsctjtjd��}tj�}|j�}|j|_|j|�|j|j�d�dS)Nz<site />s<site />)	rr	rwrrrurr?r)r
r rrrxrrr� test_write_to_user_binary_writer�
s
z'IOTest.test_write_to_user_binary_writercCs�tjtjd��}tj�}|j�}|j|_dd�|_|j|_|j|dd�|j	|j
�djd��dS)Nz<site />cSsdS)NTrrrrrr�
szBIOTest.test_write_to_user_binary_writer_with_bom.<locals>.<lambda>rzutf-16z0<?xml version='1.0' encoding='utf-16'?>
<site />)rr	rwrrrur�seekable�tellr?rr�)r
r rrrxrrr�)test_write_to_user_binary_writer_with_bom�
sz0IOTest.test_write_to_user_binary_writer_with_bomcCsutjd�}|jtj|d�djtj|d���|jtj|d�djtj|d���dS)Nz<tag>foo</tag>rrOzutf-16r�)rrxr?r�r�r�)r
r�rrr�test_tostringlist_invariant�
sz"IOTest.test_tostringlist_invariantcCsstjd�}|jtj|d�d�|jtj|ddd�d�|jtj|ddd�d�dS)Nz<tag>a<x />b<y></y>c</tag>rz<tag>a<x />b<y />c</tag>Zshort_empty_elementsTFz<tag>a<x></x>b<y></y>c</tag>)rrxr?r�)r
r�rrr�test_short_empty_elements�
sz IOTest.test_short_empty_elementsN)rrrr�r:rjrkrlrnrprqrsrtrurwryrzr{r~rr�rrrrr^�	s$E		r^c@s@eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�ParseErrorTestcCs|jtj�t�dS)N)r=rr�r�)r
rrrr�
szParseErrorTest.test_subclasscCsDytj|�Wn,tjk
r?}z	|SWYdd}~XnXdS)N)rrxr�)r
r�r�rrr�
_get_error�
szParseErrorTest._get_errorcCsX|j|jd�jd�|j|jd�jd	�|j|jd�jd
�dS)Nr�rMrz<tag>&foo;</tag>r`zfoobar<rI)rMr)rMr`)rMrI)r?r�Zposition)r
rrr�test_error_position�
sz"ParseErrorTest.test_error_positioncCs?ddljjj}|j|jd�j|j|j�dS)Nrr�)	Zxml.parsers.expat.errorsZparsersZexpat�errorsr?r��codeZcodesZXML_ERROR_SYNTAX)r
ZERRORSrrr�test_error_code�
szParseErrorTest.test_error_codeN)rrrrr�r�r�rrrrr��
sr�c@seZdZdd�ZdS)�KeywordArgsTestcCsvtjd�}|j|jdd�|jdddd��|j|jddd�|jdddddd��|j|jdd�|jdddd��|jt|jdd��t|jdddd���|jtjd�j	i�tjdt
dddd	��tjdd
t
dddd	��tjdt
dd�dd	�tjddddd	�tjdt
dddd	�dddd	�g}xC|D];}|j|jd�|j|j	t
dddd	��q�Wtj|ddd
id
d6�}|j|j	dd
�|j
td��tjdd�WdQX|j
td��tjdd
d�WdQXdS)Nz
<a>foo</a>r}�pathr�r�r��#�idr�r<rrZvalue1Zkey1zmust be dict, not strzI'm not a dict)rrwr?rnrqrprAror>r<r1r"r�r�r�)r
rG�elementsr�r�rrr�test_issue14818�
s0!0
&#zKeywordArgsTest.test_issue14818N)rrrr�rrrrr��
sr�c@s(eZdZdd�Zdd�ZdS)�NoAcceleratorTestcCststjd��ndS)Nzonly for the Python version)r(�unittest�SkipTest)r
rrrr��
szNoAcceleratorTest.setUpcCs6|jtjjtj�|jtjjtj�dS)N)r=r(r>rz�types�FunctionTyper�)r
rrr�test_correct_import_pyET�
sz*NoAcceleratorTest.test_correct_import_pyETN)rrrr�r�rrrrr��
sr�c@sCeZdZdZdZddd�Zdd�Zdd	�ZdS)
�CleanContextz1Provide default namespace mapping and path cache.NFcCsXtjjdkrd}ndtfdtfdtff}tjd||�|_dS)Nr�Tz�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@This method will be removed in future versions.  Use .+ instead.�quiet)	r,�flags�optimize�
FutureWarningr.�PendingDeprecationWarningrZcheck_warnings�
checkwarnings)r
r�Zdeprecationsrrrrzs	zCleanContext.__init__cCs`ddlm}tjj|_|jj�|_|j|_	|j	j�|_|j
j�dS)Nr)r)rrrr�Z_namespace_map�_nsmapr��_nsmap_copyr��_path_cacher��	__enter__)r
rrrrr�szCleanContext.__enter__cGsPddlm}|jj�|jj|j�|j|_|jj	|�dS)Nr)r)
rrr�rrr�r�r�r�r��__exit__)r
r�rrrrr�s

zCleanContext.__exit__)rrr�__doc__r�rzr�r�rrrrr��
s

r�cCs�tdddg�a|dkr*t}n|attttttt	t
ttt
tttttg}ttk	r�|jtg�nz-tdttk	��tj|�WdQXWddaaXdS)Nzxml.etree.ElementTreeZblockedZ_elementtreer�)rr(rrr?r�r�r�rJr^r�r�r�r�rr	r'r[r�rjr�r�rZrun_unittest)�moduleZtest_classesrrr�	test_main$s8			
r��__main__)Br�r<rrDr-r,r�r�r�r��	itertoolsrr�rZtest.supportrrrrr(rr�r��UnicodeEncodeErrorr�r�r�r�rBr=r@ZTestCaserr!r&r'rJr[r��format�escaper�r�r�r�r�r�r��__hash__r�r�r�r�rr	r'r;r?r^r�r�r�rr�r�rrrrr�<module>s�"




#���[�
	








��]54)�_xc
��$(0