o
    HXîhˆÚ  ã                	   @   sR  d dl mZmZmZmZmZ d dlZd dlmZ zeƒ  W n ey)   e d¡‚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"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dZ-e)dddZ.ze- /d¡ e. /d¡ W n e0y²   e d¡‚w dZ1ej2j3sÑz
e(j4 /e" 5¡ ¡ W n e6e7fyÐ   dZ1Y nw e 8e1d¡Z9dZ:G dd„ dej;ƒZ<dDdd„Z=dEdd„Z>dEdd „Z?G d!d"„ d"ej;ƒZ@G d#d$„ d$ej;ƒZAG d%d&„ d&ej;ƒZBG d'd(„ d(ej;ƒZCG d)d*„ d*ƒZDG d+d,„ d,eDej;ƒZEG d-d.„ d.eDej;ƒZFG d/d0„ d0eFƒZGG d1d2„ d2eDej;ƒZHG d3d4„ d4eDej;ƒZId5ZJG d6d7„ d7ej;ƒZKeLe.d8ƒZMeM N¡ ZOW d  ƒ n	1 slw   Y  G d9d:„ d:e<ƒZPG d;d<„ d<ej;ƒZQG d=d>„ d>e<ƒZRG d?d@„ d@ej;ƒZSG dAdB„ dBej;ƒZTeUdCkr§e V¡  dS dS )Fé    )Ú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.xmlZxmltestdata)Z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d„ Zdd„ Zdd„ ZdS )ÚXmlTestBasec                 C   s  |   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    © r6   ú7/opt/python-3.10.19/usr/lib/python3.10/test/test_sax.pyÚverify_empty_attrs7   s   zXmlTestBase.verify_empty_attrsc                 C   s  |   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+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r6   r6   r7   Úverify_empty_nsattrsH   s   z XmlTestBase.verify_empty_nsattrsc                 C   s  |   | ¡ 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   r=   )r)   r*   r+   r,   r-   ÚassertInr/   r0   r1   r2   r3   r$   r%   r&   r'   r4   r6   r6   r7   Úverify_attrs_wattrY   s   zXmlTestBase.verify_attrs_wattrN)Ú__name__Ú
__module__Ú__qualname__r8   r;   r?   r6   r6   r6   r7   r   6   s    r   c                 C   s   |d u r| S d|| f S ©Nú&<?xml version="1.0" encoding="%s"?>
%sr6   )ÚdocÚencodingr6   r6   r7   Úxml_strk   s   rG   .c                 C   s   |du r|}t | |ƒ |d¡S )N.Úxmlcharrefreplace)rG   Úencode)rE   rF   Údecl_encodingr6   r6   r7   Ú	xml_bytesp   s   rK   c                 C   sR   |du r|}t td|dd}| t| |ƒ¡ W d   ƒ d S 1 s"w   Y  d S )N.ÚwrH   )rF   Úerrors)Úopenr   ÚwriterG   )rE   rF   rJ   Úfr6   r6   r7   Úmake_xml_fileu   s
   "ÿrQ   c                   @   s`   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ ZdS )Ú	ParseTestu,   <money value="$Â£â‚¬ð…»">$Â£â‚¬ð…»</money>c                 C   s   t  t¡ d S ©N)r   Úunlinkr   ©r5   r6   r6   r7   ÚtearDown   s   zParseTest.tearDownc                 C   ó>   ddl m} tƒ }||t|dƒƒ |  | ¡ t| jdƒ¡ d S )Nr   )Úparser   )Úxml.saxrX   r   r   r)   ÚgetvaluerG   Údata)r5   rP   rX   Úresultr6   r6   r7   Úcheck_parse‚   ó   zParseTest.check_parsec              	   C   sÂ   d}|D ]Z}|   tt| j|ƒƒ¡ t| j|ƒ ttd|d}|   |¡ W d   ƒ n1 s.w   Y  |   t| jƒ¡ t| j|d ƒ ttd|d}|   |¡ W d   ƒ n1 sYw   Y  qd S )N©úus-asciiú
iso-8859-1r   úutf-16úutf-16leúutf-16beÚr©rF   )r]   r   rG   r[   rQ   rN   r   ©r5   Ú	encodingsrF   rP   r6   r6   r7   Útest_parse_textˆ   s   ÿÿ€ùzParseTest.test_parse_textc              	   C   sú  d}|D ]d}|   tt| j|ƒƒ¡ t| j|ƒ |   t¡ ttdƒ}|   |¡ W d   ƒ n1 s1w   Y  |   tt| j|d ƒƒ¡ t| j|d ƒ |   t¡ ttdƒ}|   |¡ W d   ƒ n1 scw   Y  q|   tt| jddƒƒ¡ t| jddƒ |   t¡ ttdƒ}|   |¡ W d   ƒ n1 s–w   Y  |   tt| jdd ƒƒ¡ t| jdd ƒ |   t¡ ttdƒ}|   |¡ W d   ƒ n1 sÈw   Y  |   tt| jdƒƒ¡ t| jdƒ |   t¡ ttdƒ}|   |¡ W d   ƒ n1 søw   Y  |  t¡ |   tt| jdd ƒƒ¡ W d   ƒ n	1 sw   Y  t| jdd ƒ |  t¡ |   t¡ W d   ƒ n	1 s<w   Y  ttdƒ,}|  t¡ |   |¡ W d   ƒ n1 s]w   Y  W d   ƒ d S W d   ƒ d S 1 svw   Y  d S )N©r`   r   rb   rc   rd   Úrbú	utf-8-sigr   ra   )	r]   r   rK   r[   rQ   r   rN   r"   r   rg   r6   r6   r7   Útest_parse_bytes•   s^   
ÿ
ÿ€
ÿ
ÿ
ÿÿÿ ÿÿ$ÿzParseTest.test_parse_bytesc                 C   s    t | jdd ƒ |  ttƒ¡ d S )Nr   )rQ   r[   r]   r   r   rU   r6   r6   r7   Útest_parse_path_object¿   s   z ParseTest.test_parse_path_objectc                 C   sb   t | jdd ƒ ttdƒ}tƒ }| |¡ | d¡ |  |¡ W d   ƒ d S 1 s*w   Y  d S )Nra   rk   )rQ   r[   rN   r   r   ÚsetByteStreamZsetEncodingr]   )r5   rP   Úinputr6   r6   r7   Útest_parse_InputSourceÃ   s   

"üz ParseTest.test_parse_InputSourcec              	      s˜   t ‰ d ‰‡ ‡fdd„}tjd|d0 t| jdd ƒ |  t¡ |  t¡ W d   ƒ n1 s/w   Y  |  	ˆj
¡ W d   ƒ d S 1 sEw   Y  d S )Nc                     s   ˆ | Ž ‰ˆS rS   r6   )Úargs©Zbuiltin_openÚfileobjr6   r7   Ú	mock_openÐ   s   z4ParseTest.test_parse_close_source.<locals>.mock_openzxml.sax.saxutils.open)Zside_effectra   )rN   r   ZpatchrQ   r[   r"   r   r]   r   Ú
assertTrueÚclosed)r5   ru   r6   rs   r7   Útest_parse_close_sourceÌ   s   ÿ"üz!ParseTest.test_parse_close_sourcec                 C   rW   )Nr   )ÚparseStringr   )rY   ry   r   r   r)   rZ   rG   r[   )r5   Úsry   r\   r6   r6   r7   Úcheck_parseStringÛ   r^   zParseTest.check_parseStringc                 C   s0   d}|D ]}|   t| j|ƒ¡ q|   | j¡ d S )Nr_   )r{   rG   r[   ©r5   rh   rF   r6   r6   r7   Útest_parseString_textá   s   zParseTest.test_parseString_textc                 C   s²   d}|D ]}|   t| j|ƒ¡ |   t| j|d ƒ¡ q|   t| jddƒ¡ |   t| jdd ƒ¡ |   t| jdƒ¡ |  t¡ |   t| jdd ƒ¡ W d   ƒ d S 1 sRw   Y  d S )Nrj   rl   r   ra   )r{   rK   r[   r"   r   r|   r6   r6   r7   Útest_parseString_bytesè   s   "ÿz ParseTest.test_parseString_bytesN)r@   rA   rB   r[   rV   r]   ri   rm   rn   rq   rx   r{   r}   r~   r6   r6   r6   r7   rR   |   s    *	rR   c                   @   ó,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚMakeParserTestc                 C   sp   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   )rY   r   )r5   r   Úpr6   r6   r7   Útest_make_parser2ù   s   
z MakeParserTest.test_make_parser2c                 C   sH   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ÚiterrU   r6   r6   r7   Útest_make_parser3
  s   

z MakeParserTest.test_make_parser3c                 C   s>   t g ƒ t tƒ ƒ t tƒ ƒ t tƒ ƒ t i ƒ t tg ƒƒ d S rS   )r   ÚtupleÚsetr†   r‡   rU   r6   r6   r7   Útest_make_parser4  s   


z MakeParserTest.test_make_parser4c                 C   sR   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…   rU   r6   r6   r7   Útest_make_parser5  s   z MakeParserTest.test_make_parser5N)r@   rA   rB   rƒ   rˆ   r‹   rŽ   r6   r6   r6   r7   r€   ø   s
    
	r€   c                   @   ól   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ ZdS )ÚSaxutilsTestc                 C   ó   |   tdƒd¡ d S )NúDonald Duck & CoúDonald Duck &amp; Co©r)   r	   rU   r6   r6   r7   Útest_escape_basic/  ó   zSaxutilsTest.test_escape_basicc                 C   r‘   )Nú<Donald Duck & Co>ú&lt;Donald Duck &amp; Co&gt;r”   rU   r6   r6   r7   Útest_escape_all2  ó   
ÿzSaxutilsTest.test_escape_allc                 C   ó   |   tdddiƒd¡ d S ©Nu   Hei pÃ¥ degõ   Ã¥z&aring;zHei p&aring; degr”   rU   r6   r6   r7   Útest_escape_extra6  ó   ÿzSaxutilsTest.test_escape_extrac                 C   r‘   )Nr“   r’   ©r)   r
   rU   r6   r6   r7   Útest_unescape_basic;  r–   z SaxutilsTest.test_unescape_basicc                 C   r‘   )Nr˜   r—   r    rU   r6   r6   r7   Útest_unescape_all>  rš   zSaxutilsTest.test_unescape_allc                 C   r›   rœ   r    rU   r6   r6   r7   Útest_unescape_extraB  rŸ   z SaxutilsTest.test_unescape_extrac                 C   s   |   tdddiƒd¡ d S )Nz	&amp;foo;z&foo;Zsplatr    rU   r6   r6   r7   Útest_unescape_amp_extraF  s   z$SaxutilsTest.test_unescape_amp_extrac                 C   r‘   )Nr’   z"Donald Duck &amp; Co"©r)   r   rU   r6   r6   r7   Útest_quoteattr_basicJ  rš   z!SaxutilsTest.test_quoteattr_basicc                 C   r‘   )NzIncludes "double" quotesz'Includes "double" quotes'r¥   rU   r6   r6   r7   Útest_single_quoteattrN  rš   z"SaxutilsTest.test_single_quoteattrc                 C   r‘   )NzIncludes 'single' quotesz"Includes 'single' quotes"r¥   rU   r6   r6   r7   Útest_double_quoteattrR  rš   z"SaxutilsTest.test_double_quoteattrc                 C   r‘   )Nz%Includes 'single' and "double" quotesz1"Includes 'single' and &quot;double&quot; quotes"r¥   rU   r6   r6   r7   Útest_single_double_quoteattrV  rš   z)SaxutilsTest.test_single_double_quoteattrc                 C   s   t dgƒ}d S )Nzxml.parsers.no_such_parserr   )r5   r‚   r6   r6   r7   Útest_make_parser[  s   zSaxutilsTest.test_make_parserN)r@   rA   rB   r•   r™   rž   r¡   r¢   r£   r¤   r¦   r§   r¨   r©   rª   r6   r6   r6   r7   r   -  s    r   c                   @   r   )ÚPrepareInputSourceTestc                 C   sD   t j| _t| jdƒ}| d¡ W d   ƒ d S 1 sw   Y  d S )NrL   zThis was read from a file.)r   r   ÚfilerN   rO   )r5   Útmpr6   r6   r7   ÚsetUpc  s   "ÿzPrepareInputSourceTest.setUpc                 C   s   t  | j¡ d S rS   )r   rT   r¬   rU   r6   r6   r7   rV   h  s   zPrepareInputSourceTest.tearDownc                 C   ó   t dƒS ©Ns   This is a byte stream.)r   rU   r6   r6   r7   Úmake_byte_streamk  ó   z'PrepareInputSourceTest.make_byte_streamc                 C   r¯   ©NzThis is a character stream.)r   rU   r6   r6   r7   Úmake_character_streamn  r²   z,PrepareInputSourceTest.make_character_streamc                 C   s&   |   |¡ |  | ¡ |¡ | ¡  d S rS   )ZassertIsNotNoner)   ÚreadÚclose)r5   ÚstreamÚcontentr6   r6   r7   ÚcheckContentq  s   
z#PrepareInputSourceTest.checkContentc                 C   óB   t | jƒ}| |  ¡ ¡ t|ƒ}|  | ¡ ¡ |  | ¡ d¡ d S r³   )	r   r¬   ÚsetCharacterStreamr´   r   ÚassertIsNoneÚgetByteStreamr¹   ÚgetCharacterStream©r5   ÚsrcÚprepr6   r6   r7   Útest_character_streamw  s   

ÿz,PrepareInputSourceTest.test_character_streamc                 C   rº   r°   )	r   r¬   ro   r±   r   r¼   r¾   r¹   r½   r¿   r6   r6   r7   Útest_byte_stream€  s   

ÿz'PrepareInputSourceTest.test_byte_streamc                 C   s4   t | jƒ}t|ƒ}|  | ¡ ¡ |  | ¡ d¡ d S ©Ns   This was read from a file.)r   r¬   r   r¼   r¾   r¹   r½   r¿   r6   r6   r7   Útest_system_idŠ  s   

ÿz%PrepareInputSourceTest.test_system_idc                 C   s,   t | jƒ}|  | ¡ ¡ |  | ¡ d¡ d S rÄ   )r   r¬   r¼   r¾   r¹   r½   ©r5   rÁ   r6   r6   r7   Útest_string“  s
   

ÿz"PrepareInputSourceTest.test_stringc                 C   s0   t t| jƒƒ}|  | ¡ ¡ |  | ¡ d¡ d S rÄ   )r   r   r¬   r¼   r¾   r¹   r½   rÆ   r6   r6   r7   Útest_path_objectsš  s
   
ÿz(PrepareInputSourceTest.test_path_objectsc                 C   ó.   t |  ¡ ƒ}|  | ¡ ¡ |  | ¡ d¡ d S r°   )r   r±   r¼   r¾   r¹   r½   rÆ   r6   r6   r7   Útest_binary_file¡  ó
   
ÿz'PrepareInputSourceTest.test_binary_filec                 C   rÉ   r³   )r   r´   r¼   r½   r¹   r¾   rÆ   r6   r6   r7   Útest_text_file©  rË   z%PrepareInputSourceTest.test_text_fileN)r@   rA   rB   r®   rV   r±   r´   r¹   rÂ   rÃ   rÅ   rÇ   rÈ   rÊ   rÌ   r6   r6   r6   r7   r«   a  s    	
	r«   c                   @   sÌ   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Zd-d.„ Zd/d0„ Zd1S )2Ú
XmlgenTestc                 C   sP   |   ¡ }t|ƒ}| ¡  | di ¡ | d¡ | ¡  |  | ¡ |  d¡¡ d S )NrE   ú<doc></doc>©	Úioclassr   ÚstartDocumentÚstartElementÚ
endElementÚendDocumentr)   rZ   Úxml©r5   r\   Úgenr6   r6   r7   Útest_xmlgen_basicµ  s   
zXmlgenTest.test_xmlgen_basicc                 C   sT   |   ¡ }t|dd}| ¡  | di ¡ | d¡ | ¡  |  | ¡ |  d¡¡ d S )NT©Zshort_empty_elementsrE   ú<doc/>rÏ   rÖ   r6   r6   r7   Útest_xmlgen_basic_empty¿  s   
z"XmlgenTest.test_xmlgen_basic_emptyc                 C   óZ   |   ¡ }t|ƒ}| ¡  | di ¡ | d¡ | d¡ | ¡  |  | ¡ |  	d¡¡ d S )NrE   Úhuheiú<doc>huhei</doc>©
rÐ   r   rÑ   rÒ   Ú
charactersrÓ   rÔ   r)   rZ   rÕ   rÖ   r6   r6   r7   Útest_xmlgen_contentÉ  ó   

zXmlgenTest.test_xmlgen_contentc                 C   ó^   |   ¡ }t|dd}| ¡  | di ¡ | d¡ | d¡ | ¡  |  | ¡ |  	d¡¡ d S )NTrÙ   rE   rÝ   rÞ   rß   rÖ   r6   r6   r7   Útest_xmlgen_content_emptyÕ  ó   

z$XmlgenTest.test_xmlgen_content_emptyc                 C   s\   |   ¡ }t|ƒ}| ¡  | dd¡ | di ¡ | d¡ | ¡  |  | ¡ |  	d¡¡ d S )NÚtestr[   rE   z<?test data?><doc></doc>)
rÐ   r   rÑ   ZprocessingInstructionrÒ   rÓ   rÔ   r)   rZ   rÕ   rÖ   r6   r6   r7   Útest_xmlgen_piá  s   

ÿzXmlgenTest.test_xmlgen_pic                 C   rÜ   )NrE   z<huhei&z<doc>&lt;huhei&amp;</doc>rß   rÖ   r6   r6   r7   Útest_xmlgen_content_escapeî  s   


ÿz%XmlgenTest.test_xmlgen_content_escapec                 C   s¢   |   ¡ }t|ƒ}| ¡  | dddi¡ | dddi¡ | d¡ | dddi¡ | d¡ | dddi¡ | d¡ | d¡ | ¡  |  | ¡ |  d¡¡ d S )	NrE   Úaú"Úeú'z'"z
	zK<doc a='"'><e a="'"></e><e a="'&quot;"></e><e a="&#10;&#13;&#9;"></e></doc>rÏ   rÖ   r6   r6   r7   Útest_xmlgen_attr_escapeû  s   




ÿz"XmlgenTest.test_xmlgen_attr_escapec                 C   st   d}|D ]3}|   ¡ }t||d}| ¡  | dddi¡ | d¡ | d¡ | ¡  |  | ¡ | j	d|d¡ qd S )N©	ziso-8859-15r   rl   rb   rd   rc   zutf-32zutf-32bezutf-32lerf   rE   ré   õ   â‚¬u   <doc a="â‚¬">â‚¬</doc>rß   ©r5   rh   rF   r\   r×   r6   r6   r7   Útest_xmlgen_encoding  s   


ÿözXmlgenTest.test_xmlgen_encodingc                 C   sf   |   ¡ }t|dd}| ¡  | dddi¡ | d¡ | d¡ | ¡  |  | ¡ | j	ddd¡ d S )NÚasciirf   rE   ré   rï   z<doc a="&#8364;">&#8364;</doc>rß   rÖ   r6   r6   r7   Útest_xmlgen_unencodable   s   


ÿz"XmlgenTest.test_xmlgen_unencodablec                 C   rÜ   )NrE   ú ú<doc> </doc>©
rÐ   r   rÑ   rÒ   ÚignorableWhitespacerÓ   rÔ   r)   rZ   rÕ   rÖ   r6   r6   r7   Útest_xmlgen_ignorable-  râ   z XmlgenTest.test_xmlgen_ignorablec                 C   rã   )NTrÙ   rE   rô   rõ   rö   rÖ   r6   r6   r7   Útest_xmlgen_ignorable_empty9  rå   z&XmlgenTest.test_xmlgen_ignorable_emptyc                 C   sŠ   d}|D ]>}|   ¡ }t||d}| ¡  | dddi¡ | d |¡¡ | d |¡¡ | d¡ | ¡  |  	| 
¡ | jd|d¡ qd S )Nrî   rf   rE   ré   rï   rô   u   <doc a="â‚¬">â‚¬ </doc>)rÐ   r   rÑ   rÒ   rà   rI   r÷   rÓ   rÔ   r)   rZ   rÕ   rð   r6   r6   r7   Útest_xmlgen_encoding_bytesE  s   

ÿõz%XmlgenTest.test_xmlgen_encoding_bytesc                 C   s   |   ¡ }t|ƒ}| ¡  | dt¡ | tdfdi ¡ | dd i ¡ | dd ¡ | tdfd¡ | d¡ | ¡  |  	| 
¡ |  dt ¡¡ d S )NÚns1rE   úns1:doc©NZudocz/<ns1:doc xmlns:ns1="%s"><udoc></udoc></ns1:doc>©rÐ   r   rÑ   ÚstartPrefixMappingr:   ÚstartElementNSÚendElementNSÚendPrefixMappingrÔ   r)   rZ   rÕ   rÖ   r6   r6   r7   Útest_xmlgen_nsW  s   
ÿ
ÿzXmlgenTest.test_xmlgen_nsc                 C   s”   |   ¡ }t|dd}| ¡  | dt¡ | tdfdi ¡ | dd i ¡ | dd ¡ | tdfd¡ | d¡ | ¡  |  	| 
¡ |  dt ¡¡ d S )NTrÙ   rû   rE   rü   rý   z)<ns1:doc xmlns:ns1="%s"><udoc/></ns1:doc>rþ   rÖ   r6   r6   r7   Útest_xmlgen_ns_emptyi  s   
ÿ
ÿzXmlgenTest.test_xmlgen_ns_emptyc                 C   sX   |   ¡ }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)   rZ   rÕ   rÖ   r6   r6   r7   Útest_1463026_1{  s   zXmlgenTest.test_1463026_1c                 C   s\   |   ¡ }t|dd}| ¡  | ddddi¡ | dd¡ | ¡  |  | ¡ |  d¡¡ d S )NTrÙ   r  ré   r  r  z
<a b="c"/>r	  rÖ   r6   r6   r7   Útest_1463026_1_empty†  s   zXmlgenTest.test_1463026_1_emptyc                 C   sj   |   ¡ }t|ƒ}| ¡  | d d¡ | ddi ¡ | dd¡ | d ¡ | ¡  |  | 	¡ |  
d¡¡ d S )NÚqux©r  ré   ré   z<a xmlns="qux"></a>©rÐ   r   rÑ   rÿ   r   r  r  rÔ   r)   rZ   rÕ   rÖ   r6   r6   r7   Útest_1463026_2‘  s   
zXmlgenTest.test_1463026_2c                 C   sn   |   ¡ }t|dd}| ¡  | d d¡ | ddi ¡ | dd¡ | d ¡ | ¡  |  | 	¡ |  
d¡¡ d S )NTrÙ   r  r  ré   z<a xmlns="qux"/>r  rÖ   r6   r6   r7   Útest_1463026_2_emptyž  s   
zXmlgenTest.test_1463026_2_emptyc                 C   sn   |   ¡ }t|ƒ}| ¡  | dd¡ | ddddi¡ | dd¡ | d¡ | ¡  |  | 	¡ |  
d¡¡ d S )NÚmyr  r  ré   r  r  z"<my:a xmlns:my="qux" b="c"></my:a>r  rÖ   r6   r6   r7   Útest_1463026_3«  s   

ÿzXmlgenTest.test_1463026_3c                 C   sr   |   ¡ }t|dd}| ¡  | dd¡ | ddddi¡ | dd¡ | d¡ | ¡  |  | 	¡ |  
d	¡¡ d S )
NTrÙ   r  r  r  ré   r  r  z<my:a xmlns:my="qux" b="c"/>r  rÖ   r6   r6   r7   Útest_1463026_3_empty¹  s   

ÿzXmlgenTest.test_1463026_3_emptyc                 C   sX   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>TúM<a:g1 xmlns:a="http://example.com/ns"><a:g2 xml:lang="en">Hello</a:g2></a:g1>)r   r   Ú
setFeaturer   rÐ   r   ÚsetContentHandlerrX   r)   rZ   rÕ   )r5   Ztest_xmlÚparserr\   r×   r6   r6   r7   Útest_5027_1Ç  s   ÿ


ÿÿzXmlgenTest.test_5027_1c                 C   s–   |   ¡ }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  Úg2r  ÚHellor  )rÐ   r   rÑ   rÿ   r   rà   r  r  rÔ   r)   rZ   rÕ   )r5   r\   r×   Z	lang_attrr6   r6   r7   Útest_5027_2á  s"   


ÿÿzXmlgenTest.test_5027_2c                 C   s(   |   ¡ }dd„ }||ƒ |  |j¡ d S )Nc                 S   s    t | ƒ}| ¡  | di ¡ d S )NrE   )r   rÑ   rÒ   )Úoutr×   r6   r6   r7   Úfuncÿ  s   z+XmlgenTest.test_no_close_file.<locals>.func)rÐ   ÚassertFalserw   )r5   r\   r!  r6   r6   r7   Útest_no_close_fileý  s   zXmlgenTest.test_no_close_filec                 C   sz   |   ¡ }t|ƒ}| dddi¡ | d¡ | d¡ | dddi¡ | d¡ |  | ¡ |  d¡t|  d	¡ƒd … ¡ d S )
NZfooré   ú1.0r  Zbarr  z2.0z+<foo a="1.0">Hello</foo><bar b="2.0"></bar>Ú )	rÐ   r   rÒ   rà   rÓ   r)   rZ   rÕ   r-   rÖ   r6   r6   r7   Útest_xmlgen_fragment  s   



ÿzXmlgenTest.test_xmlgen_fragmentN)r@   rA   rB   rØ   rÛ   rá   rä   rç   rè   rí   rñ   ró   rø   rù   rú   r  r  r
  r  r  r  r  r  r  r  r#  r&  r6   r6   r6   r7   rÍ   ´  s2    

	rÍ   c                   @   s   e Zd ZeZddd„ZdZdS )ÚStringXmlgenTestra   c                 C   s   d||f S rC   r6   ©r5   rE   rF   r6   r6   r7   rÕ     ó   zStringXmlgenTest.xmlN©ra   )r@   rA   rB   r   rÐ   rÕ   ró   r6   r6   r6   r7   r'    s    
r'  c                   @   s   e Zd ZeZddd„ZdS )ÚBytesXmlgenTestra   c                 C   s   d||f   |d¡S )NrD   rH   ©rI   r(  r6   r6   r7   rÕ      ó
   ÿÿzBytesXmlgenTest.xmlNr*  )r@   rA   rB   r   rÐ   rÕ   r6   r6   r6   r7   r+    s    r+  c                   @   s   e Zd ZG dd„ deƒZdS )ÚWriterXmlgenTestc                   @   s.   e Zd ZejZdZdd„ Zdd„ Zdd„ Z	dS )	zWriterXmlgenTest.ioclassFc                 C   ó   dS ©NTr6   rU   r6   r6   r7   Úseekable)  ó   z!WriterXmlgenTest.ioclass.seekablec                 C   s   t | ƒS rS   )r-   rU   r6   r6   r7   Útell,  s   zWriterXmlgenTest.ioclass.tellc                 C   s
   d  | ¡S )Nó    )ÚjoinrU   r6   r6   r7   rZ   0  ó   
z!WriterXmlgenTest.ioclass.getvalueN)
r@   rA   rB   r/   ÚappendrO   rw   r1  r3  rZ   r6   r6   r6   r7   rÐ   %  s    rÐ   N)r@   rA   rB   r/   rÐ   r6   r6   r6   r7   r.  $  s    r.  c                   @   s   e Zd Zdd„ Zddd„ZdS )ÚStreamWriterXmlgenTestc                 C   s"   t ƒ }t d¡|dƒ}|j|_|S )Nrò   rH   )r   ÚcodecsÚ	getwriterrZ   )r5   ÚrawÚwriterr6   r6   r7   rÐ   4  s   zStreamWriterXmlgenTest.ioclassra   c                 C   ó   d||f   dd¡S ©NrD   rò   rH   r,  r(  r6   r6   r7   rÕ   :  r-  zStreamWriterXmlgenTest.xmlNr*  )r@   rA   rB   rÐ   rÕ   r6   r6   r6   r7   r8  3  s    r8  c                   @   s(   e Zd Zejd Zdd„ Zddd„ZdS )	ÚStreamReaderWriterXmlgenTestz-codecsc                    sD   t jˆ jddddd‰‡ ‡fdd„}ˆ  |¡ ‡fdd	„}|ˆ_ˆS )
NrL   rò   rH   r   )rF   rM   Ú	bufferingc                      s   ˆ  ¡  t ˆ j¡ d S rS   )r¶   r   rT   Úfnamer6   ©r5   r<  r6   r7   ÚcleanupD  s   z5StreamReaderWriterXmlgenTest.ioclass.<locals>.cleanupc                     s@   ˆ   ¡  tˆ jdƒ} |  ¡ W  d   ƒ S 1 sw   Y  d S ©Nrk   )r¶   rN   Únamerµ   )rP   )r<  r6   r7   rZ   H  s   $ÿz6StreamReaderWriterXmlgenTest.ioclass.<locals>.getvalue)r9  rN   rA  Ú
addCleanuprZ   )r5   rC  rZ   r6   rB  r7   rÐ   A  s   ÿ
z$StreamReaderWriterXmlgenTest.ioclassra   c                 C   r=  r>  r,  r(  r6   r6   r7   rÕ   P  r-  z StreamReaderWriterXmlgenTest.xmlNr*  )r@   rA   rB   r   r   rA  rÐ   rÕ   r6   r6   r6   r7   r?  >  s    
r?  s,   <?xml version="1.0" encoding="iso-8859-1"?>
c                   @   ó   e Zd Zdd„ ZdS )ÚXMLFilterBaseTestc                 C   sp   t ƒ }t|ƒ}tƒ }| |¡ | ¡  | di ¡ | d¡ | d¡ | d¡ | 	¡  |  
| ¡ td ¡ d S )NrE   r¸   rô   s   <doc>content </doc>)r   r   r   r  rÑ   rÒ   rà   r÷   rÓ   rÔ   r)   rZ   Ústart)r5   r\   r×   Úfilterr6   r6   r7   Útest_filter_basicX  s   



z#XMLFilterBaseTest.test_filter_basicN)r@   rA   rB   rK  r6   r6   r6   r7   rH  W  s    rH  rk   c                   @   s>  e Zd Zdd„ Zdd„ Zedd„ ƒZdd„ Zd	d
„ ZG dd„ dƒZ	G dd„ dƒZ
dd„ Zdd„ Zdd„ ZG dd„ dƒZdd„ Zdd„ ZG dd„ deƒZdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zed)d*„ ƒZd+d,„ Zd-d.„ Zd/d0„ Zd1d2„ Ze e j!d3k d4e j!› d5¡d6d7„ ƒZ"d8d9„ Z#d:d;„ Z$d<d=„ Z%ed>d?„ ƒZ&d@S )AÚExpatReaderTestc                 C   sf   t ƒ }tƒ }t|ƒ}| |¡ ttdƒ}| |¡ W d   ƒ n1 s$w   Y  |  | ¡ t	¡ d S rD  ©
r   r   r   r  rN   ÚTEST_XMLFILErX   r)   rZ   Úxml_test_out©r5   r  r\   ÚxmlgenrP   r6   r6   r7   Útest_expat_binary_filet  s   
ÿz&ExpatReaderTest.test_expat_binary_filec                 C   sj   t ƒ }tƒ }t|ƒ}| |¡ ttddd}| |¡ W d   ƒ n1 s&w   Y  |  | ¡ t	¡ d S ©NZrtra   rf   rM  rP  r6   r6   r7   Útest_expat_text_file  s   
ÿz$ExpatReaderTest.test_expat_text_filec                 C   sb   t j}t t|¡ |  t j|¡ tƒ }tƒ }t	|ƒ}| 
|¡ | t|dƒ¡ |  | ¡ t¡ d S rD  )r   ÚTESTFN_UNICODEÚshutilÚcopyfilerN  rF  rT   r   r   r   r  rX   rN   r)   rZ   rO  ©r5   rA  r  r\   rQ  r6   r6   r7   Útest_expat_binary_file_nonasciiŠ  s   
z/ExpatReaderTest.test_expat_binary_file_nonasciic                 C   sp   t  t¡}tƒ }tƒ }t|ƒ}| |¡ t|dƒ}| |¡ W d   ƒ n1 s)w   Y  |  	| 
¡ t¡ d S rD  )ÚosÚfsencoderN  r   r   r   r  rN   rX   r)   rZ   rO  )r5   rA  r  r\   rQ  rP   r6   r6   r7   Ú!test_expat_binary_file_bytes_name™  s   

ÿz1ExpatReaderTest.test_expat_binary_file_bytes_namec              	   C   s˜   t ƒ }tƒ }t|ƒ}| |¡ ttdƒ&}t| ¡ ddd}| |¡ W d   ƒ n1 s.w   Y  W d   ƒ n1 s=w   Y  |  | 	¡ t
¡ d S )Nrk   F)Úclosefd)r   r   r   r  rN   rN  ÚfilenorX   r)   rZ   rO  )r5   r  r\   rQ  rP   Úf2r6   r6   r7   Útest_expat_binary_file_int_name¥  s   
ÿ€ÿz/ExpatReaderTest.test_expat_binary_file_int_namec                   @   r   )zExpatReaderTest.TestDTDHandlerc                 C   s   g | _ g | _d S rS   )Ú
_notationsÚ	_entitiesrU   r6   r6   r7   Ú__init__µ  ó   
z'ExpatReaderTest.TestDTDHandler.__init__c                 C   s   | j  |||f¡ d S rS   )ra  r7  )r5   rE  ÚpublicIdÚsystemIdr6   r6   r7   ÚnotationDecl¹  ó   z+ExpatReaderTest.TestDTDHandler.notationDeclc                 C   s   | j  ||||f¡ d S rS   )rb  r7  )r5   rE  re  rf  Zndatar6   r6   r7   ÚunparsedEntityDecl¼  s   z1ExpatReaderTest.TestDTDHandler.unparsedEntityDeclN)r@   rA   rB   rc  rg  ri  r6   r6   r6   r7   ÚTestDTDHandler³  s    rj  c                   @   ó   e Zd Zdd„ Zdd„ ZdS )z"ExpatReaderTest.TestEntityRecorderc                 C   s
   g | _ d S rS   )ÚentitiesrU   r6   r6   r7   rc  Á  r6  z+ExpatReaderTest.TestEntityRecorder.__init__c                 C   s.   | j  ||f¡ tƒ }| |¡ | |¡ |S rS   )rl  r7  r   ZsetPublicIdÚsetSystemId)r5   re  rf  Úsourcer6   r6   r7   ÚresolveEntityÄ  s
   

z0ExpatReaderTest.TestEntityRecorder.resolveEntityN)r@   rA   rB   rc  ro  r6   r6   r6   r7   ÚTestEntityRecorderÀ  s    rp  c                 C   sv   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)ZimgNz	expat.gifrs  )r   rj  ZsetDTDHandlerÚfeedr¶   r)   ra  rb  )r5   r  Úhandlerr6   r6   r7   Útest_expat_dtdhandlerË  s   





ÿz%ExpatReaderTest.test_expat_dtdhandlerc                 C   sz   |   tjj¡ tƒ }| td¡ |  ¡ }| |¡ |  	t
¡ | d¡ W d   ƒ n1 s.w   Y  |  |jdg¡ d S )NTú8<!DOCTYPE external SYSTEM "unsupported://non-existing">
)Nzunsupported://non-existing)rF  ÚurllibZrequestÚ
urlcleanupr   r  r   rp  ÚsetEntityResolverr"   r   rt  r)   rl  ©r5   r  Zresolverr6   r6   r7   Útest_expat_external_dtd_enabledÛ  s   
ÿÿÿz/ExpatReaderTest.test_expat_external_dtd_enabledc                 C   sF   t ƒ }|  ¡ }| |¡ | d¡ | d¡ | ¡  |  |jg ¡ d S )Nrw  z<doc />)r   rp  rz  rt  r¶   r)   rl  r{  r6   r6   r7   Útest_expat_external_dtd_defaultì  s   
ÿ
z/ExpatReaderTest.test_expat_external_dtd_defaultc                   @   rG  )z"ExpatReaderTest.TestEntityResolverc                 C   s   t ƒ }| tdƒ¡ |S )Ns	   <entity/>)r   ro   r   )r5   re  rf  Úinpsrcr6   r6   r7   ro  ü  s   z0ExpatReaderTest.TestEntityResolver.resolveEntityN)r@   rA   rB   ro  r6   r6   r6   r7   ÚTestEntityResolverú  s    r  c                 C   s|   t ƒ }| td¡ | |  ¡ ¡ tƒ }| t|ƒ¡ | d¡ | d¡ | d¡ | d¡ | 	¡  |  
| ¡ td ¡ d S )NTrq  ú#  <!ENTITY test SYSTEM "whatever">
rr  ú<doc>&test;</doc>s   <doc><entity></entity></doc>)r   r  r   rz  r  r   r  r   rt  r¶   r)   rZ   rI  ©r5   r  r\   r6   r6   r7   Ú!test_expat_entityresolver_enabled  s   




ÿz1ExpatReaderTest.test_expat_entityresolver_enabledc                 C   s‚   t ƒ }|  | t¡d¡ | |  ¡ ¡ tƒ }| t|ƒ¡ | 	d¡ | 	d¡ | 	d¡ | 	d¡ | 
¡  |  | ¡ td ¡ d S )NFrq  r€  rr  r  ó   <doc></doc>)r   r)   Z
getFeaturer   rz  r  r   r  r   rt  r¶   rZ   rI  r‚  r6   r6   r7   Ú!test_expat_entityresolver_default  s   




ÿz1ExpatReaderTest.test_expat_entityresolver_defaultc                   @   rk  )zExpatReaderTest.AttrGathererc                 C   s
   || _ d S rS   ©Ú_attrs)r5   rE  r    r6   r6   r7   rÒ   %  r6  z)ExpatReaderTest.AttrGatherer.startElementc                 C   s
   || _ d S rS   r†  )r5   rE  Zqnamer    r6   r6   r7   r   (  r6  z+ExpatReaderTest.AttrGatherer.startElementNSN)r@   rA   rB   rÒ   r   r6   r6   r6   r7   ÚAttrGatherer#  s    rˆ  c                 C   ó:   t ƒ }|  ¡ }| |¡ | d¡ | ¡  |  |j¡ d S )NrÚ   )r   rˆ  r  rt  r¶   r8   r‡  ©r5   r  Úgatherr6   r6   r7   Útest_expat_attrs_empty+  ó   

z&ExpatReaderTest.test_expat_attrs_emptyc                 C   r‰  )Nz<doc attr='val'/>)r   rˆ  r  rt  r¶   r?   r‡  rŠ  r6   r6   r7   Útest_expat_attrs_wattr5  r  z&ExpatReaderTest.test_expat_attrs_wattrc                 C   s<   t dƒ}|  ¡ }| |¡ | d¡ | ¡  |  |j¡ d S )Nr<   rÚ   )r   rˆ  r  rt  r¶   r;   r‡  rŠ  r6   r6   r7   Útest_expat_nsattrs_empty?  s   

z(ExpatReaderTest.test_expat_nsattrs_emptyc                 C   s,  t dƒ}|  ¡ }| |¡ | dt ¡ | ¡  |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 )Nr<   z"<doc xmlns:ns='%s' ns:attr='val'/>r   r9   r=   r!   )r   rˆ  r  rt  r:   r¶   r‡  r)   r*   r+   rv   r,   r-   r>   r1   r/   r2   r3   r$   )r5   r  r‹  r    r6   r6   r7   Útest_expat_nsattrs_wattrI  s&   
ÿz(ExpatReaderTest.test_expat_nsattrs_wattrc                 C   s<   t ƒ }tƒ }t|ƒ}| |¡ | t¡ |  | ¡ t¡ d S rS   )	r   r   r   r  rX   rN  r)   rZ   rO  ©r5   r  r\   rQ  r6   r6   r7   Útest_expat_inpsource_filenameb  s   

z-ExpatReaderTest.test_expat_inpsource_filenamec                 C   s@   t ƒ }tƒ }t|ƒ}| |¡ | ttƒ¡ |  | ¡ t	¡ d S rS   )
r   r   r   r  rX   r   rN  r)   rZ   rO  r‘  r6   r6   r7   Útest_expat_inpsource_sysidl  s   
z*ExpatReaderTest.test_expat_inpsource_sysidc                 C   s`   t j}t t|¡ |  t j|¡ tƒ }tƒ }t	|ƒ}| 
|¡ | t|ƒ¡ |  | ¡ t¡ d S rS   )r   rU  rV  rW  rN  rF  rT   r   r   r   r  rX   r   r)   rZ   rO  rX  r6   r6   r7   Ú#test_expat_inpsource_sysid_nonasciiv  s   
z3ExpatReaderTest.test_expat_inpsource_sysid_nonasciic                 C   sv   t ƒ }tƒ }t|ƒ}| |¡ tƒ }ttdƒ}| |¡ | |¡ W d   ƒ n1 s,w   Y  |  	| 
¡ t¡ d S rD  )r   r   r   r  r   rN   rN  ro   rX   r)   rZ   rO  ©r5   r  r\   rQ  r~  rP   r6   r6   r7   Ú test_expat_inpsource_byte_stream…  s   

þz0ExpatReaderTest.test_expat_inpsource_byte_streamc                 C   sz   t ƒ }tƒ }t|ƒ}| |¡ tƒ }ttddd}| |¡ | |¡ W d   ƒ n1 s.w   Y  |  	| 
¡ t¡ d S rS  )r   r   r   r  r   rN   rN  r»   rX   r)   rZ   rO  r•  r6   r6   r7   Ú%test_expat_inpsource_character_stream’  s   

þz5ExpatReaderTest.test_expat_inpsource_character_streamc                 C   sR   t ƒ }t|ƒ}tƒ }| |¡ | d¡ | d¡ | ¡  |  | ¡ td ¡ d S )Nú<doc>ú</doc>r„  )	r   r   r   r  rt  r¶   r)   rZ   rI  ©r5   r\   rQ  r  r6   r6   r7   Útest_expat_incremental¡  s   


z&ExpatReaderTest.test_expat_incrementalc                 C   s   t ƒ }t|ƒ}tƒ }| |¡ | d¡ | d¡ t ƒ }t|ƒ}| |¡ | ¡  | d¡ | d¡ | d¡ | ¡  |  | ¡ t	d ¡ d S )Nr˜  Útextr™  s   <doc>text</doc>)
r   r   r   r  rt  Úresetr¶   r)   rZ   rI  rš  r6   r6   r7   Útest_expat_incremental_reset­  s   






z,ExpatReaderTest.test_expat_incremental_reset©é   é   r   zExpat z" does not support reparse deferralc                 C   s¨   t ƒ }t|ƒ}tƒ }| |¡ dD ]}| |¡ q|  | ¡ t¡ |  |j	 
¡ ¡ | ¡  |  |j	 
¡ ¡ |  | ¡ td ¡ | d¡ | ¡  |  | ¡ td ¡ d S )N©z<docú>ó   <doc>r™  r„  )r   r   r   r  rt  r)   rZ   rI  rv   Ú_parserÚGetReparseDeferralEnabledÚflushr¶   ©r5   r\   rQ  r  Úchunkr6   r6   r7   Ú#test_flush_reparse_deferral_enabledÂ  s   

z3ExpatReaderTest.test_flush_reparse_deferral_enabledc                 C   s¾   t ƒ }t|ƒ}tƒ }| |¡ dD ]}| |¡ qtjdkr,|j d¡ |  	| 
¡ t¡ |  |j ¡ ¡ | ¡  |  |j ¡ ¡ |  	| 
¡ td ¡ | d¡ | ¡  |  	| 
¡ td ¡ d S )Nr¢  rŸ  Fr¤  r™  r„  )r   r   r   r  rt  ÚpyexpatÚversion_infor¥  ZSetReparseDeferralEnabledr)   rZ   rI  r"  r¦  r§  r¶   r¨  r6   r6   r7   Ú$test_flush_reparse_deferral_disabledÛ  s    


z4ExpatReaderTest.test_flush_reparse_deferral_disabledc                 C   sn   t ƒ }t|ƒ}tƒ }| |¡ | d¡ | d¡ | ¡  |  | ¡ d ¡ |  | ¡ d ¡ |  | 	¡ d¡ d S )Nr˜  r™  r<   )
r   r   r   r  rt  r¶   r)   ÚgetSystemIdÚgetPublicIdÚgetLineNumberrš  r6   r6   r7   Útest_expat_locator_noinfoö  s   


z)ExpatReaderTest.test_expat_locator_noinfoc                 C   sL   t ƒ }t|ƒ}tƒ }| |¡ | t¡ |  | ¡ t¡ |  | ¡ d ¡ d S rS   )	r   r   r   r  rX   rN  r)   r®  r¯  rš  r6   r6   r7   Útest_expat_locator_withinfo  s   

z+ExpatReaderTest.test_expat_locator_withinfoc                 C   sl   t j}t t|¡ |  t j|¡ tƒ }t|ƒ}t	ƒ }| 
|¡ | |¡ |  | ¡ |¡ |  | ¡ d ¡ d S rS   )r   rU  rV  rW  rN  rF  rT   r   r   r   r  rX   r)   r®  r¯  )r5   rA  r\   rQ  r  r6   r6   r7   Ú$test_expat_locator_withinfo_nonascii  s   

z4ExpatReaderTest.test_expat_locator_withinfo_nonasciiN)'r@   rA   rB   rR  rT  Úrequires_nonascii_filenamesrY  r\  r`  rj  rp  rv  r|  r}  r  rƒ  r…  r   rˆ  rŒ  rŽ  r  r  r’  r“  r”  r–  r—  r›  rž  ÚunittestZskipIfr«  r¬  rª  r­  r±  r²  r³  r6   r6   r6   r7   rL  p  sJ    






ÿ

rL  c                   @   s2   e Zd Zdd„ Zdd„ Zdd„ ZG dd„ dƒZd	S )
ÚErrorReportingTestc              
   C   s„   t ƒ }| tƒ ¡ tƒ }| tdƒ¡ d}| |¡ z| |¡ |  ¡  W d S  t	yA } z|  
| ¡ |¡ W Y d }~d S d }~ww )Ns   <foo bar foobar>za file name)r   r  r   r   ro   r   rm  rX   Zfailr   r)   r®  )r5   r  rn  rE  rë   r6   r6   r7   Útest_expat_inpsource_location%  s   

€ÿz0ErrorReportingTest.test_expat_inpsource_locationc                 C   sJ   t ƒ }| tƒ ¡ |  t|jtdƒ¡ |  | ¡ d¡ |  | 	¡ d¡ d S )Nz<foo>é   r<   )
r   r  r   r"   r   rX   r   r)   ÚgetColumnNumberr°  )r5   r  r6   r6   r7   Útest_expat_incomplete2  s
   z(ErrorReportingTest.test_expat_incompletec                 C   sd   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Úmessager<   )Ústrr   ÚDummyLocatorrU   r6   r6   r7   Útest_sax_parse_exception_str9  s   
ÿ
ÿ
ÿ

ÿz/ErrorReportingTest.test_sax_parse_exception_strc                   @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )zErrorReportingTest.DummyLocatorc                 C   s   || _ || _d S rS   )Ú_linenoÚ_colno)r5   ÚlinenoÚcolnor6   r6   r7   rc  L  rd  z(ErrorReportingTest.DummyLocator.__init__c                 C   r/  )NZpubidr6   rU   r6   r6   r7   r¯  P  r2  z+ErrorReportingTest.DummyLocator.getPublicIdc                 C   r/  )NZsysidr6   rU   r6   r6   r7   r®  S  r2  z+ErrorReportingTest.DummyLocator.getSystemIdc                 C   ó   | j S rS   )r¿  rU   r6   r6   r7   r°  V  ó   z-ErrorReportingTest.DummyLocator.getLineNumberc                 C   rÃ  rS   )rÀ  rU   r6   r6   r7   r¹  Y  rÄ  z/ErrorReportingTest.DummyLocator.getColumnNumberN)r@   rA   rB   rc  r¯  r®  r°  r¹  r6   r6   r6   r7   r½  K  s    r½  N)r@   rA   rB   r·  rº  r¾  r½  r6   r6   r6   r7   r¶  $  s
    r¶  c                   @   r   )
ÚXmlReaderTestc                 C   s   |   ti ƒ¡ d S rS   )r8   r   rU   r6   r6   r7   Útest_attrs_emptye  ó   zXmlReaderTest.test_attrs_emptyc                 C   s   |   tddiƒ¡ d S )Nr   r=   )r?   r   rU   r6   r6   r7   Útest_attrs_wattrh  rh  zXmlReaderTest.test_attrs_wattrc                 C   s   |   ti i ƒ¡ d S rS   )r;   r   rU   r6   r6   r7   Útest_nsattrs_emptyk  r–   z XmlReaderTest.test_nsattrs_emptyc                 C   sZ  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   r=   r9   r<   r!   )r   r:   r)   r*   r+   r,   r-   r>   r/   r0   r1   r2   r3   r$   r%   r&   r'   r4   r6   r6   r7   Útest_nsattrs_wattrn  s$   
ÿz XmlReaderTest.test_nsattrs_wattrN)r@   rA   rB   rÆ  rÈ  rÉ  rÊ  r6   r6   r6   r7   rÅ  b  s
    rÅ  c                   @   rk  )ÚLexicalHandlerTestc                 C   sì  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 )Nr$  zUTF-8Zwish)Znbsprn  Ú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.">
r<   z+<!ENTITY {} "Hope it gets to: Aristotle.">
r   rr  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  Zspecified_versionZspecified_encodingÚspecified_doctypeZspecified_entity_namesÚspecified_commentr   Ú	test_datarO   ÚformatÚseekÚversionrF   Z
standaloneÚdoctypeÚpublicIDÚsystemIDÚ
end_of_dtdÚcommentsrU   r6   r6   r7   r®   „  st   ÿÿÿÿÿÿÿÿ
þÿ
zLexicalHandlerTest.setUpc                 C   sÆ   G d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                       s4   e Zd Z‡ fdd„Zdd„ Zdd„ Zdd„ Z‡  ZS )	z<LexicalHandlerTest.test_handlers.<locals>.TestLexicalHandlerc                    ó   t ƒ j|i |¤Ž || _d S rS   ©Úsuperrc  Útest_harness©r5   rÛ  rr   Úkwargs©Ú	__class__r6   r7   rc  ¼  ó   
zELexicalHandlerTest.test_handlers.<locals>.TestLexicalHandler.__init__c                 S   s   || j _|| j _|| j _d S rS   )rÛ  rÓ  rÔ  rÕ  )r5   rÓ  rÔ  rÕ  r6   r6   r7   ÚstartDTDÀ  s   zELexicalHandlerTest.test_handlers.<locals>.TestLexicalHandler.startDTDc                 S   ó   d| j _d S r0  )rÛ  rÖ  rU   r6   r6   r7   ÚendDTDÅ  r)  zCLexicalHandlerTest.test_handlers.<locals>.TestLexicalHandler.endDTDc                 S   s   | j j |¡ d S rS   )rÛ  r×  r7  )r5   rœ  r6   r6   r7   ÚcommentÈ  rÇ  zDLexicalHandlerTest.test_handlers.<locals>.TestLexicalHandler.comment)r@   rA   rB   rc  rá  rã  rä  Ú__classcell__r6   r6   rÞ  r7   ÚTestLexicalHandler»  s
    ræ  ú-http://xml.org/sax/properties/lexical-handlerrô   r   )r   r   r  r  r   ÚsetPropertyr   r»   rÏ  rX   r)   rÓ  rÍ  r¼   rÔ  rÕ  rv   rÖ  r-   r×  rÎ  )r5   ræ  rn  r6   r6   r7   Útest_handlersº  s$   þÿ$z LexicalHandlerTest.test_handlersN©r@   rA   rB   r®   ré  r6   r6   r6   r7   rË  ƒ  s    6rË  c                   @   rk  )ÚCDATAHandlerTestc                 C   sÐ   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[r<   z]]>
z</some_cdata>
z</root_doc>
F)
r  Úspecified_charsr7  Ú
char_indexr   rÏ  rO   rÑ  ZchardataÚin_cdatarU   r6   r6   r7   r®   Ý  s"   
zCDATAHandlerTest.setUpc                 C   s†   G dd„ dt ƒ}G dd„ dtƒ}tƒ | _| j || ƒ¡ | j d|| ƒ¡ tƒ }| | j¡ | j 	|¡ |  
| j¡ |  | jd¡ d S )Nc                       s,   e Zd Z‡ fdd„Zdd„ Zdd„ Z‡  ZS )z:CDATAHandlerTest.test_handlers.<locals>.TestLexicalHandlerc                    rØ  rS   rÙ  rÜ  rÞ  r6   r7   rc  ô  rà  zCCDATAHandlerTest.test_handlers.<locals>.TestLexicalHandler.__init__c                 S   râ  r0  ©rÛ  rï  rU   r6   r6   r7   Ú
startCDATAø  r)  zECDATAHandlerTest.test_handlers.<locals>.TestLexicalHandler.startCDATAc                 S   râ  )NFrð  rU   r6   r6   r7   ÚendCDATAû  r)  zCCDATAHandlerTest.test_handlers.<locals>.TestLexicalHandler.endCDATA)r@   rA   rB   rc  rñ  rò  rå  r6   r6   rÞ  r7   ræ  ó  s    ræ  c                       s$   e Zd Z‡ fdd„Zdd„ Z‡  ZS )z7CDATAHandlerTest.test_handlers.<locals>.TestCharHandlerc                    rØ  rS   rÙ  rÜ  rÞ  r6   r7   rc  ÿ  rà  z@CDATAHandlerTest.test_handlers.<locals>.TestCharHandler.__init__c                 S   sR   |dkr'| j }|j|j }| |d |¡ | |d |j¡ | jd7  _d S d S )Nrì  r   r<   )rÛ  rí  rî  r)   rï  )r5   r¸   ÚhÚtr6   r6   r7   rà     s   ûzBCDATAHandlerTest.test_handlers.<locals>.TestCharHandler.characters)r@   rA   rB   rc  rà   rå  r6   r6   rÞ  r7   ÚTestCharHandlerþ  s    rõ  rç  r   )r   r   r   r  r  rè  r   r»   rÏ  rX   r"  rï  r)   rî  )r5   ræ  rõ  rn  r6   r6   r7   ré  ò  s   þzCDATAHandlerTest.test_handlersNrê  r6   r6   r6   r7   rë  Ü  s    rë  Ú__main__rS   ).)WrY   r   r   r   r   r   rµ  r   ZSkipTestZxml.sax.saxutilsr   r	   r
   r   r   r   Zxml.sax.expatreaderr   Zxml.sax.handlerr   r   r   Zxml.sax.xmlreaderr   r   r   Úior   r   r9  Zos.pathrZ  r«  rV  ÚsysZurllib.errorr   Zurllib.requestrx  Ztest.supportr   r   Ztest.support.os_helperr   r   rN  ZTEST_XMLFILE_OUTrI   ÚUnicodeEncodeErrorZsupports_nonascii_filenamesÚpathÚsupports_unicode_filenamesrU  ÚgetfilesystemencodingÚUnicodeErrorÚ	TypeErrorZ
skipUnlessr´  r:   ZTestCaser   rG   rK   rQ   rR   r€   r   r«   rÍ   r'  r+  r.  r8  r?  rI  rH  rN   rP   rµ   rO  rL  r¶  rÅ  rË  rë  r@   Úmainr6   r6   r6   r7   Ú<module>   s–   

þ 

ÿýþ
5

|54S  c
ÿ   7>!Y
<ÿ