
    <e                        d dl mZmZmZmZmZ d dlZd dlmZ 	  e             n# e$ r  ej        d          w xY wd dl	m
Z
mZmZmZmZmZ d dlmZ d dlmZmZmZ d dlmZmZmZ d d	lmZm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$Z%d dl&m'Z' d dl&m(Z( d dl)m*Z*m+Z+  e(dd          Z, e(dd          Z-	 e,.                    d           e-.                    d           n# e/$ r  ej        d          w xY wdZ0ej1        j2        s8	 e'j3        .                     e!j4                               n# e5e6f$ r dZ0Y nw xY w ej7        e0d          Z8dZ9 G d dej:                  Z;dAdZ<dBdZ=dBdZ> G d dej:                  Z? G d  d!ej:                  Z@ G d" d#ej:                  ZA G d$ d%ej:                  ZB G d& d'          ZC G d( d)eCej:                  ZD G d* d+eCej:                  ZE G d, d-eE          ZF G d. d/eCej:                  ZG G d0 d1eCej:                  ZHd2ZI G d3 d4ej:                  ZJ eKe-d5          5 ZLeLM                                ZNddd           n# 1 swxY w Y    G d6 d7e;          ZO G d8 d9ej:                  ZP G d: d;e;          ZQ G d< d=ej:                  ZR G d> d?ej:                  ZSeTd@k    r ejU                     dS dS )C    )make_parserContentHandlerSAXExceptionSAXReaderNotAvailableSAXParseExceptionN)mockzno XML parsers available)XMLGeneratorescapeunescape	quoteattrXMLFilterBaseprepare_input_source)create_parser)feature_namespacesfeature_external_gesLexicalHandler)InputSourceAttributesImplAttributesNSImpl)BytesIOStringIO)URLError)	os_helper)findfile)FakePathTESTFNztest.xmlxmltestdata)subdirztest.xml.oututf-8z!filename is not encodable to utf8TFz$Requires non-ascii filenames supportz%http://www.python.org/xml-ns/saxtest/c                        e Zd Zd Zd Zd ZdS )XmlTestBasec                    |                      t          |j        d           |                      t          |j        d           |                      t          |j        d           |                      t          |j        d           |                      t          |j        d           |                     |                                d           |                     |	                                g            |                     |
                                g            |                     t          |          d           |                     d|           |                     t          |                                          g            |                     |                    d          d            |                     |                    dd          d           |                     t          |                                          g            |                     t          |                                          g            d S )Nattrr   attrs   )assertRaisesKeyErrorgetValuegetValueByQNamegetNameByQNamegetQNameByName__getitem__assertEqual	getLengthgetNames	getQNameslenassertNotInlistkeysgetitemsvaluesselfr$   s     $/usr/lib/python3.11/test/test_sax.pyverify_empty_attrszXmlTestBase.verify_empty_attrs6   s   (ENF;;;(E$96BBB(E$8&AAA(E$8&AAA(E$5v>>>**A...))2...**B///UQ''''''ejjll++R0007++T2227B//444ekkmm,,b111ellnn--r22222    c                    |                      t          |j        t          df           |                      t          |j        d           |                      t          |j        d           |                      t          |j        t          df           |                      t          |j        t          df           |                     |	                                d           |                     |
                                g            |                     |                                g            |                     t          |          d           |                     t          df|           |                     t          |                                          g            |                     |                    t          df          d            |                     |                    t          dfd          d           |                     t          |                                          g            |                     t          |                                          g            d S )Nr#   ns:attrr   r%   )r&   r'   r(   ns_urir)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   s     r:   verify_empty_nsattrsz XmlTestBase.verify_empty_nsattrsG   s   (ENVV4DEEE(E$99EEE(E$8)DDD(E$866:JKKK(E$57GHHH**A...))2...**B///UQ'''&&)5111ejjll++R000FF#344d;;;FF#3R88"===ekkmm,,b111ellnn--r22222r<   c                    |                      |                                d           |                      |                                dg           |                      |                                dg           |                      t	          |          d           |                     d|           |                      t          |                                          dg           |                      |                    d          d           |                      |                    dd          d           |                      t          |	                                          dg           |                      t          |
                                          dg           |                      |                    d          d           |                      |                    d          d           |                      |                    d          d           |                      |d         d           |                      |                    d          d           d S )N   r#   valr%   )r#   rC   )r-   r.   r/   r0   r1   assertInr3   r4   r5   r6   r7   r(   r)   r*   r+   r8   s     r:   verify_attrs_wattrzXmlTestBase.verify_attrs_wattrX   s   **A...))F8444**VH555UQ'''fe$$$ejjll++fX6666**E22262..666ekkmm,,.?@@@ellnn--w777//777..v66>>>--f55v>>>v...--f55v>>>>>r<   N)__name__
__module____qualname__r;   r@   rE    r<   r:   r!   r!   5   sA        3 3 3"3 3 3"? ? ? ? ?r<   r!   c                     || S d|d| S N<?xml version="1.0" encoding=""?>
rI   )docencodings     r:   xml_strrP   j   s#    
 8@##FFr<   .c                 V    |du r|}t          | |                              |d          S )N.xmlcharrefreplace)rP   encode)rN   rO   decl_encodings      r:   	xml_bytesrU   o   s3     3&&--h8KLLLr<   c                     |du r|}t          t          d|d          5 }|                    t          | |                     d d d            d S # 1 swxY w Y   d S )N.wrR   )rO   errors)openr   writerP   )rN   rO   rT   fs       r:   make_xml_filer\   t   s     	fcH5H	I	I	I -Q	]++,,,- - - - - - - - - - - - - - - - - -s   $AAA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S )	ParseTestu,   <money value="$£€𐅻">$£€𐅻</money>c                 8    t          j        t                     d S N)r   unlinkr   r9   s    r:   tearDownzParseTest.tearDown~   s         r<   c                     ddl m} t                      } ||t          |d                     |                     |                                t          | j        d                     d S )Nr   )parser   )xml.saxre   r   r	   r-   getvaluerP   data)r9   r[   re   results       r:   check_parsezParseTest.check_parse   sk    !!!!!!afg..///**GDIw,G,GHHHHHr<   c           	      6   d}|D ]}|                      t          t          | j        |                               t	          | j        |           t          t          d|          5 }|                      |           d d d            n# 1 swxY w Y   |                      t          | j                             t	          | j        |d            t          t          d|          5 }|                      |           d d d            n# 1 swxY w Y   d S )Nus-ascii
iso-8859-1r   utf-16utf-16leutf-16berrO   )rj   r   rP   rh   r\   rY   r   r9   	encodingsrO   r[   s       r:   test_parse_textzParseTest.test_parse_text   s   7	! 	$ 	$HXgdi&B&BCCDDD$)X...fcH555 $  ###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $Xdi00111$)Xt444fcH555 $  ###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $	$ 	$s$   )BB	B	*DD	D	c           
      	   d}|D ]Q}|                      t          t          | j        |                               t	          | j        |           |                      t
                     t          t
          d          5 }|                      |           d d d            n# 1 swxY w Y   |                      t          t          | j        |d                                t	          | j        |d            |                      t
                     t          t
          d          5 }|                      |           d d d            n# 1 swxY w Y   S|                      t          t          | j        dd                               t	          | j        dd           |                      t
                     t          t
          d          5 }|                      |           d d d            n# 1 swxY w Y   |                      t          t          | j        dd                                t	          | j        dd            |                      t
                     t          t
          d          5 }|                      |           d d d            n# 1 swxY w Y   |                      t          t          | j        d                               t	          | j        d           |                      t
                     t          t
          d          5 }|                      |           d d d            n# 1 swxY w Y   |                     t                    5  |                      t          t          | j        dd                                d d d            n# 1 swxY w Y   t	          | j        dd            |                     t                    5  |                      t
                     d d d            n# 1 swxY w Y   t          t
          d          5 }|                     t                    5  |                      |           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nrm   r   ro   rp   rq   rb	utf-8-sigr   rn   )	rj   r   rU   rh   r\   r   rY   r&   r   rt   s       r:   test_parse_byteszParseTest.test_parse_bytes   s#    L	! 
	$ 
	$HWYty(%C%CDDEEE$)X...V$$$fd## $q  ###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $WYty(D%I%IJJKKK$)Xt444V$$$fd## $q  ###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ 	49k7!K!KLLMMMdig666   &$ 	 1Q	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 49k4!H!HIIJJJdid333   &$ 	 1Q	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	49l!C!CDDEEEdi...   &$ 	 1Q	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  |,, 	P 	PWYty,%M%MNNOOO	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	Pdit444|,, 	% 	%V$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%&$ 	$1""<00 $ $  ###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$s   B##B'	*B'	)EE	E	G55G9<G9;JJ!$J!!MM
M(7N++N/2N/&PPP-RQ*R*Q.	.R1Q.	2RR	Rc                     t          | j        dd            |                     t          t                               d S )Nr   )r\   rh   rj   r   r   rb   s    r:   test_parse_path_objectz ParseTest.test_parse_path_object   s8    di$///&))*****r<   c                 (   t          | j        dd            t          t          d          5 }t	                      }|                    |           |                    d           |                     |           d d d            d S # 1 swxY w Y   d S )Nrn   ry   )r\   rh   rY   r   r   setByteStreamsetEncodingrj   )r9   r[   inputs      r:   test_parse_InputSourcez ParseTest.test_parse_InputSource   s    dit444&$ 	$1MME"""l+++U###		$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$s   ABBBc                 ~   t           d fd}t          j        d|          5  t          | j        dd            |                     t                    5  |                     t                     d d d            n# 1 swxY w Y   | 	                    j
                   d d d            d S # 1 swxY w Y   d S )Nc                       |  S r`   rI   )argsbuiltin_openfileobjs    r:   	mock_openz4ParseTest.test_parse_close_source.<locals>.mock_open   s    "lD)GNr<   zxml.sax.saxutils.open)side_effectrn   )rY   r   patchr\   rh   r&   r   rj   r   
assertTrueclosed)r9   r   r   r   s     @@r:   test_parse_close_sourcez!ParseTest.test_parse_close_source   sM   	 	 	 	 	 	
 Z/YGGG 	, 	,$)\4888""<00 ) )  ((() ) ) ) ) ) ) ) ) ) ) ) ) ) )OOGN+++		, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,s5   1B2B 4B2 B	B2B	B22B69B6c                     ddl m} t                      } ||t          |d                     |                     |                                t          | j        d                     d S )Nr   )parseStringr   )rf   r   r   r	   r-   rg   rP   rh   )r9   sr   ri   s       r:   check_parseStringzParseTest.check_parseString   sk    ''''''A|FG44555**GDIw,G,GHHHHHr<   c                     d}|D ]*}|                      t          | j        |                     +|                      | j                   d S )Nrl   )r   rP   rh   r9   ru   rO   s      r:   test_parseString_textzParseTest.test_parseString_text   sY    7	! 	A 	AH""749h#?#?@@@@ty)))))r<   c                 b   d}|D ]S}|                      t          | j        |                     |                      t          | j        |d                      T|                      t          | j        dd                     |                      t          | j        dd                      |                      t          | j        d                     |                     t                    5  |                      t          | j        dd                      d d d            d S # 1 swxY w Y   d S )Nrx   rz   r   rn   )r   rU   rh   r&   r   r   s      r:   test_parseString_bytesz ParseTest.test_parseString_bytes   sr    L	! 	I 	IH""9TY#A#ABBB""9TY$#G#GHHHHyKIIJJJyKFFGGGyLAABBB|,, 	M 	M""9TYd#K#KLLL	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	Ms   -*D$$D(+D(N)rF   rG   rH   rh   rc   rj   rv   r{   r}   r   r   r   r   r   rI   r<   r:   r^   r^   {   s        OD! ! !I I I$ $ $($ ($ ($T+ + +$ $ $, , ,I I I* * *M M M M Mr<   r^   c                   &    e Zd Zd Zd Zd Zd ZdS )MakeParserTestc                     ddl m}  |            }ddl m}  |            }ddl m}  |            }ddl m}  |            }ddl m}  |            }ddl m}  |            }d S )Nr   r   )rf   r   )r9   r   ps      r:   test_make_parser2z MakeParserTest.test_make_parser2   s     	('''''KMM''''''KMM''''''KMM''''''KMM''''''KMM''''''KMMr<   c                     t          dg           t          d           t          dh           t          t          dh                     t          dd i           t          t          dg                     d S )Nmodule)r   r   	frozensetiterrb   s    r:   test_make_parser3z MakeParserTest.test_make_parser3	  s{     	XJL!!!XJIxj))***Xt$%%%D($$%%%%%r<   c                    t          g            t          t                                 t          t                                 t          t                                 t          i            t          t	          g                      d S r`   )r   tuplesetr   r   rb   s    r:   test_make_parser4z MakeParserTest.test_make_parser4  sh    BEGGCEEIKK   BDHHr<   c                    t          ddg           t          d           t          ddh           t          t          ddh                     t          d d d           t          t          ddg                     d S )Nmodule1module2)r   r   r   rb   s    r:   test_make_parser5z MakeParserTest.test_make_parser5  s     	Y	*+++*+++Y	*+++Iy)45566666777D)Y/0011111r<   N)rF   rG   rH   r   r   r   r   rI   r<   r:   r   r      sP          "& & &  2 2 2 2 2r<   r   c                   V    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S )SaxutilsTestc                 L    |                      t          d          d           d S )NDonald Duck & CoDonald Duck &amp; Cor-   r
   rb   s    r:   test_escape_basiczSaxutilsTest.test_escape_basic.  s(     2335KLLLLLr<   c                 L    |                      t          d          d           d S )N<Donald Duck & Co>&lt;Donald Duck &amp; Co&gt;r   rb   s    r:   test_escape_allzSaxutilsTest.test_escape_all1  s2     4557	9 	9 	9 	9 	9r<   c                 R    |                      t          dddi          d           d S Nu   Hei på deg   åz&aring;zHei p&aring; degr   rb   s    r:   test_escape_extrazSaxutilsTest.test_escape_extra5  s8    y/ABB+	- 	- 	- 	- 	-r<   c                 L    |                      t          d          d           d S )Nr   r   r-   r   rb   s    r:   test_unescape_basicz SaxutilsTest.test_unescape_basic:  s(    "899;MNNNNNr<   c                 L    |                      t          d          d           d S )Nr   r   r   rb   s    r:   test_unescape_allzSaxutilsTest.test_unescape_all=  s2    "@AA-	/ 	/ 	/ 	/ 	/r<   c                 R    |                      t          dddi          d           d S r   r   rb   s    r:   test_unescape_extraz SaxutilsTest.test_unescape_extraA  s8    -$1CDD+	- 	- 	- 	- 	-r<   c                 R    |                      t          dddi          d           d S )Nz	&amp;foo;z&foo;splatr   rb   s    r:   test_unescape_amp_extraz$SaxutilsTest.test_unescape_amp_extraE  s-    +/ABBGLLLLLr<   c                 L    |                      t          d          d           d S )Nr   z"Donald Duck &amp; Co"r-   r   rb   s    r:   test_quoteattr_basicz!SaxutilsTest.test_quoteattr_basicI  s2    #5661	3 	3 	3 	3 	3r<   c                 L    |                      t          d          d           d S )NzIncludes "double" quotesz'Includes "double" quotes'r   rb   s    r:   test_single_quoteattrz"SaxutilsTest.test_single_quoteattrM  2    #=>>7	9 	9 	9 	9 	9r<   c                 L    |                      t          d          d           d S )NzIncludes 'single' quotesz"Includes 'single' quotes"r   rb   s    r:   test_double_quoteattrz"SaxutilsTest.test_double_quoteattrQ  r   r<   c                 L    |                      t          d          d           d S )Nz%Includes 'single' and "double" quotesz1"Includes 'single' and &quot;double&quot; quotes"r   rb   s    r:   test_single_double_quoteattrz)SaxutilsTest.test_single_double_quoteattrU  s7    #LMMN	P 	P 	P 	P 	Pr<   c                 &    t          dg          }d S )Nzxml.parsers.no_such_parserr   )r9   r   s     r:   test_make_parserzSaxutilsTest.test_make_parserZ  s     5677r<   N)rF   rG   rH   r   r   r   r   r   r   r   r   r   r   r   r   rI   r<   r:   r   r   ,  s        M M M9 9 9- - -
O O O/ / /- - -M M M3 3 39 9 99 9 9P P P
8 8 8 8 8r<   r   c                   V    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S )PrepareInputSourceTestc                     t           j        | _        t          | j        d          5 }|                    d           d d d            d S # 1 swxY w Y   d S )NrW   zThis was read from a file.)r   r   filerY   rZ   )r9   tmps     r:   setUpzPrepareInputSourceTest.setUpb  s    $	$)S!! 	4SII2333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4s   A

AAc                 8    t          j        | j                   d S r`   )r   ra   r   rb   s    r:   rc   zPrepareInputSourceTest.tearDowng  s    #####r<   c                      t          d          S Ns   This is a byte stream.)r   rb   s    r:   make_byte_streamz'PrepareInputSourceTest.make_byte_streamj  s    0111r<   c                      t          d          S NzThis is a character stream.)r   rb   s    r:   make_character_streamz,PrepareInputSourceTest.make_character_streamm  s    5666r<   c                     |                      |           |                     |                                |           |                                 d S r`   )assertIsNotNoner-   readclose)r9   streamcontents      r:   checkContentz#PrepareInputSourceTest.checkContentp  sE    V$$$000r<   c                 8   t          | j                  }|                    |                                            t	          |          }|                     |                                           |                     |                                d           d S r   )	r   r   setCharacterStreamr   r   assertIsNonegetByteStreamr   getCharacterStreamr9   srcpreps      r:   test_character_streamz,PrepareInputSourceTest.test_character_streamv  s    $)$$t99;;<<<#C(($,,..///$11337	9 	9 	9 	9 	9r<   c                 8   t          | j                  }|                    |                                            t	          |          }|                     |                                           |                     |                                d           d S r   )	r   r   r   r   r   r   r   r   r   r   s      r:   test_byte_streamz'PrepareInputSourceTest.test_byte_stream  s     $)$$$//11222#C(($1133444$,,..3	5 	5 	5 	5 	5r<   c                     t          | j                  }t          |          }|                     |                                           |                     |                                d           d S Ns   This was read from a file.)r   r   r   r   r   r   r   r   s      r:   test_system_idz%PrepareInputSourceTest.test_system_id  ss     $)$$#C(($1133444$,,..7	9 	9 	9 	9 	9r<   c                     t          | j                  }|                     |                                           |                     |                                d           d S r   )r   r   r   r   r   r   r9   r   s     r:   test_stringz"PrepareInputSourceTest.test_string  sd    #DI..$1133444$,,..7	9 	9 	9 	9 	9r<   c                     t          t          | j                            }|                     |                                           |                     |                                d           d S r   )r   r   r   r   r   r   r   r   s     r:   test_path_objectsz(PrepareInputSourceTest.test_path_objects  sl    #HTY$7$788$1133444$,,..7	9 	9 	9 	9 	9r<   c                     t          |                                           }|                     |                                           |                     |                                d           d S r   )r   r   r   r   r   r   r   s     r:   test_binary_filez'PrepareInputSourceTest.test_binary_file  sp     $D$9$9$;$;<<$1133444$,,..3	5 	5 	5 	5 	5r<   c                     t          |                                           }|                     |                                           |                     |                                d           d S r   )r   r   r   r   r   r   r   s     r:   test_text_filez%PrepareInputSourceTest.test_text_file  sp     $D$>$>$@$@AA$,,..///$11337	9 	9 	9 	9 	9r<   N)rF   rG   rH   r   rc   r   r   r   r   r   r   r   r   r   r   rI   r<   r:   r   r   `  s        4 4 4
$ $ $2 2 27 7 7  9 9 95 5 59 9 99 9 99 9 95 5 59 9 9 9 9r<   r   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S )
XmlgenTestc                 h   |                                  }t          |          }|                                 |                    di            |                    d           |                                 |                     |                                |                     d                     d S )NrN   <doc></doc>	ioclassr	   startDocumentstartElement
endElementendDocumentr-   rg   xmlr9   ri   gens      r:   test_xmlgen_basiczXmlgenTest.test_xmlgen_basic  s    6""###u**DHH],C,CDDDDDr<   c                 l   |                                  }t          |d          }|                                 |                    di            |                    d           |                                 |                     |                                |                     d                     d S )NTshort_empty_elementsrN   <doc/>r   r  s      r:   test_xmlgen_basic_emptyz"XmlgenTest.test_xmlgen_basic_empty  s    6===###u**DHHX,>,>?????r<   c                    |                                  }t          |          }|                                 |                    di            |                    d           |                    d           |                                 |                     |                                | 	                    d                     d S )NrN   huhei<doc>huhei</doc>
r   r	   r  r  
charactersr  r  r-   rg   r  r  s      r:   test_xmlgen_contentzXmlgenTest.test_xmlgen_content  s    6""###wu**DHH5G,H,HIIIIIr<   c                    |                                  }t          |d          }|                                 |                    di            |                    d           |                    d           |                                 |                     |                                | 	                    d                     d S )NTr
  rN   r  r  r  r  s      r:   test_xmlgen_content_emptyz$XmlgenTest.test_xmlgen_content_empty  s    6===###wu**DHH5G,H,HIIIIIr<   c                    |                                  }t          |          }|                                 |                    dd           |                    di            |                    d           |                                 |                     |                                | 	                    d                     d S )Ntestrh   rN   z<?test data?><doc></doc>)
r   r	   r  processingInstructionr  r  r  r-   rg   r  r  s      r:   test_xmlgen_pizXmlgenTest.test_xmlgen_pi  s    6""!!&&111###u**HH/00	2 	2 	2 	2 	2r<   c                    |                                  }t          |          }|                                 |                    di            |                    d           |                    d           |                                 |                     |                                | 	                    d                     d S )NrN   z<huhei&z<doc>&lt;huhei&amp;</doc>r  r  s      r:   test_xmlgen_content_escapez%XmlgenTest.test_xmlgen_content_escape  s    6""###y!!!u**HH011	3 	3 	3 	3 	3r<   c                 z   |                                  }t          |          }|                                 |                    dddi           |                    dddi           |                    d           |                    dddi           |                    d           |                    dddi           |                    d           |                    d           |                                 |                     |                                |                     d                     d S )	NrN   a"e'z'"z
	zK<doc a='"'><e a="'"></e><e a="'&quot;"></e><e a="&#10;&#13;&#9;"></e></doc>r   r  s      r:   test_xmlgen_attr_escapez"XmlgenTest.test_xmlgen_attr_escape  s1   6""c
+++sCj)))ssEl+++ssHo...su**DHH1-2 -2 	3 	3 	3 	3 	3r<   c                    d}|D ]}|                                  }t          ||          }|                                 |                    dddi           |                    d           |                    d           |                                 |                     |                                | 	                    d|                     d S )N	ziso-8859-15r   rz   ro   rq   rp   zutf-32zutf-32bezutf-32lers   rN   r     €u   <doc a="€">€</doc>r  r9   ru   rO   ri   r  s        r:   test_xmlgen_encodingzXmlgenTest.test_xmlgen_encoding  s    7	 " 	M 	MH\\^^Fv999CUS(O444NN8$$$NN5!!!OOV__..7(KKM M M M	M 	Mr<   c                    |                                  }t          |d          }|                                 |                    dddi           |                    d           |                    d           |                                 |                     |                                | 	                    dd                     d S )Nasciirs   rN   r  r$  z<doc a="&#8364;">&#8364;</doc>r  r  s      r:   test_xmlgen_unencodablez"XmlgenTest.test_xmlgen_unencodable  s    6G444h000x   u**HH5HHH	J 	J 	J 	J 	Jr<   c                    |                                  }t          |          }|                                 |                    di            |                    d           |                    d           |                                 |                     |                                | 	                    d                     d S )NrN    <doc> </doc>
r   r	   r  r  ignorableWhitespacer  r  r-   rg   r  r  s      r:   test_xmlgen_ignorablez XmlgenTest.test_xmlgen_ignorable,  s    6""###$$$u**DHH^,D,DEEEEEr<   c                    |                                  }t          |d          }|                                 |                    di            |                    d           |                    d           |                                 |                     |                                | 	                    d                     d S )NTr
  rN   r+  r,  r-  r  s      r:   test_xmlgen_ignorable_emptyz&XmlgenTest.test_xmlgen_ignorable_empty8  s    6===###$$$u**DHH^,D,DEEEEEr<   c                 &   d}|D ]
}|                                  }t          ||          }|                                 |                    dddi           |                    d                    |                     |                    d                    |                     |                    d           |                                 | 	                    |
                                |                     d|                     d S )Nr#  rs   rN   r  r$  r+  u   <doc a="€">€ </doc>)r   r	   r  r  r  rS   r.  r  r  r-   rg   r  r%  s        r:   test_xmlgen_encoding_bytesz%XmlgenTest.test_xmlgen_encoding_bytesD  s   7	 " 	N 	NH\\^^Fv999CUS(O444NN8??844555##CJJx$8$8999NN5!!!OOV__..88LLN N N N	N 	Nr<   c                 R   |                                  }t          |          }|                                 |                    dt                     |                    t          dfdi            |                    dd i            |                    dd            |                    t          dfd           |                    d           |                                 | 	                    |
                                |                     dt          z                       d S )Nns1rN   ns1:docNudocz/<ns1:doc xmlns:ns1="%s"><udoc></udoc></ns1:doc>r   r	   r  startPrefixMappingr?   startElementNSendElementNSendPrefixMappingr  r-   rg   r  r  s      r:   test_xmlgen_nszXmlgenTest.test_xmlgen_nsV  s   6""uf---FE?Ir:::>4444...&%)444U###**DHH<)/0-1 -1 	2 	2 	2 	2 	2r<   c                 V   |                                  }t          |d          }|                                 |                    dt                     |                    t          dfdi            |                    dd i            |                    dd            |                    t          dfd           |                    d           |                                 | 	                    |
                                |                     dt          z                       d S )NTr
  r5  rN   r6  r7  z)<ns1:doc xmlns:ns1="%s"><udoc/></ns1:doc>r9  r  s      r:   test_xmlgen_ns_emptyzXmlgenTest.test_xmlgen_ns_emptyh  s   6===uf---FE?Ir:::>4444...&%)444U###**DHH6)/0-1 -1 	2 	2 	2 	2 	2r<   c                 p   |                                  }t          |          }|                                 |                    ddddi           |                    dd           |                                 |                     |                                |                     d                     d S )NNr  r  Nbcz<a b="c"></a>	r   r	   r  r;  r<  r  r-   rg   r  r  s      r:   test_1463026_1zXmlgenTest.test_1463026_1z  s    6"";k#->???c*****DHH_,E,EFFFFFr<   c                 t   |                                  }t          |d          }|                                 |                    ddddi           |                    dd           |                                 |                     |                                |                     d                     d S )NTr
  rB  r  rC  rE  z
<a b="c"/>rF  r  s      r:   test_1463026_1_emptyzXmlgenTest.test_1463026_1_empty  s    6===;k#->???c*****DHH\,B,BCCCCCr<   c                    |                                  }t          |          }|                                 |                    d d           |                    ddi            |                    dd           |                    d            |                                 |                     |	                                | 
                    d                     d S )NquxrK  r  r  z<a xmlns="qux"></a>r   r	   r  r:  r;  r<  r=  r  r-   rg   r  r  s      r:   test_1463026_2zXmlgenTest.test_1463026_2  s    6""tU+++<b111s+++T"""**DHH5J,K,KLLLLLr<   c                    |                                  }t          |d          }|                                 |                    d d           |                    ddi            |                    dd           |                    d            |                                 |                     |	                                | 
                    d                     d S )NTr
  rK  rL  r  z<a xmlns="qux"/>rM  r  s      r:   test_1463026_2_emptyzXmlgenTest.test_1463026_2_empty  s    6===tU+++<b111s+++T"""**DHH5G,H,HIIIIIr<   c                    |                                  }t          |          }|                                 |                    dd           |                    ddddi           |                    dd           |                    d           |                                 |                     |	                                | 
                    d                     d S )NmyrK  rL  r  rC  rE  z"<my:a xmlns:my="qux" b="c"></my:a>rM  r  s      r:   test_1463026_3zXmlgenTest.test_1463026_3  s    6""tU+++<{3.?@@@s+++T"""**HH9::	< 	< 	< 	< 	<r<   c                    |                                  }t          |d          }|                                 |                    dd           |                    ddddi           |                    dd           |                    d           |                                 |                     |	                                | 
                    d	                     d S )
NTr
  rR  rK  rL  r  rC  rE  z<my:a xmlns:my="qux" b="c"/>rM  r  s      r:   test_1463026_3_emptyzXmlgenTest.test_1463026_3_empty  s    6===tU+++<{3.?@@@s+++T"""**HH344	6 	6 	6 	6 	6r<   c                    t          d          }t                      }|                    t          d           |                                 }t          |          }|                    |           |                    |           |                     |	                                | 
                    d                     d S )Nzb<?xml version="1.0"?><a:g1 xmlns:a="http://example.com/ns"><a:g2 xml:lang="en">Hello</a:g2></a:g1>TM<a:g1 xmlns:a="http://example.com/ns"><a:g2 xml:lang="en">Hello</a:g2></a:g1>)r   r   
setFeaturer   r   r	   setContentHandlerre   r-   rg   r  )r9   test_xmlparserri   r  s        r:   test_5027_1zXmlgenTest.test_5027_1  s       ,d3336""  %%%X**#$ $	% 	% 	% 	% 	%r<   c                 N   |                                  }t          |          }|                                 |                    dd           |                    ddi            ddi}|                    dd|           |                    d	           |                    dd           |                    dd           |                    d           |                                 | 	                    |
                                |                     d
                     d S )Nr  http://example.com/ns)r^  g1r_  )z$http://www.w3.org/XML/1998/namespacelangen)r^  g2rb  HellorW  )r   r	   r  r:  r;  r  r<  r=  r  r-   rg   r  )r9   ri   r  	lang_attrs       r:   test_5027_2zXmlgenTest.test_5027_2  s+    6""s$;<<<:D"EEEEtL	:D)LLLw8$???8$???S!!!**#$ $	% 	% 	% 	% 	%r<   c                 ~    |                                  }d } ||           |                     |j                   d S )Nc                 x    t          |           }|                                 |                    di            d S )NrN   )r	   r  r  )outr  s     r:   funcz+XmlgenTest.test_no_close_file.<locals>.func  s=    s##CUB'''''r<   )r   assertFalser   )r9   ri   ri  s      r:   test_no_close_filezXmlgenTest.test_no_close_file  sI    	( 	( 	( 	V'''''r<   c           	         |                                  }t          |          }|                    dddi           |                    d           |                    d           |                    dddi           |                    d           |                     |                                |                     d          t          |                     d	                    d                     d S )
Nfoor  1.0rc  barrD  z2.0z+<foo a="1.0">Hello</foo><bar b="2.0"></bar> )	r   r	   r  r  r  r-   rg   r  r1   r  s      r:   test_xmlgen_fragmentzXmlgenTest.test_xmlgen_fragment  s    6"" 	e---wue---u 	**HHBCCCQSDUDUDVDVW	Y 	Y 	Y 	Y 	Yr<   N)rF   rG   rH   r  r  r  r  r  r  r!  r&  r)  r/  r1  r3  r>  r@  rG  rI  rN  rP  rS  rU  r\  re  rk  rq  rI   r<   r:   r   r     s       E E E@ @ @
J 
J 
J
J 
J 
J2 2 23 3 33 3 3(M M M"J J J
F 
F 
F
F 
F 
FN N N$2 2 2$2 2 2$	G 	G 	G	D 	D 	DM M MJ J J< < <6 6 6% % %4% % %8( ( (Y Y Y Y Yr<   r   c                       e Zd ZeZddZdZdS )StringXmlgenTestrn   c                     d|d|S rK   rI   r9   rN   rO   s      r:   r  zStringXmlgenTest.xml  s     <DHHccJJr<   Nrn   )rF   rG   rH   r   r   r  r)  rI   r<   r:   rs  rs    s5        GK K K K #r<   rs  c                       e Zd ZeZddZdS )BytesXmlgenTestrn   c                 :    d|d|                     |d          S )NrL   rM   rR   rS   ru  s      r:   r  zBytesXmlgenTest.xml  s*     33 !'2E!F!F	Gr<   Nrv  )rF   rG   rH   r   r   r  rI   r<   r:   rx  rx    s3        GG G G G G Gr<   rx  c                   *    e Zd Z G d de          ZdS )WriterXmlgenTestc                   2    e Zd Zej        ZdZd Zd Zd Z	dS )WriterXmlgenTest.ioclassFc                     dS NTrI   rb   s    r:   seekablez!WriterXmlgenTest.ioclass.seekable(  s    4r<   c                      t          |           S r`   )r1   rb   s    r:   tellzWriterXmlgenTest.ioclass.tell+  s    t99r<   c                 ,    d                     |           S )Nr<   )joinrb   s    r:   rg   z!WriterXmlgenTest.ioclass.getvalue/  s    88D>>!r<   N)
rF   rG   rH   r3   appendrZ   r   r  r  rg   rI   r<   r:   r   r~  $  sM        	 	 		 	 		" 	" 	" 	" 	"r<   r   N)rF   rG   rH   r3   r   rI   r<   r:   r|  r|  #  s>        " " " " "$ " " " " "r<   r|  c                       e Zd Zd ZddZdS )StreamWriterXmlgenTestc                 v    t                      } t          j        d          |d          }|j        |_        |S )Nr(  rR   )r   codecs	getwriterrg   )r9   rawwriters      r:   r   zStreamWriterXmlgenTest.ioclass3  s6    ii*!'**30CDD,r<   rn   c                 :    d|d|                     dd          S NrL   rM   r(  rR   rz  ru  s      r:   r  zStreamWriterXmlgenTest.xml9  *     33 !'1D!E!E	Fr<   Nrv  )rF   rG   rH   r   r  rI   r<   r:   r  r  2  s=          F F F F F Fr<   r  c                   0    e Zd Zej        dz   Zd ZddZdS )StreamReaderWriterXmlgenTestz-codecsc                      t          j         j        dddd           fd}                     |           fd}|_        S )NrW   r(  rR   r   )rO   rX   	bufferingc                  b                                      t          j         j                   d S r`   )r   r   ra   fname)r9   r  s   r:   cleanupz5StreamReaderWriterXmlgenTest.ioclass.<locals>.cleanupC  s)    LLNNNTZ(((((r<   c                                                        t          j        d          5 } |                                 cd d d            S # 1 swxY w Y   d S Nry   )r   rY   namer   )r[   r  s    r:   rg   z6StreamReaderWriterXmlgenTest.ioclass.<locals>.getvalueG  s    LLNNNfk4((  Avvxx                                   s   AAA)r  rY   r  
addCleanuprg   )r9   r  rg   r  s   `  @r:   r   z$StreamReaderWriterXmlgenTest.ioclass@  s    TZw$71F F F	) 	) 	) 	) 	) 	) 	   	  	  	  	  	 
 #r<   rn   c                 :    d|d|                     dd          S r  rz  ru  s      r:   r  z StreamReaderWriterXmlgenTest.xmlO  r  r<   Nrv  )rF   rG   rH   r   r   r  r   r  rI   r<   r:   r  r  =  sJ        y(E  F F F F F Fr<   r  s,   <?xml version="1.0" encoding="iso-8859-1"?>
c                       e Zd Zd ZdS )XMLFilterBaseTestc                    t                      }t          |          }t                      }|                    |           |                                 |                    di            |                    d           |                    d           |                    d           |	                                 | 
                    |                                t          dz              d S )NrN   r   r+  s   <doc>content </doc>)r   r	   r   rY  r  r  r  r.  r  r  r-   rg   start)r9   ri   r  filters       r:   test_filter_basicz#XMLFilterBaseTest.test_filter_basicW  s    6""  %%%E2&&&)$$$""3'''%   **E4J,JKKKKKr<   N)rF   rG   rH   r  rI   r<   r:   r  r  V  s(        L L L L Lr<   r  ry   c                   8   e Zd Zd Zd Zed             Zd Zd Z G d d          Z	 G d d	          Z
d
 Zd Zd Z G d d          Zd Zd Z G d de          Zd Zd Zd Zd Zd Zd Zed             Zd Zd Zd Zd Zd Zd Zed              Z d!S )"ExpatReaderTestc                 d   t                      }t                      }t          |          }|                    |           t	          t
          d          5 }|                    |           d d d            n# 1 swxY w Y   |                     |                                t                     d S r  
r   r   r	   rY  rY   TEST_XMLFILEre   r-   rg   xml_test_outr9   r[  ri   xmlgenr[   s        r:   test_expat_binary_filez&ExpatReaderTest.test_expat_binary_files  s    f%%  (((,%% 	LLOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	**L99999s   A88A<?A<c                 h   t                      }t                      }t          |          }|                    |           t	          t
          dd          5 }|                    |           d d d            n# 1 swxY w Y   |                     |                                t                     d S Nrtrn   rs   r  r  s        r:   test_expat_text_filez$ExpatReaderTest.test_expat_text_file~  s    f%%  (((,|<<< 	LLOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	**L99999s   A::A>A>c                    t           j        }t          j        t          |           |                     t           j        |           t                      }t                      }t          |          }|
                    |           |                    t          |d                     |                     |                                t                     d S r  )r   TESTFN_UNICODEshutilcopyfiler  r  ra   r   r   r	   rY  re   rY   r-   rg   r  r9   r  r[  ri   r  s        r:   test_expat_binary_file_nonasciiz/ExpatReaderTest.test_expat_binary_file_nonascii  s    (e,,,	(%000f%%  (((T%&&'''**L99999r<   c                    t          j        t                    }t                      }t	                      }t          |          }|                    |           t          |d          5 }|                    |           d d d            n# 1 swxY w Y   | 	                    |
                                t                     d S r  )osfsencoder  r   r   r	   rY  rY   re   r-   rg   r  )r9   r  r[  ri   r  r[   s         r:   !test_expat_binary_file_bytes_namez1ExpatReaderTest.test_expat_binary_file_bytes_name  s    L))f%%  (((% 	!LLOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	**L99999s   *BBBc                    t                      }t                      }t          |          }|                    |           t	          t
          d          5 }t	          |                                dd          5 }|                    |           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |                     |	                                t                     d S )Nry   F)closefd)r   r   r	   rY  rY   r  filenore   r-   rg   r  )r9   r[  ri   r  r[   f2s         r:   test_expat_binary_file_int_namez/ExpatReaderTest.test_expat_binary_file_int_name  s@   f%%  (((,%% 	!ahhjj$666 !"R   ! ! ! ! ! ! ! ! ! ! ! ! ! ! !	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	**L99999s6   %B4;BB4B!	!B4$B!	%B44B8;B8c                        e Zd Zd Zd Zd ZdS )ExpatReaderTest.TestDTDHandlerc                 "    g | _         g | _        d S r`   )
_notations	_entitiesrb   s    r:   __init__z'ExpatReaderTest.TestDTDHandler.__init__  s     DO DNNNr<   c                 @    | j                             |||f           d S r`   )r  r  )r9   r  publicIdsystemIds       r:   notationDeclz+ExpatReaderTest.TestDTDHandler.notationDecl  s%    O""D(H#=>>>>>r<   c                 B    | j                             ||||f           d S r`   )r  r  )r9   r  r  r  ndatas        r:   unparsedEntityDeclz1ExpatReaderTest.TestDTDHandler.unparsedEntityDecl  s'    N!!48U"CDDDDDr<   N)rF   rG   rH   r  r  r  rI   r<   r:   TestDTDHandlerr    sF        	! 	! 	!	? 	? 	?	E 	E 	E 	E 	Er<   r  c                       e Zd Zd Zd ZdS )"ExpatReaderTest.TestEntityRecorderc                     g | _         d S r`   )entitiesrb   s    r:   r  z+ExpatReaderTest.TestEntityRecorder.__init__  s    DMMMr<   c                     | j                             ||f           t                      }|                    |           |                    |           |S r`   )r  r  r   setPublicIdsetSystemId)r9   r  r  sources       r:   resolveEntityz0ExpatReaderTest.TestEntityRecorder.resolveEntity  sS    M  (H!5666 ]]Fx(((x(((Mr<   N)rF   rG   rH   r  r  rI   r<   r:   TestEntityRecorderr    s2        	 	 		 	 	 	 	r<   r  c                    t                      }|                                 }|                    |           |                    d           |                    d           |                    d           |                    d           |                    d           |                                 |                     |j        dg           |                     |j        dg           d S )N<!DOCTYPE doc [
z-  <!ENTITY img SYSTEM "expat.gif" NDATA GIF>
zW  <!NOTATION GIF PUBLIC "-//CompuServe//NOTATION Graphics Interchange Format 89a//EN">
]>
r   )GIFz;-//CompuServe//NOTATION Graphics Interchange Format 89a//ENN)imgNz	expat.gifr  )r   r  setDTDHandlerfeedr   r-   r  r  )r9   r[  handlers      r:   test_expat_dtdhandlerz%ExpatReaderTest.test_expat_dtdhandler  s    %%''W%%%'(((DEEEnoooFM"""+YZ	\ 	\ 	\*-N,OPPPPPr<   c                    |                      t          j        j                   t	                      }|                    t          d           |                                 }|                    |           | 	                    t                    5  |                    d           d d d            n# 1 swxY w Y   |                     |j        dg           d S )NT8<!DOCTYPE external SYSTEM "unsupported://non-existing">
)Nzunsupported://non-existing)r  urllibrequest
urlcleanupr   rX  r   r  setEntityResolverr&   r   r  r-   r  r9   r[  resolvers      r:   test_expat_external_dtd_enabledz/ExpatReaderTest.test_expat_external_dtd_enabled  s   1222.555**,,  ***x(( 	 	KKK  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 DE	
 	
 	
 	
 	
s   B33B7:B7c                 &   t                      }|                                 }|                    |           |                    d           |                    d           |                                 |                     |j        g            d S )Nr  z<doc />)r   r  r  r  r   r-   r  r  s      r:   test_expat_external_dtd_defaultz/ExpatReaderTest.test_expat_external_dtd_default  s    **,,  ***G	
 	
 	
 	I*B/////r<   c                       e Zd Zd ZdS )"ExpatReaderTest.TestEntityResolverc                 f    t                      }|                    t          d                     |S )Ns	   <entity/>)r   r   r   )r9   r  r  inpsrcs       r:   r  z0ExpatReaderTest.TestEntityResolver.resolveEntity  s,     ]]F  !6!6777Mr<   N)rF   rG   rH   r  rI   r<   r:   TestEntityResolverr    s#        	 	 	 	 	r<   r  c                 6   t                      }|                    t          d           |                    |                                            t                      }|                    t          |                     |                    d           |                    d           |                    d           |                    d           |	                                 | 
                    |                                t          dz              d S )NTr  #  <!ENTITY test SYSTEM "whatever">
r  <doc>&test;</doc>s   <doc><entity></entity></doc>)r   rX  r   r  r  r   rY  r	   r  r   r-   rg   r  r9   r[  ri   s      r:   !test_expat_entityresolver_enabledz1ExpatReaderTest.test_expat_entityresolver_enabled   s    .555  !8!8!:!:;;;  f!5!5666'(((:;;;F'(((**E8-9 	: 	: 	: 	: 	:r<   c                 \   t                      }|                     |                    t                    d           |                    |                                            t                      }|                    t          |                     |	                    d           |	                    d           |	                    d           |	                    d           |
                                 |                     |                                t          dz              d S )NFr  r  r  r     <doc></doc>)r   r-   
getFeaturer   r  r  r   rY  r	   r  r   rg   r  r  s      r:   !test_expat_entityresolver_defaultz1ExpatReaderTest.test_expat_entityresolver_default  s   **+?@@%HHH  !8!8!:!:;;;  f!5!5666'(((:;;;F'(((**E'-( 	) 	) 	) 	) 	)r<   c                       e Zd Zd Zd ZdS )ExpatReaderTest.AttrGathererc                     || _         d S r`   _attrs)r9   r  r$   s      r:   r  z)ExpatReaderTest.AttrGatherer.startElement$      DKKKr<   c                     || _         d S r`   r  )r9   r  qnamer$   s       r:   r;  z+ExpatReaderTest.AttrGatherer.startElementNS'  r  r<   N)rF   rG   rH   r  r;  rI   r<   r:   AttrGathererr  "  s2        	  	  	 	  	  	  	  	 r<   r  c                     t                      }|                                 }|                    |           |                    d           |                                 |                     |j                   d S )Nr  )r   r  rY  r  r   r;   r  r9   r[  gathers      r:   test_expat_attrs_emptyz&ExpatReaderTest.test_expat_attrs_empty*  sk    ""$$  (((H.....r<   c                     t                      }|                                 }|                    |           |                    d           |                                 |                     |j                   d S )Nz<doc attr='val'/>)r   r  rY  r  r   rE   r  r  s      r:   test_expat_attrs_wattrz&ExpatReaderTest.test_expat_attrs_wattr4  sl    ""$$  ((('(((.....r<   c                     t          d          }|                                 }|                    |           |                    d           |                                 |                     |j                   d S )NrB   r  )r   r  rY  r  r   r@   r  r  s      r:   test_expat_nsattrs_emptyz(ExpatReaderTest.test_expat_nsattrs_empty>  so    q!!""$$  (((H!!&-00000r<   c                    t          d          }|                                 }|                    |           |                    dt          z             |                                 |j        }|                     |                                d           |                     |	                                t          dfg           | 
                    |                                g k    p|                                dgk               |                     t          |          d           |                     t          df|           |                     |                    t          df          d           |                     |                    t          dfd          d           |                     t          |                                          t          dfdfg           |                     t          |                                          dg           |                     |                    t          df          d           |                     |t          df         d           d S )NrB   z"<doc xmlns:ns='%s' ns:attr='val'/>r#   r>   rC   r%   )r   r  rY  r  r?   r   r  r-   r.   r/   r   r0   r1   rD   r5   r3   r6   r7   r(   )r9   r[  r  r$   s       r:   test_expat_nsattrs_wattrz(ExpatReaderTest.test_expat_nsattrs_wattrH  s   q!!""$$  (((86ABBB**A...))VV,<+=>>>**b0 :**yk9	< 	< 	<UQ'''vv&...FF#344e<<<FF#3R88%@@@ekkmm,,0@%/H.IJJJellnn--w777(8995AAA/0%88888r<   c                    t                      }t                      }t          |          }|                    |           |                    t
                     |                     |                                t                     d S r`   )	r   r   r	   rY  re   r  r-   rg   r  r9   r[  ri   r  s       r:   test_expat_inpsource_filenamez-ExpatReaderTest.test_expat_inpsource_filenamea  sm    f%%  (((\"""**L99999r<   c                 .   t                      }t                      }t          |          }|                    |           |                    t          t                               |                     |                                t                     d S r`   )
r   r   r	   rY  re   r   r  r-   rg   r  r  s       r:   test_expat_inpsource_sysidz*ExpatReaderTest.test_expat_inpsource_sysidk  su    f%%  ((([..///**L99999r<   c                    t           j        }t          j        t          |           |                     t           j        |           t                      }t                      }t          |          }|
                    |           |                    t          |                     |                     |                                t                     d S r`   )r   r  r  r  r  r  ra   r   r   r	   rY  re   r   r-   rg   r  r  s        r:   #test_expat_inpsource_sysid_nonasciiz3ExpatReaderTest.test_expat_inpsource_sysid_nonasciiu  s    (e,,,	(%000f%%  ((([''(((**L99999r<   c                    t                      }t                      }t          |          }|                    |           t	                      }t          t          d          5 }|                    |           |                    |           d d d            n# 1 swxY w Y   | 	                    |
                                t                     d S r  )r   r   r	   rY  r   rY   r  r   re   r-   rg   r  r9   r[  ri   r  r  r[   s         r:    test_expat_inpsource_byte_streamz0ExpatReaderTest.test_expat_inpsource_byte_stream  s    f%%  (((,%% 	!  ###LL   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	**L99999s   $+BB"Bc                    t                      }t                      }t          |          }|                    |           t	                      }t          t          dd          5 }|                    |           |                    |           d d d            n# 1 swxY w Y   | 	                    |
                                t                     d S r  )r   r   r	   rY  r   rY   r  r   re   r-   rg   r  r  s         r:   %test_expat_inpsource_character_streamz5ExpatReaderTest.test_expat_inpsource_character_stream  s    f%%  (((,|<<< 	!%%a(((LL   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	**L99999s   &+BB!$B!c                 b   t                      }t          |          }t                      }|                    |           |                    d           |                    d           |                                 |                     |                                t          dz              d S )N<doc></doc>r  )	r   r	   r   rY  r  r   r-   rg   r  r9   ri   r  r[  s       r:   test_expat_incrementalz&ExpatReaderTest.test_expat_incremental  s    f%%  (((GH**EN,BCCCCCr<   c                 l   t                      }t          |          }t                      }|                    |           |                    d           |                    d           t                      }t          |          }|                    |           |                                 |                    d           |                    d           |                    d           |                                 |                     |                                t          dz              d S )Nr  textr  s   <doc>text</doc>)
r   r	   r   rY  r  resetr   r-   rg   r  r  s       r:   test_expat_incremental_resetz,ExpatReaderTest.test_expat_incremental_reset  s    f%%  (((GFf%%  (((GFH**E4F,FGGGGGr<   c                    t                      }t          |          }t                      }|                    |           |                    d           |                    d           |                                 |                     |                                d            |                     |                                d            |                     |	                                d           d S )Nr  r  rB   )
r   r	   r   rY  r  r   r-   getSystemIdgetPublicIdgetLineNumberr  s       r:   test_expat_locator_noinfoz)ExpatReaderTest.test_expat_locator_noinfo  s    f%%  (((GH++--t444++--t444--//33333r<   c                 d   t                      }t          |          }t                      }|                    |           |                    t
                     |                     |                                t
                     |                     |                                d            d S r`   )	r   r	   r   rY  re   r  r-   r"  r#  r  s       r:   test_expat_locator_withinfoz+ExpatReaderTest.test_expat_locator_withinfo  s    f%%  (((\"""++--|<<<++--t44444r<   c                    t           j        }t          j        t          |           |                     t           j        |           t                      }t          |          }t                      }|
                    |           |                    |           |                     |                                |           |                     |                                d            d S r`   )r   r  r  r  r  r  ra   r   r	   r   rY  re   r-   r"  r#  )r9   r  ri   r  r[  s        r:   $test_expat_locator_withinfo_nonasciiz4ExpatReaderTest.test_expat_locator_withinfo_nonascii  s    (e,,,	(%000f%%  (((U++--u555++--t44444r<   N)!rF   rG   rH   r  r  requires_nonascii_filenamesr  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'  r)  rI   r<   r:   r  r  o  sV       	: 	: 	:	: 	: 	: !: : ! :
: 
: 
:
: 
: 
:
E 
E 
E 
E 
E 
E 
E 
E	 	 	 	 	 	 	 	Q Q Q 
 
 
"
0 
0 
0       : : : ) ) )$         ~      / / // / /1 1 19 9 92: : :: : : !: : ! :: : :: : :
D 
D 
DH H H.4 4 45 5 5 !5 5 ! 5 5 5r<   r  c                   :    e Zd Zd Zd Zd Z G d d          ZdS )ErrorReportingTestc                    t                      }|                    t                                 t                      }|                    t          d                     d}|                    |           	 |                    |           |                                  d S # t          $ r3}| 
                    |                                |           Y d }~d S d }~ww xY w)Ns   <foo bar foobar>za file name)r   rY  r   r   r   r   r  re   failr   r-   r"  )r9   r[  r  r  r  s        r:   test_expat_inpsource_locationz0ErrorReportingTest.test_expat_inpsource_location  s      !1!1222W%899:::4   	4LL   IIKKKKK 	4 	4 	4Q]]__d333333333	4s   8)B# #
C -(CC c                 `   t                      }|                    t                                 |                     t          |j        t          d                     |                     |                                d           |                     |	                                d           d S )Nz<foo>   rB   )
r   rY  r   r&   r   re   r   r-   getColumnNumberr$  )r9   r[  s     r:   test_expat_incompletez(ErrorReportingTest.test_expat_incomplete  s      !1!1222+V\8G;L;LMMM//111555--//33333r<   c           
         t          t          dd |                     dd                               t          t          dd |                     d d                               t          t          dd |                     dd                                t          t          dd |                     d d                                d S )NmessagerB   )strr   DummyLocatorrb   s    r:   test_sax_parse_exception_strz/ErrorReportingTest.test_sax_parse_exception_str  s     	i"//1557 7 	8 	8 	8 	i"//a88: : 	; 	; 	; 	i"//488: : 	; 	; 	; 	i"//d;;= = 	> 	> 	> 	> 	>r<   c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )ErrorReportingTest.DummyLocatorc                 "    || _         || _        d S r`   )_lineno_colno)r9   linenocolnos      r:   r  z(ErrorReportingTest.DummyLocator.__init__  s    !DLDKKKr<   c                     dS )NpubidrI   rb   s    r:   r#  z+ErrorReportingTest.DummyLocator.getPublicId      7r<   c                     dS )NsysidrI   rb   s    r:   r"  z+ErrorReportingTest.DummyLocator.getSystemId   rB  r<   c                     | j         S r`   )r<  rb   s    r:   r$  z-ErrorReportingTest.DummyLocator.getLineNumber#  s
    <r<   c                     | j         S r`   )r=  rb   s    r:   r2  z/ErrorReportingTest.DummyLocator.getColumnNumber&  s
    ;r<   N)rF   rG   rH   r  r#  r"  r$  r2  rI   r<   r:   r7  r:    s_        	  	  	 	 	 		 	 		  	  	 	 	 	 	 	r<   r7  N)rF   rG   rH   r/  r3  r8  r7  rI   r<   r:   r,  r,    si        4 4 44 4 4> > >$         r<   r,  c                   &    e Zd Zd Zd Zd Zd ZdS )XmlReaderTestc                 J    |                      t          i                      d S r`   )r;   r   rb   s    r:   test_attrs_emptyzXmlReaderTest.test_attrs_empty2  s$    r 2 233333r<   c                 N    |                      t          ddi                     d S )Nr#   rC   )rE   r   rb   s    r:   test_attrs_wattrzXmlReaderTest.test_attrs_wattr5  s)    /? @ @AAAAAr<   c                 L    |                      t          i i                      d S r`   )r@   r   rb   s    r:   test_nsattrs_emptyz XmlReaderTest.test_nsattrs_empty8  s'    !!"22r":":;;;;;r<   c                    t          t          dfdit          dfdi          }|                     |                                d           |                     |                                t          dfg           |                     |                                dg           |                     t          |          d           |                     t          df|           |                     t          |	                                          t          dfg           |                     |
                    t          df          d           |                     |
                    t          dfd          d           |                     t          |                                          t          dfdfg           |                     t          |                                          dg           |                     |                    t          df          d           |                     |                    d          d           |                     |                    d          t          df           |                     |t          df         d           |                     |                    t          df          d           d S )Nr#   rC   r>   rB   r%   )r   r?   r-   r.   r/   r0   r1   rD   r3   r4   r5   r6   r7   r(   r)   r*   r+   r8   s     r:   test_nsattrs_wattrz XmlReaderTest.test_nsattrs_wattr;  si    66"2U!;#)6"2Y!?A A 	**A...))VV,<+=>>>**YK888UQ'''vv&...ejjll++vv.>-?@@@FF#344e<<<FF#3R88%@@@ekkmm,,0@%/H.IJJJellnn--w777(8995AAA..y995AAA--i8866:JKKK/0%888--vv.>??KKKKKr<   N)rF   rG   rH   rJ  rL  rN  rP  rI   r<   r:   rH  rH  /  sX        4 4 4B B B< < <L L L L Lr<   rH  c                       e Zd Zd Zd ZdS )LexicalHandlerTestc                    d | _         d| _        d| _        d| _        d| _        d| _        t                      | _        | j                            d	                    | j        | j                             | j                            d	                    | j                             | j                            d	                    | j        d	                              | j                            d
	                    | j                             | j                            d           | j                            d           | j                            d           | j                            d           | j                            d           | j                            d	                    | j        d	                              | j                            d	                    | j        d                              | j                            d	                    | j        d                              | j                            d           | j                            d	                    | j                             | j                            d           | j                            d           | j                            d           | j                            d           | j                            d	                    | j        d         | j        d	         | j        d                              | j                            d	                    | j        d                              | j                            d	                    | j                             | j        
                    d	           d | _        d | _        d | _        d | _        d | _        d | _        d| _        g | _        d S )Nrn  zUTF-8wish)nbspr  target)zComment in a DTDzReally! You think so?z#<?xml version="{}" encoding="{}"?>
z<!DOCTYPE {} [
z<!-- {} -->
r   z,<!ELEMENT {} (to,from,heading,body,footer)>
z<!ELEMENT to (#PCDATA)>
z<!ELEMENT from (#PCDATA)>
z<!ELEMENT heading (#PCDATA)>
z<!ELEMENT body (#PCDATA)>
z<!ELEMENT footer (#PCDATA)>
z<!ENTITY {} "&#xA0;">
z&<!ENTITY {} "Written by: Alexander.">
rB   z+<!ENTITY {} "Hope it gets to: Aristotle.">
   r  z<{}>z<to>Aristotle</to>
z<from>Alexander</from>
z <heading>Supplication</heading>
z <body>Teach me patience!</body>
z<footer>&{};&{};&{};</footer>
z</{}>
F)r[  specified_versionspecified_encodingspecified_doctypespecified_entity_namesspecified_commentr   	test_datarZ   formatseekversionrO   
standalonedoctypepublicIDsystemID
end_of_dtdcommentsrb   s    r:   r   zLexicalHandlerTest.setUpQ  s   !&")!'&B#";!C#VD$:$($;= =	> 	> 	> 	/#VD$:;;	= 	= 	=_#VD$:1$=>>	@ 	@ 	@L#VD$:;;	= 	= 	=8999:;;;=>>>:;;;<===6#VD$?$BCC	E 	E 	EF#VD$?$BCC	E 	E 	EK#VD$?$BCC	E 	E 	EV$$$V]]4+ABBCCC34447888@AAA@AAA>#VD$?$B$($?$B$($?$BD D	E 	E 	E 	_33D4J14MNNOOOY--d.DEEFFFA r<   c                     G d dt                     }t                      | _        | j                            t	                                 | j                            d ||                      t                      }|                    | j                   | j        	                    |           | 
                    | j        | j                   |                     | j                   |                     | j                   |                     | j                   | 
                    t%          | j                  t%          | j                             | 
                    d| j        d          d| j        d                    d S )Nc                   0     e Zd Z fdZd Zd Zd Z xZS )<LexicalHandlerTest.test_handlers.<locals>.TestLexicalHandlerc                 H     t                      j        |i | || _        d S r`   superr  test_harnessr9   rm  r   kwargs	__class__s       r:   r  zELexicalHandlerTest.test_handlers.<locals>.TestLexicalHandler.__init__  -      $1&111$0!!!r<   c                 N    || j         _        || j         _        || j         _        d S r`   )rm  rb  rc  rd  )r9   rb  rc  rd  s       r:   startDTDzELexicalHandlerTest.test_handlers.<locals>.TestLexicalHandler.startDTD  s)    ,3!)-5!*-5!***r<   c                     d| j         _        d S r  )rm  re  rb   s    r:   endDTDzCLexicalHandlerTest.test_handlers.<locals>.TestLexicalHandler.endDTD  s    /3!,,,r<   c                 D    | j         j                            |           d S r`   )rm  rf  r  )r9   r  s     r:   commentzDLexicalHandlerTest.test_handlers.<locals>.TestLexicalHandler.comment  s"    !*11$77777r<   )rF   rG   rH   r  rs  ru  rw  __classcell__rp  s   @r:   TestLexicalHandlerri    se        1 1 1 1 16 6 6
4 4 48 8 8 8 8 8 8r<   rz  -http://xml.org/sax/properties/lexical-handlerr+  r   )r   r   r[  rY  r   setPropertyr   r   r]  re   r-   rb  rZ  r   rc  rd  r   re  r1   rf  r\  )r9   rz  r  s      r:   test_handlersz LexicalHandlerTest.test_handlers  s{   	8 	8 	8 	8 	8 	8 	8 	8  $oo%%n&6&6777;t$$	& 	& 	& !!$.111&!!!t'=>>>$-((($-((((((T]++T344	6 	6 	69T3A69994=;KLLLLLr<   NrF   rG   rH   r   r}  rI   r<   r:   rR  rR  P  s8        4 4 4lM M M M Mr<   rR  c                       e Zd Zd Zd ZdS )CDATAHandlerTestc                     d | _         g | _        | j                            d           | j                            d           d| _        t	                      | _        | j                            d           | j                            d           | j                            | j        d         d          d           | j                            d           | j                            d           | j                            d	| j        d
         d          d           | j                            d           | j                            d           | j                            d           g | _        d| _	        d S )N)zParseable character dataF)z <> &% - assorted other XML junk.Tr   z<root_doc>
z<some_pcdata>

z</some_pcdata>
z<some_cdata>
z	<![CDATA[rB   z]]>
z</some_cdata>
z</root_doc>
F)
r[  specified_charsr  
char_indexr   r]  rZ   r_  chardatain_cdatarb   s    r:   r   zCDATAHandlerTest.setUp  s`   !##$GHHH##$NOOO!^,,,./// 4Q 7 :>>>???/000-...J)=a)@)CJJJKKK.///_---A r<   c                     G d dt                     } G d dt                    }t                      | _        | j                             ||                      | j                            d ||                      t                      }|                    | j                   | j        	                    |           | 
                    | j                   |                     | j        d           d S )Nc                   *     e Zd Z fdZd Zd Z xZS ):CDATAHandlerTest.test_handlers.<locals>.TestLexicalHandlerc                 H     t                      j        |i | || _        d S r`   rk  rn  s       r:   r  zCCDATAHandlerTest.test_handlers.<locals>.TestLexicalHandler.__init__  rq  r<   c                     d| j         _        d S r  rm  r  rb   s    r:   
startCDATAzECDATAHandlerTest.test_handlers.<locals>.TestLexicalHandler.startCDATA  s    -1!***r<   c                     d| j         _        d S )NFr  rb   s    r:   endCDATAzCCDATAHandlerTest.test_handlers.<locals>.TestLexicalHandler.endCDATA  s    -2!***r<   )rF   rG   rH   r  r  r  rx  ry  s   @r:   rz  r    sV        1 1 1 1 12 2 23 3 3 3 3 3 3r<   rz  c                   $     e Zd Z fdZd Z xZS )7CDATAHandlerTest.test_handlers.<locals>.TestCharHandlerc                 H     t                      j        |i | || _        d S r`   rk  rn  s       r:   r  z@CDATAHandlerTest.test_handlers.<locals>.TestCharHandler.__init__  rq  r<   c                     |dk    rh| j         }|j        |j                 }|                    |d         |           |                    |d         |j                   |xj        dz  c_        d S d S )Nr  r   rB   )rm  r  r  r-   r  )r9   r   hts       r:   r  zBCDATAHandlerTest.test_handlers.<locals>.TestCharHandler.characters  so    d??)A)!,7AMM!A$000MM!A$
333LLA%LLLL #?r<   )rF   rG   rH   r  r  rx  ry  s   @r:   TestCharHandlerr    sG        1 1 1 1 1& & & & & & &r<   r  r{  rW  )r   r   r   r[  rY  r|  r   r   r]  re   rj  r  r-   r  )r9   rz  r  r  s       r:   r}  zCDATAHandlerTest.test_handlers  s   		3 		3 		3 		3 		3 		3 		3 		3	& 	& 	& 	& 	&n 	& 	& 	& $oo%%ood&;&;<<<;t$$	& 	& 	& !!$.111&!!!'''!,,,,,r<   Nr~  rI   r<   r:   r  r    s2          *#- #- #- #- #-r<   r  __main__r`   ).)Vrf   r   r   r   r   r   unittestr   SkipTestxml.sax.saxutilsr	   r
   r   r   r   r   xml.sax.expatreaderr   xml.sax.handlerr   r   r   xml.sax.xmlreaderr   r   r   ior   r   r  os.pathr  r  sysurllib.errorr   urllib.requestr  test.supportr   r   test.support.os_helperr   r   r  TEST_XMLFILE_OUTrS   UnicodeEncodeErrorsupports_nonascii_filenamespathsupports_unicode_filenamesr  getfilesystemencodingUnicodeError	TypeError
skipUnlessr*  r?   TestCaser!   rP   rU   r\   r^   r   r   r   r   rs  rx  r|  r  r  r  r  rY   r[   r   r  r  r,  rH  rR  r  rF   mainrI   r<   r:   <module>r     s}  K K K K K K K K K K K K K K       8KMMMM 8 8 8
(
6
7
778A A A A A A A A A A A A A A A A - - - - - -- - - - - - - - - - K K K K K K K K K K                    



 ! ! ! ! ! !     " " " " " " ! ! ! ! ! ! 3 3 3 3 3 3 3 3 x
=9998N=AAA A   G$$$$ A A A
(
?
@
@@A # 	w) ,, ''(A(A(C(CDDDD)$ , , , ',###, 2h1#.0 0  
12? 2? 2? 2? 2?(# 2? 2? 2?jG G G G
M M M M
- - - -zM zM zM zM zM! zM zM zMx-2 -2 -2 -2 -2X& -2 -2 -2j18 18 18 18 188$ 18 18 18hN9 N9 N9 N9 N9X. N9 N9 N9f_Y _Y _Y _Y _Y _Y _Y _YB# # # # #z8#4 # # #G G G G Gj("3 G G G" " " " " " " "	F 	F 	F 	F 	FZ): 	F 	F 	FF F F F F:x/@ F F F, 	9L L L L L) L L L, 
T
D!! Q6688L              y5 y5 y5 y5 y5k y5 y5 y5D6 6 6 6 6* 6 6 6|L L L L LK L L LBVM VM VM VM VM* VM VM VMr9- 9- 9- 9- 9-x( 9- 9- 9-x zHMOOOOO s8   
% ;9*C$ $C:'D4 4	E ?E I..I25I2