U
    ¾mœd¼Ú  ã                   @  sj  d dl mZ d dlmZm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 d dlmZ d dlZd dlZd d	lmZ d d
lmZ d dlmZmZ d dlm  mZ d dlZd dlm Z m!Z!m"Z" d dl#m$Z% d dl&m'Z'm(Z( d dl)m*Z* d dl+m,Z, e!dddgdddgdej-dgdœƒZ.dZ/dZ0e!ddddddœd d!d!d!d!dœd"d"d"d"d"dœd d d d d dœd#d#d#d#d#dœd$d%d&d'd(dœd)œƒZ1ej2d*d+gd,�d-d.„ ƒZ3ej2ej4d/e 5d/¡d0�d1gd,�d2d3„ ƒZ6d4d5„ Z7d6d7„ Z8e 5d/¡d8d9„ ƒZ9ej:j;ej:j<e%j;d:d;d<�d=d>„ ƒƒƒZ=d?d@„ Z>dAdB„ Z?dCdD„ Z@dEdF„ ZAdGdH„ ZBdIdJ„ ZCdKdL„ ZDe 5d/¡ej: EdMdNdOg¡dPdQ„ ƒƒZFej: EdMdNdOg¡dRdS„ ƒZGe 5d/¡dTdU„ ƒZHdVdW„ ZIej:j;e%j;dXd;d<�e 5d/¡dYdZ„ ƒƒƒZJej:j;e%j;d[d;d<�d\d]„ ƒƒZKe 5d/¡d^d_„ ƒZLd`da„ ZMe 5d/¡dbdc„ ƒZNddde„ ZOdfdg„ ZPe 5d/¡dhdi„ ƒZQe 5d/¡djdk„ ƒZRdldm„ ZSdndo„ ZTe 5d/¡dpdq„ ƒZUe 5d/¡ej: EdrdNdg¡dsdt„ ƒƒZVdudv„ ZWdwdx„ ZXdydz„ ZYd{d|„ ZZd}d~„ Z[dd€„ Z\e 5d/¡d�d‚„ ƒZ]dƒd„„ Z^d…d†„ Z_d‡dˆ„ Z`d‰dŠ„ Zad‹dŒ„ Zbd�dŽ„ Zcd�d�„ Zdd‘d’„ Zed“d”„ Zfd•d–„ Zge 5d/¡d—d˜„ ƒZhe 5d/¡d™dš„ ƒZid›dœ„ Zje kd/¡d�dž„ ƒZldŸd „ Zme 5d/¡d¡d¢„ ƒZne 5d/¡d£d¤„ ƒZoe 5d/¡d¥d¦„ ƒZpe 5d/¡d§d¨„ ƒZqe 5d/¡d©dª„ ƒZre 5d/¡d«d¬„ ƒZse 5d/¡d­d®„ ƒZte 5d/¡d¯d°„ ƒZue 5d/¡d±d²„ ƒZve 5d/¡d³d´„ ƒZwe 5d/¡dµd¶„ ƒZxe 5d/¡d·d¸„ ƒZye 5d/¡ej: EdMdNdOg¡d¹dº„ ƒƒZzd»d¼„ Z{d½d¾„ Z|d¿dÀ„ Z}ej:j;e%j;dXd;d<�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‡ej:j;e 5d/¡e%j;dÕd;d<�dÖd×„ ƒƒƒZˆdØdÙ„ Z‰dÚdÛ„ ZŠdÜdÝ„ Z‹ej:j;e 5dÞ¡e 5d/¡ej:jŒeƒ dßdà�e%j;dádâ„ ƒƒƒƒƒZ�dãdä„ ZŽdådæ„ Z�dS )çé    )Úannotations)ÚBytesIOÚStringIO)Ú	LZMAErrorN)Ú	ReadError)Ú	HTTPError)Ú
ParseError)Ú
BadZipFile)Úis_ci_environment)Úimport_optional_dependency)ÚEmptyDataErrorÚParserError)ÚNAÚ	DataFrameÚSeries)ÚArrowStringArrayÚStringArray)Ú
get_handle)Úread_xmlÚsquareÚcircleÚtriangleéh  é´   é   é   ©ÚshapeÚdegreesÚsidesa[  <?xml version='1.0' encoding='utf-8'?>
<data xmlns="http://example.com">
  <row>
    <shape>square</shape>
    <degrees>360</degrees>
    <sides>4</sides>
  </row>
  <row>
    <shape>circle</shape>
    <degrees>360</degrees>
    <sides/>
  </row>
  <row>
    <shape>triangle</shape>
    <degrees>180</degrees>
    <sides>3</sides>
  </row>
</data>aÇ  <?xml version='1.0' encoding='utf-8'?>
<doc:data xmlns:doc="http://example.com">
  <doc:row>
    <doc:shape>square</doc:shape>
    <doc:degrees>360</doc:degrees>
    <doc:sides>4.0</doc:sides>
  </doc:row>
  <doc:row>
    <doc:shape>circle</doc:shape>
    <doc:degrees>360</doc:degrees>
    <doc:sides/>
  </doc:row>
  <doc:row>
    <doc:shape>triangle</doc:shape>
    <doc:degrees>180</doc:degrees>
    <doc:sides>3.0</doc:sides>
  </doc:row>
</doc:data>ZID_00001ZID_00002ZID_00003ZID_00004ZID_00005©r   é   é   r   r   zBlue Line (Forest Park)zRed, Purple Linez#LineStyle01ZclampedToGroundzæ-87.77678526964958,41.8708863930319,0 -87.77826234150609,41.87097820122218,0 -87.78251583439344,41.87130129991005,0 -87.78418294588424,41.87145055520308,0 -87.7872369165933,41.8717239119163,0 -87.79160214925886,41.87210797280065,0a\  -87.65758750947528,41.96427269188822,0 -87.65802133507393,41.96581929055245,0 -87.65819033925305,41.96621846093642,0 -87.6583189819129,41.96650362897086,0 -87.65835858701473,41.96669002089185,0 -87.65838428411853,41.96688150295095,0 -87.65842208882658,41.96745896091846,0 -87.65846556843937,41.9683761425439,0 -87.65849296214573,41.96913893870342,0a”  -87.65492939166126,41.95377494531437,0 -87.65557043199591,41.95376544118533,0 -87.65606302030132,41.95376391658746,0 -87.65623502146268,41.95377379126367,0 -87.65634748981634,41.95380103566435,0 -87.65646537904269,41.95387703994676,0 -87.65656532461145,41.95396622645799,0 -87.65664760856414,41.95404201996044,0 -87.65671750555913,41.95416647054043,0 -87.65673983607117,41.95429949810849,0 -87.65673866475777,41.95441024240925,0 -87.6567690255541,41.95490657227902,0 -87.65683672482363,41.95692259283837,0 -87.6568900886376,41.95861070983142,0 -87.65699865558875,41.96181418669004,0 -87.65756347177603,41.96397045777844,0 -87.65758750947528,41.96427269188822,0ah  -87.65362593118043,41.94742799535678,0 -87.65363554415794,41.94819886386848,0 -87.6536456393239,41.95059994675451,0 -87.65365831235026,41.95108288489359,0 -87.6536604873874,41.9519954657554,0 -87.65362592053201,41.95245597302328,0 -87.65367158496069,41.95311153649393,0 -87.65368468595476,41.9533202828916,0 -87.65369271253692,41.95343095587119,0 -87.65373335834569,41.95351536301472,0 -87.65378605844126,41.95358212680591,0 -87.65385067928185,41.95364452823767,0 -87.6539390793817,41.95370263886964,0 -87.6540786298351,41.95373403675265,0 -87.65430648647626,41.9537535411832,0 -87.65492939166126,41.95377494531437,0a   -87.65345391792157,41.94217681262115,0 -87.65342448305786,41.94237224420864,0 -87.65339745703922,41.94268217746244,0 -87.65337753982941,41.94288140770284,0 -87.65336256753105,41.94317369618263,0 -87.65338799707138,41.94357253961736,0 -87.65340240886648,41.94389158188269,0 -87.65341837392448,41.94406444407721,0 -87.65342275247338,41.94421065714904,0 -87.65347469646018,41.94434829382345,0 -87.65351486483024,41.94447699917548,0 -87.65353483605053,41.9453896864472,0 -87.65361975532807,41.94689193720703,0 -87.65362593118043,41.94742799535678,0)ÚidÚnameÚstyleUrlÚextrudeÚaltitudeModeÚcoordinatesÚrbÚr)Úparamsc                 C  s   | j S ©N©Úparam©Úrequest© r1   úU/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/pandas/tests/io/xml/test_xml.pyÚmodeú   s    r3   Úlxml)ZmarksÚetreec                 C  s   | j S r,   r-   r/   r1   r1   r2   Úparserÿ   s    r6   c              
   K  sL   t  ¡ �:}t|dƒ�}| | ¡ W 5 Q R X t|f|ŽW  5 Q R £ S Q R X d S )NÚw)ÚtmÚensure_cleanÚopenÚwriter   )ÚdataÚkwargsÚpathÚfr1   r1   r2   Úread_xml_iterparse  s    
r@   c                 K  sx   t | d|d��`}t ¡ �L}t|dƒ�}| |j ¡ ¡ W 5 Q R X t|f|ŽW  5 Q R £ W  5 Q R £ S Q R X W 5 Q R X d S )Nr*   )Úcompressionr7   )r   r8   r9   r:   r;   ÚhandleÚreadr   )Ú	comp_pathÚcompression_onlyr=   Zhandlesr>   r?   r1   r1   r2   Úread_xml_iterparse_comp  s
    
rF   c              	   C  s†   | ddddƒ}t |dd�}t |dd�}t |ddd	d
dddgid�}t |ddd	d
dddgid�}t ||¡ t ||¡ t ||¡ d S )NÚior<   Úxmlú	books.xmlr4   ©r6   r5   ÚbookÚcategoryÚtitleÚyearÚauthorÚprice©r6   Ú	iterparse©r   r8   Úassert_frame_equal)ÚdatapathÚfilenameZdf_file_lxmlZdf_file_etreeÚdf_iter_lxmlÚdf_iter_etreer1   r1   r2   Útest_parser_consistency_file  s     ýýrY   úOhttps://data.cityofchicago.org/api/views/8pix-ypme/rows.xml?accessType=DOWNLOADT)ÚurlZcheck_before_testc                 C  sŒ   d}t jdd��f}t|d| d�j|dd� t|| d�}t|| d	d
ddddddddddddddddddddgid�}W 5 Q R X t  ||¡ d S ) NrZ   zcta.xml©rV   z
.//row/row©Úxpathr6   F©ÚindexrJ   ÚrowZ_idÚ_uuidZ	_positionÚ_addressZstop_idZdirection_idZ	stop_nameZstation_nameZstation_descriptive_nameZmap_idÚadaÚredÚblueÚgZbrnÚpZpexpÚyZpnkÚoÚlocationrQ   )r8   r9   r   Úto_xmlrT   )r6   r[   r>   Údf_xpathÚdf_iterr1   r1   r2   Útest_parser_consistency_url,  sD    ÿëÿýro   c              	   C  sr   | ddddƒ}t ||ƒ�}t||d�}W 5 Q R X tdddgd	d
dgdddgdddgdddgdœƒ}t ||¡ d S ©NrG   r<   rH   rI   rJ   ÚcookingÚchildrenÚwebúEveryday ItalianúHarry PotterúLearning XMLúGiada De LaurentiisúJ K. RowlingúErik T. RayéÕ  éÓ  ç      >@ç=
×£pý=@çš™™™™ùC@©rL   rM   rO   rN   rP   )r:   r   r   r8   rT   )rU   r6   r3   rV   r?   Údf_fileÚdf_expectedr1   r1   r2   Útest_file_like`  s    ûÿ
r‚   c              	   C  s�   | ddddƒ}t ||ƒ�}| ¡ }W 5 Q R X tt|tƒr@t|ƒnt|ƒ|d�}tdddgd	d
dgdddgdddgdddgdœƒ}t 	||¡ d S rp   )
r:   rC   r   Ú
isinstanceÚbytesr   r   r   r8   rT   )rU   r6   r3   rV   r?   Úxml_objZdf_ior�   r1   r1   r2   Útest_file_ior  s     þûÿ
r†   c              	   C  sz   | ddddƒ}t ||ƒ�}| ¡ }W 5 Q R X t||d�}tdddgd	d
dgdddgdddgdddgdœƒ}t ||¡ d S rp   )r:   rC   r   r   r8   rT   ©rU   r6   r3   rV   r?   r…   Údf_strr�   r1   r1   r2   Ú test_file_buffered_reader_string‰  s    ûÿ
r‰   c              	   C  s‚   | ddddƒ}t ||ƒ�}t|ƒ | ¡ }W 5 Q R X t||d�}tdddgd	d
dgdddgdddgdddgdœƒ}t ||¡ d S rp   )r:   ÚnextrC   r   r   r8   rT   r‡   r1   r1   r2   Ú,test_file_buffered_reader_no_xml_declaration�  s    ûÿ
r‹   c                 C  s4   d}t || d�}tdddœdgd�}t ||¡ d S )Nõ<   <ä¸­æ–‡æ¨™ç±¤><row><c1>1</c1><c2>2</c2></row></ä¸­æ–‡æ¨™ç±¤>rJ   r!   r"   )Úc1Úc2r   r_   ©r   r   r8   rT   )r6   Útxtrˆ   r�   r1   r1   r2   Útest_string_charset²  s    r‘   c                 C  sP   | ddddƒ}t | |ƒ|d�}tdddgd	d d
gd dd gdœƒ}t ||¡ d S )NrG   r<   rH   zdoc_ch_utf.xmlrJ   uP   å•�  è‹¥ç®‡æ˜¯é‚ªè€Œè¨€ç ´é‚ª ä½•è€…æ˜¯æ­£è€Œé�“(Sorry, this is Big5 only)ç”³æ­£u;   å•� æ—¢ç ´æœ‰å¾—ç”³ç„¡å¾— äº¦æ‡‰ä½†ç ´æ€§åŸ·ç”³å�‡å��ä»¥ä¸�uO   å•� æ—¢ç ´æ€§ç”³å�‡ äº¦æ‡‰ä½†ç ´æœ‰ç”³ç„¡ è‹¥æœ‰ç„¡å…©æ´— äº¦æ‡‰æ€§å�‡é›™ç ´è€¶uw   ç­”  é‚ªæ—¢ç„¡é‡� æ­£äº¦å¤šé€”  å¤§ç•¥ç‚ºè¨€ä¸�å‡ºäºŒç¨® è¬‚æœ‰å¾—èˆ‡ç„¡å¾— æœ‰å¾—æ˜¯é‚ªé ˆç ´ ç„¡å¾—æ˜¯æ­£é ˆç”³
		æ•…uL   ç­”  ä¸�ä¾‹  æœ‰ç„¡çš†æ˜¯æ€§ æ‰€ä»¥é ˆé›™ç ´ æ—¢åˆ†æ€§å�‡ç•° æ•…æœ‰ç ´ä¸�ç ´uV   ç­” æ€§åŸ·æ˜¯æœ‰å¾— å�‡å��æ˜¯ç„¡å¾—  ä»Šç ´æœ‰å¾—ç”³ç„¡å¾— å�³æ˜¯ç ´æ€§åŸ·ç”³å�‡å��ä¹Ÿ)u   å•�u   ç­”Úar�   )rU   r6   Úxml_filer€   r�   r1   r1   r2   Útest_file_charset¼  s    ýýõÿr”   c              	   C  sF   | ddddƒ}t |dƒ�$}tt| ¡ ƒ|d� |jr8t‚W 5 Q R X d S )NrG   r<   rH   rI   r)   rJ   )r:   r   r   rC   ÚclosedÚAssertionError)rU   r6   r“   r?   r1   r1   r2   Útest_file_handle_closeÔ  s    r—   ÚvalÚ ó    c              	   C  sD   ddl m} d ddg¡}tj||d�� t| dd� W 5 Q R X d S )	Nr   ©ÚXMLSyntaxErrorú|zDocument is emptyzNone \(line 0\)©Úmatchr4   rJ   )Ú
lxml.etreerœ   ÚjoinÚpytestÚraisesr   )r˜   rœ   Úmsgr1   r1   r2   Útest_empty_string_lxmlÝ  s    ýÿr¥   c              	   C  s*   t jtdd�� t| dd� W 5 Q R X d S )Nzno element foundrž   r5   rJ   )r¢   r£   r   r   )r˜   r1   r1   r2   Útest_empty_string_etreeí  s    r¦   c               	   C  sF   ddl m}  tj ddd¡}tj| dd�� t|dd	� W 5 Q R X d S )
Nr   r›   r<   ÚhtmlrI   ú!Start tag expected, '<' not foundrž   r4   rJ   ©r    rœ   Úosr>   r¡   r¢   r£   r   )rœ   rV   r1   r1   r2   Útest_wrong_file_path_lxmló  s    þr«   c               	   C  s:   t j ddd¡} tjtdd�� t| dd� W 5 Q R X d S )Nr<   r§   rI   znot well-formedrž   r5   rJ   )rª   r>   r¡   r¢   r£   r   r   r\   r1   r1   r2   Útest_wrong_file_path_etree   s    þr¬   ú'https://www.w3schools.com/xml/books.xmlc               	   C  sZ   d} t | dd�}tdddgddd	gd
ddgdddgdddgd d dgdœƒ}t ||¡ d S )Nr­   ú.//book[count(*)=4]©r^   rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   r|   r}   r~   Z	paperback)rL   rM   rO   rN   rP   Zcoverr�   )r[   Zdf_urlr�   r1   r1   r2   Útest_url
  s    úÿr°   ú(https://www.w3schools.com/xml/python.xmlc              	   C  s0   t jtdd�� d}t|d| d� W 5 Q R X d S )NzHTTP Error 404: Not Foundrž   r±   r®   r]   )r¢   r£   r   r   ©r6   r[   r1   r1   r2   Útest_wrong_url"  s    r³   c              	   C  s:   | ddddƒ}t jtdd�� t|ddd	� W 5 Q R X d S )
NrG   r<   rH   rI   úxpath does not return any nodesrž   z	.//pythonr4   r]   ©r¢   r£   Ú
ValueErrorr   ©rU   rV   r1   r1   r2   Útest_empty_xpath_lxml-  s    r¸   c              	   C  s:   | ddddƒ}t jtdd�� t|ddd	� W 5 Q R X d S )
NrG   r<   rH   rI   z/You have used an incorrect or unsupported XPathrž   ú	.//[book]r5   r]   ©r¢   r£   ÚSyntaxErrorr   r·   r1   r1   r2   Útest_bad_xpath_etree4  s     ÿr¼   c              	   C  sF   ddl m} | ddddƒ}tj|dd�� t|d	d
d� W 5 Q R X d S )Nr   ©ÚXPathEvalErrorrG   r<   rH   rI   zInvalid expressionrž   r¹   r4   r]   ©r    r¾   r¢   r£   r   ©rU   r¾   rV   r1   r1   r2   Útest_bad_xpath_lxml<  s    rÁ   c                 C  sn   t tdddi| d�}tt| ddddgid	�}td
ddgdddgdtdƒdgdœƒ}t ||¡ t ||¡ d S )Nú	.//ns:rowÚnsúhttp://example.com©r^   Ú
namespacesr6   ra   r   r   r   rQ   r   r   r   r   r   ç      @Únanç      @r   )r   Úxml_default_nmspr@   r   Úfloatr8   rT   ©r6   Zdf_nmsprn   r�   r1   r1   r2   Útest_default_namespaceH  s&    üýýÿrÍ   c                 C  sn   t tdddi| d�}tt| ddddgid	�}td
ddgdddgdtdƒdgdœƒ}t ||¡ t ||¡ d S )Nú
.//doc:rowÚdocrÄ   rÅ   ra   r   r   r   rQ   r   r   r   r   r   rÇ   rÈ   rÉ   r   )r   Úxml_prefix_nmspr@   r   rË   r8   rT   rÌ   r1   r1   r2   Útest_prefix_namespaceb  s&    ü  ÿýÿrÑ   c                  C  s8   t tdddidd�} t tdddidd�}t | |¡ d S )	NrÂ   rÃ   rÄ   r4   rÅ   rÎ   rÏ   r5   )r   rÊ   r8   rT   ©Údf_lxmlÚdf_etreer1   r1   r2   Ú"test_consistency_default_namespacey  s    üürÕ   c                  C  s8   t tdddidd�} t tdddidd�}t | |¡ d S )NrÎ   rÏ   rÄ   r4   rÅ   r5   )r   rÐ   r8   rT   rÒ   r1   r1   r2   Ú!test_consistency_prefix_namespaceŒ  s    üürÖ   c              	   C  s:   | ddddƒ}t jtdd�� t|d|d� W 5 Q R X d S )	NrG   r<   rH   rI   r´   rž   z.//Placemarkr]   rµ   ©rU   r6   rV   r1   r1   r2   Ú*test_missing_prefix_with_default_namespace¢  s    rØ   c              	   C  s:   | ddddƒ}t jtdd�� t|ddd	� W 5 Q R X d S )
NrG   r<   rH   úcta_rail_lines.kmlz'you used an undeclared namespace prefixrž   ú.//kml:Placemarkr5   r]   rº   r·   r1   r1   r2   Ú$test_missing_prefix_definition_etree¨  s    rÛ   c              	   C  sF   ddl m} | ddddƒ}tj|dd�� t|d	d
d� W 5 Q R X d S )Nr   r½   rG   r<   rH   rÙ   zUndefined namespace prefixrž   rÚ   r4   r]   r¿   rÀ   r1   r1   r2   Ú#test_missing_prefix_definition_lxml®  s    rÜ   Úkeyc              	   C  s2   t jtdd�� ttd| didd� W 5 Q R X d S )Nz0empty namespace prefix is not supported in XPathrž   rÚ   úhttp://www.opengis.net/kml/2.2r4   rÅ   )r¢   r£   Ú	TypeErrorr   rÊ   )rÝ   r1   r1   r2   Útest_none_namespace_prefix·  s     ÿürà   c              	   C  s„   | ddddƒ}t ||d�}t ||dddd	d
dgid�}tdddgdddgdddgdddgdddgdœƒ}t ||¡ t ||¡ d S )NrG   r<   rH   rI   rJ   rK   rL   rM   rO   rN   rP   rQ   rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   r|   r}   r~   r   r�   ©rU   r6   rV   r€   rn   r�   r1   r1   r2   Útest_file_elems_and_attrsÈ  s"    ýûÿ
râ   c                 C  s^   | ddddƒ}t |d|d�}t ||ddgid	�}tdd
ddgiƒ}t ||¡ t ||¡ d S )NrG   r<   rH   rI   T)Ú
attrs_onlyr6   rK   rL   rQ   rq   rr   rs   r�   rá   r1   r1   r2   Útest_file_only_attrsÞ  s    rä   c                 C  s|   | ddddƒ}t |d|d�}t ||ddd	d
dgid�}tdddgdddgdddgdddgdœƒ}t ||¡ t ||¡ d S )NrG   r<   rH   rI   T)Ú
elems_onlyr6   rK   rM   rO   rN   rP   rQ   rt   ru   rv   rw   rx   ry   rz   r{   r|   r}   r~   )rM   rO   rN   rP   r�   rá   r1   r1   r2   Útest_file_only_elemsè  s     ýüÿ	ræ   c              	   C  s<   | ddddƒ}t jtdd�� t|dd|d� W 5 Q R X d S )	NrG   r<   rH   rÙ   z3Either element or attributes can be parsed not bothrž   T)rå   rã   r6   rµ   r×   r1   r1   r2   Útest_elem_and_attrs_onlyý  s    þrç   c              	   C  s2   d}t jtdd�� t|dd| d� W 5 Q R X d S )NaU  
      <data>
        <row>
          <shape sides="4">square</shape>
          <degrees>360</degrees>
        </row>
        <row>
          <shape sides="0">circle</shape>
          <degrees>360</degrees>
        </row>
        <row>
          <shape sides="3">triangle</shape>
          <degrees>180</degrees>
        </row>
      </data>ú-xpath does not return any nodes or attributesrž   ú./rowT)r^   rã   r6   rµ   ©r6   rH   r1   r1   r2   Útest_empty_attrs_only  s    þrë   c              	   C  s2   d}t jtdd�� t|dd| d� W 5 Q R X d S )Nz¿
      <data>
        <row sides="4" shape="square" degrees="360"/>
        <row sides="0" shape="circle" degrees="360"/>
        <row sides="3" shape="triangle" degrees="180"/>
      </data>rè   rž   ré   T)r^   rå   r6   rµ   rê   r1   r1   r2   Útest_empty_elems_only  s    þrì   c                  C  sd   d} t | dd�}t | ddd�}t| dddgid	�}t| ddddgid
�}t ||¡ t ||¡ d S )Naº  <?xml version="1.0" encoding="UTF-8"?>
<TrainSchedule>
      <Stations>
         <station Name="Manhattan" coords="31,460,195,498"/>
         <station Name="Laraway Road" coords="63,409,194,455"/>
         <station Name="179th St (Orland Park)" coords="0,364,110,395"/>
         <station Name="153rd St (Orland Park)" coords="7,333,113,362"/>
         <station Name="143rd St (Orland Park)" coords="17,297,115,330"/>
         <station Name="Palos Park" coords="128,281,239,303"/>
         <station Name="Palos Heights" coords="148,257,283,279"/>
         <station Name="Worth" coords="170,230,248,255"/>
         <station Name="Chicago Ridge" coords="70,187,208,214"/>
         <station Name="Oak Lawn" coords="166,159,266,185"/>
         <station Name="Ashburn" coords="197,133,336,157"/>
         <station Name="Wrightwood" coords="219,106,340,133"/>
         <station Name="Chicago Union Sta" coords="220,0,360,43"/>
      </Stations>
</TrainSchedule>z
.//stationr¯   r5   r]   ÚstationÚNameZcoords©rR   rQ   )r   r@   r8   rT   )rH   rÓ   rÔ   Z
df_iter_lxZ
df_iter_etr1   r1   r2   Útest_attribute_centric_xml-  s      
ÿrð   c              
   C  sœ   | ddddƒ}t |ddddd	g|d
�}t ||ddddd	gddddddgid�}tdddgdddgdddgdddgdddgd œƒ}t ||¡ t ||¡ d S )!NrG   r<   rH   rI   ÚCol1ÚCol2ÚCol3ÚCol4ÚCol5©Únamesr6   rK   rL   rM   rO   rN   rP   )r6   r÷   rR   rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   r|   r}   r~   )rñ   rò   ró   rô   rõ   r�   rá   r1   r1   r2   Útest_names_option_outputR  s,      ÿüûÿ
rø   c                 C  sr   d}t |d| dddgd�}t|| ddddgidddgd	�}td
dgddgddgdœƒ}t ||¡ t ||¡ d S )Nz°<shapes>
  <shape type="2D">
    <name>circle</name>
    <type>curved</type>
  </shape>
  <shape type="3D">
    <name>sphere</name>
    <type>curved</type>
  </shape>
</shapes>ú.//shapeÚtype_dimr   Ú	type_edge©r^   r6   r÷   Útyper$   ©r6   rR   r÷   Ú2DÚ3Dr   ÚsphereZcurved)rú   r   rû   ©r   r@   r   r8   rT   ©r6   rH   rm   rn   r�   r1   r1   r2   Útest_repeat_namesl  s*       ÿüýÿr  c                 C  sn   d}t |d| ddgd�}t|| dddgiddgd�}td	d
ddgd	d	ddgdœƒ}t ||¡ t ||¡ d S )NaB  <shapes>
  <shape>
    <name>rectangle</name>
    <family>rectangle</family>
  </shape>
  <shape>
    <name>square</name>
    <family>rectangle</family>
  </shape>
  <shape>
    <name>ellipse</name>
    <family>ellipse</family>
  </shape>
  <shape>
    <name>circle</name>
    <family>ellipse</family>
  </shape>
</shapes>rù   r$   Úgrouprü   r   Úfamilyrþ   Z	rectangler   Úellipser   )r$   r  r  r  r1   r1   r2   Útest_repeat_values_new_names�  s    
ü

þÿr  c                 C  s†   d}t |d| ddddgd�}t|| dd	d	d	d	giddddgd
�}tdddgdddgdddgdddgdœƒ}t ||¡ t ||¡ d S )Na  <shapes>
  <shape>
    <value item="name">circle</value>
    <value item="family">ellipse</value>
    <value item="degrees">360</value>
    <value item="sides">0</value>
  </shape>
  <shape>
    <value item="name">triangle</value>
    <value item="family">polygon</value>
    <value item="degrees">180</value>
    <value item="sides">3</value>
  </shape>
  <shape>
    <value item="name">square</value>
    <value item="family">polygon</value>
    <value item="degrees">360</value>
    <value item="sides">4</value>
  </shape>
</shapes>rù   r$   r  r   r   rü   r   Úvaluerþ   r   r   r   r  Zpolygonr   r   r   r   r   )r$   r  r   r   r  r  r1   r1   r2   Útest_repeat_elements·  s,    
ü
üüÿ	r
  c              	   C  s@   | ddddƒ}t jtdd�� t|ddd	g|d
� W 5 Q R X d S )NrG   r<   rH   rI   znames does not match lengthrž   rñ   rò   ró   rö   rµ   r×   r1   r1   r2   Útest_names_option_wrong_lengthè  s    r  c              	   C  s:   | ddddƒ}t jtdd�� t|d|d� W 5 Q R X d S )	NrG   r<   rH   rI   zis not a valid type for namesrž   zCol1, Col2, Col3rö   ©r¢   r£   rß   r   r×   r1   r1   r2   Útest_names_option_wrong_typeï  s    r  c              	   C  s8   | ddddƒ}t jtdd�� t||d� W 5 Q R X d S )NrG   r<   rH   úbaby_names.xmlz'utf-8' codec can't decoderž   rJ   ©r¢   r£   ÚUnicodeDecodeErrorr   r×   r1   r1   r2   Útest_wrong_encodingù  s    r  c              	   C  s:   | ddddƒ}t jtdd�� t|d|d� W 5 Q R X d S )	NrG   r<   rH   r  zIUTF-16 stream does not start with BOM|'utf-16-le' codec can't decode byterž   zUTF-16©Úencodingr6   )r¢   r£   ÚUnicodeErrorr   r×   r1   r1   r2   Útest_utf16_encodingÿ  s    ýr  c              	   C  s:   | ddddƒ}t jtdd�� t|d|d� W 5 Q R X d S )	NrG   r<   rH   r  zunknown encoding: UFT-8rž   zUFT-8r  )r¢   r£   ÚLookupErrorr   r×   r1   r1   r2   Útest_unknown_encoding  s    r  c              	   C  s:   | ddddƒ}t jtdd�� t|d|d� W 5 Q R X d S )	NrG   r<   rH   r  z'ascii' codec can't decode byterž   Úasciir  r  r×   r1   r1   r2   Útest_ascii_encoding  s    r  c                 C  s†   | ddddƒ}t |ddd�}t |dd	d�}t |ddd
dddgid�}t |ddd
dddgid�}t ||¡ t ||¡ t ||¡ d S )NrG   r<   rH   r  r4   z
ISO-8859-1©r6   r  r5   z
iso-8859-1ra   ZrankZmalenameZ
femalename)r6   r  rR   rS   )rU   rV   Zdf_xpath_lxmlZdf_xpath_etreerW   rX   r1   r1   r2   Ú%test_parser_consistency_with_encoding  s$    üür  c               	   C  s4   d} t jtdd�� tt| ƒdd d� W 5 Q R X d S )Nú-<data>
  <row>
    <a>c</a>
  </row>
</data>
zencoding Nonerž   r4   r  )r¢   r£   rß   r   r   )r<   r1   r1   r2   Útest_wrong_encoding_for_lxml/  s    r  c                  C  s4   d} t t| ƒdd d�}tddgiƒ}t ||¡ d S )Nr  r5   r  r’   Úc)r   r   r   r8   rT   )r<   ÚresultÚexpectedr1   r1   r2   Útest_none_encoding_etree<  s    r!  c              	   C  s4   | ddddƒ}t jtdd�� t|ƒ W 5 Q R X d S )NrG   r<   rH   rI   z7lxml not found, please install or use the etree parser.rž   )r¢   r£   ÚImportErrorr   r·   r1   r1   r2   Útest_default_parser_no_lxmlL  s     ÿr#  c              	   C  s8   | ddddƒ}t jtdd�� t|dd� W 5 Q R X d S )	NrG   r<   rH   rI   z,Values for parser can only be lxml or etree.rž   Zbs4rJ   rµ   r·   r1   r1   r2   Útest_wrong_parserV  s     ÿr$  c              	   C  sh   | ddddƒ}| ddddƒ}t |dddi|d	�}t |d
ddddddgid�}t t|¡ t t|¡ d S )NrG   r<   rH   rÙ   úflatten_doc.xslú.//k:PlacemarkÚkrÞ   ©r^   rÆ   Ú
stylesheetZ	Placemarkr#   r$   r%   r&   r'   r(   rï   )r   r8   rT   Údf_kml)rU   ÚkmlÚxslÚdf_stylern   r1   r1   r2   Útest_stylesheet_fileb  s,    üúÿþr.  c              	   C  sV   | ddddƒ}| ddddƒ}t ||ƒ�}t|dddi|d	�}W 5 Q R X t t|¡ d S ©
NrG   r<   rH   rÙ   r%  r&  r'  rÞ   r(  )r:   r   r8   rT   r*  )rU   r3   r+  r,  r?   r-  r1   r1   r2   Útest_stylesheet_file_like€  s    ür0  c              	   C  sx   | ddddƒ}| ddddƒ}t ||ƒ�(}|dkr>t| ¡ ƒ}nt| ¡ ƒ}W 5 Q R X t|ddd	i|d
�}t t|¡ d S )NrG   r<   rH   rÙ   r%  r)   r&  r'  rÞ   r(  )r:   r   rC   r   r   r8   rT   r*  ©rU   r3   r+  r,  r?   Úxsl_objr-  r1   r1   r2   Útest_stylesheet_io�  s    ür3  c              	   C  s^   | ddddƒ}| ddddƒ}t ||ƒ�}| ¡ }W 5 Q R X t|dddi|d	�}t t|¡ d S r/  )r:   rC   r   r8   rT   r*  r1  r1   r1   r2   Útest_stylesheet_buffered_reader§  s    ür4  c                  C  s,   d} d}t | ƒ}t | |d�}t ||¡ d S )NrŒ   u­  <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>
 <xsl:strip-space elements="*"/>

 <xsl:template match="node()|@*">
     <xsl:copy>
       <xsl:apply-templates select="node()|@*"/>
     </xsl:copy>
 </xsl:template>

 <xsl:template match="ä¸­æ–‡æ¨™ç±¤">
     <æ ¹>
       <xsl:apply-templates />
     </æ ¹>
 </xsl:template>

</xsl:stylesheet>©r)  rS   )rH   r,  Zdf_origr-  r1   r1   r2   Útest_style_charset¹  s
    r6  c              	   C  sR   ddl m} | ddddƒ}| ddddƒ}tj|dd	�� t||d
� W 5 Q R X d S )Nr   ©ÚXSLTParseErrorrG   r<   rH   rÙ   rI   zdocument is not a stylesheetrž   r5  ©r    r8  r¢   r£   r   )rU   r8  r+  r,  r1   r1   r2   Útest_not_stylesheetÖ  s
    r:  c              	   C  sH   ddl m} d}| ddddƒ}tj|dd	�� t||d
� W 5 Q R X d S )Nr   r›   a‹  <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                              xmlns:k="http://www.opengis.net/kml/2.2"/>
    <xsl:output method="xml" omit-xml-declaration="yes"
                cdata-section-elements="k:description" indent="yes"/>
    <xsl:strip-space elements="*"/>

    <xsl:template match="node()|@*">
     <xsl:copy>
       <xsl:apply-templates select="node()|@*"/>
     </xsl:copy>
    </xsl:template>

    <xsl:template match="k:MultiGeometry|k:LineString">
        <xsl:apply-templates select='*'/>
    </xsl:template>

    <xsl:template match="k:description|k:Snippet|k:Style"/>
</xsl:stylesheet>rG   r<   rH   rÙ   z(Extra content at the end of the documentrž   r5  )r    rœ   r¢   r£   r   )rU   rœ   r,  r+  r1   r1   r2   Útest_incorrect_xsl_syntaxá  s     ÿr;  c              	   C  sH   ddl m} d}| ddddƒ}tj|dd	�� t||d
� W 5 Q R X d S )Nr   r7  a‹  <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                              xmlns:k="http://www.opengis.net/kml/2.2">
    <xsl:output method="xml" omit-xml-declaration="yes"
                cdata-section-elements="k:description" indent="yes"/>
    <xsl:strip-space elements="*"/>

    <xsl:template match="node(*)|@*">
     <xsl:copy>
       <xsl:apply-templates select="node()|@*"/>
     </xsl:copy>
    </xsl:template>

    <xsl:template match="k:MultiGeometry|k:LineString">
        <xsl:apply-templates select='*'/>
    </xsl:template>

    <xsl:template match="k:description|k:Snippet|k:Style"/>
</xsl:stylesheet>rG   r<   rH   rÙ   zfailed to compilerž   r5  r9  )rU   r8  r,  r+  r1   r1   r2   Útest_incorrect_xsl_eval  s
    r<  c              	   C  sH   ddl m} d}| ddddƒ}tj|dd	�� t||d
� W 5 Q R X d S )Nr   )ÚXSLTApplyErrorag  <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" encoding="utf-8" indent="yes" />
    <xsl:strip-space elements="*"/>

    <xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:copy-of select="document('non_existent.xml')/*"/>
        </xsl:copy>
    </xsl:template>
</xsl:stylesheet>rG   r<   rH   rÙ   zCannot resolve URIrž   r5  )r    r=  r¢   r£   r   )rU   r=  r,  r+  r1   r1   r2   Útest_incorrect_xsl_apply  s
    r>  c               	   C  sV   ddl m}  tj ddd¡}tj ddd¡}tj| dd�� t||d	� W 5 Q R X d S )
Nr   r›   r<   rH   rÙ   zflatten.xslr¨   rž   r5  r©   )rœ   r+  r,  r1   r1   r2   Útest_wrong_stylesheet5  s    þr?  c              	   C  sn   | ddddƒ}| ddddƒ}t ||ƒ�>}|dkr>t| ¡ ƒ}nt| ¡ ƒ}t||d� |jr`t‚W 5 Q R X d S )NrG   r<   rH   rÙ   r%  r)   r5  )r:   r   rC   r   r   r•   r–   )rU   r3   r+  r,  r?   r2  r1   r1   r2   Útest_stylesheet_file_closeC  s    r@  c               	   C  sL   t j ddd¡} t j ddd¡}tjtdd�� t| d|d� W 5 Q R X d S )	Nr<   rH   rÙ   r%  z*To use stylesheet, you need lxml installedrž   r5   )r6   r)  )rª   r>   r¡   r¢   r£   r¶   r   )r+  r,  r1   r1   r2   Útest_stylesheet_with_etreeU  s     ÿrA  c              	   C  sF   ddl m} tj ddd¡}tj|dd�� t|| d� W 5 Q R X d S )	Nr   r›   r<   rH   rÙ   z3Document is empty|Start tag expected, '<' not foundrž   r5  r©   )r˜   rœ   r+  r1   r1   r2   Útest_empty_stylesheet`  s     ÿrB  c              	   C  s8   t jtdd��  tt| dddddgid� W 5 Q R X d S )	Nú)iterparse is designed for large XML filesrž   ra   r   r   r   ÚdaterQ   )r¢   r£   r   r   rÊ   rJ   r1   r1   r2   Útest_string_errorp  s     ÿýrE  c                 C  sÖ   | ddddƒ}t ||ƒ�v}|dkrn|dkrntjtdd��" t||d	d
ddddgid� W 5 Q R X W 5 Q R £ d S t||d	d
ddddgid�}W 5 Q R X tdddgdddgdddgdddgdddgdœƒ}t ||¡ d S ©NrG   r<   rH   rI   r*   r4   z.reading file objects must return bytes objectsrž   rK   rL   rM   rN   rO   rP   rQ   rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   r|   r}   r~   r   )r:   r¢   r£   rß   r   r   r8   rT   )rU   r6   r3   rV   r?   Zdf_fileliker�   r1   r1   r2   Útest_file_like_iterparse{  s:     ÿ ÿýýûÿ
rG  c           	      C  s  | ddddƒ}|dkrt nt}t||ƒ�˜}|| ¡ ƒ�€}|dkr–|dkr–tjtdd��" t||d	d
ddddgid� W 5 Q R X W 5 Q R £ W 5 Q R £ d S t||d	d
ddddgid�}W 5 Q R X W 5 Q R X tdddgdddgdddgdddgdddgdœƒ}t	 
||¡ d S rF  )r   r   r:   rC   r¢   r£   rß   r   r   r8   rT   )	rU   r6   r3   rV   ZfuncIOr?   ÚbZ	df_fileior�   r1   r1   r2   Útest_file_io_iterparseŸ  sB     ÿ ÿý ÿýûÿ
rI  c              	   C  s<   d}t jtdd��  t|| dddddgid	� W 5 Q R X d S )
Nr­   rC  rž   ra   r   r   r   rD  rQ   ©r¢   r£   r   r   r²   r1   r1   r2   Útest_url_path_errorÇ  s     ÿýrK  c              
   C  sb   t jdd��L}tj|| |d� tjtdd��" t|| dddd	d
gi|d� W 5 Q R X W 5 Q R X d S )Nzgeom_xml.zipr\   ©r6   rA   rC  rž   ra   r   r   r   rD  ©r6   rR   rA   )r8   r9   Úgeom_dfrl   r¢   r£   r   r   )r6   rE   r>   r1   r1   r2   Útest_compression_errorÕ  s     ÿürO  c              	   C  sD   | ddddƒ}t jtdd�� t||ddd	d
dgd� W 5 Q R X d S )NrG   r<   rH   rI   z&list is not a valid type for iterparserž   rL   rM   rN   rO   rP   rQ   r  r×   r1   r1   r2   Útest_wrong_dict_typeä  s    ýrP  c              	   C  s>   | ddddƒ}t jtdd�� t||ddid	� W 5 Q R X d S )
NrG   r<   rH   rI   z8<class 'str'> is not a valid type for value in iterparserž   rK   rL   rQ   r  r×   r1   r1   r2   Útest_wrong_dict_valueî  s     ÿrQ  c                 C  sx   d}t jdd��^}t|dƒ�}| |¡ W 5 Q R X tjtdd��$ t|| dgdd	d
ddgid� W 5 Q R X W 5 Q R X d S )Na‘  <?xml version='1.0' encoding='utf-8'?>
  <row>
    <shape>square</shape>
    <degrees>00360</degrees>
    <sides>4.0</sides>
    <date>2020-01-01</date>
   </row>
  <row>
    <shape>circle</shape>
    <degrees>00360</degrees>
    <sides/>
    <date>2021-01-01</date>
  </row>
  <row>
    <shape>triangle</shape>
    <degrees>00180</degrees>
    <sides>3.0</sides>
    <date>2022-01-01</date>
  </row>
zbad.xmlr\   r7   zDExtra content at the end of the document|junk after document elementrž   rD  ra   r   r   r   )r6   Zparse_datesrR   )r8   r9   r:   r;   r¢   r£   r»   r   )r6   Zbad_xmlr>   r?   r1   r1   r2   Útest_bad_xmlö  s    ýürR  c                 C  sZ   d}t |d| d�}t|| dddgid�}tdd	gd
dgdœƒ}t ||¡ t ||¡ d S )Na-  <!-- comment before root -->
<shapes>
  <!-- comment within root -->
  <shape>
    <name>circle</name>
    <type>2D</type>
  </shape>
  <shape>
    <name>sphere</name>
    <type>3D</type>
    <!-- comment within child -->
  </shape>
  <!-- comment within root -->
</shapes>
<!-- comment after root -->rù   r]   r   r$   rý   rQ   r   r  rÿ   r   ©r$   rý   r  r  r1   r1   r2   Útest_comment  s      
ÿþÿrT  c                 C  sZ   d}t |d| d�}t|| dddgid�}tdd	gd
dgdœƒ}t ||¡ t ||¡ d S )Na8  <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE non-profits [
    <!ELEMENT shapes (shape*) >
    <!ELEMENT shape ( name, type )>
    <!ELEMENT name (#PCDATA)>
]>
<shapes>
  <shape>
    <name>circle</name>
    <type>2D</type>
  </shape>
  <shape>
    <name>sphere</name>
    <type>3D</type>
  </shape>
</shapes>rù   r]   r   r$   rý   rQ   r   r  rÿ   r   rS  r  r  r1   r1   r2   Útest_dtdB  s      
ÿþÿrU  c                 C  sZ   d}t |d| d�}t|| dddgid�}tdd	gd
dgdœƒ}t ||¡ t ||¡ d S )Nam  <?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="style.xsl"?>
<?display table-view?>
<?sort alpha-ascending?>
<?textinfo whitespace is allowed ?>
<?elementnames <shape>, <name>, <type> ?>
<shapes>
  <shape>
    <name>circle</name>
    <type>2D</type>
  </shape>
  <shape>
    <name>sphere</name>
    <type>3D</type>
  </shape>
</shapes>rù   r]   r   r$   rý   rQ   r   r  rÿ   r   rS  r  r  r1   r1   r2   Útest_processing_instructionf  s      
ÿþÿrV  c              	   C  sF   | ddddƒ}t jtdd��  t||ddd	d
dgid� W 5 Q R X d S )NrG   r<   rH   rI   z+No result from selected items in iterparse.rž   ÚnodeÚattr1Úelem1Úelem2Úelem3rQ   rJ  r×   r1   r1   r2   Útest_no_resultŠ  s     ÿýr\  c              	   C  sF   | ddddƒ}t jtdd��  t||ddd	d
dgid� W 5 Q R X d S )NrG   r<   rH   rI   zNo columns to parse from filerž   rK   rX  rY  rZ  r[  rQ   )r¢   r£   r   r   r×   r1   r1   r2   Útest_empty_data–  s    ýr]  ú4https://www.w3schools.com/xml/cdcatalog_with_xsl.xmlc                  C  sR   d} d}t | dddg|d�}tddd	d
ddœddddddœdœƒ}t ||¡ d S )Nr^  z+https://www.w3schools.com/xml/cdcatalog.xslz.//tr[td and position() <= 6]rM   Úartist)r^   r÷   r)  zEmpire BurlesquezHide your heartzGreatest HitszStill got the bluesZErosr    z	Bob DylanzBonnie TylerzDolly Partonz
Gary MoorezEros Ramazzotti)rM   r_  r�   )rH   r,  Zdf_xslr�   r1   r1   r2   Útest_online_stylesheet   s0    üûûøÿr`  c              	   C  sl   t  ¡ �B}tj|d| |d� t|| |d�}t||| ddddgi|d�}W 5 Q R X t  |t¡ t  |t¡ d S )	NF)r`   r6   rA   rL  ra   r   r   r   rM  )r8   r9   rN  rl   r   rF   rT   )r6   rE   rD   rm   rn   r1   r1   r2   Útest_compression_readÉ  s"    
   ÿûra  c              
   C  sÐ   |}|}||krd S t dft dftdftdfdœ}tddd�}|d k	rT|jd	f|d
< tddd�}|d k	rttdf|d< || \}}	t ¡ �>}
tj	|
| |d� t
j||	d�� t|
| |d� W 5 Q R X W 5 Q R X d S )NzInvalid data streamzNot a gzipped filezFile is not a zip filez%file could not be opened successfully)Úbz2ÚgzipÚzipÚtarZ	zstandardÚignore)ÚerrorszUnknown frame descriptorÚzstdÚlzmaz%Input format not supported by decoderÚxzrL  rž   )ÚOSErrorr	   r   r   Z	ZstdErrorr   r8   r9   rN  rl   r¢   r£   r   )r6   rA   rE   Zactual_compressionZattempted_compressionrg  rh  ri  Z	error_clsZ	error_strr>   r1   r1   r2   Útest_wrong_compressionÝ  s(    ü
rl  c              
   C  s@   t jtdd��( t ¡ �}t|| dd� W 5 Q R X W 5 Q R X d S )NzUnrecognized compression typerž   Z7zrL  )r¢   r£   r¶   r8   r9   r   )r6   r>   r1   r1   r2   Útest_unsuported_compressionù  s    
rm  Zs3fsz02022.1.17: Hanging on the CI min versions build.)Úreasonc                  C  sH   d} t | dddidddid�}t | dddid	ddid�}t ||¡ d S )
Nz/s3://irs-form-990/201923199349319487_public.xmlz .//irs:Form990PartVIISectionAGrpZirszhttp://www.irs.gov/efiler4   ZanonT)r^   rÆ   r6   Zstorage_optionsr5   rS   )Zs3rÓ   rÔ   r1   r1   r2   Útest_s3_parser_consistency  s     
ûûro  c                   sd  d}|dkr>t tjddgtjd�ƒ}t tjdtgtjd�ƒ}n.t d¡‰tˆ ddg¡ƒ}tˆ dd g¡ƒ}t 	d|¡� t
|| |d�}W 5 Q R X t|td	d
gdd�tddgdd�|td
tgdd�tdtgdd�tttgdd�tddgdd�tdtgdd�dœ	ƒ‰|dk�rTt d¡‰ddlm‰  t‡ ‡‡fdd„ˆjD ƒƒ‰ˆ ˆ d d g¡ƒˆd< t |ˆ¡ d S )Na;  <?xml version='1.0' encoding='utf-8'?>
<data xmlns="http://example.com">
<row>
  <a>x</a>
  <b>1</b>
  <c>4.0</c>
  <d>x</d>
  <e>2</e>
  <f>4.0</f>
  <g></g>
  <h>True</h>
  <i>False</i>
</row>
<row>
  <a>y</a>
  <b>2</b>
  <c>5.0</c>
  <d></d>
  <e></e>
  <f></f>
  <g></g>
  <h>False</h>
  <i></i>
</row>
</data>ÚpythonÚxri   )ZdtypeZpyarrowzmode.string_storage)r6   Údtype_backendr!   r"   ZInt64rÇ   g      @ZFloat64TFÚboolean)	r’   rH  r  ÚdÚer?   rg   ÚhÚir   )ÚArrowExtensionArrayc                   s$   i | ]}|ˆ ˆj ˆ| d d�ƒ“qS )T)Zfrom_pandas)Úarray)Ú.0Úcol©rx  r   Úpar1   r2   Ú
<dictcomp>\  s   ÿ z1test_read_xml_nullable_dtypes.<locals>.<dictcomp>rg   )r   Únpry  Zobject_r   r¢   Zimportorskipr   ÚpdZoption_contextr   r   r   Zpandas.arraysrx  Úcolumnsr8   rT   )r6   Zstring_storagerr  r<   Zstring_arrayZstring_array_nar  r1   r|  r2   Útest_read_xml_nullable_dtypes!  s>    
÷ÿ

þÿr‚  c               	   C  s.   d} t jt| d�� tddd� W 5 Q R X d S )NzPdtype_backend numpy is invalid, only 'numpy_nullable' and 'pyarrow' are allowed.rž   ÚtestÚnumpy)rr  rµ   )r¤   r1   r1   r2   Útest_invalid_dtype_backendf  s    ÿr…  )�Ú
__future__r   rG   r   r   ri  r   rª   Útarfiler   Úurllib.errorr   Zxml.etree.ElementTreer   Úzipfiler	   r„  r  r¢   Zpandas.compatr
   Zpandas.compat._optionalr   Zpandas.errorsr   r   Zpandas.util._test_decoratorsÚutilZ_test_decoratorsÚtdZpandasr€  r   r   r   Zpandas._testingZ_testingr8   Zpandas.core.arraysr   r   Zpandas.io.commonr   Zpandas.io.xmlr   rÈ   rN  rÊ   rÐ   r*  Zfixturer3   r.   Z
skip_if_nor6   r@   rF   rY   ÚmarkÚnetworkZslowro   r‚   r†   r‰   r‹   r‘   r”   r—   Zparametrizer¥   r¦   r«   r¬   r°   r³   r¸   r¼   rÁ   rÍ   rÑ   rÕ   rÖ   rØ   rÛ   rÜ   rà   râ   rä   ræ   rç   rë   rì   rð   rø   r  r  r
  r  r  r  r  r  r  r  r  r!  Zskip_if_installedr#  r$  r.  r0  r3  r4  r6  r:  r;  r<  r>  r?  r@  rA  rB  rE  rG  rI  rK  rO  rP  rQ  rR  rT  rU  rV  r\  r]  r`  ra  rl  rm  Zskipifro  r‚  r…  r1   r1   r1   r2   Ú<module>   s   6
ýÿûûûû	Æâÿm


û+
	


þ	





	
$#(1



	













$(
)#$$
 ÿ$	þE