U
    `»{j{Á  ã                   @  s  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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mZ d dl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Z(e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'œƒZ)ej*d(d)gd*�d+d,„ ƒZ+ej*ej,d-e -d-¡d.�d/gd*�d0d1„ ƒZ.d2d3„ Z/d4d5„ Z0e -d-¡d6d7„ ƒZ1ej2j3ej2j4e j3d8d9d:�d;d<„ ƒƒƒZ5d=d>„ Z6d?d@„ Z7dAdB„ Z8dCdD„ Z9dEdF„ Z:dGdH„ Z;dIdJ„ Z<e -d-¡ej2 =dKdLdMg¡dNdO„ ƒƒZ>ej2 =dKdLdMg¡dPdQ„ ƒZ?e -d-¡dRdS„ ƒZ@dTdU„ ZAej2j3e j3dVd9d:�e -d-¡dWdX„ ƒƒƒZBej2j3e j3dYd9d:�dZd[„ ƒƒZCe -d-¡d\d]„ ƒZDd^d_„ ZEe -d-¡d`da„ ƒZFdbdc„ ZGddde„ ZHe -d-¡dfdg„ ƒZIe -d-¡dhdi„ ƒZJdjdk„ ZKdldm„ ZLe -d-¡dndo„ ƒZMe -d-¡ej2 =dpdLdg¡dqdr„ ƒƒZNdsdt„ ZOdudv„ ZPdwdx„ ZQdydz„ ZRe -d-¡d{d|„ ƒZSd}d~„ ZTdd€„ ZUd�d‚„ ZVdƒd„„ ZWd…d†„ ZXd‡dˆ„ ZYd‰dŠ„ ZZd‹dŒ„ Z[d�dŽ„ Z\e -d-¡d�d�„ ƒZ]e -d-¡d‘d’„ ƒZ^d“d”„ Z_e `d-¡d•d–„ ƒZad—d˜„ Zbe -d-¡d™dš„ ƒZcd›dœ„ Zde -d-¡d�dž„ ƒZee -d-¡dŸd „ ƒZfe -d-¡d¡d¢„ ƒZge -d-¡d£d¤„ ƒZhe -d-¡d¥d¦„ ƒZie -d-¡d§d¨„ ƒZje -d-¡d©dª„ ƒZke -d-¡d«d¬„ ƒZle -d-¡d­d®„ ƒZme -d-¡d¯d°„ ƒZne -d-¡d±d²„ ƒZoe -d-¡ej2 =dKdLdMg¡d³d´„ ƒƒZpdµd¶„ Zqd·d¸„ Zrej2j3e j3dVd9d:�d¹dº„ ƒƒZsd»d¼„ Ztd½d¾„ Zud¿dÀ„ ZvdÁdÂ„ ZwdÃdÄ„ ZxdÅdÆ„ ZydÇdÈ„ ZzdÉdÊ„ Z{dËdÌ„ Z|ej2j3e -d-¡e j3dÍd9d:�dÎdÏ„ ƒƒƒZ}dÐdÑ„ Z~dÒdÓ„ ZdÔdÕ„ Z€ej2j3e -dÖ¡e -d-¡ej2j�eƒ d×dØ�e j3dÙdÚ„ ƒƒƒƒƒZ‚dS )Ûé    )Úannotations)ÚBytesIOÚStringIO)Ú	LZMAErrorN)Ú	ReadError)Ú	HTTPError)Ú
BadZipFile)Úis_ci_environment)Úimport_optional_dependency)ÚEmptyDataErrorÚParserError)Ú	DataFrame)Ú
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© r,   ú[/var/www/html/bwave/python/venv/lib/python3.8/site-packages/pandas/tests/io/xml/test_xml.pyÚmodeò   s    r.   Úlxml)ZmarksÚetreec                 C  s   | j S r'   r(   r*   r,   r,   r-   Úparser÷   s    r1   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Úfr,   r,   r-   Ú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%   )Úcompressionr2   )r   r3   r4   r5   r6   ÚhandleÚreadr   )Ú	comp_pathÚcompression_onlyr8   Zhandlesr9   r:   r,   r,   r-   Úread_xml_iterparse_comp  s
    
rA   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Úior7   Úxmlú	books.xmlr/   ©r1   r0   ÚbookÚcategoryÚtitleÚyearÚauthorÚprice©r1   Ú	iterparse©r   r3   Úassert_frame_equal)ÚdatapathÚfilenameZdf_file_lxmlZdf_file_etreeÚdf_iter_lxmlÚdf_iter_etreer,   r,   r-   Útest_parser_consistency_file  s     ýýrT   ú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 ) NrU   zcta.xml©rQ   z
.//row/row©Úxpathr1   F©ÚindexrE   ÚrowZ_idÚ_uuidZ	_positionZ_addressZstop_idZdirection_idZ	stop_nameZstation_nameZstation_descriptive_nameZmap_idÚadaÚredÚblueÚgZbrnÚpZpexpÚyZpnkÚoÚlocationrL   )r3   r4   r   Úto_xmlrO   )r1   rV   r9   Údf_xpathÚdf_iterr,   r,   r-   Útest_parser_consistency_url$  sD    ÿëÿýri   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 ©NrB   r7   rC   rD   rE   ÚcookingÚchildrenÚwebúEveryday ItalianúHarry PotterúLearning XMLúGiada De LaurentiisúJ K. RowlingúErik T. RayéÕ  éÓ  ç      >@ç=
×£pý=@çš™™™™ùC@©rG   rH   rJ   rI   rK   )r5   r   r   r3   rO   )rP   r1   r.   rQ   r:   Údf_fileÚdf_expectedr,   r,   r-   Útest_file_likeX  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 rj   )
r5   r>   r   Ú
isinstanceÚbytesr   r   r   r3   rO   )rP   r1   r.   rQ   r:   Úxml_objZdf_ior{   r,   r,   r-   Útest_file_ioj  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 rj   )r5   r>   r   r   r3   rO   ©rP   r1   r.   rQ   r:   r   Údf_strr{   r,   r,   r-   Ú 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 rj   )r5   Únextr>   r   r   r3   rO   r�   r,   r,   r-   Ú,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></ä¸­æ–‡æ¨™ç±¤>rE   r   r   )Úc1Úc2r   rZ   ©r   r   r3   rO   )r1   Útxtr‚   r{   r,   r,   r-   Ú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 )NrB   r7   rC   zdoc_ch_utf.xmlrE   uP   å•�  è‹¥ç®‡æ˜¯é‚ªè€Œè¨€ç ´é‚ª ä½•è€…æ˜¯æ­£è€Œé�“(Sorry, this is Big5 only)ç”³æ­£u;   å•� æ—¢ç ´æœ‰å¾—ç”³ç„¡å¾— äº¦æ‡‰ä½†ç ´æ€§åŸ·ç”³å�‡å��ä»¥ä¸�uO   å•� æ—¢ç ´æ€§ç”³å�‡ äº¦æ‡‰ä½†ç ´æœ‰ç”³ç„¡ è‹¥æœ‰ç„¡å…©æ´— äº¦æ‡‰æ€§å�‡é›™ç ´è€¶uw   ç­”  é‚ªæ—¢ç„¡é‡� æ­£äº¦å¤šé€”  å¤§ç•¥ç‚ºè¨€ä¸�å‡ºäºŒç¨® è¬‚æœ‰å¾—èˆ‡ç„¡å¾— æœ‰å¾—æ˜¯é‚ªé ˆç ´ ç„¡å¾—æ˜¯æ­£é ˆç”³
		æ•…uL   ç­”  ä¸�ä¾‹  æœ‰ç„¡çš†æ˜¯æ€§ æ‰€ä»¥é ˆé›™ç ´ æ—¢åˆ†æ€§å�‡ç•° æ•…æœ‰ç ´ä¸�ç ´uV   ç­” æ€§åŸ·æ˜¯æœ‰å¾— å�‡å��æ˜¯ç„¡å¾—  ä»Šç ´æœ‰å¾—ç”³ç„¡å¾— å�³æ˜¯ç ´æ€§åŸ·ç”³å�‡å��ä¹Ÿ)u   å•�u   ç­”Úar‰   )rP   r1   Úxml_filerz   r{   r,   r,   r-   Ú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 )NrB   r7   rC   rD   r$   rE   )r5   r   r   r>   ÚclosedÚAssertionError)rP   r1   r�   r:   r,   r,   r-   Útest_file_handle_closeÌ  s    r‘   ÚvalÚ ó    c              	   C  s6   ddl m} tj|dd�� t| dd� W 5 Q R X d S )Nr   ©ÚXMLSyntaxErrorzDocument is empty©Úmatchr/   rE   ©Ú
lxml.etreer–   ÚpytestÚraisesr   )r’   r–   r,   r,   r-   Útest_empty_string_lxmlÕ  s    r�   c              	   C  s6   ddl m} tj|dd�� t| dd� W 5 Q R X d S )Nr   ©Ú
ParseErrorzno element foundr—   r0   rE   )Úxml.etree.ElementTreerŸ   r›   rœ   r   )r’   rŸ   r,   r,   r-   Ú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•   r7   ÚhtmlrD   ú!Start tag expected, '<' not foundr—   r/   rE   ©rš   r–   Úosr9   Újoinr›   rœ   r   )r–   rQ   r,   r,   r-   Útest_wrong_file_path_lxmlæ  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ž   r7   r¢   rD   znot well-formedr—   r0   rE   )r    rŸ   r¥   r9   r¦   r›   rœ   r   )rŸ   rQ   r,   r,   r-   Ú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]©rY   rk   rl   rm   rn   ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   Z	paperback)rG   rH   rJ   rI   rK   Zcoverr‰   )rV   Zdf_urlr{   r,   r,   r-   Ú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ª   rX   )r›   rœ   r   r   ©r1   rV   r,   r,   r-   Ú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 )
NrB   r7   rC   rD   úxpath does not return any nodesr—   z	.//pythonr/   rX   ©r›   rœ   Ú
ValueErrorr   ©rP   rQ   r,   r,   r-   Ú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 )
NrB   r7   rC   rD   z/You have used an incorrect or unsupported XPathr—   ú	.//[book]r0   rX   ©r›   rœ   ÚSyntaxErrorr   r³   r,   r,   r-   Útest_bad_xpath_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   ©ÚXPathEvalErrorrB   r7   rC   rD   zInvalid expressionr—   rµ   r/   rX   ©rš   rº   r›   rœ   r   ©rP   rº   rQ   r,   r,   r-   Útest_bad_xpath_lxml1  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©rY   Ú
namespacesr1   r\   r   r   r   rL   r   r   r   r   r   ç      @Únanç      @r   )r   Úxml_default_nmspr;   r   Úfloatr3   rO   ©r1   Zdf_nmsprh   r{   r,   r,   r-   Útest_default_namespace=  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Á   r\   r   r   r   rL   r   r   r   r   r   rÃ   rÄ   rÅ   r   )r   Úxml_prefix_nmspr;   r   rÇ   r3   rO   rÈ   r,   r,   r-   Útest_prefix_namespaceW  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À   r/   rÁ   rÊ   rË   r0   )r   rÆ   r3   rO   ©Údf_lxmlÚdf_etreer,   r,   r-   Ú"test_consistency_default_namespacen  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À   r/   rÁ   r0   )r   rÌ   r3   rO   rÎ   r,   r,   r-   Ú!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 )	NrB   r7   rC   rD   r°   r—   z.//PlacemarkrX   r±   ©rP   r1   rQ   r,   r,   r-   Ú*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 )
NrB   r7   rC   úcta_rail_lines.kmlz'you used an undeclared namespace prefixr—   ú.//kml:Placemarkr0   rX   r¶   r³   r,   r,   r-   Ú$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¹   rB   r7   rC   rÕ   zUndefined namespace prefixr—   rÖ   r/   rX   r»   r¼   r,   r,   r-   Ú#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.2r/   rÁ   )r›   rœ   Ú	TypeErrorr   rÆ   )rÙ   r,   r,   r-   Ú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 )NrB   r7   rC   rD   rE   rF   rG   rH   rJ   rI   rK   rL   rk   rl   rm   rn   ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   ry   r‰   ©rP   r1   rQ   rz   rh   r{   r,   r,   r-   Ú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 )NrB   r7   rC   rD   T)Ú
attrs_onlyr1   rF   rG   rL   rk   rl   rm   r‰   rÝ   r,   r,   r-   Ú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 )NrB   r7   rC   rD   T)Ú
elems_onlyr1   rF   rH   rJ   rI   rK   rL   rn   ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   )rH   rJ   rI   rK   r‰   rÝ   r,   r,   r-   Ú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 )	NrB   r7   rC   rÕ   z3Either element or attributes can be parsed not bothr—   T)rá   rß   r1   r±   rÓ   r,   r,   r-   Útest_elem_and_attrs_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«   r0   rX   ÚstationÚNameZcoords©rM   rL   )r   r;   r3   rO   )rC   rÏ   rÐ   Z
df_iter_lxZ
df_iter_etr,   r,   r-   Ú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 )!NrB   r7   rC   rD   ÚCol1ÚCol2ÚCol3ÚCol4ÚCol5©Únamesr1   rF   rG   rH   rJ   rI   rK   )r1   rî   rM   rk   rl   rm   rn   ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   )rè   ré   rê   rë   rì   r‰   rÝ   r,   r,   r-   Útest_names_option_output   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©rY   r1   rî   Útyper   ©r1   rM   rî   Ú2DÚ3Dr   ÚsphereZcurved)rñ   r   rò   ©r   r;   r   r3   rO   ©r1   rC   rg   rh   r{   r,   r,   r-   Útest_repeat_names:  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   Zellipser   )r   rü   rù   rú   r,   r,   r-   Útest_repeat_values_new_names]  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 )NrB   r7   rC   rD   znames does not match lengthr—   rè   ré   rê   rí   r±   rÓ   r,   r,   r-   Ú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 )	NrB   r7   rC   rD   zis not a valid type for namesr—   zCol1, Col2, Col3rí   ©r›   rœ   rÛ   r   rÓ   r,   r,   r-   Ú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 )NrB   r7   rC   úbaby_names.xmlz'utf-8' codec can't decoder—   rE   ©r›   rœ   ÚUnicodeDecodeErrorr   rÓ   r,   r,   r-   Ú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 )	NrB   r7   rC   r  zIUTF-16 stream does not start with BOM|'utf-16-le' codec can't decode byter—   zUTF-16©Úencodingr1   )r›   rœ   ÚUnicodeErrorr   rÓ   r,   r,   r-   Ú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 )	NrB   r7   rC   r  zunknown encoding: UFT-8r—   zUFT-8r  )r›   rœ   ÚLookupErrorr   rÓ   r,   r,   r-   Ú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 )	NrB   r7   rC   r  z'ascii' codec can't decode byter—   Úasciir  r  rÓ   r,   r,   r-   Ú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 )NrB   r7   rC   r  r/   z
ISO-8859-1©r1   r  r0   z
iso-8859-1r\   ZrankZmalenameZ
femalename)r1   r  rM   rN   )rP   rQ   Zdf_xpath_lxmlZdf_xpath_etreerR   rS   r,   r,   r-   Ú%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—   r/   r  )r›   rœ   rÛ   r   r   )r7   r,   r,   r-   Ú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  r0   r  rŒ   Úc)r   r   r   r3   rO   )r7   ÚresultÚexpectedr,   r,   r-   Ú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 )NrB   r7   rC   rD   z7lxml not found, please install or use the etree parser.r—   )r›   rœ   ÚImportErrorr   r³   r,   r,   r-   Útest_default_parser_no_lxmlé  s     ÿr  c              	   C  s8   | ddddƒ}t jtdd�� t|dd� W 5 Q R X d S )	NrB   r7   rC   rD   z,Values for parser can only be lxml or etree.r—   Zbs4rE   r±   r³   r,   r,   r-   Útest_wrong_parseró  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 )NrB   r7   rC   rÕ   úflatten_doc.xslú.//k:PlacemarkÚkrÚ   ©rY   rÂ   Ú
stylesheetZ	Placemarkr   r   r    r!   r"   r#   ræ   )r   r3   rO   Údf_kml)rP   ÚkmlÚxslÚdf_stylerh   r,   r,   r-   Útest_stylesheet_fileÿ  s,    üúÿþr"  c              	   C  s@   | ddddƒ}t jtdd�� t|ddd	i|d
� W 5 Q R X d S )NrB   r7   rC   rÕ   zkeyword-onlyr—   r  r  rÚ   )rÂ   r1   )r3   Zassert_produces_warningÚFutureWarningr   )rP   r1   r  r,   r,   r-   Ú.test_read_xml_passing_as_positional_deprecated  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 ©
NrB   r7   rC   rÕ   r  r  r  rÚ   r  )r5   r   r3   rO   r  )rP   r.   r  r   r:   r!  r,   r,   r-   Útest_stylesheet_file_like*  s    ür&  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 )NrB   r7   rC   rÕ   r  r$   r  r  rÚ   r  )r5   r   r>   r   r   r3   rO   r  ©rP   r.   r  r   r:   Úxsl_objr!  r,   r,   r-   Útest_stylesheet_io:  s    ür)  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%  )r5   r>   r   r3   rO   r  r'  r,   r,   r-   Útest_stylesheet_buffered_readerQ  s    ür*  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  rN   )rC   r   Zdf_origr!  r,   r,   r-   Útest_style_charsetc  s
    r,  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   ©ÚXSLTParseErrorrB   r7   rC   rÕ   rD   zdocument is not a stylesheetr—   r+  ©rš   r.  r›   rœ   r   )rP   r.  r  r   r,   r,   r-   Útest_not_stylesheet€  s
    r0  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>rB   r7   rC   rÕ   z(Extra content at the end of the documentr—   r+  r™   )rP   r–   r   r  r,   r,   r-   Útest_incorrect_xsl_syntax‹  s     ÿr1  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>rB   r7   rC   rÕ   zfailed to compiler—   r+  r/  )rP   r.  r   r  r,   r,   r-   Útest_incorrect_xsl_eval«  s
    r2  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>rB   r7   rC   rÕ   zCannot resolve URIr—   r+  )rš   r3  r›   rœ   r   )rP   r3  r   r  r,   r,   r-   Útest_incorrect_xsl_applyÉ  s
    r4  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•   r7   rC   rÕ   zflatten.xslr£   r—   r+  r¤   )r–   r  r   r,   r,   r-   Útest_wrong_stylesheetß  s    þr5  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 )NrB   r7   rC   rÕ   r  r$   r+  )r5   r   r>   r   r   r�   r�   )rP   r.   r  r   r:   r(  r,   r,   r-   Útest_stylesheet_file_closeí  s    r6  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 )	Nr7   rC   rÕ   r  z*To use stylesheet, you need lxml installedr—   r0   )r1   r  )r¥   r9   r¦   r›   rœ   r²   r   )r  r   r,   r,   r-   Útest_stylesheet_with_etreeÿ  s     ÿr7  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•   r7   rC   rÕ   z3Document is empty|Start tag expected, '<' not foundr—   r+  r¤   )r’   r–   r  r,   r,   r-   Útest_empty_stylesheet
  s     ÿr8  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—   r\   r   r   r   ÚdaterL   )r›   rœ   r   r   rÆ   rE   r,   r,   r-   Útest_string_error  s     ÿýr;  c                 C  s\   | ddddƒ}t jtdd��6 t|ƒ�"}t||ddd	d
ddgid� W 5 Q R X W 5 Q R X d S )NrB   r7   rC   rD   r9  r—   rF   rG   rH   rI   rJ   rK   rL   )r›   rœ   r   r5   r   )rP   r1   r.   rQ   r:   r,   r,   r-   Útest_file_like_error%  s     ÿ
ýr<  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©   r9  r—   r\   r   r   r   r:  rL   ©r›   rœ   r   r   r®   r,   r,   r-   Útest_url_path_error2  s     ÿýr>  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.ziprW   ©r1   r<   r9  r—   r\   r   r   r   r:  ©r1   rM   r<   )r3   r4   Úgeom_dfrf   r›   rœ   r   r   )r1   r@   r9   r,   r,   r-   Útest_compression_error@  s     ÿürB  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 )NrB   r7   rC   rD   z&list is not a valid type for iterparser—   rG   rH   rI   rJ   rK   rL   r   rÓ   r,   r,   r-   Útest_wrong_dict_typeO  s    ýrC  c              	   C  s>   | ddddƒ}t jtdd�� t||ddid	� W 5 Q R X d S )
NrB   r7   rC   rD   z8<class 'str'> is not a valid type for value in iterparser—   rF   rG   rL   r   rÓ   r,   r,   r-   Útest_wrong_dict_valueY  s     ÿrD  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.xmlrW   r2   zDExtra content at the end of the document|junk after document elementr—   r:  r\   r   r   r   )r1   Zparse_datesrM   )r3   r4   r5   r6   r›   rœ   r·   r   )r1   Zbad_xmlr9   r:   r,   r,   r-   Útest_bad_xmla  s    ýürE  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ð   rX   r   r   rô   rL   r   rø   rö   r÷   ©r   rô   rù   rú   r,   r,   r-   Útest_commentŠ  s      
ÿþÿrG  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ð   rX   r   r   rô   rL   r   rø   rö   r÷   rF  rù   rú   r,   r,   r-   Útest_dtd­  s      
ÿþÿrH  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ð   rX   r   r   rô   rL   r   rø   rö   r÷   rF  rù   rú   r,   r,   r-   Útest_processing_instructionÑ  s      
ÿþÿrI  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 )NrB   r7   rC   rD   z+No result from selected items in iterparse.r—   ÚnodeÚattr1Úelem1Úelem2Úelem3rL   r=  rÓ   r,   r,   r-   Útest_no_resultõ  s     ÿýrO  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 )NrB   r7   rC   rD   zNo columns to parse from filer—   rF   rK  rL  rM  rN  rL   )r›   rœ   r   r   rÓ   r,   r,   r-   Útest_empty_data  s    ýrP  ú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 )NrQ  z+https://www.w3schools.com/xml/cdcatalog.xslz.//tr[td and position() <= 6]rH   Úartist)rY   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)rH   rR  r‰   )rC   r   Zdf_xslr{   r,   r,   r-   Útest_online_stylesheet  s0    üûûøÿrS  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[   r1   r<   r?  r\   r   r   r   r@  )r3   r4   rA  rf   r   rA   rO   )r1   r@   r?   rg   rh   r,   r,   r-   Útest_compression_read4  s"    
   ÿûrT  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Úxzr?  r—   )ÚOSErrorr   r   r
   Z	ZstdErrorr   r3   r4   rA  rf   r›   rœ   r   )r1   r<   r@   Zactual_compressionZattempted_compressionrZ  r[  r\  Ú	error_clsZ	error_strr9   r,   r,   r-   Útest_wrong_compressionH  s(    ü
r`  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7zr?  )r›   rœ   r²   r3   r4   r   )r1   r9   r,   r,   r-   Útest_unsuported_compressiond  s    
ra  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/efiler/   ZanonT)rY   rÂ   r1   Zstorage_optionsr0   rN   )Zs3rÏ   rÐ   r,   r,   r-   Útest_s3_parser_consistencym  s     
ûûrc  )ƒÚ
__future__r   rB   r   r   r\  r   r¥   Útarfiler   Úurllib.errorr   Úzipfiler   ÚnumpyÚnpr›   Zpandas.compatr	   Zpandas.compat._optionalr
   Zpandas.errorsr   r   Zpandas.util._test_decoratorsÚutilZ_test_decoratorsÚtdZpandasr   Zpandas._testingZ_testingr3   Zpandas.io.commonr   Zpandas.io.xmlr   rÄ   rA  rÆ   rÌ   r  Zfixturer.   r)   Z
skip_if_nor1   r;   rA   rT   ÚmarkÚnetworkZslowri   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  Zskip_if_installedr  r  r"  r$  r&  r)  r*  r,  r0  r1  r2  r4  r5  r6  r7  r8  r;  r<  r>  rB  rC  rD  rE  rG  rH  rI  rO  rP  rS  rT  r`  ra  Zskipifrc  r,   r,   r,   r-   Ú<module>   s�  8
ýÿûûûû	Æâÿm


û+
	

þ	





	
$#(



	






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

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