
    daf                       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mZ d dlmZ d d	lmZ dada  ed
d      Z!	 e!jE                  d        edd      Z% edd      Z&dZ'dZ(dZ)dZ*dZ+dZ,dZ-dddZ.d Z/ G d dej`                        Z1dpdZ2d  Z3 G d! d"      Z4 G d# d$ej`                        Z5 G d% d&ej`                        Z6i Z7d'e7d(<   d)e7d*<   d+e7d,<   d-e7d.<   d/e7d0<   d1e7d2<   d3e7d4<   d5e7d6<   d7jq                   ejr                  e!d            e7d8<   d9e7d:<   i Z:d;e:d<<   d=e:d><   d?e7d@<   dAe7dB<   dCe7dD<    G dE dFej`                        Z; G dG dHej`                        Z< G dI dJe4ej`                        Z= G dK dLe4ej`                        Z> G dM dNe?      Z@e?j                  e@_A         G dO dPe?      ZBe?j                  eB_A         G dQ dRe4ej`                        ZC G dS dTej`                        ZD G dU dVej`                        ZE G dW dXej`                        ZF G dY dZej`                        ZG G d[ d\ej`                        ZH G d] d^ej`                        ZI G d_ d`ej`                        ZJ G da dbej`                        ZK G dc ddej`                        ZL G de dfej`                        ZM G dg dhej`                        ZN G di djej`                        ZOdk ZP G dl dmej`                        ZQdqdnZReSdok(  r ej                          yy# e#$ r  ejH                  d      w xY w)r    N)partial)productislice)support)	os_helper)warnings_helper)findfile
gc_collect	swap_attr	swap_item)import_fresh_module)TESTFNz
simple.xmlxmltestdata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                       fd}|S )Nc                 D      fd}t        j                  |        |S )Nc                  j    t        j                  di5   | i | d d d        y # 1 sw Y   y xY w)Nr   )r   check_warnings)argskwargsfiltersr   tests     ./root/Python-3.12.4/Lib/test/test_xml_etree.pynewtestz1checkwarnings.<locals>.decorator.<locals>.newtest~   s8     //FF &d%f%& & &s   	)2)	functoolsupdate_wrapper)r   r   r   r   s   ` r   	decoratorz checkwarnings.<locals>.decorator}   s    	& 	  $/     )r   r   r    s   `` r   checkwarningsr#   |   s     r!   c                 ^    | j                  dt        j                  j                               S )N   
)replaceoslinesepencode)datas    r   convlinesepr+      s     <<rzz00233r!   c                       e Zd Zd Zd Zy)
ModuleTestc                 (    ddl m} ddl m} ddl m} y )Nr   )ElementTreeElementIncludeElementPath)	xml.etreer/   r1   r3   )selfr/   r1   r3   s       r   test_sanityzModuleTest.test_sanity   s     	*,)r!   c                 B    d}t        j                  | t        |d       y )N)xml.etree.ElementTree_elementtree)
HTML_EMPTY)not_exported)r   check__all__ET)r5   namess     r   test_allzModuleTest.test_all   s    9T2u?Kr!   N)__name__
__module____qualname__r6   r?   r"   r!   r   r-   r-      s    *Lr!   r-   Tc                     |dk7  rt        j                         }nt        j                         }t        j	                  |       } |j
                  |fd|i| |r|j                         S |j                  d       |S )Nunicodeencodingr   )ioBytesIOStringIOr=   r/   writegetvalueseek)elem	to_stringrE   optionsfiletrees         r   	serializerQ      se    9zz|{{}>>$DDJJt2h2'2}}		!r!   c                 @    | D cg c]  }|j                    c}S c c}w Ntag)seqrL   s     r   summarize_listrW      s    !$%DHH%%%   c                   (    e Zd Zed        Zd Zd Zy)ElementTestCasec                 &    t         t        h| _        y rS   )pyETr=   modulesclss    r   
setUpClasszElementTestCase.setUpClass   s    Rjr!   c                    	 t        t        j                  ||      5  t        j                  ||      }d d d        t        t        j                  ||      5  t        j
                        }d d d        |S # 1 sw Y   DxY w# 1 sw Y   S xY w# t        j                  $ r]}t        t        dft        dfg      }	t        j                  d|d|	j                  ||      d|	j                  ||            |d }~ww xY w)NcETr\   zFailed to round-trip z from z to )r   sysr]   pickledumpsloadsPicklingErrordictr=   r\   r   
TestFailedget)
r5   objnamedumperloaderprototempresultpehumans
             r   pickleRoundTripzElementTestCase.pickleRoundTrip   s    	L3;;f5 0||C/03;;f5 ,d+, 0 0,  ## 	L2u+f~67E$$(+(-		&&(A(-		&&(A&C D JLL	LsL   B A7#B B-B 7B <B BB B D #AC;;D c                    | j                  |t        j                  t        j                  f       | j                  |t        j                  t        j                  f       | j	                  t        t        |            t        t        |                   t        ||      D ]  \  }}| j                  ||        t        j                  dddd      }| j	                   ||       ||             y )NrU   tailtextattrib)assertIsInstancer=   Elementr\   assertEquallenlistzipassertEqualElementsoperator
attrgetter)r5   alicebobxy
propertiess         r   r   z#ElementTestCase.assertEqualElements   s    ebjj$,,%?@cBJJ#=>T%[)3tCy>:sO 	+DAq$$Q*	+((I
E*JsO<r!   N)r@   rA   rB   classmethodr`   rt   r   r"   r!   r   rZ   rZ      s    ! !=r!   rZ   c                      e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d  Z"d! Z#d" Z$d# Z%d$ Z&d% Z'd& Z(d' Z)d( Z*d) Z+d* Z,d+ Z-d, Z.d- Z/y.)/ElementTreeTestc                 :    | j                  t        |      |       y rS   )r{   rQ   )r5   rL   expecteds      r   serialize_checkzElementTreeTest.serialize_check   s    4(3r!   c                      fdt         j                  d      } |       t         j                  |      } |j                                t         j                  dd      }t         j                  |      } j	                  t        |      d       t         j                  dd      } fd |j                          |j                          |j                          |j                          |j                          |j                          |j                          |j                          |j                          |j                          |j                           |j"                          |j$                          |j&                          |j(                         fd} ||j                  d              ||j                  d	              ||j                  d              ||j                  d	              j+                  t         j,                  t         j.                          j+                  t         j0                  t         j2                         y )
Nc                 2   j                  t        j                  |       d       t        |       }dD ]9  }j                  t	        | |      d|z         j                  ||d|z         ; j                  | j                  t               j                  | j                  t               | j                   j                  | j                  t               | j                   j                  | j                  t               | D ]
  } |        y )Nznot an elementmsg)rU   rx   rw   rv   zno %s memberzno %s visible by dir)
assertTruer=   	iselementdirhasattrassertInry   rU   strrx   rh   rw   rv   )elementdirelemattrrL   check_elementr5   s       r   r   z5ElementTreeTest.test_interface.<locals>.check_element   s    OOBLL17GOH'lG7 ; 6*T1   3dG2T9  ;; !!'++s3!!'..$7||'%%gllC8||'%%gllC8 $d#$r!   rU      tägvaluekeyz^<Element 't\xe4g' at 0x.*>$c                 F    j                  t        | d      d| z         y )N__call__z%s not callabler   )r   r   )methodr5   s    r   check_methodz4ElementTreeTest.test_interface.<locals>.check_method   s%    OOGFJ7)F2  4r!   c                 *     | j                          y rS   )__next__)itr   s    r   
check_iterz2ElementTreeTest.test_interface.<locals>.check_iter  s    %r!   *)r=   rz   r/   getrootassertRegexreprappendextendinsertremovefinditerfindfindallfindtextclearrj   setkeysitemsiteritertextr{   XML
fromstringPIProcessingInstruction)r5   r   rP   r   r   r   s   `   @@r   test_interfacezElementTreeTest.test_interface   s   	$$ **U#g~~g&dlln%**X7*3~~g&g(GH**U*0	4 	W^^$W^^$W^^$W^^$W\\"W%%&W__%W%%&W]]#W[[!W[[!W\\"W]]#W\\"W%%&	& 	7##E*+7##C()4=='(4==%& 	/ 8 89r!   c                 R   t         j                  d      }| j                  |j                  d       d|_        | j                  |j                  d       d|_        | j                  |j                  d       | j	                  |j
                         d|_        | j                  |j
                  d       d|_        | j                  |j
                  d       | j	                  |j                         d|_        | j                  |j                  d       d|_        | j                  |j                  d       | j                  |j                  i        dd	d
|_        | j                  |j                  dd	d
       ddd|_        | j                  |j                  ddd       y )NrU   TagTAGTextTEXTTailTAILbd)acBD)AC)r=   rz   r{   rU   assertIsNonerw   rv   rx   )r5   r   s     r   test_set_attributez"ElementTreeTest.test_set_attribute  sH   **U#e,e,e,',,'v.v.',,'v.v.,"-s)=>"-s)=>r!   c                    t         j                  d      }| j                  |d       t         j                  d      }|j	                  |       | j                  |d       |j                  |       | j                  |d       |j                  d|       | j                  |d       |j                  |       |j                  |g       | j                  |d       |j                  |       |j                  t        |g             | j                  |d       |j                  |       t         j                  dd	      }| j                  |d
       t         j                  d      }|j	                  |       | j                  |d       |j                  d|       | j                  |d       |j                  |       | j                  |d       |j                  |       | j                  |d
       | j                  t              5 }|j                  |       d d d        | j                  t        j                        d       | j                  |d
       |||g|dd | j                  |d   d       | j                  |dd |d   |d   g       | j                  |d dd   |d   |d   g       |dd= | j                  |d       y # 1 sw Y   xY w)N<body><tag/></body><body><tag /></body>tag2z<body><tag /><tag2 /></body>r   z<body><tag2 /><tag /></body>rU   r   r   z<tag key="value" />subtagz!<tag key="value"><subtag /></tag>z+<tag key="value"><subtag /><subtag /></tag>zlist.remove(x): x not in list   z
<subtag />	      )r=   r   r   rz   r   r   r   r   r   assertRaises
ValueErrorr{   r   	exception)r5   rL   er   
subelementcms         r   test_simpleopszElementTreeTest.test_simpleops*  s    vv+,T#9:JJvAT#ABAT#9:AqT#ABAQCT#ABAD!IT#ABA**U*0W&;<ZZ)
z"W&IJq*%W=	?z"W&IJz"W&;<z* 	'bNN:&	'R\\*,KLW&;<"J
;!WQZ61
GAJ'?@!AWQZ(@AAaCLW=	?	' 	's   KKc                     | j                  t        j                  d      d       | j                  t        j                  d      d       | j                  t        j                  d      d       y )Nz<tag>hello</tag>z)<tag>&#104;&#101;&#108;&#108;&#111;</tag>z<tag><![CDATA[hello]]></tag>)r   r=   r   r5   s    r   
test_cdatazElementTreeTest.test_cdataV  s[     	RVV$67"	$RVV$OP"	$RVV$BC"	$r!   c                    t        j                  t        j                  d            }t        j                  |      }| j                  |j                  d      j                  d       | j                  |j                  d      j                  d       t        j                  t              }| j                  |j                  d      j                  d       | j                  |j                  d      j                  d       y )Nr   )rO   rU   section/tagr   zelement/../empty-elementempty-element)
rF   rG   
SAMPLE_XMLr)   r=   r/   r{   r   rU   SIMPLE_XMLFILE)r5   
stringfilerP   s      r   test_file_initzElementTreeTest.test_file_init`  s    ZZ
 1 1' :;
~~:~.5)--u5=155u=~~>~29-119=#=>BB	!r!   c                 ~   ddl m} t        j                  t              }|j
                  j                          t        d      D ]2  }t        j                  |      j                  dt        |      z          4 t        |j
                        }t        d      D ]2  }t        j                  |      j                  dt        |      z          4 | j                  t        |j
                        |       t        d      D ]2  }t        j                  |      j                  dt        |      z          4 | j                  t        |j
                        |       t        d      D ]2  }t        j                  |      j                  dt        |      z          4 | j                  t        |j
                        d       y )Nr   r2   
   z./   iX  i  )r4   r3   r=   r   r   _cacher   ranger/   r   r   r|   r{   assertGreater
assertLess)r5   r3   rL   icache_len_10s        r   test_path_cachezElementTreeTest.test_path_cachek  s:    	*vvj!  "rBABNN4055d3q6kBB;--.rBABNN4055d3q6kBB[//0,?rBABNN4055d3q6kBB3{112LAsCAR^^D166tCF{CCK../5r!   c                    dd l }t        j                  d      } |j                   |      } |j                  |      }d|j	                  d      _        | j                  |d       | j                  |d       | j                  |d       y )Nr   z<tag>hello<foo/></tag>barfooz<tag>hello<bar /></tag>z<tag>hello<foo /></tag>)copyr=   r   deepcopyr   rU   r   )r5   r   e1e2e3s        r   	test_copyzElementTreeTest.test_copy{  sx     	VV,-TYYr]T]]2"R!:;R!:;R!:;r!   c                 8   t         j                  d      }|j                  d       | j                  |j                  dd      d       |j	                  dd       | j                  |j                  d      d       t         j                  dd      }| j                  |j                  d      d       | j                  |j
                  ddi       ddi}t         j                  d|      }|j                          | j                  |j                  d      d       | j                  |j
                  ddi       ddi}t        j                  di |}|j                          | j                  |j                  d      d       | j                  |j
                  ddi       t         j                  dddid      }| j                  |j                  d      d       | j                  |j
                  ddi       t         j                  d      }d|_        |j	                  d	d
       |j	                  dd       | j                  t         j                  |      d       | j                  t        |j                               d	dg       | j                  t        |j                               ddg       | j                  |j
                  d   d       d|j
                  d<   d|j
                  d<   | j                  t         j                  |      d       t         j                  d      }|j	                  dd       |j	                  dd       |j	                  dd       |j	                  dd       | j                  t         j                  |      d       y )NrU   r   defaultr   r   otherr   aatestatestvaltestbtest2s-   <test testa="testval" testb="test2">aa</test>)r   r   )r  r  test1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;  " />rT   )r=   rz   rj   r{   r   rx   r   rw   tostringsortedr   r   )r5   rL   rx   s      r   test_attribzElementTreeTest.test_attrib  s    zz% %3Y? %'2zz%Wz-%'2ug&67!zz%(%'2ug&67!zz*6*%'2ug&67zz%%!1wz?%'2ug&67zz&!	)$'"T*@	B		,w.@A

-%'9:	<W-w7&G&GT*N	P zz&!dfi &'T*n	pr!   c                 "   t         j                  d      }ddi}|j                  d|      }| j                  |j                  |d       |j                  |       | j                  |d       |j                          | j                  |d       |j                  |       | j                  |d       |j                  ||g       | j                  |d	       |g|d d  | j                  |d       t        |g      |d d  | j                  |d       y )
NrU   r   r   r   zattrib aliasingr   z!<tag><subtag key="value" /></tag><tag />zM<tag><subtag key="value" /><subtag key="value" /><subtag key="value" /></tag>)
r=   rz   makeelementassertIsNotrx   r   r   r   r   tuple)r5   rL   rx   subelems       r   test_makeelementz ElementTreeTest.test_makeelement  s     zz% !""8V45FGGT#FG

T9-GT#FGWg&'T[	])QT#FG	"QT#FGr!   c                 d   t         j                  t              }t        j                         }|j                  |d       | j                  |j                         d       t         j                  t              }t        j                         }|j                  |d       | j                  |j                         d       t        t              5 }|j                         }d d d        t         j                         }| j                  |j                  d       |j                         | j                  |j!                         d       t         j#                         }t         j                  |      }|j                  |       | j                  |j!                         d       y # 1 sw Y   xY w)NrD   rE   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   rF   rH   rI   r{   rJ   SIMPLE_NS_XMLFILEopenread	XMLParserr   versionfeedr   closeTreeBuilder)r5   rP   streamfr*   parserr  s          r   test_parsefilezElementTreeTest.test_parsefile  sJ    xx'

6I
.*	 xx)*

6I
.*	 .! 	Q668D	 4DV\\^	 !V,DV\\^	!	 	s   F&&F/c                 .   t         j                  d      }| j                  t         j                  |d      d       t         j	                  d      }| j                  t         j                  |d      d       g d}t         j                  |      }| j                  t         j                  |      d       | j                  dj                  t         j                  |            d       | j                  t         j                  |d      d       t         j                  d      \  }}| j                  t        |      d	       t         j                  d
      \  }}| j                  t        |      d       | j                  |d   j                  d       y )N<html><body>text</body></html>rD   r  )z<html><body>ztext</boz
dy></html>   <html><body>text</body></html>r!   asciisE   <?xml version='1.0' encoding='ascii'?>
<html><body>text</body></html>r   z(<html><body id='body'>text</body></html>r   body)r=   r   r{   r  r   fromstringlistjointostringlistXMLIDr|   rU   )r5   r   sequence_idss        r   test_parseliteralz!ElementTreeTest.test_parseliteral   s>   &&9:WyA0	2-- @AWyA0	2=##H-W-1	3"//'":;1	3Wg62	3 :;3S1%DE3S1%V&1r!   c                    t         j                  } |t              }| j                  |j                         t        |      \  }}| j                  |j                         | j                  ||j                  fd       | j                  |D cg c]  \  }}||j                  f c}}g d       | j                  |j                  j                  d        |t              }| j                  |D cg c]  \  }}||j                  f c}}g d       d} |t        |      }| j                  |D cg c]  \  }}||j                  f c}}g        d} |t        |      }| j                  |D cg c]  \  }}||j                  f c}}g        d} |t        |      }| j                  |D cg c]  \  }}||j                  f c}}g d       d	} |t        |      }| j                  |D cg c]  \  }}|dv r||j                  fn||f c}}g d
       d} |t        j                  d      |      }|D cg c]  \  }}|	 }}}| j                  |ddg       d}t        t        d      5 }| j                  t              5 } |||       d d d        | j                  |j                         d d d        | j                  t!        j"                        d       t%        j&                  |       5  | j                  t              5 } |t        |       d d d        | j                  t!        |j"                        d       ~d d d        t        j(                  d      }	d} ||	|      }| j                  |D cg c]	  \  }}||f c}}ddg       t        j                  d      }	 ||	      }
t        |
      \  }}| j                  ||j                  fd       | j                  t         j*                        5 }t        |
       d d d        | j                  t!        j"                        d       | j-                  t.        j0                  t2               t        t2        d      5 }|j5                  d       d d d         |t2              }
t        |
      \  }}| j                  ||j                  fd       t%        j&                  |       5  | j                  t         j*                        5 }t        |
       d d d        | j                  t!        |j"                        d       ~~
d d d        t%        j&                  |       5   |t2              }
~
d d d        | j                  t6              5   |d       d d d        y c c}}w c c}}w c c}}w c c}}w c c}}w c c}}w c c}}w # 1 sw Y   %xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY wc c}}w # 1 sw Y   xY w# 1 sw Y   }xY w# 1 sw Y   	xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nendr   )r0  r1  r   r1  rootr4  )r1  {namespace}elementr5  r1  {namespace}empty-elementr1  {namespace}rootr"   eventsstartr1  r>  r4  r>  r   r0  rA  r0  )r>  r   r2  r3  )r>  r1  start-nsend-ns)
rB  ) 	namespacer>  r:  r>  r6  r5  rH  r5  r>  r8  r7  r9  rC  NrB  rC  z<root xmlns=''/>rB  rC  r>  r1  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>
)rB  )rB  )rE  u   http://éffbot.org/ns)rB  )u   cléhttp://effbot.org/nsz<document />junk)r1  documentz.junk after document element: line 1, column 12wbs   <document />junknonexistent)r=   	iterparser   r   r4  nextr{   rU   r  rF   rH   r  r   r   assertFalseclosedr   r   r   check_no_resource_warningrG   
ParseError
addCleanupr   unlinkr   rI   FileNotFoundError)r5   rS  contextactionrL   r<  resr  r   sourcer   s              r   test_iterparsezElementTreeTest.test_iterparse  s    LL	N+',,'G}',,'&$((+-?@I6488,I L 	
 	))62-.I6488,I L 	 NF3I6488,I2NN6:I6488,I2N!NF3I6488,I 	L 		 8-v6.57*fd 17:J0J6488,394.A 79	 (BKK(;<fE*12,&$v22z845*.$' 	'1"":. %"!V$%QXX&	' 	R\\*,CD66t< 	"":. 2".&12S.0GH		 GH FF+WE\VT64.E=@H 	
 /0vBx&$((+-@Ar}}- 	H	R\\*@	B 		((&1&$ 	)1GG'(	)vBx&$((+-@A66t< 	""2==1 RRS.DFB	 66t< 	6"B	 01 	%m$	% 	%[ J J J J J7" 3
% %	' 	'2 2	 	 F	 		) 	) 	 		 		% 	%s   V
4V
6V!
7V'
7V-
9 V3
V9<W
V?#WW&W%.W&W3
W99X  X  X/X X,	X8?W		WWW#	W&&W09XXX	X  X),X58Yc                    t         j                  d      }d|_        | j                  |d       dt         j	                  |d      _        | j                  |d       d |_        | j                  |d       |j                  dt         j                  d	             | j                  |d
       t         j                  dd      |d<   | j                  |d       y )NrU   rw   z<tag>text</tag>subtextr   z'<tag>text<subtag>subtext</subtag></tag>ztext<subtag>subtext</subtag>r   commentz*text<!--comment--><subtag>subtext</subtag>r   r   z)text<?key value?><subtag>subtext</subtag>)	r=   rz   rw   r   
SubElementrU   r   Commentr   r5   rL   s     r   test_writefilezElementTreeTest.test_writefile  s    zz% 	T#45-6dH%*T#LM T#ABArzz),-T<	> %%w'QT#NOr!   c                    t        t              5 }|j                         }d d d         G d dt              } |       }t        j                  |      }|j                         | j                  |g d       t        t              5 }|j                         }d d d         G d dt              } |       }t        j                  |      }|j                  |       | j                  |g d       y # 1 sw Y   xY w# 1 sw Y   gxY w)Nc                       e Zd Zd Zd Zd Zy)4ElementTreeTest.test_custom_builder.<locals>.Builderc                 *    | j                  d|f       y Nr>  r   r5   rU   rx   s      r   r>  z:ElementTreeTest.test_custom_builder.<locals>.Builder.start      WcN+r!   c                 *    | j                  d|f       y Nr1  rm  r5   rU   s     r   r1  z8ElementTreeTest.test_custom_builder.<locals>.Builder.end      UCL)r!   c                      y rS   r"   r5   rw   s     r   r*   z9ElementTreeTest.test_custom_builder.<locals>.Builder.data      r!   N)r@   rA   rB   r>  r1  r*   r"   r!   r   Builderrj    s    ,*r!   rw  r  r?  c                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	rj  c                 *    | j                  d|f       y rl  rm  rn  s      r   r>  z:ElementTreeTest.test_custom_builder.<locals>.Builder.start  ro  r!   c                 *    | j                  d|f       y rq  rm  rr  s     r   r1  z8ElementTreeTest.test_custom_builder.<locals>.Builder.end  rs  r!   c                      y rS   r"   ru  s     r   r*   z9ElementTreeTest.test_custom_builder.<locals>.Builder.data  rv  r!   c                 ,    | j                  d||f       y )Npirm  )r5   r  r*   s      r   r}  z7ElementTreeTest.test_custom_builder.<locals>.Builder.pi  s    T6401r!   c                 *    | j                  d|f       y )Nrc  rm  )r5   r*   s     r   rc  z<ElementTreeTest.test_custom_builder.<locals>.Builder.comment  s    Y-.r!   c                 ,    | j                  d||f       y )NrB  rm  )r5   prefixuris      r   start_nsz=ElementTreeTest.test_custom_builder.<locals>.Builder.start_ns  s    Z56r!   c                 *    | j                  d|f       y NrC  rm  r5   r  s     r   end_nsz;ElementTreeTest.test_custom_builder.<locals>.Builder.end_ns      Xv./r!   N)
r@   rA   rB   r>  r1  r*   r}  rc  r  r  r"   r!   r   rw  z4ElementTreeTest.test_custom_builder.<locals>.Builder  s%    ,*2/70r!   ))r}  r}  r*   )rc  	 comment )rB  rE  rF  rG  rH  r5  rH  r5  rI  r7  r9  rC  rE  )	r  r   r  r}   r=   r  r  r{   r  )r5   r  r*   rw  builderr   s         r   test_custom_builderz#ElementTreeTest.test_custom_builder  s     .! 	Q668D		d 	 )W-D 	# 		 #$ 	668D		0d 	0 )W-D # 	W	 	.	 	s   C4	D 4C= D	c                      G d dt               } |       }t        j                  |      }|j                  t	        j
                  d             | j                  |g d       y )Nc                       e Zd Zd Zy)@ElementTreeTest.test_custom_builder_only_end_ns.<locals>.Builderc                 *    | j                  d|f       y r  rm  r  s     r   r  zGElementTreeTest.test_custom_builder_only_end_ns.<locals>.Builder.end_ns  r  r!   N)r@   rA   rB   r  r"   r!   r   rw  r    s    0r!   rw  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>
            ))rC  r   )rC  pr  )r}   r=   r  r  textwrapdedentr{   )r5   rw  r  r   s       r   test_custom_builder_only_end_nsz/ElementTreeTest.test_custom_builder_only_end_ns  sZ    	0d 	0 )W-HOO %  	 	 # 	r!   c                     t         j                  d       }| j                  |j                  t         j                         t         j                         }| j                  |j                  t         j                         y )Nr  )r=   r  ry   r  r  )r5   r   parser2s      r   %test_initialize_parser_without_targetz5ElementTreeTest.test_initialize_parser_without_target  sO    T*fmmR^^< ,,.gnnbnn=r!   c                 >   t        t        d      5 }t        j                  |      }d d d        | j	                  j                         j                         D cg c]  }t        |       c}g dg g g g       | j	                  |j                         D cg c]  }t        |       c}g dg g g g       t        j                  t              }| j	                  t        t        |            d       | j	                  t        t        |d               d       | j	                  |d d  t        |             |d   }|d   }|dd= | j	                  t        t        |            d       | j	                  ||d          | j	                  ||d          ||g|dd | j	                  ||d          | j	                  ||d          | j                  ||d          |j                          | j	                  t        |      g        y # 1 sw Y   xY wc c}w c c}w )NrN  )r   r   r      r   r   r   )r  r   r=   r  r{   r   r   rW   r   r   r|   r}   assertNotEqualr   )r5   r  rP   rL   child1child2s         r   test_childrenzElementTreeTest.test_children  s    .$' 	188A;D	&*lln&9&9&;=" ). =7	?	 	&*iik3" ). 37	5	 vvj!T$Z!,T$q']+Q/a$t*-aa1IT$Z!,a)a)V$Qq	a)a)FDG,

dR(A	 	=3s   HHHHc                     t         j                  d      }| j                  t         j                  |      d       t         j	                  d      }| j                  t         j                  |      d       y )Nr#  r$  )r=   r   r{   r  r   rf  s     r   test_writestringz ElementTreeTest.test_writestring"  sT    vv67T*,MN}}=>T*,MNr!   c                    t         j                  d      }t         j                  |       | j                  t         j	                  |      d       t         j                  d      }t         j                  |       | j                  t         j	                  |      d       t         j                  d      }t         j                  |       | j                  t         j	                  |      d       t         j                  d      }t         j                  |       | j                  t         j	                  |      d       t         j                  d      }t         j                  |       | j                  t         j	                  |      d	       t         j                  d
      }t         j                  |       | j                  t         j	                  |      d       y )Nz<root></root>s   <root />r#  s"   <html>
  <body>text</body>
</html>z!<html> <body>text</body>  </html>z"<html><body>text</body>tail</html>s%   <html>
  <body>text</body>tail</html>z=<html><body><p>par</p>
<p>text</p>	<p><br/></p></body></html>s^   <html>
  <body>
    <p>par</p>
    <p>text</p>
    <p>
      <br />
    </p>
  </body>
</html>8<html><body><p>pre<br/>post</p><p>text</p></body></html>sJ   <html>
  <body>
    <p>pre<br />post</p>
    <p>text</p>
  </body>
</html>r=   r   indentr{   r  rf  s     r   test_indentzElementTreeTest.test_indent(  sD   vvo&
		$T*K8vv67
		$T*,STvv9:
		$T*,STvv:;
		$T*,UVvvWX
		$KK	
 vvPQ
		$KK	
r!   c                 H   t         j                  d      }t         j                  |d       | j                  t         j	                  |      d       t         j                  d      }t         j                  |d       | j                  t         j	                  |      d       y )Nr  	)spacesD   <html>
	<body>
		<p>pre<br />post</p>
		<p>text</p>
	</body>
</html>rE  s>   <html>
<body>
<p>pre<br />post</p>
<p>text</p>
</body>
</html>r  rf  s     r   test_indent_spacez!ElementTreeTest.test_indent_spaceT  s    vvPQ
		$d	#KK	
 vvPQ
		$b	!KK	
r!   c                 Z   t         j                  d      }t         j                  |       | j                  |j	                         D ch c]  }|j
                   c}h d       | j                  |j	                         D ch c]  }|j                   c}h d       | j                  t        |j	                         D ch c]  }|j
                   c}      t        |j	                         D ch c]  }t        |j
                         c}             y c c}w c c}w c c}w c c}w )Nz@<html><body><p>par</p><p>text</p><p><br/></p><p /></body></html>>   N

  
    >   N
      parrw   r  r  )	r=   r   r  r{   r   rv   rw   r|   id)r5   rL   els      r   test_indent_space_cachingz)ElementTreeTest.test_indent_space_cachingm  s    vvXY
		$#yy{+RWW+*	
 	#yy{+RWW+?	
 	499;/R/0tyy{3BGG34	
 , , 03s   DDD#1D(c                    t         j                  d      }| j                  t              5  t         j	                  |d       d d d        | j                  t         j                  |      d       t         j	                  |d       | j                  t         j                  |      d       t         j                  d      }t         j	                  |dd	       | j                  t         j                  |      d
       y # 1 sw Y   xY w)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>r    )r  r  sI   <html>
  <body>
   <p>pre<br />post</p>
   <p>text</p>
  </body>
 </html>)r=   r   r   r   r  r{   r  rf  s     r   test_indent_levelz!ElementTreeTest.test_indent_level}  s    vvPQz* 	&IId"I%	&KKH	

 			$a	 KK	
 vvPQ
		$as	+KK	
)	& 	&s   C??Dc                     t         j                  d      }| j                  t         j                  |d      d       | j                  t         j                  |dd      d       y )N0<body xmlns="http://effbot.org/ns"><tag/></body>rD   r  A<ns0:body xmlns:ns0="http://effbot.org/ns"><ns0:tag /></ns0:body>rO  rE   default_namespace1<body xmlns="http://effbot.org/ns"><tag /></body>r=   r   r{   r  rf  s     r   test_tostring_default_namespacez/ElementTreeTest.test_tostring_default_namespace  sX    vvHIKKyK1O	
 	KKyDZK[?	
r!   c                 ~    t         j                  d      }| j                  t         j                  |dd      d       y )Nr  rD   foobarr  zP<ns1:body xmlns="foobar" xmlns:ns1="http://effbot.org/ns"><ns1:tag /></ns1:body>r  rf  s     r   3test_tostring_default_namespace_different_namespacezCElementTreeTest.test_tostring_default_namespace_different_namespace  s4    vvHIKKyHKM^	
r!   c                     t         j                  d      }d}| j                  t        |      5  t         j	                  |dd       d d d        y # 1 sw Y   y xY w)Nr   z>^cannot use non-qualified names with default_namespace option$rD   r  r  )r=   r   assertRaisesRegexr   r  )r5   rL   EXPECTED_MSGs      r   5test_tostring_default_namespace_original_no_namespacezEElementTreeTest.test_tostring_default_namespace_original_no_namespace  sQ    vv+,W##J= 	NKKyHKM	N 	N 	Ns   AAc                 |    t         j                  d      }| j                  t         j                  |d      d       y )Nr   rD   r  r   r  rf  s     r    test_tostring_no_xml_declarationz0ElementTreeTest.test_tostring_no_xml_declaration  s2    vv+,KKyK1"	
r!   c                 ~    t         j                  d      }| j                  t         j                  |dd      d       y )Nr   utf8TrE   xml_declarations:   <?xml version='1.0' encoding='utf8'?>
<body><tag /></body>r  rf  s     r   test_tostring_xml_declarationz-ElementTreeTest.test_tostring_xml_declaration  s4    vv+,KKvtKDJ	
r!   c                 ~    t         j                  d      }| j                  t         j                  |dd      d       y )Nr   rD   Tr  ;<?xml version='1.0' encoding='utf-8'?>
<body><tag /></body>r  rf  s     r   .test_tostring_xml_declaration_unicode_encodingz>ElementTreeTest.test_tostring_xml_declaration_unicode_encoding  s4    vv+,KKy$KGJ	
r!   c           	          t         j                  d      }g d}|D ]N  \  }}}| j                  d| d|       5  | j                  t         j	                  |||      |       d d d        P y # 1 sw Y   [xY w)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  rD   N)r  NF)r  r  F)r  r  F)s   <body><tag></tag></body>r  F)r  rD   F)sH   <?xml version='1.0' encoding='us-ascii'?>
<body><tag>&#248;</tag></body>NT)sA   <?xml version='1.0' encoding='UTF-8'?>
<body><tag>ø</tag></body>r  T)sH   <?xml version='1.0' encoding='US-ASCII'?>
<body><tag>&#248;</tag></body>r  T)r  r  T)uA   <?xml version='1.0' encoding='utf-8'?>
<body><tag>ø</tag></body>rD   Tz	encoding=z xml_declaration=r  )r=   r   subTestr{   r  )r5   rL   	TESTCASESexpected_retvalrE   r  s         r   #test_tostring_xml_declaration_casesz3ElementTreeTest.test_tostring_xml_declaration_cases  s    vv23
	< ;D 
	6OX	( 411@0AC D 	  KK!)(7   
 $	 	
		 	s   )A..A7	c           	         t         j                  d      }| j                  dj                  t         j	                  |d            d       | j                  dj                  t         j	                  |dd            d       y )	Nr  rE  rD   r  r  rO  r  r  )r=   r   r{   r(  r)  rf  s     r   #test_tostringlist_default_namespacez3ElementTreeTest.test_tostringlist_default_namespace  sj    vvHIGGBOOD9O=>O	
 	GGBOOD9PfOgh?	
r!   c                    t         j                  d      }| j                  dj                  t         j	                  |d            d       | j                  dj                  t         j	                  |d            d	       t         j	                  |dd
      }| j                  dj                  |      d       | j                  |d   d       | j                  g d|dd         y )Nr   rE  rD   r  r   r!   T)r  s>   <?xml version='1.0' encoding='us-ascii'?>
<body><tag /></body>r  r  r   z%^<\?xml version='1.0' encoding='.+'?>)z<body>z<tagz />z</body>r   )r=   r   r{   r(  r)  r   )r5   rL   
stringlists      r   !test_tostringlist_xml_declarationz1ElementTreeTest.test_tostringlist_xml_declaration  s    vv+,GGBOOD9O=>"	
 	HHR__T4_@AN	

 __TIt_T
GGJJ	
 	A(PQA:ab>Rr!   c           
          d fd	} |dd        |dd        |dd        |dd        |d	d
        |dd       d fd}g d}|D ]@  } j                  t        j                  t        j                   ||                  d       B g d}|D ]-  } j	                  t
        t        j                   ||             / g d}|D ]7  } j	                  t        j                  t        j                   ||             9  j	                  t
        t        j                   d      j                  d              j	                  t        t        j                   d      j                  d             y )Nc                     d| d|d}j                  t        j                  |j                  |             j                  |       j                  t        j                  |      j                  |       y )Nz<?xml version='1.0' encoding='z'?><xml>z</xml>)r{   r=   r   r)   rw   )rE   r&  xmlr5   s      r   checkz,ElementTreeTest.test_encoding.<locals>.check  sU    d$CRVVCJJx$89>>ERVVC[--t4r!   r%  r   us-ascii
iso-8859-1   ½ziso-8859-15u   €cp437u   √	mac-romanu   ˚c                     d| z  S )Nz*<?xml version='1.0' encoding='%s'?><xml />r"   r  s    r   r  z*ElementTreeTest.test_encoding.<locals>.xml!  s    ?(JJr!   c                 2     |       j                  |       S rS   )r)   )rE   r  s    r   bxmlz+ElementTreeTest.test_encoding.<locals>.bxml#  s    x=''11r!   )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  cp720cp737cp775cp850cp852cp855cp856cp857cp858cp860cp861cp862cp863cp865cp866cp869cp874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cp864cp875cp1026cp1140utf_32	utf_32_be	utf_32_le	undefinedxxx)rE  )	r{   r=   r  r   r   r   rX  r)   LookupError)r5   r  r  supported_encodingsrE   &unsupported_ascii_compatible_encodings(unsupported_ascii_incompatible_encodingsr  s   `      @r   test_encodingzElementTreeTest.test_encoding  sN   	5
 	gsj#lF#mX&gx k8$	K	2
" , 	NHR[[X)?@*M	N2
. ? 	BHj"&&$x.A	B4
0 A 	EHbmmRVVT(^D	E 	*bffc+.>.E.Eg.NO+rvvs5z/@/@/IJr!   c                 Z   t         j                  d      }d|_        | j                  t	        |      d       | j                  t	        |d       d       | j                  t	        |d      d       | j                  t	        |d      d       | j                  t	        |d      d	       y )
Nz-<html><link/><script>1 &lt; 2</script></html>r  z/<html><link /><script>1 &lt; 2</script></html>
r   r  htmlz*<html><link><script>1 < 2</script></html>
rw   z1 < 2
)r=   r   rv   r{   rQ   r5   r   s     r   test_methodszElementTreeTest.test_methodsO  s     FFBC1B	D1T2B	D1U3B	D1V4=	?1V4i@r!   c                     t         j                  d      }| j                  t        |      d       | j                  t        |d      d       y )Nz(<html><CamelCase>text</CamelCase></html>r+  r*  r=   r   r{   rQ   r,  s     r   test_issue18347zElementTreeTest.test_issue18347^  sB    FF=>1:	<1V4:	<r!   c                    t         j                  d      }| j                  t        |d      d       | j	                  |d       | j                  t         j                        5 }t         j                  d       d d d        | j                  t        j                        d       | j                  t         j                        5 }t         j                  t               d d d        | j                  t        |j                        d       t         j                         }d	|j                  d
<   |j                  t               |j                         }| j	                  |d       | j                  t         j                        5 }t         j                  t               d d d        | j                  t        |j                        d       y # 1 sw Y   VxY w# 1 sw Y   xY w# 1 sw Y   HxY w)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 10rw   entityz<document>text</document>z,undefined entity &entity;: line 4, column 10)r=   r   r{   rQ   r   r   rX  r   r   
ENTITY_XMLr  r2  r  r  EXTERNAL_ENTITY_XML)r5   r   r   r   r4  s        r   test_entityzElementTreeTest.test_entitye  s~   
 FF?@1z:=	?Q JK r}}- 	4FF23	4R\\*5	7 r}}- 	FF:	R\\*>	@
 "(hJ||~T#>? r}}- 	(FF&'	(R\\*>	@-	4 	4
	 		( 	(s$   $GGG'GG$'G0c                    t         j                  d      }| j                  |d       t         j                  d      }| j                  |d       t         j                  d      }| j                  |d       t         j                  d      }| j                  |d       t         j                  t              }| j                  |d	       y )
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   r   SAMPLE_XML_NSrf  s     r   test_namespacezElementTreeTest.test_namespace  s    
 vv-.T#:; vv[\TQ	S vvOPTE	G vv_`TS	U vvm$T	r!   c                    t         j                  d      }| j                  |d       t         j                  t         j                  d            }| j                  |d       t         j                  t         j                  dd            }| j                  |d       t         j                  t         j                  dd            }t         j	                  |t         j                  dd            }t         j	                  |t         j                  dd            }| j                  |d       |j                          d|j                  d	<   | j                  |d
       |j                          d|j                  t         j                  d	      <   | j                  |d
       |j                          d|j                  d	<   | j                  |d       |j                          t         j                  d      |j                  d	<   | j                  |d       |j                          t         j                  d      }t         j                  d      |j                  d<   |j                  |       |j                  |       | j                  |d       | j                  t        t         j                  dd            d       | j                  t        t         j                  d            d       t         j                  dd      }t         j                  dd      }| j                  ||       t         j                  dd      }| j                  ||       | j                  |d       | j                  |d       y )Nz{uri}tagz<ns0:tag xmlns:ns0="uri" />r  rU   tag1r   z;<ns0:tag xmlns:ns0="uri"><ns0:tag1 /><ns0:tag2 /></ns0:tag>r   z{uri}keyz+<ns0:tag xmlns:ns0="uri" ns0:key="value" />z
{uri}valuez0<ns0:tag xmlns:ns0="uri" ns0:key="{uri}value" />z/<ns0:tag xmlns:ns0="uri" ns0:key="ns0:value" />z{uri2}valuez	{uri1}keyz{<ns0:tag xmlns:ns0="uri" xmlns:ns1="uri1" xmlns:ns2="uri2"><tag ns1:key="ns2:value" /><tag ns1:key="ns2:value" /></ns0:tag>nsz{ns}tagz	other-tagzns:tag)r=   rz   r   QNamerd  r   rx   r   r{   r   r  )r5   rL   r  q1q2s        r   
test_qnamezElementTreeTest.test_qname  s   
 zz*%T#@Azz"((:./T#@Azz"((5%01T#@Azz"((5%01--bhhuf&=>--bhhuf&=>TI	K
 	

")JT9	; 	

,3BHHZ()T9	; 	

".JT>	@ 	

"$((<"8JT=	? 	

**U#&(hh}&={#GGT	 	RXXdE23Y?RXXi019=XXdE"XXdE"R XXdK(B#B)Y'r!   c                 .    t         j                  d      }y )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   rf  s     r   test_doctype_publicz#ElementTreeTest.test_doctype_public  s     vv $ %r!   c                     ddl m d> f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        |d/d/g        |d0g d1        |d2g d3d4d5i        |d6d7gd8d5i        |d9d	d7gd4d5i        |d:d	d6gd8d5i        |d;d	d<gd8d5i        |d%d	d&gd5d5d=       y )?Nr   r2   c                     j                  j                  | |      D cg c]  \  }}|xs | c}}|       y c c}}w rS   )r{   xpath_tokenizer)r  r   
namespacesoprU   r3   r5   s        r   r  z3ElementTreeTest.test_xpath_tokenizer.<locals>.check  sI    -8-H-HJ-WY")"c !iCi Y%' Ys   <
r   ztext()rw   ()z@name@rl   z@*zpara[1])para[1]zpara[last()])rI  rJ  lastrG  rL  z*/para)r   /rI  z/doc/chapter[5]/section[2])rN  docrN  chapterrJ  5rL  rN  sectionrJ  2rL  zchapter//para)rP  //rI  z//pararT  rI  z//olist/item)rT  olistrN  item.z.//para)rW  rT  rI  ..z../@lang)rX  rN  rH  langzchapter[title])rP  rJ  titlerL  z#employee[@secretary and @assistant])
employeerJ  rH  	secretaryrE  andrE  rH  	assistantrL  z	@{ns}attrz{ns}attr{http://spam}eggz
./spam.egg)rW  rN  zspam.eggz.//{http://spam}egg)rW  rT  r_  z{ns}*{}*{*}tag{*}*z	.//{*}tag)rW  rT  ra  z
./xsd:type)rW  rN  &{http://www.w3.org/2001/XMLSchema}typexsdz http://www.w3.org/2001/XMLSchematyperc  rE  z	@xsd:typez@typez@{*}typez{*}type)rE  r;  rS   )r4   r3   )r5   r  r3   s   ` @r   test_xpath_tokenizerz$ElementTreeTest.test_xpath_tokenizer  s   )	' 	cC5h'gV}%dS#Ji01n>?h*+*.	/ 	o89hv'n:;cC5i,-dTFj23 >?3 6K 	L 	kC,- #5"67l23#%DE 	gy!eeWh
#fvhk01 	lP89	;f?@56	8kC!IJ89	;gV}56	8j3	*56	8kC,579	:r!   c                    | j                  t        j                  t        j                  dd            d       | j                  t        j                  t        j	                  dd            d       | j                  t        j                  t        j	                  dd            d       | j                  t        j                  t        j	                  dd      d      d       y )	Nr   instructions   <?test instruction?>z
<testing&>s   <?test <testing&>?>u   <testing&>ãzlatin-1s=   <?xml version='1.0' encoding='latin-1'?>
<?test <testing&>?>)r{   r=   r  r   r   r   s    r   test_processinginstructionz*ElementTreeTest.test_processinginstruction.  s     	R%=%=fm%TU'	)RUU6=%AB'	)
 	RUU6<%@A&	(RUU63C%DiP+	,r!   c                 &   dD ]  }||j                         fD ]u  }d|z  }t        t        j                  d|z        d      }| j	                  ||       t        t        j                  d|d|d      d      }| j	                  ||       w  y )	N)AREABASEBASEFONTBRCOLEMBEDFRAMEHRIMGINPUTISINDEXLINKMETAPARAMSOURCETRACKWBRz<%s>z<%s />r+  r*  <z></r  )lowerrQ   r=   r   r{   )r5   r   rL   r   
serializeds        r   #test_html_empty_elems_serializationz3ElementTreeTest.test_html_empty_elems_serialization>  s    2 		7G !'--/2 7!D=&rvvho'>vN
  X6&rvvT$.G'H.46
  X67		7r!   c                     t         j                  ddd      }t        j                         5 }t         j	                  |       d d d        | j                  j                         d       y # 1 sw Y   *xY w)N
cirriculumpublicexamplestatuscompanyz1<cirriculum status="public" company="example" />
)r=   rz   r   captured_stdoutdumpr{   rJ   )r5   r   stdouts      r   test_dump_attribute_orderz)ElementTreeTest.test_dump_attribute_orderL  s_    JJ|HiJH$$& 	&GGAJ	*M	O	 	s   A,,A5c                     t         j                  ddd      }| j                  t        |      d       | j                  t        |d      d       y )	Nr  r  r  r  z0<cirriculum status="public" company="example" />r+  r*  z;<cirriculum status="public" company="example"></cirriculum>)r=   rz   r{   rQ   r5   r4  s     r   test_tree_write_attribute_orderz/ElementTreeTest.test_tree_write_attribute_orderT  sI    zz,xzK4K	M47M	Or!   c                 x    t         j                  t              }| j                  |d   j                  ddi       y )Nr   z*{http://www.w3.org/XML/1998/namespace}langeng)r=   r   ATTLIST_XMLr{   rx   r  s     r   test_attlist_defaultz$ElementTreeTest.test_attlist_default\  s1    }}[)aFN	Pr!   N)0r@   rA   rB   r   r   r   r   r   r   r   r   r	  r  r!  r.  r`  rg  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r(  r-  r0  r5  r8  r?  rA  rf  ri  r  r  r  r  r"   r!   r   r   r      s    4A:F?6*?X$	!6 
<4plH,+Z2,x%tP";z,>#)JO*
X
2
 
@	

N


*X	
S&9KvA<#@JB?(B%8:t, 7OOPr!   r   c                       e Zd ZddZddZddZddZddZd Zd Z	d	 Z
d
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Z ej,                  ej0                  dk  dej0                   d      d        Zd Zy)XMLPullParserTestNc                     ||j                  |       n2t        dt        |      |      D ]  }|j                  ||||z            |r|j                          y y Nr   )r  r   r|   flush)r5   r   r*   
chunk_sizer  r   s         r   _feedzXMLPullParserTest._feede  sX    KK1c$i4 2D1Z<012LLN r!   c           	          | j                  t        |j                         |      D cg c]  \  }}||j                  |j                  ff! c}}|       y c c}}w rS   )r{   r   read_eventsrU   rw   )r5   r   r   
max_eventseventrL   s         r   assert_eventszXMLPullParserTest.assert_eventsn  sW     &v'9'9';Z HJ dhh		*+ J	Js   $A
c                 j    | j                  t        t        |j                         |            |       y rS   )r{   r}   r   r  )r5   r   r   r  s       r   assert_event_tuplesz%XMLPullParserTest.assert_event_tuplest  s+    **,j9:	r!   c                     t        |j                         |      }| j                  |D cg c]  \  }}||j                  f c}}|       y c c}}w rS   )r   r  r{   rU   )r5   r   r   r  r<  r]  rL   s          r   assert_event_tagsz#XMLPullParserTest.assert_event_tagsy  sE    **,j9H6488,H!	#Hs   A
c                 :   t         j                         }| j                  |g        | j                  |d||       | j                  |g        | j                  |d||       | j                  |g        | j                  |d||       | j                  |dg       | j                  |d||       | j                  |d||       | j                  |ddg       | j                  |d||       | j                  |d	g       | j	                  |j                                y )
N<!-- comment -->
z+<root>
  <element key='value'>text</element>
r0  <element>text</element>tail
<empty-element/>
r2  </root>
r3  r=   XMLPullParserr  r  r   r  )r5   r  r  r   s       r   test_simple_xmlz!XMLPullParserTest.test_simple_xml~  s   !!#vr*

6/UCvr*

6Au	& 	vr*

65*e4v(:';<

6:JN

6/UCv$( 	 	

6;
E:v'89&,,.)r!   c                 *    | j                  dd       y )Nr   Tr  r  r  r   s    r   test_simple_xml_chunk_1z)XMLPullParserTest.test_simple_xml_chunk_1      6r!   c                 *    | j                  dd       y )N   Tr  r  r   s    r   test_simple_xml_chunk_5z)XMLPullParserTest.test_simple_xml_chunk_5  r  r!   c                 (    | j                  d       y )N   )r  r  r   s    r   test_simple_xml_chunk_22z*XMLPullParserTest.test_simple_xml_chunk_22  s    +r!   c                    t         j                         }|j                         }| j                  |d       t	        |      \  }}| j                  ||j                  fd       | j                  |d       t	        |      \  }}| j                  ||j                  fd       | j                  t              5  t	        |       d d d        y # 1 sw Y   y xY w)Nz-<root>
  <element key='value'>text</element>
r0  r  r3  )	r=   r  r  r  rT  r{   rU   r   StopIteration)r5   r   r   r]  rL   s        r   test_feed_while_iteratingz+XMLPullParserTest.test_feed_while_iterating  s    !!#!

6LMBx&$((+-?@

6;'Bx&$((+_=}- 	H	 	 	s   6CCc                 j   t         j                         }| 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dg       | j                  |d	       | j                  |d
g       | j	                  |j                                y )Nr  <root xmlns='namespace'>
"<element key='value'>text</elementr  r5  r  r  r7  r  r9  r  r5   r   s     r   test_simple_xml_with_nsz)XMLPullParserTest.test_simple_xml_with_ns  s   !!#vr*

6/0vr*

678vr*

6?@vr*

65!v(E'FG

6:;

6/0v)/( 	 	

6;'v(B'CD&,,.)r!   c                    t         j                  d      }| j                  |d       | j                  |d       | j                  t	        |j                               dg       | j                  |d       | j                  |d       | j                  |d       | j                  |d	       | j                  |d
       | j                  t	        |j                               dg       | j                  |j                                y )NrK  r;  r  r  rD  r  r  r  r  r  rJ  )r=   r  r  r{   r}   r  r   r  r  s     r   test_ns_eventsz XMLPullParserTest.test_ns_events  s    !!)?!@

6/0

678##%&,-	/ 	

6?@

65!

6:;

6/0

6;'f00236F5GH&,,.)r!   c                 `   t         j                  d      }| j                  |d       | j                  |ddgd       | j	                  |dgd	       | j                  |d
       | j	                  |ddg       | j                  |d       |j                          | j	                  |dg       y )N)rB  r>  r1  r;   <tag xmlns='abc' xmlns:p='xyz'>
rB  )rE  abcrB  )r  xyzr   r  r>  {abc}tagr   
<child />
r>  
{abc}childr1  r  </tag>
r1  r  r=   r  r  r  r  r  r  s     r   test_ns_events_startz&XMLPullParserTest.test_ns_events_start  s    !!)E!F

6>?  %&*
  	! 	 	v!(
 	 	 	

6=)v#!(
 	
 	

6:&v(
 	r!   c                    t         j                  d      }| j                  |d       | j                  |ddgd       | j	                  |dgd	       | j                  |d
       | j	                  |ddg       | j                  |d       |j                          | j	                  |dgd	       | j                  |ddg       y )N)rB  r>  r1  rC  r;  r  r  r  r   r  r  r   r  r  r  r  r  rJ  r  r  s     r   test_ns_events_start_endz*XMLPullParserTest.test_ns_events_start_end  s    !!)O!P

6>?  %&*
  	! 	 	v!(
 	 	 	

6=)v#!(
 	
 	

6:&v(
 	 	 	  *
 	r!   c                    t         j                  d      }| j                  |d       | j                  |g        t         j                  d      }| j                  |d       | j	                  |g        t         j                  d      }| j                  |d       | j                  |dg       | j                  |d       | j                  |d	g       | j                  |d
       | j                  |dg       | j                  |d       | j                  |g d       | j                  |d       | j                  |j                                | j                  |dg       t         j                  d      }| j                  |d       | j                  |g        | j                  |d       | j                  |dg       | j                  |d       | j                  |d	g       | j                  |d
       | j                  |g        | j                  |d       | j                  |ddg       | j                  |d       | j                  |j                                y )Nr"   r;  z<root/>
r=  <!-- text here -->
z<root>
r@  r  rA  r  r0  z8<element xmlns='foo'>text<empty-element/></element>tail
)r>  {foo}elementr>  {foo}empty-element)r1  r  )r1  r  z</root>r3  )r>  r  r  r  )r=   r  r  r  r  r   r  r  s     r   test_eventszXMLPullParserTest.test_events  s%   !!!,

6;'vr*!!)9!:

61262&!!)9!:

6:&v(9':;

6?@v(<'=>

65!v(:';<

6N	Pv ( 	 	

69%&,,.)v'89!!!4

6/0vr*

6:&v(9':;

6?@v(<'=>

65!vr*

6N	Pv%+( 	 	

69%&,,.)r!   c                    t         j                  d      }| j                  |d       | j                  |dt         j                  dffg       | j                  |d       | j                  |dt         j                  dffg       | j                  |d       | j                  |d	g       | j                  |d
       | j                  |dt         j                  dffg       | j                  |d       | j                  |dg       | j                  |d       | j                  |dt         j                  dffg       t         j                  d      }| j                  |d       | j                  |dt         j                  dffg       y )N)r>  rc  r1  r;  r  rc  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>
)r1  r  z<!-- outer comment -->
z outer comment )rc  )r=   r  r  r  re  r  r  s     r   test_events_commentz%XMLPullParserTest.test_events_comment,  sa   !!)D!E

6126Y]0K$L#MN

6676Y=O0P$Q#RS

6+,v(='>?

6456Y=M0N$O#PQ

6?+v(;'<=

6566Y=N0O$P#QR!!!6

6126Y]0K$L#MNr!   c                 8   t         j                  d      }| j                  |d       | j                  |dt         j                  dffg       t         j                  d      }| j                  |d       | j                  |dt         j                  dffg       y )	N)r>  r}  r1  r;  z<?pitarget?>
r}  pitarget)r}  z<?pitarget some text ?>
zpitarget some text )r=   r  r  r  r   r  s     r   test_events_piz XMLPullParserTest.test_events_pi?  s    !!)?!@

6+,6TBEE:+>$?#@A!!!1

6676TBEE3H+I$J#KLr!   c                    ddh}t         j                  |      }| j                  |d       | j                  |ddg        G d d      }t         j                   |             }| j                  |d       | j                  |ddg       y )	Nr1  r>  r;  z<foo>bar</foo>)r>  r   )r1  r   c                       e Zd Zd Zd Zd Zy)9XMLPullParserTest.test_events_sequence.<locals>.DummyIterc                 (    t        g d      | _        y )N)r>  r1  rB  )r   r<  r   s    r   __init__zBXMLPullParserTest.test_events_sequence.<locals>.DummyIter.__init__O  s    "#?@r!   c                     | S rS   r"   r   s    r   __iter__zBXMLPullParserTest.test_events_sequence.<locals>.DummyIter.__iter__Q  s    r!   c                 ,    t        | j                        S rS   )rT  r<  r   s    r   r   zBXMLPullParserTest.test_events_sequence.<locals>.DummyIter.__next__S  s    DKK((r!   N)r@   rA   rB   r  r  r   r"   r!   r   	DummyIterr  N  s    A)r!   r  )r=   r  r  r  )r5   eventsetr   r  s       r   test_events_sequencez&XMLPullParserTest.test_events_sequenceG  s    7#!!!2

6+,v(8.'IJ	) 	) !!!5

6+,v(8.'IJr!   c                     | j                  t              5  t        j                  d       d d d        y # 1 sw Y   y xY w)NrL  r;  )r   r   r=   r  r   s    r   test_unknown_eventz$XMLPullParserTest.test_unknown_eventZ  s7    z* 	?$=>	? 	? 	?s   6?r      r   zExpat z" does not support reparse deferralc                 .   t         j                  d      }dD ]  }|j                  |        | j                  |g        t         t        u r3| j                  |j                  j                  j                                |j                          | j                  |dg       t         t        u r3| j                  |j                  j                  j                                |j                  d       |j                          | j                  |dg       y )Nr=  r;  z<docr  r>  rO  </doc>r1  rO  )
r=   r  r  r  r\   r   _parserGetReparseDeferralEnabledr  r  r5   r   chunks      r   #test_flush_reparse_deferral_enabledz5XMLPullParserTest.test_flush_reparse_deferral_enabled^  s     !!)9!:" 	EKK	 	vr*:OOFNN22LLNOv(8'9::OOFNN22LLNOHv'78r!   c                    t         j                  d      }dD ]  }|j                  |        t        j                  dk\  rTt         t
        ur| j                  d       |j                  j                  j                  d       | j                  |g        t         t
        u r3| j                  |j                  j                  j                                |j                          | j                  |dg       t         t
        u r3| j                  |j                  j                  j                                |j                  d       |j                          | j                  |d	g       y )
Nr=  r;  r  r  zDXMLParser.(Get|Set)ReparseDeferralEnabled methods not available in CFr  r  r  )r=   r  r  pyexpatversion_infor\   skipTestr  SetReparseDeferralEnabledr  rU  r  r  r  r  s      r   $test_flush_reparse_deferral_disabledz6XMLPullParserTest.test_flush_reparse_deferral_disabledv  s   !!)9!:" 	EKK	 9,: !; <NN""<<UC""62.:V^^33MMOPv(8'9::V^^33MMOPHv'78r!   NFrS   )r@   rA   rB   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  unittestskipIfr  r  r  r  r"   r!   r   r  r  c  s    
#
**77,
***.6,*\O&MK&? X__W))I5g223 40 01919*9r!   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.xml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                   :    e Zd Zd	dZd
dZd Zd Zd Zd Zd Z	y)XIncludeTestNc                 ~    	 t         |   }|dk(  rt        j	                  |      }|S # t        $ r t        d      w xY w)Nresource not foundr  )XINCLUDEKeyErrorOSErrorr=   r   )r5   hrefr  rE   r*   s        r   xinclude_loaderzXIncludeTest.xinclude_loader  sH    	0D>D E>66$<D	  	0.//	0s   	' <c                      y rS   r"   )r5   r  r   rE   s       r   none_loaderzXIncludeTest.none_loader   s    r!   c                     |dk(  r9t        |d      5 }t        j                  |      j                         cd d d        S y # 1 sw Y   y xY w)Nr  rN  )r  r=   r  r   )r5   r  r  r  s       r   
_my_loaderzXIncludeTest._my_loader#  sJ     E>dD! -Qxx{**,- - - -s   #A  A	c                     ddl m} | j                  d      }|j                  || j                         | j                  t        |      d       y )Nr   r0   r  z<document>
  <p>Example.</p>
  <root>
   <element key="value">text</element>
   <element>text</element>tail
   <empty-element />
</root>
</document>)r4   r1   r  includer  r{   rQ   )r5   r1   rO  s      r   test_xinclude_defaultz"XIncludeTest.test_xinclude_default,  sB    ,""=1sDOO43	r!   c                 ~   ddl m} | j                  d      }|j                  || j                         | j	                  t        |      d       | j                  d      }|j                  || j                         | j	                  t        |      d       | j                  d      }|j                  || j                         | j	                  t        |      d       | j                  d	      }|j                  || j                         | j	                  t        |      d
       | j                  d      }| j                  t              5 }|j                  || j                         d d d        | j	                  t        j                        d       | j	                  t        |      d       y # 1 sw Y   JxY w)Nr   r0   r  a  <document>
  <p>120 Mz is adequate for an average home user.</p>
  <disclaimer>
  <p>The opinions represented herein represent those of the individual
  and should not be interpreted as official policy endorsed by this
  organization.</p>
</disclaimer>
</document>r  zO<document>
  <p>This document has been accessed
  324387 times.</p>
</document>r  zX<document>
  <p>This document has been <em>accessed</em>
  324387 times.</p>
</document>r  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>r  r  aI  <div xmlns:ns0="http://www.w3.org/2001/XInclude">
  <ns0:include href="example.txt" parse="text">
    <ns0:fallback>
      <ns0:include href="fallback-example.txt" parse="text">
        <ns0:fallback><a href="mailto:bob@example.org">Report error</a></ns0:fallback>
      </ns0:include>
    </ns0:fallback>
  </ns0:include>
</div>)
r4   r1   r  r  r{   rQ   r   r  r   r   r5   r1   rP  r   s       r   test_xincludezXIncludeTest.test_xinclude:  s   , ''1x)=)=>8,	 ''1x)=)=>8,	 ''	2x)=)=>8,	 ''1x)=)=>8,	 ''1w' 	C2""8T-A-AB	CR\\*,@A8,			C 	Cs   F33F<c                     ddl m} | j                  d      }|j                  || j                         | j	                  dt        |j                  d                   y )Nr   r0   r	  r   z.//p)r4   r1   r  r  r{   r|   r   )r5   r1   rP  s      r   test_xinclude_repeatedz#XIncludeTest.test_xinclude_repeatedz  sL    ,''(ABx)=)=>H$4$4V$< =>r!   c                 
   ddl m} t        j                  t        d         }| j                  |j                        5 }|j                  || j                         d d d        | j                  t        j                        d       t        j                  t        d         }| j                  |j                        5 }|j                  || j                         d d d        | j                  t        |j                        d       t        j                  t        d         }| j                  |j                        5 }|j                  || j                         d d d        | j                  t        |j                        d	       t        j                  t        d
         }| j                  |j                        5 }|j                  || j                         d d d        | j                  t        |j                        d       | j                  d      }| j                  |j                        5 }|j                  || j                         d d d        | j                  t        |j                        d       | j                  d      }| j                  |j                        5 }|j                  || j                  d        d d d        | j                  t        |j                        d       | j                  d      }| j                  |j                        5 }|j                  || j                  d       d d d        | j                  t        |j                        d       | j                  d      }| j                  |j                        5 }|j                  || j                  d       d d d        | j                  t        |j                        d       | j                  d      }| j                  |j                        5 }|j                  || j                  d       d d d        | j                  t        |j                        d       | j                  d      }| j                  |j                        5 }|j                  || j                  d       d d d        | j                  t        |j                        d       y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   %xY w# 1 sw Y   xY w# 1 sw Y   QxY w# 1 sw Y   xY w# 1 sw Y   {xY w# 1 sw Y   xY w# 1 sw Y   xY w)Nr   r0   r  )rn   z%cannot load 'disclaimer.xml' as 'xml'r  z!cannot load 'count.txt' as 'text'r
  z1unknown parse type in xi:include tag ('BAD_TYPE')r  zYxi:fallback tag must be child of xi:include ('{http://www.w3.org/2001/XInclude}fallback')r  z#recursive include of Recursive2.xml)	max_depthzAmaximum xinclude depth reached when including file Recursive2.xmlr   zAmaximum xinclude depth reached when including file Recursive3.xmlr   zAmaximum xinclude depth reached when including file Recursive1.xmlr  )r4   r1   r=   r   r  r   FatalIncludeErrorr  r  r{   r   r   XINCLUDE_BADr  LimitedRecursiveIncludeErrorr  s       r   test_xinclude_failuresz#XIncludeTest.test_xinclude_failures  s   , 66(8,-~??@ 	FB""8D4D4D"E	FR\\*7	9 66(8,-~??@ 	FB""8D4D4D"E	FR\\*3	5 66,x01~??@ 	FB""8D4D4D"E	FR\\*C	E 66,x01~??@ 	FB""8D4D4D"E	FR\\*@	A
 ''(89~??@ 	CB""8T-A-AB	CR\\*5	7 ''(89~??@ 	SB""8T-A-AT"R	SR\\*5	7 ''(89~JJK 	Pr""8T-A-AQ"O	PR\\*S	U ''(89~JJK 	Pr""8T-A-AQ"O	PR\\*S	U ''(89~JJK 	Pr""8T-A-AQ"O	PR\\*S	U ''(89~??@ 	PB""8T-A-AQ"O	PR\\*5	7}	F 	F	F 	F	F 	F	F 	F	C 	C	S 	S	P 	P	P 	P	P 	P	P 	Psw   S S+S8T;T1T)T,!T9UUS(+S58TTTT),T69UUU)r  NrS   )
r@   rA   rB   r  r  r  r  r  r!  r'  r"   r!   r   r  r    s'    >@?D7r!   r  c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Z ej                   ej                         d
      d        Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"y)BugsTestc                      fd}t         j                  d      } ||       t         j                  d      }d|_         ||       t         j                  d      }d|_         ||       t         j                  d      }|j	                  dd        ||       t         j                  d      }|j	                  dd        ||       y )Nc                     j                  t              5 }t        |        d d d        j                  t	        j
                        d       y # 1 sw Y   /xY w)Nzcannot serialize 123 (type int))r   	TypeErrorrQ   r{   r   r   )rL   r   r5   s     r   r  z-BugsTest.test_bug_xmltoolkit21.<locals>.check  sK    ""9-  $ S.57   s   AA{   rL   123)r=   rz   rw   rv   r   )r5   r  rL   s   `  r   test_bug_xmltoolkit21zBugsTest.test_bug_xmltoolkit21  s    	7 zz#dzz&!	dzz&!	dzz&!edzz&!dr!   c                     t         j                  t              }t         j                  |      }| j	                  |j                  d      d       | j	                  |j                  d      d       y )NrU   rw   r   rb  )r=   r   r   r/   r{   r   )r5   rL   rP   s      r   test_bug_xmltoolkit25zBugsTest.test_bug_xmltoolkit25  sR     vvj!~~d#u-v6}5yAr!   c                     t         j                  d      }| j                  t        |j	                  d            g        | j                  t        |j	                  d            dg       y )N"<doc><table><tbody/></table></doc>z.//theadz.//tbodytbody)r=   r   r{   rW   r   r5   rP   s     r   test_bug_xmltoolkit28zBugsTest.test_bug_xmltoolkit28  sQ     vv:;Z(@A2FZ(@AG9Mr!   c                     t         j                  d      }t        j                         5 }t         j	                  |       | j                  |j                         d       d d d        y # 1 sw Y   y xY w)Nr3  z$<doc><table><tbody /></table></doc>
)r=   r   r   r  r  r{   rJ   )r5   rP   r  s      r   test_bug_xmltoolkitX1zBugsTest.test_bug_xmltoolkitX1  s]     vv:;$$& 	Y&GGDMV__.0WX	Y 	Y 	Ys   6A))A2c                    t         j                  d      }| j                  t         j                  |d      d       t         j                  d      }| j                  |j                  ddi       | j                  t         j                  |d      d       t         j                  d      }| j                  t         j                  |d      d	       t         j                  d
      }| j                  t         j                  |d      d       t         j                  d      }|j                  dd       | j                  t         j                  |d      d       y )Ns2   <?xml version='1.0' encoding='iso-8859-1'?><tg />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'?><tg>text</tg>s   <täg>text</täg>r   rU   )r=   r   r{   r  rx   rz   r   r5  s     r   test_bug_xmltoolkit39zBugsTest.test_bug_xmltoolkit39   s    vvNOT735FGvv 6 7y*&=>T735	7 vv / 0T730	2 zz*%T735FGzz% l+T735	7r!   c                     t         j                  d      }| j                  t        |d      d       | j                  t        |      d       y )Nz=<!DOCTYPE doc [<!ENTITY ldots '&#x8230;'>]><doc>&ldots;</doc>r  r  s   <doc>&#33328;</doc>u   <doc>舰</doc>r/  r,  s     r   test_bug_xmltoolkit54zBugsTest.test_bug_xmltoolkit54  sF     FF ( )1z:&	(1':;r!   c                     | j                  t        j                        5 }t        j                  d       d d d        | j	                  t        j                        d       y # 1 sw Y   /xY w)Ns?   <!DOCTYPE doc SYSTEM 'doc.dtd'><doc>&ldots;&ndots;&rdots;</doc>z+undefined entity &ldots;: line 1, column 36)r   r=   rX  r   r{   r   r   )r5   r   s     r   test_bug_xmltoolkit55zBugsTest.test_bug_xmltoolkit55"  s\     r}}- 	8FF 7 8	8 	R\\*=	?	8 	8s   A$$A-c                 l     G d d      }| j                  t        t        j                   |              y )Nc                       e Zd Zd Zy)5BugsTest.test_bug_xmltoolkit60.<locals>.ExceptionFilec                     t         rS   )r  r5   r   s     r   r  z:BugsTest.test_bug_xmltoolkit60.<locals>.ExceptionFile.read/  s    r!   N)r@   rA   rB   r  r"   r!   r   ExceptionFilerA  .  s    r!   rD  )r   r  r=   r  )r5   rD  s     r   test_bug_xmltoolkit60zBugsTest.test_bug_xmltoolkit60+  s&    	 	 	'288]_=r!   c                    ddd}t         j                         }|j                  j                  |       |j	                  d       |j                         }| j                  |j                  d      j                  d       y )Nu   ’u   ‘)rsquo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  r2  updater  r  r{   r   rw   )r5   ENTITIESr   ts       r   test_bug_xmltoolkit62zBugsTest.test_bug_xmltoolkit624  sl     &9X& % 	& LLN/44K	Mr!   zSkips under coverage.c                     d } |        t        j                  d       }t        d      D ]	  } |         | j                  t        j                  d       |       y )Nc                      t         j                         } | j                  di        | j                  d       | j	                  d       y )NrU   rw   )r=   r  r>  r*   r1  )rP   s    r   xmltoolkit63z4BugsTest.test_bug_xmltoolkit63.<locals>.xmltoolkit63H  s3    >>#DJJub!IIfHHUOr!   i  )rc   getrefcountr   r{   )r5   rO  countr   s       r   test_bug_xmltoolkit63zBugsTest.test_bug_xmltoolkit63E  sM    	 	%t 	AN	.6r!   c           	         t         j                  dd      }| j                  t         j                  |      d       | j                  t         j	                  t         j                  |            j                  d      d       | j                  t         j                  t         j	                  t         j                  |                  d       y )NSomeTagzdef _f():
  return 3
rw   s0   <SomeTag text="def _f():&#10;  return 3&#10;" />rw   )r=   rz   r{   r  r   rj   r,  s     r   test_bug_200708_newlinez BugsTest.test_bug_200708_newlineT  s     JJy'@JAQC	EA/33F;)	+RVVBKKN%;<C	Er!   c                 b   t         j                         }|j                  d       | j                  |j	                         j
                  d        G d d      }t         j                   |             }|j                  d       | j                  |j	                         j
                  d       y )Nz<element>some text</element>r   c                       e Zd Zd Zy)2BugsTest.test_bug_200708_close.<locals>.EchoTargetc                 ,    t         j                  d      S )Nr   r=   rz   r   s    r   r  z8BugsTest.test_bug_200708_close.<locals>.EchoTarget.closeg  s    zz),,r!   Nr@   rA   rB   r  r"   r!   r   
EchoTargetrY  f  s    -r!   r]  r  )r=   r  r  r{   r  rU   )r5   r   r]  s      r   test_bug_200708_closezBugsTest.test_bug_200708_close_  s}    23++Y7	- 	- Z\223++Y7r!   c                    t         j                  d      }t         j                  |d      }| j                  t	        |d      d       t         j                  d      }t         j                  |d      }t         j                  |d      }| j                  t	        |d      d       t         j                  d      }t         j                  |d      }t         j                  |d      }| j                  t              5 }t	        |d       d d d        | j                  t        j                        d       y # 1 sw Y   /xY w)	Nz{default}elemr   )r  z%<elem xmlns="default"><elem /></elem>z{not-default}elemzI<elem xmlns="default" xmlns:ns1="not-default"><elem /><ns1:elem /></elem>rL   z<cannot use non-qualified names with default_namespace option)	r=   rz   rd  r{   rQ   r   r   r   r   )r5   r   sr   s       r   !test_bug_200709_default_namespacez*BugsTest.test_bug_200709_default_namespacem  s   JJ'MM!_-1	B7	9 JJ'MM!_-MM!011	B	 JJ'MM!_-MM!V$z* 	6ba95	6R\\*N	P	6 	6s   =D99Ec                    t         j                  d      }| j                  t         j                  |      d       t         j	                  dd       t         j                  d      }| j                  t         j                  |      d       t         j                  d      }| j                  t         j                  |      d       y )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=   rz   r{   r  register_namespacer,  s     r   "test_bug_200709_register_namespacez+BugsTest.test_bug_200709_register_namespace  s    JJHIQQ	S
e%OPJJHIQQ	S
 JJ@AQG	Ir!   c                    t         j                  d      }|j                  t         j                  d             | j	                  |d   j
                  t         j                         t         j                  d      }|j                  t         j                  d             | j	                  |d   j
                  t         j                         y )Nr   r   r   )r=   rz   r   re  r{   rU   r   )r5   r   s     r   test_bug_200709_element_commentz(BugsTest.test_bug_200709_element_comment  s     JJsO	E"#12::.JJsO	u1255)r!   c                 l   t         j                  d      }t         j                  |d      }t         j                  |d      }t         j                  d      }|j                  d|       | j	                  t        |      g d       |j                  d|       | j	                  t        |      g d       y )	Nr   r   r   r   r   )r   r   r   r  )r   r   r   r   )r=   rz   rd  r   r{   rW   r5   r   r   r   r   s        r   test_bug_200709_element_insertz'BugsTest.test_bug_200709_element_insert  s    JJsOMM!S!MM!S!JJsO	A*O<	Q*,@Ar!   c                 4   t         j                  d      }t         j                  |d      }t         j                  d      }|j	                  |       | j                  t        |j                  t         j                              t         j                  g       y )Nr   r   zTEST-b)r=   rz   rd  re  r   r{   rW   r   )r5   r   r   	comment_bs       r   test_bug_200709_iter_commentz%BugsTest.test_bug_200709_iter_comment  sa    JJsOMM!S!JJx(		rzz(:;bjj\Jr!   c                     t         j                         }|j                  d      }|j                  di       }|j	                  d      }|j                         }| j                  t        |      d       y )Nr*   rU   r  )r=   r  r*   r>  r1  r  r{   rQ   )r5   r   r   s      r   test_bug_1534630zBugsTest.test_bug_1534630  sX    nnHHVIIeR GGENIIK1y1r!   c                     t         j                  d      }| j                  t         j                  |d      d       t         j                  d      }| j                  t         j                  |d      d       y )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>tg</body>r  r,  s     r   test_issue6233zBugsTest.test_issue6233  sj    FF . /Q0)	* FF * +Q0)	*r!   c                     t         j                  d      }| j                  t        |      dg       t         j                  t              }|d d  |d d  | j                  t        |      g d       y )Nr   rU   rU   rU   rR  )r=   r   r{   rW   r   )r5   rL   newelems      r   test_issue6565zBugsTest.test_issue6565  sY    vv+,-w7&&$!*Q-/HIr!   c                 \    t         j                  dd       t         j                  dd       y )N	test10777zhttp://myuri/)r=   rc  r   s    r   test_issue10777zBugsTest.test_issue10777  s$     	k?;
k?;r!   c                 2    G fdd      }t         j                  d       |       _        j                         }t	        |      }| j                  ||       | j                  j                  t               | j                  j                  d       y )Nc                       e Zd Z fdZy)%BugsTest.test_lost_text.<locals>.Textc                     d_         y)NchangedTrU  r,  s    r   __bool__z.BugsTest.test_lost_text.<locals>.Text.__bool__  s    "r!   Nr@   rA   rB   r}  r   s   r   r   rz        r!   r   rU   r|  )r=   rz   rw   r   rT  ry   r   r{   r5   r   r   rK  r   s       @r   test_lost_textzBugsTest.test_lost_text  sr    	 	
 JJuJJLGa&affc*+r!   c                     G fdd      }t         j                  d      j                  t         j                  d              |       d   _        j	                         }t        |      }| j                  ||       | j                  d   j                  t               | j                  d   j                  d       y )Nc                       e Zd Z fdZy)%BugsTest.test_lost_tail.<locals>.Textc                     dd   _         yNr|  r   T)rv   r,  s    r   r}  z.BugsTest.test_lost_tail.<locals>.Text.__bool__  s    %!	r!   Nr~  r  s   r   r   r    r  r!   r   r4  rU   r   r|  )	r=   rz   r   rv   r   rT  ry   r   r{   r  s       @r   test_lost_tailzBugsTest.test_lost_tail  s    	 	
 JJv	E"#F!	JJLGa&adii-1I.r!   c                     G fdd      }t         j                  d      j                  t         j                   |                    j                  t         j                  d             j                  d      	 t	              }| j                  j                  |       | j                  d   j                  t               | j                  d   j                  d       y # t
        $ r | j                  d       Y {w xY w)Nc                       e Zd Z fdZy)$BugsTest.test_lost_elem.<locals>.Tagc                 L    t         j                  d      d<   t               yr  )r=   rz   rT  )r5   r   r   r   s     r   __eq__z+BugsTest.test_lost_elem.<locals>.Tag.__eq__  s    zz),!Qr!   Nr@   rA   rB   r  )r   r   s   r   r   r    s    r!   r   r4  rU   zgenerators are not reentrantr   r|  )r=   rz   r   r   rT  r   r  ry   rU   r   r{   )r5   r   rK  r   r   s      @@r   test_lost_elemzBugsTest.test_lost_elem  s    	 	 JJv	CE"#	E"#FF5M	:QA 	aeeS)adhh,19-	  	:MM89	:s   C. .D
Dc                     d|z  }t         j                  |      }| j                  |j                  d      |j	                  d             y )Ns   <a b="%s"/>r   r   )r=   r   r{   rj   decode)r5   rw   r  r4  s       r   check_expat224_utf8_bugz BugsTest.check_expat224_utf8_bug	  s:    t#vvc{#G(<=r!   c                 P    d}| j                  |       d}| j                  |       y )Ns   ààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààs  xàààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààà)r  ru  s     r   test_expat224_utf8_bugzBugsTest.test_expat224_utf8_bug	  s*     "$$T*($$T*r!   c                 h   t        t        d      5 }|j                         }d d d        t        j	                        }|j                  d      }|j                  d      j                         }|j                  dd      }|dd }| j                  |j                  d      |       y # 1 sw Y   xY w)NrN  r   r   r  r  r  )
r  UTF8_BUG_XMLFILEr  r=   r   rj   r  stripr&   r{   )r5   fprawr4  xmlattrrw   s         r   test_expat224_utf8_bug_filez$BugsTest.test_expat224_utf8_bug_file	  s    "D) 	R'')C	}}S!((3- zz'"((*||FC(Abz#-	 	s   B((B1c                     | j                  t        t        j                         j                  d       | j                  t        t        j                         j                  dd        y )NrU   )r   r,  r=   r  r>  r   s    r   test_39495_treebuilder_startz%BugsTest.test_39495_treebuilder_start&	  sB    )R^^%5%;%;UC)R^^%5%;%;UDIr!   N)#r@   rA   rB   r/  r1  r6  r8  r:  r<  r>  rE  rL  r   r  rc   gettracerR  rV  r^  ra  rd  rf  ri  rl  rn  rp  rt  rw  r  r  r  r  r  r  r  r"   r!   r   r)  r)    s    8BNY72<?>M" X__\S\\^%<=7 >7	E8P.I
*BK2
*J<,/ .(>

+.Jr!   r)  c                   B    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zy
)BasicElementTestc                    d}ddi}t         j                  ||      }| j                  |t         j                         | j                  dt	        |             | j                  dt	        |             | j                  dt	        |             | j                  dt	        |             | j                  |j                  |       | j                  |j                         | j                  |j                         | j                  |j                  |       | j                  |j                  |       d|d	<   | j                  |j                  |       | j                  |j                  |       y )
Nr   zixwyprU   rx   rw   rv   bazr   )r=   rz   ry   r   r   r{   rU   r   rw   rv   r  rx   r  )r5   rU   rx   element_foos       r   test___init__zBasicElementTest.test___init__1	  s&   %!jjf- 	k2::6eS-.hK 01fc+./fc+./ 	#.+**++**+ 	++V4++V4 u++V4K..7r!   c                    t         j                  dddi      }|j                  t         j                  dddi             t        j                  |      }| j	                  ||       | j                  |j                  |j                         | j                  |j                  |j                         | j                  |j                  |j                         | j                  t        |      t        |             t        j                  ||      D ]  \  }}| j                  ||        | j                  |j                  |j                         y Nr   r  r  r   r  qix)r=   rz   r   r   r  r{   rU   rw   rv   r|   	itertoolszip_longestassertIsrx   r5   r  element_foo2r  r  s        r   test___copy__zBasicElementTest.test___copy__L	  s   jj%(892::eue-=>?yy- 	{3 	));??;**K,<,<=**K,<,<= 	\*C,<= !* 5 5k< P 	*VVMM&&)	* 	,,k.@.@Ar!   c                    t         j                  dddi      }|j                  t         j                  dddi             t        j                  |      }| j                  ||       | j                  |j                  |j                         | j                  |j                  |j                         | j                  |j                  |j                         | j                  t        |      t        |             t        j                  ||      D ]  \  }}| j                  ||        | j                  |j                  |j                         | j                  |j                  |j                         d|j                  d<   | j                  |j                  |j                         | j                  |j                  |j                         y r  )r=   rz   r   r   r   r  r{   rU   rw   rv   r|   r  r  rx   r  r  s        r   test___deepcopy__z"BasicElementTest.test___deepcopy__d	  s|   jj%(892::eue-=>?}}[1 	{3 	));??;**K,<,<=**K,<,<= 	\*C,<= !* 5 5k< P 	-VVVV,	- 	,,k.@.@A,,k.@.@A %*5!,,k.@.@AL//1C1CDr!   c                 R   t         j                  d      }| j                  t        |j                  d       | j                  t        |j
                  t         j                  d      dg       | j                  t        |j                  dd       t         j                  d      g|d d  | j                  t              5  d|d<   d d d        | j                  t              5  t         j                  d      dg|d d  d d d        t        |d      r*dd gdd	d
d}| j                  t        |j                  |       t        |d      rK G d dt         j                        } |d      g|d d  | j                  t        t        j                  |       y y # 1 sw Y   xY w# 1 sw Y   xY w)Njoer   r   r   r   __setstate__rU   r   rv   rw   )rU   	_childrenrx   rv   rw   __deepcopy__c                       e Zd Zd Zy)9BasicElementTest.test_augmentation_type_errors.<locals>.Ec                      y rS   r"   )r5   memos     r   r  zFBasicElementTest.test_augmentation_type_errors.<locals>.E.__deepcopy__	  s    r!   N)r@   rA   rB   r  r"   r!   r   Er  	  s     r!   r  )r=   rz   r   r,  r   r   r   r   r  r   r   )r5   r   stater  s       r   test_augmentation_type_errorsz.BasicElementTest.test_augmentation_type_errors	  s_   JJu)QXXs3)QXX

50A5/IJ)QXXq%8

5!"!y) 	AaD	y) 	.JJu%u-AaD	. 1n%"V E i?1n% BJJ   eH:AaDi: &	 		. 	.s   =F FFF&c                     G d d      } |       }t         j                  d|      |_        t        j                  |      }~t                | j                   |              t         j                  d      } |       }||_        t        j                  |      }t         j                  |d|      }~~~t                | j                   |              t         j                  d      }t         j                  d      }t         j                  d      }|j                  |       |j                  |       |j                  |       t        j                  |      }~~~t                | j                   |              y )	Nc                       e Zd Zy).BasicElementTest.test_cyclic_gc.<locals>.DummyNr@   rA   rB   r"   r!   r   Dummyr  	      r!   r  r  )r   r   r   r   r   )	r=   rz   dummyrefweakrefrefr
   r   rd  r   )r5   r  r   wrefr   r   r   r   s           r   test_cyclic_gczBasicElementTest.test_cyclic_gc	  s   	 	 GZZAZ.
{{1~$&! JJuG
{{1~]]1e!],q"$&! ZZZZZZ
		"
		"
		"{{2B$&!r!   c                    dfd}t         j                  d      }t        j                  ||      }| j	                   |       j
                  d       ~t                | j	                  d       | j	                   |       d        y )NFc                 
    dy NTr"   )wflags    r   wref_cbz.BasicElementTest.test_weakref.<locals>.wref_cb	  s    Dr!   r   T)r=   rz   r  r  r{   rU   r
   )r5   r  r   r  r  s       @r   test_weakrefzBasicElementTest.test_weakref	  sl    	 JJsO{{1g&S)t$&r!   c                     t         j                  dddd      }| j                  |j                  dd      d       | j                  |j                  d	d      d       y )
Nr   r   r   r  )r   r   zr      )r   r  )r=   rz   r{   rj   )r5   r   s     r   test_get_keyword_argsz&BasicElementTest.test_get_keyword_args	  sR    ZZ!qAZ.Q/3Q/3r!   c           	         t        dt        j                  dz         D ]6  }t        | j                  d      D ]  \  }}|j                  dd      }d|_        d|_        |j                  |d	      j                  |j                  d
             |j                  |j                  d	             |j                  d      d   j                  dd       | j                  |d|||      }| j                  |j                  d       | j                  |j                  d   d       | j                  t!        |      d       | j#                  ||        9 y )Nr   r   repeatr   *   )r   ztext goes herezopposite of headchild
grandchildz.//grandchildr   r   zother valuer8   r   )r   rd   HIGHEST_PROTOCOLr   r]   rz   rw   rv   rd  r   r   r   rt   r{   rU   rx   r|   r   )r5   ro   rm   rn   r   r   s         r   test_picklezBasicElementTest.test_pickle	  s(   1f559: 	0E")$,,q"A 0NN5bN1)+!!!W-44V^^L5QR01		/*1-11&-H))!-D*0&%A   /  5!126  R!,((B/0	0r!   c           	         t        dt        j                  dz         D ]  }t        | j                  d      D ]  \  }}d}|j                  |      }| j                  |j                         d   d       | j                  |d|||      }| j                  |j                  d       | j                  |d   j                  d	         y )
Nr   r   r  z\<?xml version="1.0"?>
                    <group><dogs>4</dogs>
                    </group>rU   groupr8   r   dogs)
r   rd   r  r   r]   r   r{   __getstate__rt   rU   )r5   ro   rm   rn   XMLTEXTr   r   s          r   test_pickle_issue18997z'BasicElementTest.test_pickle_issue18997	  s    1f559: 
	4E")$,,q"A 	4  &&w/  !25!97C))".E*0&%A  1  AF3	4
	4r!   N)r@   rA   rB   r  r  r  r  r  r  r  r  r  r"   r!   r   r  r  /	  s2    86B0E<;8!"F'4
0&4r!   r  c                   r    e Zd Zd Zd Zd Z ej                  d      d        Zd Z	d Z
d Zd	 Zd
 Zd Zy)BadElementTestc                 ,    G fdd      } |       gt         j                  d      }	 |j                          G d d|t         j                        } |d      gt         j                  d      }|j                         y # t        $ r Y Uw xY w)Nc                   "    e Zd Ze fd       Zy)2BadElementTest.test_extend_mutable_list.<locals>.Xc                 V    t         j                  d      gd d  t         j                  S )Nr  r[  r5   Ls    r   	__class__z<BadElementTest.test_extend_mutable_list.<locals>.X.__class__	  s"    

5)*!zz!r!   Nr@   rA   rB   propertyr  r  s   r   Xr  	      " "r!   r  r   c                       e Zd Zy)2BadElementTest.test_extend_mutable_list.<locals>.YNr  r"   r!   r   Yr  
  r  r!   r  r   r=   rz   r   r,  r5   r  r   r  r  s       @r   test_extend_mutable_listz'BadElementTest.test_extend_mutable_list	  s    	" 	"
 SEJJu	HHQK	2:: 	sVHJJu	  		s   B 	BBc                 |    G fdd      } |       t         j                  d      gt         j                  d      }	 |j                          G d d|t         j                        } |d      t         j                  d      gt         j                  d      }|j                         y # t        $ r Y iw xY w)Nc                   "    e Zd Ze fd       Zy)3BadElementTest.test_extend_mutable_list2.<locals>.Xc                 .    d d = t         j                  S rS   r[  r  s    r   r  z=BadElementTest.test_extend_mutable_list2.<locals>.X.__class__

  s    aDzz!r!   Nr  r  s   r   r  r  	
  r  r!   r  r  r   c                       e Zd Zy)3BadElementTest.test_extend_mutable_list2.<locals>.YNr  r"   r!   r   r  r  
  r  r!   r  r   r  r  s       @r   test_extend_mutable_list2z(BadElementTest.test_extend_mutable_list2
  s    	" 	"
 S"**U#$JJu	HHQK	2:: 	uXrzz%()JJu	  		s    B/ /	B;:B;c                     G fddt         j                        }t         j                  d      j                   |d      g       | j                  t        j
                  t         j                  d             t         j                  d      j                  t         j                  d      g       | j                  t        j
                   |d             y )Nc                       e Zd Z fdZy)3BadElementTest.test_remove_with_mutating.<locals>.Xc                     d d = yr  r"   )r5   or   s     r   r  z:BadElementTest.test_remove_with_mutating.<locals>.X.__eq__
  s    aDr!   Nr  r  s   r   r  r   
  s    r!   r  r   r   r  )r=   rz   r   r   r   r   r5   r  r   s     @r   test_remove_with_mutatingz(BadElementTest.test_remove_with_mutating
  s    	

 	 JJu	!E(*ahh

50ABJJu	"**U#$%*ahh%9r!      c                     t         j                  d      }t        |d|      5  | j                  t              5  t        |       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr   rU   )r=   rz   r   r   RuntimeErrorr   r,  s     r   test_recursive_reprz"BadElementTest.test_recursive_repr(
  sb     JJuq%# 	""<0 Q	 	 	 	s"   A"AA"A	A""A+c                 `    G fddt               }t        j                         }|j                  di        |j	                  d       |j	                   |d             |j	                  d       |j                  d       |j                         | j                  j                  d       y )Nc                       e Zd Z fdZy)/BadElementTest.test_element_get_text.<locals>.Xc                 >    	 j                    y # t        $ r Y y w xY wrS   )rw   	NameErrorrf  s    r   __del__z7BadElementTest.test_element_get_text.<locals>.X.__del__3
  s!    II  s    	Nr@   rA   rB   r  rL   s   r   r  r  2
      r!   r  rU   ABCDEFGHIJKLABCDEFGHIJKL)	r   r=   r  r>  r*   r1  r  r{   rw   r5   r  r   rL   s      @r   test_element_get_textz$BadElementTest.test_element_get_text0
  s{    	 	 NN	r	v	qy	v	ewwyN3r!   c                     G fddt               }t        j                         }|j                  di        |j                  di        |j	                  d       |j                  d       |j                   |d             |j                  d       |j	                  d       |j                         | j                  d   j                  d	       y )
Nc                       e Zd Z fdZy)/BadElementTest.test_element_get_tail.<locals>.Xc                 D    	 d   j                    y # t        $ r Y y w xY wr  )rv   r  rf  s    r   r  z7BadElementTest.test_element_get_tail.<locals>.X.__del__F
  s%    GLL  s    	Nr  r  s   r   r  r  E
  r  r!   r  r4  rU   r  r  r  r   r  )	r   r=   r  r>  r1  r*   r  r{   rv   r  s      @r   test_element_get_tailz$BadElementTest.test_element_get_tailC
  s    	 	 NN		r	e	v	qy	v	fwwya~6r!   c                     G fdd      }t         j                  d      j                  t         j                  d             d  |         j                  t         j                  d             dd |           y )Nc                       e Zd Z fdZy)%BadElementTest.test_subscr.<locals>.Xc                     d d = yNr   r"   r,  s    r   	__index__z/BadElementTest.test_subscr.<locals>.X.__index__[
  s    aDr!   Nr@   rA   rB   r"  r  s   r   r  r  Z
      r!   r  rL   r  r   r   )r=   rz   r   r  s     @r   test_subscrzBadElementTest.test_subscrX
  sa    	 	
 JJv	G$%	$13	G$%	!Bqs(r!   c                      G fdd      }t         j                  d      t        d      D ]'  }j                  dt         j                  d             ) g dd |       <   y )Nc                       e Zd Z fdZy))BadElementTest.test_ass_subscr.<locals>.Xc                     g d d  yr!  r"   r,  s    r   r"  z3BadElementTest.test_ass_subscr.<locals>.X.__index__i
  s    !r!   Nr#  r  s   r   r  r(  h
  r$  r!   r  rL   r   r   r  )r=   rz   r   r   )r5   r  r,  r   s      @r   test_ass_subscrzBadElementTest.test_ass_subscrf
  sZ    	 	
 JJvr 	-AHHQ

7+,	- !Bqs(r!   c                     d }t         j                  |      }|j                  di        |j                  d       | j	                  t
        |j                  di        ~t                y )Nc                     g S rS   r"   r   r   s     r   element_factoryz>BadElementTest.test_treebuilder_start.<locals>.element_factoryu
      Ir!   r.  rU   r  r   )r=   r  r>  r*   r   AttributeErrorr
   r5   r.  r   s      r   test_treebuilder_startz%BadElementTest.test_treebuilder_starts
  sP    	NN?N;	r	v.!''62>r!   c                     d }t         j                  |      }|j                  di        |j                  d       | j	                  t
        |j                  d       ~t                y )Nc                     g S rS   r"   r-  s     r   r.  z<BadElementTest.test_treebuilder_end.<locals>.element_factory
  r/  r!   r0  rU   r  )r=   r  r>  r*   r   r1  r1  r
   r2  s      r   test_treebuilder_endz#BadElementTest.test_treebuilder_end
  sN    	NN?N;	r	v.!%%7r!   N)r@   rA   rB   r  r  r  r   infinite_recursionr  r  r  r%  r*  r3  r6  r"   r!   r   r  r  	  sP    &&:  W# $4&7*

r!   r  c                       e Zd Zd Zd Zy)MutatingElementPathc                 @    t        j                  | g| }||_        |S rS   )r   __new__rL   )r_   rL   r   r5   s       r   r;  zMutatingElementPath.__new__
  s!    {{3&&	r!   c                 "    | j                   d d = yr  r  r5   r  s     r   r  zMutatingElementPath.__eq__
  s    IIaLr!   N)r@   rA   rB   r;  r  r"   r!   r   r9  r9  
  s    r!   r9  c                       e Zd Zd Zy)BadElementPathc                     ddz  )Nr   r   r"   r=  s     r   r  zBadElementPath.__eq__
  s    c	r!   Nr  r"   r!   r   r?  r?  
  s    r!   r?  c                   X     e Zd Z fdZ fdZd Zd Zd Zd Zd Z	d Z
d	 Zd
 Z xZS )BadElementPathTestc                 ^    t         |           ddlm} |j                  | _        i |_        y Nr   r2   )supersetUpr4   r3   r   
path_cacher5   r3   r  s     r   rF  zBadElementPathTest.setUp
  s$    )%,,r!   c                 P    ddl m} | j                  |_        t        |           y rD  )r4   r3   rG  r   rE  tearDownrH  s     r   rJ  zBadElementPathTest.tearDown
  s    )!__r!   c                     t         j                  d      }|j                  t         j                  d      g       |j                  t	        |d             y Nr   r   r   )r=   rz   r   r   r9  r,  s     r   test_find_with_mutatingz*BadElementPathTest.test_find_with_mutating
  s<    JJu	"**U#$%	"1c*+r!   c                     t         j                  d      }|j                  t         j                  d      g       	 |j                  t	        d             y # t
        $ r Y y w xY wrL  )r=   rz   r   r   r?  ZeroDivisionErrorr,  s     r   test_find_with_errorz'BadElementPathTest.test_find_with_error
  sP    JJu	"**U#$%	FF>#&'  		   A 	A#"A#c                     t         j                  d      }|j                  t         j                  d      g       |j                  t	        |d             y rL  )r=   rz   r   r   r9  r,  s     r   test_findtext_with_mutatingz.BadElementPathTest.test_findtext_with_mutating
  s<    JJu	"**U#$%	

&q#./r!   c                     t         j                  d      }|j                  t         j                  d      g       	 |j                  t	        d             y # t
        $ r Y y w xY wrL  )r=   rz   r   r   r?  rO  r,  s     r   test_findtext_with_errorz+BadElementPathTest.test_findtext_with_error
  sP    JJu	"**U#$%	JJ~c*+  		rQ  c                     t         j                  d      }t         j                  |d      }dddg di g}|D ]*  }||_        | j	                  |j                  d      |       , y )Nr   r   rE  r   Fr"   ./barr=   rz   rd  rw   r{   r   )r5   	root_elemsub_elemfalseyvals        r   (test_findtext_with_falsey_text_attributez;BadElementPathTest.test_findtext_with_falsey_text_attribute
  sc    JJu%	==E2aB+ 	?CHMY//8#>	?r!   c                     t         j                  d      }t         j                  |d      }d |_        | j	                  |j                  d      d       y )Nr   r   rW  rE  rX  )r5   rY  rZ  s      r   &test_findtext_with_none_text_attributez9BadElementPathTest.test_findtext_with_none_text_attribute
  sB    JJu%	==E2++G4b9r!   c                     t         j                  d      }|j                  t         j                  d      g       |j                  t	        |d             y rL  )r=   rz   r   r   r9  r,  s     r   test_findall_with_mutatingz-BadElementPathTest.test_findall_with_mutating
  s<    JJu	"**U#$%			%a-.r!   c                     t         j                  d      }|j                  t         j                  d      g       	 |j                  t	        d             y # t
        $ r Y y w xY wrL  )r=   rz   r   r   r?  rO  r,  s     r   test_findall_with_errorz*BadElementPathTest.test_findall_with_error
  sP    JJu	"**U#$%	IInS)*  		rQ  )r@   rA   rB   rF  rJ  rM  rP  rS  rU  r]  r_  ra  rc  __classcell__)r  s   @r   rB  rB  
  s5     
,
0
?:/
r!   rB  c                   *    e Zd Zd Zd Zd Zd Zd Zy)ElementTreeTypeTestc                    | j                  t        j                  t               | j                  t        j                  t               | j                  t        j
                  t               | j                  t        j                  t               | j                  t        j                  t               | j                  t        j                  t               y rS   )	ry   r=   rX  re  r<  r/   rz   r  r  r   s    r   test_istypezElementTreeTypeTest.test_istype
  sz    bmmT2bhh-bnnd3bjj$/bnnd3bllD1r!   c                 (    G d dt         j                        } |d      }| j                  |t         j                         | j                  ||       | j                  |j                  d       d|_        | j                  |j
                  d       y )Nc                       e Zd Zy)DElementTreeTypeTest.test_Element_subclass_trivial.<locals>.MyElementNr  r"   r!   r   	MyElementrk  
  r  r!   rl  r   r  )r=   rz   ry   r{   rU   rw   r5   rl  myes      r   test_Element_subclass_trivialz1ElementTreeTypeTest.test_Element_subclass_trivial
  ss    	

 	 c2::.c9-%( 5)r!   c                      G fddt         j                         dddddd	      }| j                  |j                  d
       | j                  t	        |j                               g d       y )Nc                   &     e Zd Zi f fd	Z xZS )HElementTreeTypeTest.test_Element_subclass_constructor.<locals>.MyElementc                 .    t        |   |dz   |fi | y )N__)rE  r  )r5   rU   rx   extrarl  r  s       r   r  zQElementTreeTypeTest.test_Element_subclass_constructor.<locals>.MyElement.__init__
  s    i/d
FLeLr!   )r@   rA   rB   r  rd  )r  rl  s   @r   rl  rr  
  s    +- M Mr!   rl  r   r   r   )r   r   r     )r   r   foo__))r   r   )r   r   )r   r  )r   rv  )r=   rz   r{   rU   r  r   )r5   rn  rl  s     @r   !test_Element_subclass_constructorz5ElementTreeTypeTest.test_Element_subclass_constructor
  s^    	M

 	M QQ/1:'*		,4	6r!   c                      G d dt         j                        } |d      }| j                  |j                         d       y )Nc                       e Zd Zd Zy)GElementTreeTypeTest.test_Element_subclass_new_method.<locals>.MyElementc                     | j                   S rS   rT   r   s    r   	newmethodzQElementTreeTypeTest.test_Element_subclass_new_method.<locals>.MyElement.newmethod
  s    xxr!   N)r@   rA   rB   r}  r"   r!   r   rl  r{  
  s     r!   rl  r  )r=   rz   r{   r}  rm  s      r    test_Element_subclass_new_methodz4ElementTreeTypeTest.test_Element_subclass_new_method
  s4    	 

 	  %0r!   c                     G d dt         j                        }t         j                  d      }d|_         |d      }d|_        |j                  |       | j	                  |j                  d      d       | j	                  |j                  d      j                  d       t        |j                  d            }| j	                  t        |      d|       | j	                  |d   j                  d       y )	Nc                       e Zd Zy)AElementTreeTypeTest.test_Element_subclass_find.<locals>.MyElementNr  r"   r!   r   rl  r    r  r!   rl  r   rw   r   rb  r   r   )r=   rz   rw   r   r{   r   r   rU   r}   r   r|   )r5   rl  r   subfounds        r   test_Element_subclass_findz.ElementTreeTypeTest.test_Element_subclass_find  s    	

 	 JJu	E*I6**E2QYYu%&UQ.qu-r!   N)r@   rA   rB   rh  ro  rx  r~  r  r"   r!   r   rf  rf  
  s    2*61.r!   rf  c                   <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)
ElementFindTestc                    t         j                  t              }| j                  |j	                  d      j
                  d       | j                  |j	                  d      j
                  d       | j                  |j	                  d      j
                  d       t         j                  t              |d<   | j                  |j	                  d      j
                  d       | j                  |j                  d      d       | j                  |j                  d      d       | j                  |j                  d      d	       | j                  |j                  dd
      d	       | j                  |j                  d             | j                  |j                  dd
      d
       | j                  t         j                  d      j                  d      d	       y )NrU   r   ./tagr   zsection/nexttagnexttagrw   rb  rE  r   togz<tag><empty /></tag>empty)	r=   r   r   r{   r   rU   SAMPLE_SECTIONr   r   r,  s     r   test_find_simplez ElementFindTest.test_find_simple  sb   FF:**E2.22E:,,e4vvn%! 1266	BG,f5M2I> 	$56;$5yA2F 	!**U+,E95yA 	 67@@I2Nr!   c                    d}t         j                  |      }| j                  |j                  d      j                  d   d       | j                  |j                  d      j                  d   d       | j                  |j                  d      j                  d   d       | j                  |j                  d	      j                  d   d
       | j                  |j                  d      j                  d   d       | j                  t        d|j                  d       | j                  t        d|j                  d       | j                  t        d|j                  d       | j                  t        d|j                  d       y )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]XPathz./tag[0]z	./tag[-1]z./tag[last()-0]z./tag[last()+1])r=   r   r{   r   rx   r  SyntaxError)r5   
LINEAR_XMLr   s      r   test_find_xpathzElementFindTest.test_find_xpath-  s3   
 FF: 	
+227;SA
+227;SA077@#F 1299'BCH 1299'BCH{GQVVZH{GQVV[I{GQVV=NO{GQVV=NOr!   c                    t         j                  t              }t         j                  t              |d<   | j	                  t        |j                  d            dg       | j	                  t        |j                  d            ddg       | j	                  t        |j                  d            g        | j	                  t        |j                  d            g        | j	                  t        |j                  d            g d       | j	                  t        |j                  d	            dgd
z         | j	                  t        |j                  d            dg       | j	                  t        |j                  d            dgdz         | j	                  t        |j                  d            g d       | j	                  t        |j                  d            g d       | j	                  t        |j                  d            g d       | j	                  t        |j                  d            g d       | j	                  t        |j                  d            g d       | j	                  t        |j                  d            dg       | j	                  t        |j                  d            dg       | j	                  t        |j                  d            dgdz         | j	                  t        |j                  d            dgdz         | j	                  t        |j                  d            dgdz         | j	                  t        |j                  d            dg       | j	                  t        |j                  d            dgdz         | j	                  t        |j                  d            dgdz         | j	                  t        |j                  d            dg       | j	                  t        |j                  d            dg       | j	                  t        |j                  d            d g       | j	                  t        |j                  d!            g        | j	                  t        |j                  d"            g        | j	                  t        |j                  d#            dgdz         | j	                  |j                  d$      |j                  d             | j	                  t        |j                  d%            d g       | j	                  t        |j                  d&            d g       | j	                  t        |j                  d'            d g       | j	                  t        |j                  d(            d g       | j	                  t        |j                  d)            d g       | j	                  t        |j                  d*            g        | j	                  t        |j                  d+            g        | j	                  t        |j                  d,            g        | j	                  t        |j                  d-            g        | j	                  t        |j                  d.            g        | j	                  t        |j                  d/            dg       | j	                  t        |j                  d0            dg       | j	                  t        |j                  d1            dg       | j	                  t        |j                  d2            dg       | j	                  t        |j                  d3            dg       | j	                  t        |j                  d4            g        | j	                  t        |j                  d5            g        | j	                  t        |j                  d6            dgdz         | j	                  t        |j                  d7            dgdz         | j	                  t        |j                  d8            dgdz         | j	                  t        |j                  d9            dgdz         | j	                  t        |j                  d:            dgdz         | j	                  t        |j                  d;            dgd
z         | j	                  t        |j                  d<            dgd
z         |d   |d=<   | j	                  t        |j                  d(            d d g       | j	                  t        |j                  d3            ddg       y )>Nr   rW  r&  rU   r  ztog/foor   rr  z.//tagrv  r   zsection//tagz	section/*)rU   r  nextsectionz
section//*)rU   r  r  rU   zsection/.//*z*/*z*//*z*/tagz*/./tagr  z././tagz.//tag[@class]r  z.//tag[@class="a"]z.//tag[@class!="a"]z.//tag[@class="b"]z.//tag[@class!="b"]z.//tag[@id]z.//section[tag]rR  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']r   )r=   r   r   r  r{   rW   r   r,  s     r   test_findallzElementFindTest.test_findallC  s   FF:vvn%!		#7&B		%(89E5>J		%(892>		)(<=rB		#7%	'		((;<GaK			-(@AE7K		.(ABUGaKP		+(>?-	/		,(?@4	6		.(AB4	6		%(89-	/		&(9:4	6		'(:;eWE		)(<=wG		'(:;eWq[I		)(<=w{K		2B(CDGaK			2F(GHG			2G(HIGaK			2F(GHGaK			2G(HIG			-(@AG			2C(DEK			2G(HI2N		((;<bA		2B(CDGaK	;/<1HI		2M(NOK			2N(OPK			2N(OPK			2O(PQK			2Q(RSK	
 			2N(OP			2O(PQ			2O(PQ			2P(QR			2R(ST	 			2G(HI	"		2H(IJ	"		2H(IJ	"		2K(LM	"		2I(JK	"		2J(KL			2I(JK	
 			2H(IJ1	&		2I(JK1	&		2I(JK1	&		2L(MN1	&		2J(KL1	& 			2K(LM1	&		2J(KL1	& t!		2O(PQ#Y/	1		2I(JK	)r!   c                 B   t         j                  t              }| j                  t	        |j                  d            g        | j                  t	        |j                  d            dgdz         | j                  t	        |j                  d            dgdz         y )NrU   z{http://effbot.org/ns}tagr   z.//{http://effbot.org/ns}tagr  )r=   r   r7  r{   rW   r   r,  s     r   test_test_find_with_nsz&ElementFindTest.test_test_find_with_ns  s    FF=!		%(892>199%@AB()A-	/ 	199%CDE()A-	/r!   c                 X   t         j                  d      }ddi}| j                  t        |j	                  d|            d       | j                  t        |j	                  d|            d       ddi}| j                  t        |j	                  d|            d	       | j                  t        |j	                  d|            d       ddd
}| j                  t        |j	                  d|            d       | j                  t        |j	                  d|            d	       y )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)rE  r   .//br  r   )r  rE  )r=   r   r{   r|   r   )r5   r4  nsmaps      r   test_findall_different_nsmapsz-ElementFindTest.test_findall_different_nsmaps  s    vv   sT\\)\FGKT\\&U\CDaHsT\\)\FGKT\\&U\CDaH$T\\)\FGKT\\&U\CDaHr!   c                 ~   t         j                  d      }|j                  t         j                  d             | j	                  t        |j                  d            g d       | j	                  t        |j                  d            dg       | j	                  t        |j                  d            dg       | j	                  t        |j                  d	            d
g       | j	                  t        |j                  d            ddg       | j	                  t        |j                  d            dg       | j	                  t        |j                  d            t        |j                  d                   | j	                  t        |j                  d            g d       | j	                  t        |j                  d      |d   gz         t        |j                  d                   | j	                  t        |j                  d            g d       | j	                  t        |j                  d            ddg       | j	                  t        |j                  d            ddg       | j	                  t        |j                  d            d
g       | j	                  t        |j                  d            g d       | j	                  t        |j                  d            ddg       | j	                  t        |j                  d            t        |j                  d                   y )Nr  r   z{*}b){X}br   {Y}bz{*}cr   z{X}*r  z{Y}*r  r`  r   z{}brb  )r  r   r   r  r  r   z.//{*}b)r  r   r  r   r  z.//{*}cz.//{X}*z.//{Y}*z.//{}*)r   r   r   r   z.//{}br  )r=   r   r   re  r{   rW   r   r  s     r   test_findall_wildcardz%ElementFindTest.test_findall_wildcard  s   vv   	BJJv&'V(<=.	0V(<=	 V(<= 	#V(<= 	#U(;<s	%U(;<	 U(;<'S(9:	<V(<=3	5 	V(<Rz(IJ'S(9:	< 	Y(?@;	=Y(?@s	%Y(?@ &)	+Y(?@ 	#X(>?-	/X(>?s	%X(>?'V(<=	?r!   c                     t         j                  t              }| j                  t        d      5  |j                  d       d d d        y # 1 sw Y   y xY w)Nzcannot use absolute pathz/tag)r=   r   r   r  r  r   r,  s     r   test_bad_findzElementFindTest.test_bad_find  sB    FF:##K1KL 	IIf	 	 	s   AAc                 |   t         j                  t              }| j                  t         j	                  |      j                  d      j                  d       | j                  t         j	                  |      j                  d      d       | j                  t        t         j	                  |      j                  d            dgdz         d}| j                  t        |      5  t         j	                  |      j                  d      }d d d        | j                  t              dgdz         y # 1 sw Y   )xY w)NrU   rw   r   zThis 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//tagr  )r=   r   r   r{   r/   r   rU   r   rW   r   assertWarnsRegexFutureWarning)r5   r   r   r   s       r   test_find_through_ElementTreez-ElementFindTest.test_find_through_ElementTree  s    FF:*//6::EB*33E:FCq(9(A(A%(HIGaK	# ""=#6 	4"**73B	4+eWq[9	4 	4s   %%D22D;N)r@   rA   rB   r  r  r  r  r  r  r  r  r"   r!   r   r  r    s0    O.P,n)`/I"*?X
:r!   r  c                   2    e Zd ZddZd Zd Zd Zd Zd Zy)	ElementIterTestNc                 6    t        |j                  |            S rS   )rW   r   )r5   rL   rU   s      r   _ilistzElementIterTest._ilist  s    diin--r!   c                    t         j                  d      }| j                  | j                  |      g d       | j                  | j                  |j	                  d            ddg       | j                  t        |j                               j                  d       | j                  dj                  |j                               d       | j                  dj                  |j	                  d      j                               d       | j                  t        |j                               d	       t        |d
      }| j                  t        t         j                  |            d   d       t        |d
      }t         j                  t         j                               }| j                  t        t         j                  ||            d   d       t         j                  d       }| j                  t         |j                         t         j                  d      }| j                  dj                  |j                               d       y )Nz7<html><body>this is a <i>paragraph</i>.</body>..</html>)r+  r&  r   r&  r   r+  rE  zthis is a paragraph...zthis is a paragraph.z
this is a F)rM   r   r1  r  )r   z*<root>a&amp;<sub>b&amp;</sub>c&amp;</root>za&b&c&)r=   r   r{   r  r   rT  r   rU   r(  r   rQ   rS  r  r  r/   r   r1  )r5   rO  
sourcefiler   rP   s        r   
test_basiczElementIterTest.test_basic  s   ffNOS)+@ASXXf%56Fchhj)--v602JK&!1!:!:!<="	$clln-|< se4
bll:67:EB se4
R^^%56bll:flEFqI	  ~~d#.$))4 ffAB0(;r!   c                 $   t         j                  d      }| j                  | j                  |      dg       t         j	                  |d      }| j                  | j                  |      ddg       t         j	                  |d      }| j                  | j                  |      g d       t         j	                  |d      }| j                  | j                  |      g d       |d   |d<   |d= | j                  | j                  |      ddg       y )	Nr   r   r   )r   r   r   r   )r   r   r   r   r   r   )r=   rz   r{   r  rd  rh  s        r   test_cornerszElementIterTest.test_corners-  s    JJsOQ#/ MM!S!Q#s4 MM!S!Q9 MM!S!Q)=> t!aDQ#s4r!   c                    t         j                  d      }| j                  | j                  |d      dgdz         | j                  | j                  |d      dgdz         | j                  t	        |j                  d            dgdz         g d}| j                  t	        |j                               |       | j                  | j                  |      |       | j                  | j                  |d      |       y )	NaJ  
            <document>
                <house>
                    <room>bedroom1</room>
                    <room>bedroom2</room>
                </house>
                <shed>nothing here
                </shed>
                <house>
                    <room>bedroom8</room>
                </house>
            </document>roomr  houser   rT   )rP  r  r  r  shedr  r  r   )r=   r   r{   r  rW   r   )r5   rO  all_tagss      r   test_iter_by_tagz ElementIterTest.test_iter_by_tagC  s    ff   	S&1F8a<@S'2WIMB 	3888/0HqL	
-
3X>S)84S#.9r!   c                     t         j                  d      }|j                         }| j                  t              5  t        j
                  |       d d d        y # 1 sw Y   y xY w)Nr   )r=   rz   r   r   r,  r   )r5   r   r   s      r   r   zElementIterTest.test_copy`  sH    JJsOVVXy) 	IIbM	 	 	s   AA#c                 0   t         j                  d      }|j                         }t        t        j
                  dz         D ]F  }| j                  t        t        j                  f      5  t	        j                  ||       d d d        H y # 1 sw Y   SxY w)Nr   r   )
r=   rz   r   r   rd   r  r   r,  rg   re   )r5   r   r   ro   s       r   r  zElementIterTest.test_picklef  sz    JJsOVVX622Q67 	(E""Iv/C/C#DE (R'( (	(( (s   *BB	rS   )	r@   rA   rB   r  r  r  r  r   r  r"   r!   r   r  r    s     .<65,::(r!   r  c                   n    e Zd ZdZdZd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zy)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                    | j                  |j                  d       | j                  |j                  d       | j                  |j                  d        | j                  |j                  i        t        |      }| j                  t        |      d       |d   }| j                  |j                  d       | j                  |j                  d       | j                  |j                  d       | j                  |j                  i        y )Nr+  rw   r   r   divrb  rv   )r{   rU   rw   rv   rx   r}   r|   )r5   r   childrenr  s       r   _check_sample1_elementz&TreeBuilderTest._check_sample1_elementv  s    '(&2&7X*E*Y/V,r*r!   c                 6    G d d      } G d d|      }t         j                   |             }|j                  | j                         | j	                  |j                         d       t         j                   |             }|j                  | j                         | j	                  |j                         d       t         j                  t                     }|j                  | j                         | j                  |j                                y )Nc                       e Zd Zd Zy)<TreeBuilderTest.test_dummy_builder.<locals>.BaseDummyBuilderc                      y)Nr  r"   r   s    r   r  zBTreeBuilderTest.test_dummy_builder.<locals>.BaseDummyBuilder.close  s    r!   Nr\  r"   r!   r   BaseDummyBuilderr    s    r!   r  c                       e Zd Zd xZxZZy)8TreeBuilderTest.test_dummy_builder.<locals>.DummyBuilderc                       y rS   r"   )r   s    r   <lambda>zATreeBuilderTest.test_dummy_builder.<locals>.DummyBuilder.<lambda>      r!   N)r@   rA   rB   r*   r>  r1  r"   r!   r   DummyBuilderr    s    !00D053r!   r  r  r  )r=   r  r  sample1r{   r  objectr   )r5   r  r  r   s       r   test_dummy_builderz"TreeBuilderTest.test_dummy_builder  s    	 		1+ 	1 \^4DLL!,%5%78DLL!,VX.DLL!&,,.)r!   c                    t         j                         }| j                  |j                  d      j                  t         j
                         | j                  |j                  d      j                  d       t         j                  t         j
                        }| j                  |j                  d      j                  t         j
                         | j                  |j                  d      j                  d       t         j                  t              }| j                  |j                  d      t        d             y )Nctext)comment_factory)r=   r  r{   rc  rU   re  rw   r|   r5   r   s     r   test_treebuilder_commentz(TreeBuilderTest.test_treebuilder_comment  s    NN7+//<7+00':NN2::N67+//<7+00':NN3N/7+S\:r!   c                    t         j                         }| j                  |j                  dd       j                  t         j
                         | j                  |j                  dd       j                  d       t         j                  t         j
                        }| j                  |j                  d      j                  t         j
                         | j                  |j                  d      j                  d       | j                  |j                  dd      j                  t         j
                         | j                  |j                  dd      j                  d       t         j                  d       }| j                  |j                  d      t        d      d f       | j                  |j                  dd      t        d      df       y )Nr  )
pi_factoryr  z text zpitarget  text c                     t        |       |fS rS   )r|   )r  rw   s     r   r  z5TreeBuilderTest.test_treebuilder_pi.<locals>.<lambda>  s    CK;N r!   )r=   r  r{   r}  rU   r   rw   r|   r  s     r   test_treebuilder_piz#TreeBuilderTest.test_treebuilder_pi  sE   NNh-112559h-22H=NNbeeN,h++RUU3h,,h7j(377?j(388:KLNN&NNOh#h-)>?j(3c*ox5PQr!   c                 f    G d dt         j                        }d}t         j                  |      }| j                  |j                  d       t         j                   |             }|j                  |       |j                         }| j                  |j                  d       d}t         j                  |      }| j                  |j                  d       d}t         j                   |             }|j                  |       |j                         }| j                  |j                  d       y )Nc                       e Zd Zy);TreeBuilderTest.test_late_tail.<locals>.TreeBuilderSubclassNr  r"   r!   r   TreeBuilderSubclassr    r  r!   r  z<a>text<!-- comment -->tail</a>texttailr  z<a>text<?pi data?>tail</a>)r=   r  r   r{   rw   r  r  r  )r5   r  r  r   r   s        r   test_late_tailzTreeBuilderTest.test_late_tail  s    	".. 	 0MM#,%8%:;CLLN,*MM#,*%8%:;CLLN,r!   c                 2    G d dt         j                        }d}t         j                  t         j                  d            }|j                  |       |j	                         }| j                  |d   j                  d       | j                  |d   j                  d	       | j                  |j                  d
       t         j                   |d            }|j                  |       |j	                         }| j                  |d   j                  d       | j                  |d   j                  d	       | j                  |j                  d
       d}t         j                  t         j                  d            }|j                  |       |j	                         }| j                  |d   j                  d       | j                  |d   j                  d       | j                  |j                  d       t         j                   |d            }|j                  |       |j	                         }| j                  |d   j                  d       | j                  |d   j                  d       | j                  |j                  d       y )Nc                       e Zd Zy)KTreeBuilderTest.test_late_tail_mix_pi_comments.<locals>.TreeBuilderSubclassNr  r"   r!   r   r  r    r  r!   r  z/<a>text<?pi1?> <!-- comment -->
<?pi2?>tail</a>T)insert_commentsr  r   r  z
tailztext z+<a>text<!-- comment -->
<?pi data?>tail</a>)
insert_piszpi datarv   ztext
)r=   r  r  r  r  r{   rw   rv   )r5   r  r  r   r   s        r   test_late_tail_mix_pi_commentsz.TreeBuilderTest.test_late_tail_mix_pi_comments  s   	".. 	 AR^^D^%IJCLLN1K01H-)%8%NOCLLN1K01H-)<R^^t^%DECLLN1I.1F+*%8D%IJCLLN1I.1F+*r!   c                     t         j                  t         j                  d             }|j                  | j                         |j                         }| j                  |       y Nr0  r  )r=   r  r  r  r  r  r  r5   r   r   s      r   $test_treebuilder_elementfactory_nonez4TreeBuilderTest.test_treebuilder_elementfactory_none  sF    R^^D^%IJDLL!LLN##A&r!   c                 *    G d dt         j                        } |       }| j                  |j                  d      d       t         j	                  |      }|j                  | j                         |j                         }| j                  |       y )Nc                       e Zd Zd Zy)4TreeBuilderTest.test_subclass.<locals>.MyTreeBuilderc                     |dz  S Nr   r"   rC  s     r   r  z;TreeBuilderTest.test_subclass.<locals>.MyTreeBuilder.foobar      1ur!   Nr@   rA   rB   r  r"   r!   r   MyTreeBuilderr        r!   r  r   r   r  )	r=   r  r{   r  r  r  r  r  r  r5   r  tbr   r   s        r   test_subclasszTreeBuilderTest.test_subclass  sl    	BNN 	 _2+R(DLL!LLN##A&r!   c                     G d dt         j                        } |t         j                  t         j                        }| j	                  |j                  d      d       t         j                  |      }|j                  | j                         |j                  d       |j                         }| j                  |       y )Nc                       e Zd Zd Zy)?TreeBuilderTest.test_subclass_comment_pi.<locals>.MyTreeBuilderc                     |dz  S r  r"   rC  s     r   r  zFTreeBuilderTest.test_subclass_comment_pi.<locals>.MyTreeBuilder.foobar  r  r!   Nr  r"   r!   r   r  r    r  r!   r  )r  r  r   r   r  z<!-- a comment--><?and a pi?>)r=   r  re  r   r{   r  r  r  r  r  r  r  s        r   test_subclass_comment_piz(TreeBuilderTest.test_subclass_comment_pi  s    	BNN 	 2::"%%H2+R(DLL!34LLN##A&r!   c                     g fd}t         j                  |      }t         j                  |      }|j                  | j                         |j                          | j                  dg       y )Nc                 R    j                  |        t        j                  | |      S rS   )r   r=   rz   )rU   rx   lsts     r   	myfactoryz7TreeBuilderTest.test_element_factory.<locals>.myfactory  s    JJsO::c6**r!   r0  r  toplevel)r=   r  r  r  sample2r  r{   )r5   r  r  r   r  s       @r   test_element_factoryz$TreeBuilderTest.test_element_factory  sZ    	+
 ^^I^6R(DLL!zl+r!   c                     t         j                  |      }t         j                  |      }|j                  | j                         |j                         }| j                  ||       | j                  |       y r  )r=   r  r  r  r  r  ry   r  )r5   r_   r  r   r   s        r   _check_element_factory_classz,TreeBuilderTest._check_element_factory_class  s[    ^^C^0R(DLL!LLNa%##A&r!   c                 X     G d dt         j                        }| j                  |       y )Nc                       e Zd Zy)@TreeBuilderTest.test_element_factory_subclass.<locals>.MyElementNr  r"   r!   r   rl  r  )  r  r!   rl  )r=   rz   r   )r5   rl  s     r   test_element_factory_subclassz-TreeBuilderTest.test_element_factory_subclass(  s     	

 	)))4r!   c                     t         j                  }| j                  |j                  d        G d d|t              }| j                  |       y )Nr8   c                       e Zd Zy)LTreeBuilderTest.test_element_factory_pure_python_subclass.<locals>.MyElementNr  r"   r!   r   rl  r  6  r  r!   rl  )r=   _Element_Pyr{   rA   r   r   )r5   baserl  s      r   )test_element_factory_pure_python_subclassz9TreeBuilderTest.test_element_factory_pure_python_subclass-  s>     ~~*AB	j 	)))4r!   c                      G d d      }t         j                   |             }|j                  | j                         | j	                  |j                         d       y )Nc                       e Zd ZdZd Zd Zy)3TreeBuilderTest.test_doctype.<locals>.DoctypeParserNc                     |||f| _         y rS   _doctype)r5   rl   pubidsystems       r   doctypez;TreeBuilderTest.test_doctype.<locals>.DoctypeParser.doctype>  s    !%uf 5r!   c                     | j                   S rS   r  r   s    r   r  z9TreeBuilderTest.test_doctype.<locals>.DoctypeParser.closeA  s    }}$r!   )r@   rA   rB   r  r  r  r"   r!   r   DoctypeParserr  ;  s    H6%r!   r  r  r+  z&-//W3C//DTD XHTML 1.0 Transitional//ENz7http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd)r=   r  r  r  r{   r  )r5   r  r   s      r   test_doctypezTreeBuilderTest.test_doctype:  sM    	% 	% ]_5DLL!H	Ir!   c                     G d d      }t         j                   |              dD ]=  }| j                  t        |      5  t         j                   ||             d d d        ? t         j                   |t                     dD ]^  }t         j                   ||t                    }|j                  | j                         | j                  |j                                ` y # 1 sw Y   xY w)Nc                       e Zd ZdefdZd Zy)BTreeBuilderTest.test_builder_lookup_errors.<locals>.RaisingBuilderNc                      || _         || _        y rS   raise_inwhat)r5   r  r  s      r   r  zKTreeBuilderTest.test_builder_lookup_errors.<locals>.RaisingBuilder.__init__M  s     ( 	r!   c                 `    || j                   k(  r| j                  | j                         d }|S )Nc                       y rS   r"   )r   s    r   handlez^TreeBuilderTest.test_builder_lookup_errors.<locals>.RaisingBuilder.__getattr__.<locals>.handleT  s    r!   r  )r5   rl   r!  s      r   __getattr__zNTreeBuilderTest.test_builder_lookup_errors.<locals>.RaisingBuilder.__getattr__Q  s+    4==())DMM22r!   )r@   rA   rB   r   r  r"  r"   r!   r   RaisingBuilderr  L  s    (,: !r!   r#  r  )r>  r*   r1  rc  r}  )r  )	r=   r  r  r   r1  r  r  r   r  )r5   r#  r  r   s       r   test_builder_lookup_errorsz*TreeBuilderTest.test_builder_lookup_errorsK  s    
	 
	 	N,-> 	;E''
E: ;N5$9:; ;	; 	N?@> 	.E\\N)S\TFKK%flln-	.	; ;s   C--C6	N)r@   rA   rB   r  r  r  r  r  r  r  r  r  r  r  r  r   r  r
  r  r$  r"   r!   r   r  r  n  s^    2G
 2G+*(
;R-0"+H''','5
5I".r!   r  c                   B    e Zd ZdZdZdZd Zd Zd Zd Z	d Z
d	 Zd
 Zy)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                     | j                  |j                  d       | j                  |d   j                  d       | j                  |d   j                  d       y )NrO   r   line22)r{   rU   rw   r,  s     r   _check_sample_elementz#XMLParserTest._check_sample_elementn  sF    '16*1D)r!   c                     t         j                  dt         j                               }|j                  | j                         | j                  |j                                y )Nr   )rE   r  )r=   r  r  r  r  r*  r  )r5   r  s     r   test_constructor_argsz#XMLParserTest.test_constructor_argss  sE    ,,&(nn&6  8T\\"""7==?3r!   c                      G d dt         j                        } |       }|j                  | j                         | j	                  |j                                y )Nc                       e Zd Zy)-XMLParserTest.test_subclass.<locals>.MyParserNr  r"   r!   r   MyParserr/  z  r  r!   r0  )r=   r  r  r  r*  r  )r5   r0  r   s      r   r  zXMLParserTest.test_subclassy  s=    	r|| 	DLL!""6<<>2r!   c                    t        j                         5  t        j                  dt               t        j                         }|j                  | j                         |j                          d d d        y # 1 sw Y   y xY w)Nerror)	warningscatch_warningssimplefilterDeprecationWarningr=   r  r  r  r  r  s     r   test_doctype_warningz"XMLParserTest.test_doctype_warning  sX    $$& 	!!'+=>\\^FKK%LLN		 	 	s   AA88Bc                    d  G fddt         j                        } |       }| j                  t        d      5  |j	                  | j
                         d d d        |j                          | j                         d xt        j                         5  t        j                  dt               t        j                  dt                G fdd      } | |             }|j	                  | j
                         |j                          | j                         | j                  d       d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)	Nc                       e Zd Z fdZy)@XMLParserTest.test_subclass_doctype.<locals>.MyParserWithDoctypec                     ||fy rS   r"   )r5   r   r   r  s      r   r  zHXMLParserTest.test_subclass_doctype.<locals>.MyParserWithDoctype.doctype  s     &>r!   Nr@   rA   rB   r  r  s   r   MyParserWithDoctyper:    s    *r!   r=  r  r2  c                       e Zd Z fdZy):XMLParserTest.test_subclass_doctype.<locals>.DoctypeParserc                     |||fy rS   r"   )r5   rl   r  r  	_doctype2s       r   r  zBXMLParserTest.test_subclass_doctype.<locals>.DoctypeParser.doctype  s    !%uf 5Ir!   Nr<  )rA  s   r   r  r?    s    6r!   r  r  r  )r=   r  r  RuntimeWarningr  r  r  r   r3  r4  r5  r6  r{   )r5   r=  r   r  r  rA  s       @@r   test_subclass_doctypez#XMLParserTest.test_subclass_doctype  s   	*",, 	*
 %&"">9= 	&KK%	&(###9$$& 	M!!'+=>!!'>:6 6
 )@FKK%LLNh'YLM	M 	M	& 	&	M 	Ms   E BE E	Ec                 T   t        j                         5  t        j                  dt               t        j                  dt                G d dt
        j                        } |       }|j                  | j                         |j                          ddd       y# 1 sw Y   yxY w)z:Ensure that ordinary usage is not deprecated (Issue 19176)r2  c                       e Zd Zy)DXMLParserTest.test_inherited_doctype.<locals>.MyParserWithoutDoctypeNr  r"   r!   r   MyParserWithoutDoctyperF    s    r!   rG  N)
r3  r4  r5  r6  rB  r=   r  r  r  r  )r5   rG  r   s      r   test_inherited_doctypez$XMLParserTest.test_inherited_doctype  su    $$& 	!!'+=>!!'>: +-FKK%LLN	 	 	s   B BB'c                 X   t         j                  t         j                               }|j                  | j                         |j                         }| j                  |j                  d       | j                  |j                  d   d       | j                  |j                  d       y )Nr  moneyr   u
   $£€𐅻)
r=   r  r  r  sample3r  r{   rU   rx   rw   r  s      r   test_parse_stringzXMLParserTest.test_parse_string  sw    R^^%56DLL!LLN('*,CD!89r!   N)r@   rA   rB   r  r  rK  r*  r,  r  r7  rC  rH  rL  r"   r!   r   r&  r&  e  s:    -GGMG*
43M<	:r!   r&  c                       e Zd Zd Zy)NamespaceParseTestc                 B   ddd}t         j                  t              }| j                  t	        |j                  d|            d       | j                  t	        |j                  d|            d       | j                  t	        |j                  d|            d       y )	Nhellor   )hr  z{hello}tabler   z.//{hello}tdr   z.//{foo}name)r=   r   SAMPLE_XML_NS_ELEMSr{   r|   r   )r5   r  rO  s      r   test_find_with_namespacez+NamespaceParseTest.test_find_with_namespace  s{    E*mm/0S[[?@!DS[[?@!DS[[?@!Dr!   N)r@   rA   rB   rS  r"   r!   r   rN  rN    s    Er!   rN  c                   T    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zy)ElementSlicingTestc                 @    |D cg c]  }|j                    c}S c c}w rS   rT   )r5   elemlistr   s      r   
_elem_tagszElementSlicingTest._elem_tags  s    '(!(((rX   c                 6    | j                  t        |            S rS   )rX  r}   rf  s     r   _subelem_tagsz ElementSlicingTest._subelem_tags  s    tDz**r!   c                     t         j                  d      }t        |      D ]  }t         j                  |d|z          |S )zxCreate an Element with a tag 'a', with the given amount of children
           named 'a0', 'a1' ... and so on.

        r   za%s)r=   rz   r   rd  )r5   numchildrenr   r   s       r   _make_elem_with_childrenz+ElementSlicingTest._make_elem_with_children  s<    
 JJsO{# 	(AMM!UQY'	(r!   c                    | j                  d      | j                  d   j                  d       | j                  d   j                  d       | j                  t        fd       | j                  t        fd       y )Nr   r   a1a8c                       d   S )N   r"   r  s   r   r  z?ElementSlicingTest.test_getslice_single_index.<locals>.<lambda>  s    ae r!   c                       d   S )Nir"   r  s   r   r  z?ElementSlicingTest.test_getslice_single_index.<locals>.<lambda>  s    af r!   )r]  r{   rU   r   
IndexErrorr,  s    @r   test_getslice_single_indexz-ElementSlicingTest.test_getslice_single_index  sc    ))"-14(2D)*m4*n5r!   c                    | j                  d      }| j                  | j                  |dd        g d       | j                  | j                  |dd       g d       | j                  | j                  |dd       g d       | j                  | j                  |dd       ddg       | j                  | j                  |dd       ddg       | j                  | j                  |d d	       d
dg       y )Nr  r  )a3a4a5   r  rh  ri  r  r   a0r_  )r]  r{   rX  r,  s     r   test_getslice_rangez&ElementSlicingTest.test_getslice_range  s    ))!,12/1CD1Q02DE1R13EF1Q04,?1R1D$<@2A/$>r!   c           	      L   | j                  d      }| j                  | j                  |ddd         ddg       | j                  | j                  |d d d         g d       | j                  | j                  |d d d         ddg       | j                  | j                  |dd d         d	dg       | j                  | j                  |dd t        j                           d
g       | j                  | j                  |dd t        j                  dz           d
g       y )Nr      r   ra  a9r  )rl  rh  a6rp  rl  r_  rh  @   r]  r{   rX  rc   maxsizer,  s     r   test_getslice_stepsz&ElementSlicingTest.test_getslice_steps  s   ))"-1R63dD\B3Q302JK3Q304,?14a41D$<@1>ckk>):;dVD1+=ckk2o+=)>?$Hr!   c           	          | j                  d      }| j                  | j                  |d d d         g d       | j                  | j                  |d d d         ddg       | j                  | j                  |dd t        j                            dg       | j                  | j                  |dd t        j                   dz
           dg       | j                  | j                  |dd t        j                   d	z           dg       y )
Nrv  r  )rh  a2r_  rl  r`  rh  r_  r  r   rr  rs  r,  s     r   test_getslice_negative_stepsz/ElementSlicingTest.test_getslice_negative_steps  s    ))!,4R413KL4R41D$<@1?s{{l?);<tfE1+<s{{l1n+<)=>G1+>s{{lB.>+>)?@4&Ir!   c                    | j                  d      }|dd= | j                  | j                  |      ddg       | j                  d      }|dd = | j                  | j                  |      g        | j                  d      }|d d d= | j                  | j                  |      g        | j                  d      }|d d d= | j                  | j                  |      ddg       | j                  d      }|d	d d= | j                  | j                  |      ddg       | j                  d      }|d d d= | j                  | j                  |      d
g       y )Nrv  r   r   rw  rh  r  r`  rl  r   r_  )r]  r{   rZ  r,  s     r   test_delslicez ElementSlicingTest.test_delslice  sT   ))!,acF++A.t=))!,abE++A.3))!,ddG++A.3))!,ddG++A.t=))!,addG++A.t=))!,ccF++A.7r!   c                 `   | j                  d      }t        j                  d      |d<   | j                  | j	                  |      g d       t        j                  d      |d<   | j                  | j	                  |      g d       | j                  t              5  t        j                  d      |d	<   d d d        | j                  t              5  t        j                  d      |d
<   d d d        | j                  | j	                  |      g d       y # 1 sw Y   cxY w# 1 sw Y   9xY w)Nrv  r   r   rl  r   rw  rh  r   r`  )rl  r   r   rh  r   r  )r]  r=   rz   r{   rZ  r   re  r,  s     r   test_setslice_single_indexz-ElementSlicingTest.test_setslice_single_index  s    ))!,zz#!++A.0GH

3"++A.0FGz* 	#::c?AaD	#z* 	$JJsOAbE	$++A.0FG		# 	#	$ 	$s   DD$D!$D-c                 J   | j                  d      }t        d      D cg c]  }t        j                  d|z         c}|dd | j	                  | j                  |      g d       | j                  d      }t        j                  d      g|dd | j	                  | j                  |      g d       | j                  d      }t        d      D cg c]  }t        j                  d|z         c}|dd | j	                  | j                  |      g d	       y c c}w c c}w )
Nrv  r   b%sr   r  )rl  b0b1rh  r   )rl  r   rh  )rl  r  r  b2rh  )r]  r   r=   rz   r{   rZ  r5   r   r   s      r   test_setslice_rangez&ElementSlicingTest.test_setslice_range!  s    ))!,16q:A"**UQY':!A++A.0HI))!,**S/"!A++A.0AB))!,16q:A"**UQY':!A++A.0NO ; ;s   DD c                 `   | j                  d      }t        d      D cg c]  }t        j                  d|z         c}|ddd<   | j	                  | j                  |      g d       | j                  d      }| j                  t              5  t        j                  d      g|ddd<   d d d        | j                  t              5  t        d      D cg c]  }t        j                  d|z         c}|ddd<   d d d        | j                  t              5  g |ddd<   d d d        | j	                  | j                  |      g d	       | j                  d
      }t        j                  d      g|dd t        j                  <   | j	                  | j                  |      g d       t        j                  d      g|dd t        j                  dz  <   | j	                  | j                  |      g d       y c c}w # 1 sw Y   ZxY wc c}w # 1 sw Y   xY w# 1 sw Y   xY w)Nr  r   r  r   r  )rl  r  rw  r  ri  rj  r   r  )rl  r_  rw  rh  ri  rj  rv  r|  r   rr  rl  r   rw  rh  
r]  r   r=   rz   r{   rZ  r   r   rc   rt  r  s      r   test_setslice_stepsz&ElementSlicingTest.test_setslice_steps.  s   ))!,388<aBJJuqy)<!Aa%++A.0TU))!,z* 	)

3(Aa!eH	)z* 	A7<Qx@!

519-@Aa!eH	Az* 	Aa!eH	++A.0TU))!,ZZ_-!.S[[.++A.0GH!#C 1!
S[["_
++A.0GH! =	) 	) A	A 	A	 	s;   H H
HH7	H	H$HHH!$H-c                    | j                  d      }t        d      D cg c]  }t        j                  d|z         c}|ddd<   | j	                  | j                  |      g d       | j                  d      }| j                  t              5  t        j                  d      g|ddd<   d d d        | j                  t              5  t        d      D cg c]  }t        j                  d|z         c}|ddd<   d d d        | j                  t              5  g |ddd<   d d d        | j	                  | j                  |      g d	       | j                  d      }t        j                  d      g|d
d t        j                   <   | j	                  | j                  |      g d       t        j                  d      g|d
d t        j                   d
z
  <   | j	                  | j                  |      g d       t        j                  d      g|d
d t        j                   dz  <   | j	                  | j                  |      g d       y c c}w # 1 sw Y   xY wc c}w # 1 sw Y   lxY w# 1 sw Y   SxY w)Nrv  r   r  r   r  )rl  r  r  rh  r   r  )rl  r_  rw  rh  r   r|  r   r  r   rr  )rl  r   rw  rh  r  r  s      r   test_setslice_negative_stepsz/ElementSlicingTest.test_setslice_negative_stepsB  s$   ))!,49!H=qRZZ	*=!Ab&	++A.0HI))!,z* 	*C)Aa"fI	*z* 	B8=aA1EAI.AAa"fI	Bz* 	Aa"fI	++A.0HI))!, jjo.!/ckk\/++A.0GH "

30!
ckk\!^
++A.0GH"$**S/!2!
ckk\2
++A.0GH% >	* 	* B	B 	B	 	s;   II
I*I%7	I*	I7I"%I**I47JN)r@   rA   rB   rX  rZ  r]  rf  rm  ru  rx  rz  r~  r  r  r  r"   r!   r   rU  rU    sD    )+6?IJ82HPI(Ir!   rU  c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Z G d d      Zd Zd Zd Zd Zd Zd Zd Zy)IOTestc           	         t         j                  d      }d|_        | j                  t	        |      d       dD ]d  }| j                  |      5  | j                  t	        ||      d       | j                  t	        ||j                               d       d d d        f dD ]  }| j                  |      5  | j                  t	        ||      d|z  j                  |             |j                         }| j                  t	        ||      d|z  j                  |             d d d         t         j                  d      }d	|_        | j                  t	        |      d
       | j                  t	        |d      d       | j                  t	        |d      d       dD ]1  }| j                  t	        ||      d|z  j                  |             3 t         j                  d      }d	|j                  d<   | j                  t	        |      d       | j                  t	        |d      d       | j                  t	        |d      d       dD ]1  }| j                  t	        ||      d|z  j                  |             3 t         j                  d      }d|_        | j                  t	        |      d       | j                  t	        |d      d       | j                  t	        |d      d       dD ]1  }| j                  t	        ||      d|z  j                  |             3 t         j                  d      }d|j                  d<   | j                  t	        |      d       | j                  t	        |d      d       | j                  t	        |d      d       dD ]1  }| j                  t	        ||      d|z  j                  |             3 y # 1 sw Y   xY w# 1 sw Y   QxY w)NrU   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=   rz   rw   r{   rQ   r  upperr)   rx   )r5   rL   encr  s       r   r(  zIOTest.test_encodingZ  s   zz% 	4*:;( 	+Cc" +  4#!>)+  4#))+!F)++ +	+ 6 	@Cc" @  4#!>*,/017> 		  4%!@*,12396#;@@ @	@ zz% 	4*GH4':.	04*=.	05 	GCYtc:3589:@&+G	G
 zz% &E4*OP4':6	84*=6	85 	PCYtc:<>ABCI6#;P	P
 zz% $	4*KL4':>	@4*=8	:5 	ECYtc:13678>sE	E
 zz% -E4*NO4':A	C4*=;	=M 	JCYtc:68;<=CVC[J	Ju+ +@ @s   A	O7A/O*O'	*O4	c                 P   | j                  t        j                  t               t        j                  t        j                  d            }|j                  t               t        t        d      5 }| j                  |j                         d       d d d        y # 1 sw Y   y xY w)N   <site>ø</site>rN     <site>&#248;</site>)rY  r   rZ  r   r=   r/   r   rI   r  r{   r  r5   rP   r  s      r   test_write_to_filenamezIOTest.test_write_to_filename  sv    	((&1~~bff%<=>

6&$ 	C1QVVX'AB	C 	C 	Cs   2!BB%c                    | j                  t        j                  t               t        j                  t        j                  d            }|j                  t        d       t        t        d      5 }| j                  |j                         d       d d d        |j                  t        d       t        t        d      5 }| j                  |j                         t        d             d d d        y # 1 sw Y   cxY w# 1 sw Y   y xY w)Nr  r   r  rN     <site>ø</site>r  :   <?xml version='1.0' encoding='ISO-8859-1'?>
<site></site>)rY  r   rZ  r   r=   r/   r   rI   r  r{   r  r+   r  s      r   $test_write_to_filename_with_encodingz+IOTest.test_write_to_filename_with_encoding  s    	((&1~~bff%<=>

6G
,&$ 	E1QVVX'CD	E 	

6L
1&$ 	81QVVX{6(7 8	8 	8		E 	E	8 	8s   4!C7*D7D Dc                    | j                  t        j                  t               t	        t        d      5 }|j
                  }d d d        t        j                  t               t        j                  t        j                  d            }|j                  t        d       t	        t        d      5 }| j                  |j                         d       d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr  r  rD   r  rN  r  )rY  r   rZ  r   r  rE   r=   r/   r   rI   r{   r  )r5   r  rE   rP   s       r   !test_write_to_filename_as_unicodez(IOTest.test_write_to_filename_as_unicode  s    	((&1&# 	"!zzH	" ~~bff%<=>

6I
.&$ 	A1QVVX'?@	A 	A	" 	"	A 	As   C2!C(C%(C1c                 >   | j                  t        j                  t               t        j                  t        j                  d            }t        t        dd      5 }|j                  |d       | j                  |j                         d d d        t        t        d      5 }| j                  |j                         d       d d d        t        t        ddd	
      5 }|j                  |d       | j                  |j                         d d d        t        t        d      5 }| j                  |j                         d       d d d        t        t        dd      5 }|j                  |d       | j                  |j                         d d d        t        t        d      5 }| j                  |j                         d       d d d        y # 1 sw Y   IxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   uxY w# 1 sw Y   y xY w)Nr  r  r   r  rD   rN  r  r%  xmlcharrefreplace)rE   errorsr  r  s   <site></site>rY  r   rZ  r   r=   r/   r   r  rI   rU  rV  r{   r  r  s      r   test_write_to_text_filezIOTest.test_write_to_text_file  s   	((&1~~bff%<=>&#0 	'AJJq9J-QXX&	' &$ 	E1QVVX'CD	E &#8KL 	'PQJJq9J-QXX&	' &$ 	D1QVVX(BC	D &#5 	'JJq9J-QXX&	' &$ 	A1QVVX'?@	A 	A	' 	'	E 	E	' 	'	D 	D	' 	'	A 	AsH   /G&!G""/G/)!G;$/H+!HG"G,/G8;HHHc                    | j                  t        j                  t               t        j                  t        j                  d            }t        t        d      5 }|j                  |       | j                  |j                         d d d        t        t        d      5 }| j                  |j                         d       d d d        y # 1 sw Y   CxY w# 1 sw Y   y xY w)Nr  rQ  rN  r  r  r  s      r   test_write_to_binary_filez IOTest.test_write_to_binary_file  s    	((&1~~bff%<=>&$ 	'1JJqMQXX&	' &$ 	C1QVVX'AB	C 	C	' 	'	C 	Cs   -C"!CCC!c                    | j                  t        j                  t               t        j                  t        j                  d            }t        t        d      5 }|j                  |d       | j                  |j                         d d d        t        t        d      5 }| j                  |j                         d       d d d        t        t        d      5 }|j                  |d       | j                  |j                         d d d        t        t        d      5 }| j                  |j                         d       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   [xY w# 1 sw Y   y xY w)	Nr  rQ  r   r  rN  r  r  r  r  r  s      r   'test_write_to_binary_file_with_encodingz.IOTest.test_write_to_binary_file_with_encoding  s7   	((&1~~bff%<=>&$ 	'1JJq7J+QXX&	' &$ 	E1QVVX'CD	E &$ 	'1JJq<J0QXX&	' &$ 	71QVVX67	7 	7	' 	'	E 	E	' 	'	7 	7s0   /E$!E/E&$!E2EE#&E/2E;c                 <   | j                  t        j                  t               t        j                  t        j                  d            }t        t        d      5 }|j                  |d       | j                  |j                         d d d        t        t        d      5 }| j                  |j                         dj                  d             d d d        t        t        dd      5 }|j                  |d       | j                  |j                         d d d        t        t        d      5 }| j                  |j                         dj                  d             d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   jxY w# 1 sw Y   y xY w)	Nr  rQ  r  r  rN  u7   <?xml version='1.0' encoding='utf-16'?>
<site>ø</site>r   )	buffering)rY  r   rZ  r   r=   r/   r   r  rI   rU  rV  r{   r  r)   r  s      r   "test_write_to_binary_file_with_bomz)IOTest.test_write_to_binary_file_with_bom  sM   	((&1~~bff%<=>&$ 	'1JJq8J,QXX&	' &$ 	>1QVVX,,2F8,<>	>
 &$!, 	'JJq8J,QXX&	' &$ 	>1QVVX,,2F8,<>	> 	>	' 	'	> 	>
	' 	'	> 	>s0   /E.$0E:./F50F.E7:FFFc                     t         j                         }t        j                  d      }|j	                  |       | j                  |j                         j                  d       y Nz"<?xml version="1.0"?><site></site>site)r=   r/   rF   rH   r  r{   r   rU   r5   rP   r  s      r   test_read_from_stringiozIOTest.test_read_from_stringio  sE    ~~EF

6++V4r!   c                     t         j                  t         j                  d            }t        j                         }|j                  |d       | j                  |j                         d       y Nr  rD   r  )r=   r/   r   rF   rH   rI   r{   rJ   r  s      r   test_write_to_stringiozIOTest.test_write_to_stringio  sM    ~~bff%<=>

6I
.*,CDr!   c                     t         j                         }t        j                  d      }|j	                  |       | j                  |j                         j                  d       y Ns"   <?xml version="1.0"?><site></site>r  )r=   r/   rF   rG   r  r{   r   rU   r5   rP   r  s      r   test_read_from_bytesiozIOTest.test_read_from_bytesio  sD    ~~jjBC

3++V4r!   c                     t         j                  t         j                  d            }t        j                         }|j                  |       | j                  |j                         d       y Nr  r  )r=   r/   r   rF   rG   rI   r{   rJ   r  s      r   test_write_to_bytesiozIOTest.test_write_to_bytesio  sG    ~~bff%<=>jjl

3)CDr!   c                       e Zd Zy)IOTest.dummyNr  r"   r!   r   dummyr    s    r!   r  c                    t        j                  d      }| j                         }|j                  |_        t        j                         }|j                  |       | j                  |j                         j                  d       y r  )
rF   rH   r  r  r=   r/   r  r{   r   rU   )r5   r  readerrP   s       r   test_read_from_user_text_readerz&IOTest.test_read_from_user_text_reader  s[    EFkk~~

6++V4r!   c                 $   t         j                  t         j                  d            }t        j                         }| j                         }|j                  |_        |j                  |d       | j                  |j                         d       y r  )	r=   r/   r   rF   rH   r  rI   r{   rJ   )r5   rP   r  writers       r   test_write_to_user_text_writerz%IOTest.test_write_to_user_text_writer$  sc    ~~bff%<=>||

6I
.*,CDr!   c                 6   t        j                  d      }| j                         }|j                  |_        t        j                         }|j                  |       | j                  |j                         j                  d       t        j                         }y r  )
rF   rG   r  r  r=   r/   r  r{   r   rU   )r5   r  r  rP   s       r   !test_read_from_user_binary_readerz(IOTest.test_read_from_user_binary_reader,  sg    jjBChh~~

6++V4~~r!   c                     t         j                  t         j                  d            }t        j                         }| j                         }|j                  |_        |j                  |       | j                  |j                         d       y r  )	r=   r/   r   rF   rG   r  rI   r{   rJ   r5   rP   r  r  s       r    test_write_to_user_binary_writerz'IOTest.test_write_to_user_binary_writer5  s^    ~~bff%<=>jjlyy

6)CDr!   c                 t   t         j                  t         j                  d            }t        j                         }| j                         }|j                  |_        d |_        |j                  |_        |j                  |d       | j                  |j                         dj                  d             y )Nz<site />c                       yr  r"   r"   r!   r   r  zBIOTest.test_write_to_user_binary_writer_with_bom.<locals>.<lambda>B  r  r!   r  r  z0<?xml version='1.0' encoding='utf-16'?>
<site />)r=   r/   r   rF   rG   r  rI   seekabletellr{   rJ   r)   r  s       r   )test_write_to_user_binary_writer_with_bomz0IOTest.test_write_to_user_binary_writer_with_bom=  s    ~~bff^45jjlyy&hh

6H
-%vh/	1r!   c           	      R   t         j                  d      }| j                  t         j                  |d      dj	                  t         j                  |d                   | j                  t         j                  |d      dj	                  t         j                  |d                   y )Nz<tag>foo</tag>rD   rE  r  r!   )r=   r   r{   r  r(  r)  r  s     r   test_tostringlist_invariantz"IOTest.test_tostringlist_invariantI  sy    }}-.KKi(GGBOOD)45	7 	KKh'HHR__T845	7r!   c                    t         j                  d      }| j                  t         j                  |d      d       | j                  t         j                  |dd      d       | j                  t         j                  |dd      d       y )Nz<tag>a<x />b<y></y>c</tag>rD   z<tag>a<x />b<y />c</tag>T)short_empty_elementsFz<tag>a<x></x>b<y></y>c</tag>)r=   r   r{   r  r  s     r   test_short_empty_elementsz IOTest.test_short_empty_elementsR  sz    }}9:KKi(&	( 	KKidKC&	( 	KKieKD*	,r!   N)r@   rA   rB   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  Y  sv    CJJC8	AA*C7">(5E5E 5E E
17
,r!   r  c                   $    e Zd Zd Zd Zd Zd Zy)ParseErrorTestc                 T    | j                  t        j                         t               y rS   )ry   r=   rX  r  r   s    r   r  zParseErrorTest.test_subclass`  s    bmmo{;r!   c                 t    	 t         j                  |       y # t         j                  $ r}|cY d }~S d }~ww xY wrS   )r=   r   rX  )r5   r`  r   s      r   
_get_errorzParseErrorTest._get_errorc  s,    	MM!}} 	H	s    7277c                    | j                  | j                  d      j                  d       | j                  | j                  d      j                  d       | j                  | j                  d      j                  d       y )Nr   )r   r   z<tag>&foo;</tag>)r   r  zfoobar<)r   r  )r{   r  positionr   s    r   test_error_positionz"ParseErrorTest.test_error_positioni  s`    /88&A);<EEvN3<<fEr!   c                     dd l mc mc m} | j	                  | j                  d      j                  |j                  |j                            y )Nr   r   )	xml.parsers.expat.errorsparsersexpatr  r{   r  codecodesXML_ERROR_SYNTAX)r5   ERRORSs     r   test_error_codezParseErrorTest.test_error_coden  s9    11/44V445	7r!   N)r@   rA   rB   r  r  r  r  r"   r!   r   r  r  _  s    <F
7r!   r  c                       e Zd Zd Zy)KeywordArgsTestc                    t         j                  d      }| j                  |j                  dd       |j                  dd              | j                  |j	                  dd d       |j	                  dd d              | j                  |j                  dd       |j                  dd              | j                  t        |j                  dd             t        |j                  dd                    | j                  t         j                  d      j                  i        t         j                  dt        dd            t         j                  dt        dd            t         j                  dt        d	      d
      t         j                  ddd      t         j                  dt        dd      dd      g}|D ]E  }| j                  |j                  d       | j                  |j                  t        dd             G t         j                  |d   dddi      }| j                  |j                  d   d       | j                  t        d      5  t         j                  dd       d d d        | j                  t        d      5  t         j                  dd       d d d        y # 1 sw Y   @xY w# 1 sw Y   y xY w)Nz
<a>foo</a>r   )pathrE  )r  r   rE  #r   )r  r  )rx   )r  )r  r   r  key1value1zmust be dict, not strzI'm not a dict)r=   r   r{   r   r   r   r}   r   rz   rx   rh   rU   rd  r  r,  )r5   r   elementsr   r   s        r   test_issue14818zKeywordArgsTest.test_issue14818w  sM   FF< T*ST:	<Ct4dtL	N3-=	?ajjd34ajjcdjCD	F 	C//4JJsDce45JJs4SU#;J<JJsDcNuJ5JJsJ/JJsDce435JI
  	AAQUUC(QXXt'?@	A ]]8A;&(9K]L6*H5##I/FG 	.JJs,-	.##I/FG 	5JJs#3J4	5 	5	. 	.	5 	5s   J5K5J>K
N)r@   rA   rB   r  r"   r!   r   r  r  t  s    5r!   r  c                   "    e Zd Zed        Zd Zy)NoAcceleratorTestc                 F    t         t        urt        j                  d      y )Nzonly for the Python version)r=   r\   r   SkipTestr^   s    r   r`   zNoAcceleratorTest.setUpClass  s     T>##$ABB r!   c                     | j                  t        j                  j                  t        j
                         | j                  t        j                  j                  t        j
                         y rS   )ry   r\   rz   r  typesFunctionTyper  r   s    r   test_correct_import_pyETz*NoAcceleratorTest.test_correct_import_pyET  sD     	dll33U5G5GHdnn55u7I7IJr!   N)r@   rA   rB   r   r`   r  r"   r!   r   r  r    s    C C
Kr!   r  c                       e Zd Zd Zy)BoolTestc                 ~   t         j                  d      }d}| j                  t        |      5  t	        |      }d d d        | j                  d       t         j                  |d       | j                  t        |      5  t	        |      }d d d        | j                  d       y # 1 sw Y   nxY w# 1 sw Y   (xY w)Nz<a style="new"></a>zTesting an element's truth value will raise an exception in future versions.  Use specific 'len\(elem\)' or 'elem is not None' test instead.Fr   T)r=   r   r  r6  boolr  rd  )r5   r   r   rq   
new_results        r   test_warningzBoolTest.test_warning  s    MM/0N 	 ""#5s; 	!WF	 	fe$ 	a""#5s; 	!aJ	!j$'	 		! 	!s   B' B3'B03B<N)r@   rA   rB   r  r"   r!   r   r  r    s    (r!   r  c                 .    t        j                  | fi |S rS   )r\   canonicalize)r  rN   s     r   c14n_roundtripr    s    S,G,,r!   c                   "    e Zd ZdZd Zd Zd Zy)C14NTestNc                 :   | j                  t        d      d       | j                  t        d      d       | j                  t        d      d       | j                  t        d      d       | j                  t        d	      d
       | j                  t        d      d       | j                  t        d      d       | j                  t        d      d       | j                  t        d      d       | j                  t        d      d       | j                  t        d      d       | j                  t        d      d       d}| j                  t        |      |       d}| j                  t        |      |       d}| j                  t        |      |       y )Nz<doc/>z<doc></doc>z<doc xmlns='uri'/>z<doc xmlns="uri"></doc>z <prefix:doc xmlns:prefix='uri'/>z,<prefix:doc xmlns:prefix="uri"></prefix:doc>z+<doc xmlns:prefix='uri'><prefix:bar/></doc>z7<doc><prefix:bar xmlns:prefix="uri"></prefix:bar></doc>z<elem xmlns:wsu='http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd' xmlns:SOAP-ENV='http://schemas.xmlsoap.org/soap/envelope/' />z<elem></elem>z*<doc>Hello, world!<!-- Comment 1 --></doc>z<doc>Hello, world!</doc>z<value>&#x32;</value>z<value>2</value>zG<compute><![CDATA[value>"0" && value<"10" ?"valid":"error"]]></compute>zI<compute>value&gt;"0" &amp;&amp; value&lt;"10" ?"valid":"error"</compute>zS<compute expr='value>"0" &amp;&amp; value&lt;"10" ?"valid":"error"'>valid</compute>z{<compute expr="value>&quot;0&quot; &amp;&amp; value&lt;&quot;10&quot; ?&quot;valid&quot;:&quot;error&quot;">valid</compute>z7<norm attr=' &apos;   &#x20;&#13;&#xa;&#9;   &apos; '/>z/<norm attr=" '    &#xD;&#xA;&#x9;   ' "></norm>z6<normNames attr='   A   &#x20;&#13;&#xa;&#9;   B   '/>z=<normNames attr="   A    &#xD;&#xA;&#x9;   B   "></normNames>z7<normId id=' &apos;   &#x20;&#13;&#xa;&#9;   &apos; '/>z1<normId id=" '    &#xD;&#xA;&#x9;   ' "></normId>z5<X xmlns="http://nps/a"><Y targets="abc,xyz"></Y></X>zJ<X xmlns="http://nps/a"><Y xmlns="http://nsp/b" targets="abc,xyz"></Y></X>zN<X xmlns="http://nps/a"><Y xmlns:b="http://nsp/b" b:targets="abc,xyz"></Y></X>)r{   r  r5   r  s     r   test_simple_roundtripzC14NTest.test_simple_roundtrip  s   1=A(<=)	+(JK:	<(UVE	G  )M  N	 	(TU&	((?@	 (qrW	Y  )B  C J	K(ab?	A(`aK	M(abA	C F,c2Z,c2^,c2r!   c                 "   t        j                  d      }| j                  t        |d      d       | j                  t        |ddg      d       | j                  t        |ddg	      d
       | j                  t        |ddgdg      d       | j                  t        |dddg	      d       | j                  t        |ddg      d       | j                  t        |dddg	      d       | j                  t        |ddg      d       y )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>)r  r  r{   r  r  s     r   test_c14n_exclusionzC14NTest.test_c14n_exclusion  sA   oo 
 
 	340	 	34@\?]^	 	34?X>YZ	 	34@\?])B(CE	 	34sCjI	
 	3c3Z8	 	34?XZ]>^_	 	3.G-MN
	r!   c                 	   t        dd      }t        t        j                  j                  |      }t        t        j                  |            D cg c]  }|j                  d      r|d d  }}|D cg c]  }|j                  d      r| }}|D ci c]  }|j                  d      rv|t        j                   ||      dz         j                         D ci c]?  }|j                  j                  d      d	   |j                  xs d
j                         |fA c} }}}|D ci c]W  }||D cg c]H  }|j                  d| d      r1|j!                  dd      d	   |v r|||j!                  dd      d	      fJ c}Y }	}}| j#                  dt%        |	j'                         D 
cg c]  }
|
D ]  }|  c}}
             d.d}|	j)                         D ]  \  }}
|
D ]  \  }} ||d      dk(  } ||d      dk(  } ||d      dk(  }d|v r|d   d   j+                  d      D cg c](  }d|j-                  d       d|j-                  d       * }}|d   d   j+                  d      D cg c](  }d|j-                  d       d|j-                  d       * }}nd x}}dj	                  d t        |j)                               D              }| j/                  | d| d      5  |dk(  r|s| j1                  d |        |d!k(  r|s| j1                  d |        d|v r,|d   d   j3                  d"      	 | j1                  d#|         ||dz         }|d$k(  rqt5         |d%      d&      5 }t5        |d&      5 }t7        j8                  |j;                         j=                  d'|j;                                     }d d d        d d d        t        j?                  ||||||(      }t5         ||dz         d)d*+      5 }|j;                         }|d,k(  r$|j=                  d-d
      }|j=                  d-d
      }d d d        | j#                  |       d d d          y c c}w c c}w c c}w c c}}w c c}w c c}}w c c}}
w c c}w c c}w # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   rxY w# 1 sw Y   xY w)/Nzc14n-20r   r   z.xmlr  inc14n}r  rE  out_r,  r      c                 0    | j                  ||df      d   S )Nr"   r   )rj   )configoption_namer   s      r   
get_optionz+C14NTest.test_xml_c14n2.<locals>.get_optiona  s    ::kGR=9!<<r!   IgnoreCommentstrueTrimTextNodesPrefixRewrite
sequential
QNameAwarez/{http://www.w3.org/2010/xml-c14n2}QualifiedAttr{NSNamez){http://www.w3.org/2010/xml-c14n2}Element,c              3   j   K   | ]+  \  }\  }}| d |xs dj                  d |D                - yw)=r  c              3   X   K   | ]"  }|j                   j                  d       d    $ yw)r  r  N)rU   split).0r   s     r   	<genexpr>z4C14NTest.test_xml_c14n2.<locals>.<genexpr>.<genexpr>|  s"     /WC0@0D/Ws   (*N)r(  )r  rl   r   r  s       r   r  z*C14NTest.test_xml_c14n2.<locals>.<genexpr>{  sA      (//uh fAeWsxx/Wh/W'WXY(s   13()
inNsRedeclz2Redeclared namespace handling is not supported in inNsSuperfluousz.{http://www.w3.org/2010/xml-c14n2}XPathElementz2QName rewriting in XPath text is not supported in inC14N5z	world.txtrN  s   &ent2;)	from_filewith_commentsr  rewrite_prefixesqname_aware_tagsqname_aware_attrsrr  r  inC14N3z attr="default"rS   ) r	   r   r'   r  r(  r  listdirendswith
startswithr=   r  r   rU   r  rw   r  rsplitr{   r|   valuesr   r   rj   r  r  r   r  rF   rG   r  r&   r  )r5   datadir	full_pathfilenamefilesinput_filesoptionconfigs
input_filetestsoutput_filesoutput_filer  r  keep_commentsr  r&  r  qattrsqtagsconfig_descrr  entity_filerw   r   s                            r   test_xml_c14n2zC14NTest.test_xml_c14n2>  s   9];BGGLL'2	/5bjj6I/J /8%%f- #2 / / &+
!""4( 
 
 "
 ""6*  !hhy':V'CDLLN  

  %b)V[[->B,E,E,G+PP 
 
" *
   %&&j\';<OOC+B/7: 78??3#:2#>?@ 
 
 	S,1LLN"-(+"- "-"- . 	/	= ). <	5$J'3 ;5#V *,!.17!8'O-067
#-O$-0<$= 6) #)"6q"9"A"AM#O RVVD\N"RVVF^,<=F  #)"6q"9"A"AG#I RVVD\N"RVVF^,<=E  &*)EF  #xx (39&,,.3I(  
 \\[M<."BC  5!\1:JPQ\P]^`!%66?OPQ\P]^`#v-&2Fq2I2N2NL3NUY3ZPQ\P]^` "*v"56A!Y.!)K"8$? `;!%a `!$&JJqvvx/?/?	;K[K[K]/^$_`` ??"#&3#-)9).& + JD if(<=sVT GXY#$668%2'/'7'78I2'NH#'<<0A2#FDG $$Xt4A 5  57;5<	5E/



"- 
<` `` `G G5 5  5s   Q/5Q4AQ>AQ9Q>,
R	6ARR	/R0-R8-R2B	S;R+	AR
R+	:S:R7	S9Q>R	R($R+	+R40S7S <SS)r@   rA   rB   maxDiffr  r  r@  r"   r!   r   r  r    s    G
&3PG`b5r!   r  c                    t        ddg      a| t        } | ad }t        j                  |       ddlm} t        j                  j                  }|j                         }t        j                  |j                  |       t        j                  |j                         |j                  }t        j                  t        |d|       |j                         |_        t        t        d      rWt        j                  t        j                   t        j"                        }t        j                  t        j                  g|  y y )	Nr8   r9   )blockedc                      d xa ay rS   )r=   r\   r"   r!   r   cleanupzsetUpModule.<locals>.cleanup  s    Tr!   r   r2   r   _set_factories)r   r\   r=   r   addModuleCleanupr4   r3   rc  _namespace_mapr   rI  r   r   setattrr   rF  re  r   )modulerE  r3   r  
nsmap_copyrG  old_factoriess          r   setUpModulerM    s     6(6'79D~ 
B g& &!!00EJellJ7ekk* ##Jg{HjI#*K r#$))"**bee<!!""3"3DmD %r!   __main__)TrD   rS   )Ur   r   r+  rF   r  r   r'   rd   r  rc   r  r  r   r3  r  r   r   r   r   r   test.supportr   r   r	   r
   r   r   test.support.import_helperr   test.support.os_helperr   r\   r=   r   r)   UnicodeEncodeErrorr  r  r  r   r  r7  rR  r3  r4  r  r#   r+   TestCaser-   rQ   rW   rZ   r   r  r  formatescaper%  r  r)  r  r  r   r9  __hash__r?  rB  rf  r  r  r  r&  rN  rU  r  r  r  r  r  r  r  rM  r@   mainr"   r!   r   <module>rX     s      	   	   
       %  " ( C C : ) 	,}=A'" _]C 3MJ 
 "
  #( 4
L"" 
L&= =@YPh'' YPx$l9)) l9b	  	   !      F;4;;~t,- 	 	'	" # X X 	 	 	 p78$$ p7l]Jx   ]JHB4(9(9 B4JU_h&7&7 Up#   #||  S  ,, ?(*;*; ?D5.(++ 5.pv:h'' v:r](h'' ](@t.h'' t.nQ:H%% Q:hE** ESI** SIlC,X C,L7X&& 7* 5h''  5HK)) K (x   ((-`5x   `5H"EJ zHMMO {D  A
(

?
@@As   M M+