o
    ±ó®gÖ  ã                	   @   sT  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"m#Z# d dl$Z%d dl&m'Z' d dl&m(Z(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<dFdd„Z=dGdd„Z>dGd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 sjw   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;ƒZTdCdD„ ZUeVdEkr¨eUƒ  dS dS )Hé    )Ú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Úrun_unittest)Ú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!   © r7   úC/Users/admin/.pyenv/versions/3.10.0/lib/python3.10/test/test_sax.pyÚverify_empty_attrs6   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/   r0   r1   r2   r3   r4   r5   r7   r7   r8   Úverify_empty_nsattrsG   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.   ÚassertInr0   r1   r2   r3   r4   r%   r&   r'   r(   r5   r7   r7   r8   Úverify_attrs_wattrX   s   zXmlTestBase.verify_attrs_wattrN)Ú__name__Ú
__module__Ú__qualname__r9   r<   r@   r7   r7   r7   r8   r   5   s    r   c                 C   s   |d u r| S d|| f S ©Nú&<?xml version="1.0" encoding="%s"?>
%sr7   )ÚdocÚencodingr7   r7   r8   Úxml_strj   s   rH   .c                 C   s   |du r|}t | |ƒ |d¡S )N.Úxmlcharrefreplace)rH   Úencode)rF   rG   Údecl_encodingr7   r7   r8   Ú	xml_byteso   s   rL   c                 C   sR   |du r|}t td|dd}| t| |ƒ¡ W d   ƒ d S 1 s"w   Y  d S )N.ÚwrI   )rG   Úerrors)Úopenr   ÚwriterH   )rF   rG   rK   Úfr7   r7   r8   Úmake_xml_filet   s
   "ÿrR   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   ©r6   r7   r7   r8   ÚtearDown~   s   zParseTest.tearDownc                 C   ó>   ddl m} tƒ }||t|dƒƒ |  | ¡ t| jdƒ¡ d S )Nr   )Úparser   )Úxml.saxrY   r   r   r*   ÚgetvaluerH   Údata)r6   rQ   rY   Úresultr7   r7   r8   Ú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   ƒ q1 sYw   Y  qd S )N©úus-asciiú
iso-8859-1r   úutf-16úutf-16leúutf-16beÚr©rG   )r^   r   rH   r\   rR   rO   r   ©r6   Ú	encodingsrG   rQ   r7   r7   r8   Ú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   ƒ q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©ra   r   rc   rd   re   Úrbú	utf-8-sigr   rb   )	r^   r   rL   r\   rR   r   rO   r#   r   rh   r7   r7   r8   Útest_parse_bytes”   s\   
ÿ
ÿ
ÿ
ÿ
ÿÿÿ ÿÿ$ÿzParseTest.test_parse_bytesc                 C   s    t | jdd ƒ |  ttƒ¡ d S )Nr   )rR   r\   r^   r   r   rV   r7   r7   r8   Ú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 )Nrb   rl   )rR   r\   rO   r   r   ÚsetByteStreamZsetEncodingr^   )r6   rQ   Úinputr7   r7   r8   Ú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 rT   r7   )Úargs©Zbuiltin_openÚfileobjr7   r8   Ú	mock_openÏ   s   z4ParseTest.test_parse_close_source.<locals>.mock_openzxml.sax.saxutils.open)Zside_effectrb   )rO   r   ZpatchrR   r\   r#   r   r^   r   Ú
assertTrueÚclosed)r6   rv   r7   rt   r8   Útest_parse_close_sourceË   s   ÿ"üz!ParseTest.test_parse_close_sourcec                 C   rX   )Nr   )ÚparseStringr   )rZ   rz   r   r   r*   r[   rH   r\   )r6   Úsrz   r]   r7   r7   r8   Úcheck_parseStringÚ   r_   zParseTest.check_parseStringc                 C   s0   d}|D ]}|   t| j|ƒ¡ q|   | j¡ d S )Nr`   )r|   rH   r\   ©r6   ri   rG   r7   r7   r8   Ú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 )Nrk   rm   r   rb   )r|   rL   r\   r#   r   r}   r7   r7   r8   Útest_parseString_bytesç   s   "ÿz ParseTest.test_parseString_bytesN)rA   rB   rC   r\   rW   r^   rj   rn   ro   rr   ry   r|   r~   r   r7   r7   r7   r8   rS   {   s    *	rS   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   )rZ   r   )r6   r   Úpr7   r7   r8   Ú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ÚiterrV   r7   r7   r8   Ú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 rT   )r   ÚtupleÚsetr‡   rˆ   rV   r7   r7   r8   Ú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†   rV   r7   r7   r8   Útest_make_parser5  s   z MakeParserTest.test_make_parser5N)rA   rB   rC   r„   r‰   rŒ   r   r7   r7   r7   r8   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	   rV   r7   r7   r8   Útest_escape_basic.  ó   zSaxutilsTest.test_escape_basicc                 C   r’   )Nú<Donald Duck & Co>ú&lt;Donald Duck &amp; Co&gt;r•   rV   r7   r7   r8   Útest_escape_all1  ó   
ÿ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•   rV   r7   r7   r8   Útest_escape_extra5  ó   ÿzSaxutilsTest.test_escape_extrac                 C   r’   )Nr”   r“   ©r*   r
   rV   r7   r7   r8   Útest_unescape_basic:  r—   z SaxutilsTest.test_unescape_basicc                 C   r’   )Nr™   r˜   r¡   rV   r7   r7   r8   Útest_unescape_all=  r›   zSaxutilsTest.test_unescape_allc                 C   rœ   r   r¡   rV   r7   r7   r8   Útest_unescape_extraA  r    z SaxutilsTest.test_unescape_extrac                 C   s   |   tdddiƒd¡ d S )Nz	&amp;foo;z&foo;Zsplatr¡   rV   r7   r7   r8   Útest_unescape_amp_extraE  s   z$SaxutilsTest.test_unescape_amp_extrac                 C   r’   )Nr“   z"Donald Duck &amp; Co"©r*   r   rV   r7   r7   r8   Útest_quoteattr_basicI  r›   z!SaxutilsTest.test_quoteattr_basicc                 C   r’   )NzIncludes "double" quotesz'Includes "double" quotes'r¦   rV   r7   r7   r8   Útest_single_quoteattrM  r›   z"SaxutilsTest.test_single_quoteattrc                 C   r’   )NzIncludes 'single' quotesz"Includes 'single' quotes"r¦   rV   r7   r7   r8   Útest_double_quoteattrQ  r›   z"SaxutilsTest.test_double_quoteattrc                 C   r’   )Nz%Includes 'single' and "double" quotesz1"Includes 'single' and &quot;double&quot; quotes"r¦   rV   r7   r7   r8   Útest_single_double_quoteattrU  r›   z)SaxutilsTest.test_single_double_quoteattrc                 C   s   t dgƒ}d S )Nzxml.parsers.no_such_parserr‚   )r6   rƒ   r7   r7   r8   Útest_make_parserZ  s   zSaxutilsTest.test_make_parserN)rA   rB   rC   r–   rš   rŸ   r¢   r£   r¤   r¥   r§   r¨   r©   rª   r«   r7   r7   r7   r8   r‘   ,  s    r‘   c                   @   r   )ÚPrepareInputSourceTestc                 C   sD   t j| _t| jdƒ}| d¡ W d   ƒ d S 1 sw   Y  d S )NrM   zThis was read from a file.)r   r   ÚfilerO   rP   )r6   Útmpr7   r7   r8   ÚsetUpb  s   "ÿzPrepareInputSourceTest.setUpc                 C   s   t  | j¡ d S rT   )r   rU   r­   rV   r7   r7   r8   rW   g  s   zPrepareInputSourceTest.tearDownc                 C   ó   t dƒS ©Ns   This is a byte stream.)r   rV   r7   r7   r8   Úmake_byte_streamj  ó   z'PrepareInputSourceTest.make_byte_streamc                 C   r°   ©NzThis is a character stream.)r   rV   r7   r7   r8   Úmake_character_streamm  r³   z,PrepareInputSourceTest.make_character_streamc                 C   s&   |   |¡ |  | ¡ |¡ | ¡  d S rT   )ZassertIsNotNoner*   ÚreadÚclose)r6   ÚstreamÚcontentr7   r7   r8   ÚcheckContentp  s   
z#PrepareInputSourceTest.checkContentc                 C   óB   t | jƒ}| |  ¡ ¡ t|ƒ}|  | ¡ ¡ |  | ¡ d¡ d S r´   )	r   r­   ÚsetCharacterStreamrµ   r   ÚassertIsNoneÚgetByteStreamrº   ÚgetCharacterStream©r6   ÚsrcÚprepr7   r7   r8   Útest_character_streamv  s   

ÿz,PrepareInputSourceTest.test_character_streamc                 C   r»   r±   )	r   r­   rp   r²   r   r½   r¿   rº   r¾   rÀ   r7   r7   r8   Ú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À   r7   r7   r8   Útest_system_id‰  s   

ÿz%PrepareInputSourceTest.test_system_idc                 C   s,   t | jƒ}|  | ¡ ¡ |  | ¡ d¡ d S rÅ   )r   r­   r½   r¿   rº   r¾   ©r6   rÂ   r7   r7   r8   Útest_string’  s
   

ÿz"PrepareInputSourceTest.test_stringc                 C   s0   t t| jƒƒ}|  | ¡ ¡ |  | ¡ d¡ d S rÅ   )r   r   r­   r½   r¿   rº   r¾   rÇ   r7   r7   r8   Útest_path_objects™  s
   
ÿz(PrepareInputSourceTest.test_path_objectsc                 C   ó.   t |  ¡ ƒ}|  | ¡ ¡ |  | ¡ d¡ d S r±   )r   r²   r½   r¿   rº   r¾   rÇ   r7   r7   r8   Útest_binary_file   ó
   
ÿz'PrepareInputSourceTest.test_binary_filec                 C   rÊ   r´   )r   rµ   r½   r¾   rº   r¿   rÇ   r7   r7   r8   Útest_text_file¨  rÌ   z%PrepareInputSourceTest.test_text_fileN)rA   rB   rC   r¯   rW   r²   rµ   rº   rÃ   rÄ   rÆ   rÈ   rÉ   rË   rÍ   r7   r7   r7   r8   r¬   `  s    	
	r¬   c                   @   sÌ   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Z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 )NrF   ú<doc></doc>©	Úioclassr   ÚstartDocumentÚstartElementÚ
endElementÚendDocumentr*   r[   Úxml©r6   r]   Úgenr7   r7   r8   Útest_xmlgen_basic´  s   
zXmlgenTest.test_xmlgen_basicc                 C   sT   |   ¡ }t|dd}| ¡  | di ¡ | d¡ | ¡  |  | ¡ |  d¡¡ d S )NT©Zshort_empty_elementsrF   ú<doc/>rÐ   r×   r7   r7   r8   Útest_xmlgen_basic_empty¾  s   
z"XmlgenTest.test_xmlgen_basic_emptyc                 C   óZ   |   ¡ }t|ƒ}| ¡  | di ¡ | d¡ | d¡ | ¡  |  | ¡ |  	d¡¡ d S )NrF   Úhuheiú<doc>huhei</doc>©
rÑ   r   rÒ   rÓ   Ú
charactersrÔ   rÕ   r*   r[   rÖ   r×   r7   r7   r8   Útest_xmlgen_contentÈ  ó   

zXmlgenTest.test_xmlgen_contentc                 C   ó^   |   ¡ }t|dd}| ¡  | di ¡ | d¡ | d¡ | ¡  |  | ¡ |  	d¡¡ d S )NTrÚ   rF   rÞ   rß   rà   r×   r7   r7   r8   Útest_xmlgen_content_emptyÔ  ó   

z$XmlgenTest.test_xmlgen_content_emptyc                 C   s\   |   ¡ }t|ƒ}| ¡  | dd¡ | di ¡ | d¡ | ¡  |  | ¡ |  	d¡¡ d S )NÚtestr\   rF   z<?test data?><doc></doc>)
rÑ   r   rÒ   ZprocessingInstructionrÓ   rÔ   rÕ   r*   r[   rÖ   r×   r7   r7   r8   Útest_xmlgen_pià  s   

ÿzXmlgenTest.test_xmlgen_pic                 C   rÝ   )NrF   z<huhei&z<doc>&lt;huhei&amp;</doc>rà   r×   r7   r7   r8   Ú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 )	NrF   Úaú"Úeú'z'"z
	zK<doc a='"'><e a="'"></e><e a="'&quot;"></e><e a="&#10;&#13;&#9;"></e></doc>rÐ   r×   r7   r7   r8   Ú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   rm   rc   re   rd   zutf-32zutf-32bezutf-32lerg   rF   rê   õ   â‚¬u   <doc a="â‚¬">â‚¬</doc>rà   ©r6   ri   rG   r]   rØ   r7   r7   r8   Ú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Úasciirg   rF   rê   rð   z<doc a="&#8364;">&#8364;</doc>rà   r×   r7   r7   r8   Útest_xmlgen_unencodable  s   


ÿz"XmlgenTest.test_xmlgen_unencodablec                 C   rÝ   )NrF   ú ú<doc> </doc>©
rÑ   r   rÒ   rÓ   ÚignorableWhitespacerÔ   rÕ   r*   r[   rÖ   r×   r7   r7   r8   Útest_xmlgen_ignorable,  rã   z XmlgenTest.test_xmlgen_ignorablec                 C   rä   )NTrÚ   rF   rõ   rö   r÷   r×   r7   r7   r8   Útest_xmlgen_ignorable_empty8  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ï   rg   rF   rê   rð   rõ   u   <doc a="â‚¬">â‚¬ </doc>)rÑ   r   rÒ   rÓ   rá   rJ   rø   rÔ   rÕ   r*   r[   rÖ   rñ   r7   r7   r8   Útest_xmlgen_encoding_bytesD  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Úns1rF   úns1:doc©NZudocz/<ns1:doc xmlns:ns1="%s"><udoc></udoc></ns1:doc>©rÑ   r   rÒ   ÚstartPrefixMappingr;   ÚstartElementNSÚendElementNSÚendPrefixMappingrÕ   r*   r[   rÖ   r×   r7   r7   r8   Útest_xmlgen_nsV  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ü   rF   rý   rþ   z)<ns1:doc xmlns:ns1="%s"><udoc/></ns1:doc>rÿ   r×   r7   r7   r8   Útest_xmlgen_ns_emptyh  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*   r[   rÖ   r×   r7   r7   r8   Útest_1463026_1z  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×   r7   r7   r8   Ú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*   r[   rÖ   r×   r7   r7   r8   Ú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×   r7   r7   r8   Ú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×   r7   r7   r8   Ú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×   r7   r7   r8   Ú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   ÚsetContentHandlerrY   r*   r[   rÖ   )r6   Ztest_xmlÚparserr]   rØ   r7   r7   r8   Ú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/namespaceZlangZen)r  Úg2r  ÚHellor  )rÑ   r   rÒ   r   r  rá   r  r  rÕ   r*   r[   rÖ   )r6   r]   rØ   Z	lang_attrr7   r7   r8   Útest_5027_2à  s"   


ÿÿzXmlgenTest.test_5027_2c                 C   s(   |   ¡ }dd„ }||ƒ |  |j¡ d S )Nc                 S   s    t | ƒ}| ¡  | di ¡ d S )NrF   )r   rÒ   rÓ   )ÚoutrØ   r7   r7   r8   Úfuncþ  s   z+XmlgenTest.test_no_close_file.<locals>.func)rÑ   ÚassertFalserx   )r6   r]   r   r7   r7   r8   Ú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*   r[   rÖ   r.   r×   r7   r7   r8   Útest_xmlgen_fragment  s   



ÿzXmlgenTest.test_xmlgen_fragmentN)rA   rB   rC   rÙ   rÜ   râ   rå   rè   ré   rî   rò   rô   rù   rú   rû   r  r  r  r  r  r  r  r  r  r  r"  r%  r7   r7   r7   r8   rÎ   ³  s2    

	rÎ   c                   @   s   e Zd ZeZddd„ZdZdS )ÚStringXmlgenTestrb   c                 C   s   d||f S rD   r7   ©r6   rF   rG   r7   r7   r8   rÖ     ó   zStringXmlgenTest.xmlN©rb   )rA   rB   rC   r   rÑ   rÖ   rô   r7   r7   r7   r8   r&    s    
r&  c                   @   s   e Zd ZeZddd„ZdS )ÚBytesXmlgenTestrb   c                 C   s   d||f   |d¡S )NrE   rI   ©rJ   r'  r7   r7   r8   rÖ     ó
   ÿÿzBytesXmlgenTest.xmlNr)  )rA   rB   rC   r   rÑ   rÖ   r7   r7   r7   r8   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 ©NTr7   rV   r7   r7   r8   Úseekable(  ó   z!WriterXmlgenTest.ioclass.seekablec                 C   s   t | ƒS rT   )r.   rV   r7   r7   r8   Útell+  s   zWriterXmlgenTest.ioclass.tellc                 C   s
   d  | ¡S )Nó    )ÚjoinrV   r7   r7   r8   r[   /  ó   
z!WriterXmlgenTest.ioclass.getvalueN)
rA   rB   rC   r0   ÚappendrP   rx   r0  r2  r[   r7   r7   r7   r8   rÑ   $  s    rÑ   N)rA   rB   rC   r0   rÑ   r7   r7   r7   r8   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ó   rI   )r   ÚcodecsÚ	getwriterr[   )r6   ÚrawÚwriterr7   r7   r8   rÑ   3  s   zStreamWriterXmlgenTest.ioclassrb   c                 C   ó   d||f   dd¡S ©NrE   ró   rI   r+  r'  r7   r7   r8   rÖ   9  r,  zStreamWriterXmlgenTest.xmlNr)  )rA   rB   rC   rÑ   rÖ   r7   r7   r7   r8   r7  2  s    r7  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 )
NrM   ró   rI   r   )rG   rN   Ú	bufferingc                      s   ˆ  ¡  t ˆ j¡ d S rT   )r·   r   rU   Úfnamer7   ©r6   r;  r7   r8   ÚcleanupC  s   z5StreamReaderWriterXmlgenTest.ioclass.<locals>.cleanupc                     s@   ˆ   ¡  tˆ jdƒ} |  ¡ W  d   ƒ S 1 sw   Y  d S ©Nrl   )r·   rO   Únamer¶   )rQ   )r;  r7   r8   r[   G  s   $ÿz6StreamReaderWriterXmlgenTest.ioclass.<locals>.getvalue)r8  rO   r@  Ú
addCleanupr[   )r6   rB  r[   r7   rA  r8   rÑ   @  s   ÿ
z$StreamReaderWriterXmlgenTest.ioclassrb   c                 C   r<  r=  r+  r'  r7   r7   r8   rÖ   O  r,  z StreamReaderWriterXmlgenTest.xmlNr)  )rA   rB   rC   r   r   r@  rÑ   rÖ   r7   r7   r7   r8   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 )NrF   r¹   rõ   s   <doc>content </doc>)r   r   r   r  rÒ   rÓ   rá   rø   rÔ   rÕ   r*   r[   Ústart)r6   r]   rØ   Úfilterr7   r7   r8   Útest_filter_basicW  s   



z#XMLFilterBaseTest.test_filter_basicN)rA   rB   rC   rJ  r7   r7   r7   r8   rG  V  s    rG  rl   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d3d4„ Zd5d6„ Zed7d8„ ƒZ d9S ):ÚExpatReaderTestc                 C   sf   t ƒ }tƒ }t|ƒ}| |¡ ttdƒ}| |¡ W d   ƒ n1 s$w   Y  |  | ¡ t	¡ d S rC  ©
r   r   r   r  rO   ÚTEST_XMLFILErY   r*   r[   Úxml_test_out©r6   r  r]   ÚxmlgenrQ   r7   r7   r8   Útest_expat_binary_files  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rtrb   rg   rL  rO  r7   r7   r8   Ú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 rC  )r   ÚTESTFN_UNICODEÚshutilÚcopyfilerM  rE  rU   r   r   r   r  rY   rO   r*   r[   rN  ©r6   r@  r  r]   rP  r7   r7   r8   Ú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 rC  )ÚosÚfsencoderM  r   r   r   r  rO   rY   r*   r[   rN  )r6   r@  r  r]   rP  rQ   r7   r7   r8   Ú!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 )Nrl   F)Úclosefd)r   r   r   r  rO   rM  ÚfilenorY   r*   r[   rN  )r6   r  r]   rP  rQ   Úf2r7   r7   r8   Ú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 rT   )Ú
_notationsÚ	_entitiesrV   r7   r7   r8   Ú__init__´  ó   
z'ExpatReaderTest.TestDTDHandler.__init__c                 C   s   | j  |||f¡ d S rT   )r`  r6  )r6   rD  ÚpublicIdÚsystemIdr7   r7   r8   ÚnotationDecl¸  ó   z+ExpatReaderTest.TestDTDHandler.notationDeclc                 C   s   | j  ||||f¡ d S rT   )ra  r6  )r6   rD  rd  re  Zndatar7   r7   r8   ÚunparsedEntityDecl»  s   z1ExpatReaderTest.TestDTDHandler.unparsedEntityDeclN)rA   rB   rC   rb  rf  rh  r7   r7   r7   r8   ÚTestDTDHandler²  s    ri  c                   @   ó   e Zd Zdd„ Zdd„ ZdS )z"ExpatReaderTest.TestEntityRecorderc                 C   s
   g | _ d S rT   )ÚentitiesrV   r7   r7   r8   rb  À  r5  z+ExpatReaderTest.TestEntityRecorder.__init__c                 C   s.   | j  ||f¡ tƒ }| |¡ | |¡ |S rT   )rk  r6  r   ZsetPublicIdÚsetSystemId)r6   rd  re  Úsourcer7   r7   r8   ÚresolveEntityÃ  s
   

z0ExpatReaderTest.TestEntityRecorder.resolveEntityN)rA   rB   rC   rb  rn  r7   r7   r7   r8   ÚTestEntityRecorder¿  s    ro  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.gifrr  )r   ri  ZsetDTDHandlerÚfeedr·   r*   r`  ra  )r6   r  Úhandlerr7   r7   r8   Ú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)rE  ÚurllibZrequestÚ
urlcleanupr   r  r   ro  ÚsetEntityResolverr#   r   rs  r*   rk  ©r6   r  Zresolverr7   r7   r8   Útest_expat_external_dtd_enabledÚ  s   
ÿÿÿz/ExpatReaderTest.test_expat_external_dtd_enabledc                 C   sF   t ƒ }|  ¡ }| |¡ | d¡ | d¡ | ¡  |  |jg ¡ d S )Nrv  z<doc />)r   ro  ry  rs  r·   r*   rk  rz  r7   r7   r8   Útest_expat_external_dtd_defaultë  s   
ÿ
z/ExpatReaderTest.test_expat_external_dtd_defaultc                   @   rF  )z"ExpatReaderTest.TestEntityResolverc                 C   s   t ƒ }| tdƒ¡ |S )Ns	   <entity/>)r   rp   r   )r6   rd  re  Úinpsrcr7   r7   r8   rn  û  s   z0ExpatReaderTest.TestEntityResolver.resolveEntityN)rA   rB   rC   rn  r7   r7   r7   r8   ÚTestEntityResolverù  s    r~  c                 C   s|   t ƒ }| td¡ | |  ¡ ¡ tƒ }| t|ƒ¡ | d¡ | d¡ | d¡ | d¡ | 	¡  |  
| ¡ td ¡ d S )NTrp  ú#  <!ENTITY test SYSTEM "whatever">
rq  ú<doc>&test;</doc>s   <doc><entity></entity></doc>)r   r  r   ry  r~  r   r  r   rs  r·   r*   r[   rH  ©r6   r  r]   r7   r7   r8   Ú!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 )NFrp  r  rq  r€  ó   <doc></doc>)r   r*   Z
getFeaturer   ry  r~  r   r  r   rs  r·   r[   rH  r  r7   r7   r8   Ú!test_expat_entityresolver_default  s   




ÿz1ExpatReaderTest.test_expat_entityresolver_defaultc                   @   rj  )zExpatReaderTest.AttrGathererc                 C   s
   || _ d S rT   ©Ú_attrs)r6   rD  r!   r7   r7   r8   rÓ   $  r5  z)ExpatReaderTest.AttrGatherer.startElementc                 C   s
   || _ d S rT   r…  )r6   rD  Zqnamer!   r7   r7   r8   r  '  r5  z+ExpatReaderTest.AttrGatherer.startElementNSN)rA   rB   rC   rÓ   r  r7   r7   r7   r8   ÚAttrGatherer"  s    r‡  c                 C   ó:   t ƒ }|  ¡ }| |¡ | d¡ | ¡  |  |j¡ d S )NrÛ   )r   r‡  r  rs  r·   r9   r†  ©r6   r  Úgatherr7   r7   r8   Útest_expat_attrs_empty*  ó   

z&ExpatReaderTest.test_expat_attrs_emptyc                 C   rˆ  )Nz<doc attr='val'/>)r   r‡  r  rs  r·   r@   r†  r‰  r7   r7   r8   Útest_expat_attrs_wattr4  rŒ  z&ExpatReaderTest.test_expat_attrs_wattrc                 C   s<   t dƒ}|  ¡ }| |¡ | d¡ | ¡  |  |j¡ d S )Nr=   rÛ   )r   r‡  r  rs  r·   r<   r†  r‰  r7   r7   r8   Ú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    r:   r>   r"   )r   r‡  r  rs  r;   r·   r†  r*   r+   r,   rw   r-   r.   r?   r2   r0   r3   r4   r%   )r6   r  rŠ  r!   r7   r7   r8   Útest_expat_nsattrs_wattrH  s&   
ÿz(ExpatReaderTest.test_expat_nsattrs_wattrc                 C   s<   t ƒ }tƒ }t|ƒ}| |¡ | t¡ |  | ¡ t¡ d S rT   )	r   r   r   r  rY   rM  r*   r[   rN  ©r6   r  r]   rP  r7   r7   r8   Útest_expat_inpsource_filenamea  s   

z-ExpatReaderTest.test_expat_inpsource_filenamec                 C   s@   t ƒ }tƒ }t|ƒ}| |¡ | ttƒ¡ |  | ¡ t	¡ d S rT   )
r   r   r   r  rY   r   rM  r*   r[   rN  r  r7   r7   r8   Útest_expat_inpsource_sysidk  s   
z*ExpatReaderTest.test_expat_inpsource_sysidc                 C   s`   t j}t t|¡ |  t j|¡ tƒ }tƒ }t	|ƒ}| 
|¡ | t|ƒ¡ |  | ¡ t¡ d S rT   )r   rT  rU  rV  rM  rE  rU   r   r   r   r  rY   r   r*   r[   rN  rW  r7   r7   r8   Ú#test_expat_inpsource_sysid_nonasciiu  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 rC  )r   r   r   r  r   rO   rM  rp   rY   r*   r[   rN  ©r6   r  r]   rP  r}  rQ   r7   r7   r8   Ú 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 rR  )r   r   r   r  r   rO   rM  r¼   rY   r*   r[   rN  r”  r7   r7   r8   Ú%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  rs  r·   r*   r[   rH  ©r6   r]   rP  r  r7   r7   r8   Ú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  rs  Úresetr·   r*   r[   rH  r™  r7   r7   r8   Útest_expat_incremental_reset¬  s   






z,ExpatReaderTest.test_expat_incremental_resetc                 C   sn   t ƒ }t|ƒ}tƒ }| |¡ | d¡ | d¡ | ¡  |  | ¡ d ¡ |  | ¡ d ¡ |  | 	¡ d¡ d S )Nr—  r˜  r=   )
r   r   r   r  rs  r·   r*   ÚgetSystemIdÚgetPublicIdÚgetLineNumberr™  r7   r7   r8   Útest_expat_locator_noinfoÃ  s   


z)ExpatReaderTest.test_expat_locator_noinfoc                 C   sL   t ƒ }t|ƒ}tƒ }| |¡ | t¡ |  | ¡ t¡ |  | ¡ d ¡ d S rT   )	r   r   r   r  rY   rM  r*   rž  rŸ  r™  r7   r7   r8   Ú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 rT   )r   rT  rU  rV  rM  rE  rU   r   r   r   r  rY   r*   rž  rŸ  )r6   r@  r]   rP  r  r7   r7   r8   Ú$test_expat_locator_withinfo_nonasciiÛ  s   

z4ExpatReaderTest.test_expat_locator_withinfo_nonasciiN)!rA   rB   rC   rQ  rS  Úrequires_nonascii_filenamesrX  r[  r_  ri  ro  ru  r{  r|  r~  r‚  r„  r   r‡  r‹  r  rŽ  r  r‘  r’  r“  r•  r–  rš  r  r¡  r¢  r£  r7   r7   r7   r8   rK  o  s@    







rK  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   rp   r   rl  rY   Zfailr   r*   rž  )r6   r  rm  rD  rì   r7   r7   r8   Ú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   rY   r   r*   ÚgetColumnNumberr   )r6   r  r7   r7   r8   Útest_expat_incompleteÿ  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   ÚDummyLocatorrV   r7   r7   r8   Útest_sax_parse_exception_str  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 rT   )Ú_linenoÚ_colno)r6   ÚlinenoÚcolnor7   r7   r8   rb    rc  z(ErrorReportingTest.DummyLocator.__init__c                 C   r.  )NZpubidr7   rV   r7   r7   r8   rŸ    r1  z+ErrorReportingTest.DummyLocator.getPublicIdc                 C   r.  )NZsysidr7   rV   r7   r7   r8   rž     r1  z+ErrorReportingTest.DummyLocator.getSystemIdc                 C   ó   | j S rT   )r®  rV   r7   r7   r8   r   #  ó   z-ErrorReportingTest.DummyLocator.getLineNumberc                 C   r²  rT   )r¯  rV   r7   r7   r8   r¨  &  r³  z/ErrorReportingTest.DummyLocator.getColumnNumberN)rA   rB   rC   rb  rŸ  rž  r   r¨  r7   r7   r7   r8   r¬    s    r¬  N)rA   rB   rC   r¦  r©  r­  r¬  r7   r7   r7   r8   r¥  ñ  s
    r¥  c                   @   r€   )
ÚXmlReaderTestc                 C   s   |   ti ƒ¡ d S rT   )r9   r   rV   r7   r7   r8   Útest_attrs_empty2  ó   zXmlReaderTest.test_attrs_emptyc                 C   s   |   tddiƒ¡ d S )Nr    r>   )r@   r   rV   r7   r7   r8   Útest_attrs_wattr5  rg  zXmlReaderTest.test_attrs_wattrc                 C   s   |   ti i ƒ¡ d S rT   )r<   r   rV   r7   r7   r8   Útest_nsattrs_empty8  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>   r:   r=   r"   )r   r;   r*   r+   r,   r-   r.   r?   r0   r1   r2   r3   r4   r%   r&   r'   r(   r5   r7   r7   r8   Útest_nsattrs_wattr;  s$   
ÿz XmlReaderTest.test_nsattrs_wattrN)rA   rB   rC   rµ  r·  r¸  r¹  r7   r7   r7   r8   r´  /  s
    r´  c                   @   rj  )Ú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nbsprm  Ú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.">
é   rq  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_datarP   ÚformatÚseekÚversionrG   Z
standaloneÚdoctypeÚpublicIDÚsystemIDÚ
end_of_dtdÚcommentsrV   r7   r7   r8   r¯   Q  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 rT   ©Úsuperrb  Útest_harness©r6   rË  rs   Úkwargs©Ú	__class__r7   r8   rb  ‰  ó   
zELexicalHandlerTest.test_handlers.<locals>.TestLexicalHandler.__init__c                 S   s   || j _|| j _|| j _d S rT   )rË  rÃ  rÄ  rÅ  )r6   rÃ  rÄ  rÅ  r7   r7   r8   ÚstartDTD  s   zELexicalHandlerTest.test_handlers.<locals>.TestLexicalHandler.startDTDc                 S   ó   d| j _d S r/  )rË  rÆ  rV   r7   r7   r8   ÚendDTD’  r(  zCLexicalHandlerTest.test_handlers.<locals>.TestLexicalHandler.endDTDc                 S   s   | j j |¡ d S rT   )rË  rÇ  r6  )r6   r›  r7   r7   r8   Úcomment•  r¶  zDLexicalHandlerTest.test_handlers.<locals>.TestLexicalHandler.comment)rA   rB   rC   rb  rÑ  rÓ  rÔ  Ú__classcell__r7   r7   rÎ  r8   ÚTestLexicalHandlerˆ  s
    rÖ  ú-http://xml.org/sax/properties/lexical-handlerrõ   r   )r   r   r  r  r   ÚsetPropertyr   r¼   r¿  rY   r*   rÃ  r½  r½   rÄ  rÅ  rw   rÆ  r.   rÇ  r¾  )r6   rÖ  rm  r7   r7   r8   Útest_handlers‡  s$   þÿ$z LexicalHandlerTest.test_handlersN©rA   rB   rC   r¯   rÙ  r7   r7   r7   r8   rº  P  s    6rº  c                   @   rj  )Ú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_charsr6  Ú
char_indexr   r¿  rP   rÁ  ZchardataÚin_cdatarV   r7   r7   r8   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È  rT   rÉ  rÌ  rÎ  r7   r8   rb  Á  rÐ  zCCDATAHandlerTest.test_handlers.<locals>.TestLexicalHandler.__init__c                 S   rÒ  r/  ©rË  rß  rV   r7   r7   r8   Ú
startCDATAÅ  r(  zECDATAHandlerTest.test_handlers.<locals>.TestLexicalHandler.startCDATAc                 S   rÒ  )NFrà  rV   r7   r7   r8   ÚendCDATAÈ  r(  zCCDATAHandlerTest.test_handlers.<locals>.TestLexicalHandler.endCDATA)rA   rB   rC   rb  rá  râ  rÕ  r7   r7   rÎ  r8   rÖ  À  s    rÖ  c                       s$   e Zd Z‡ fdd„Zdd„ Z‡  ZS )z7CDATAHandlerTest.test_handlers.<locals>.TestCharHandlerc                    rÈ  rT   rÉ  rÌ  rÎ  r7   r8   rb  Ì  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ß  )r6   r¹   ÚhÚtr7   r7   r8   rá   Ð  s   ûzBCDATAHandlerTest.test_handlers.<locals>.TestCharHandler.characters)rA   rB   rC   rb  rá   rÕ  r7   r7   rÎ  r8   ÚTestCharHandlerË  s    rå  r×  r¼  )r   r   r   r  r  rØ  r   r¼   r¿  rY   r!  rß  r*   rÞ  )r6   rÖ  rå  rm  r7   r7   r8   rÙ  ¿  s   þzCDATAHandlerTest.test_handlersNrÚ  r7   r7   r7   r8   rÛ  ©  s    rÛ  c                   C   s&   t ttttttttt	t
ttttƒ d S rT   )r   r   rS   r‘   r¬   r&  r*  r-  r7  r>  rK  r¥  r´  rº  rÛ  r7   r7   r7   r8   Ú	test_mainå  s   óræ  Ú__main__rT   ).)WrZ   r   r   r   r   r   Zunittestr   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   r8  Zos.pathrY  rU  ÚsysZurllib.errorr   Zurllib.requestrw  Ztest.supportr   r   r   Ztest.support.os_helperr   r   rM  ZTEST_XMLFILE_OUTrJ   ÚUnicodeEncodeErrorZsupports_nonascii_filenamesÚpathÚsupports_unicode_filenamesrT  ÚgetfilesystemencodingÚUnicodeErrorÚ	TypeErrorZ
skipUnlessr¤  r;   ZTestCaser   rH   rL   rR   rS   r   r‘   r¬   rÎ   r&  r*  r-  r7  r>  rH  rG  rO   rQ   r¶   rN  rK  r¥  r´  rº  rÛ  ræ  rA   r7   r7   r7   r8   Ú<module>   s–   

þ 

ÿýþ
5

|54S  c
ÿ   >!Y<

ÿ