a
    nÝEb¢‡  ã                   @  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Zd dlZd dlmZ d dlmZ d dlm  mZ d d	lmZ d dlmZ d d
lmZ eg d¢g d¢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$�d*d+„ ƒZ'e &d'¡d,d-„ ƒZ(ej)j*ej)j+e &d'¡ej*d.d/„ ƒƒƒƒZ,d0d1„ Z-d2d3„ Z.d4d5„ Z/d6d7„ Z0d8d9„ Z1e &d'¡ej) 2d:d;d<g¡d=d>„ ƒƒZ3ej) 2d:d;d<g¡d?d@„ ƒZ4e &d'¡dAdB„ ƒZ5dCdD„ Z6ej)j*ej*e &d'¡dEdF„ ƒƒƒZ7ej)j*ej*dGdH„ ƒƒZ8e &d'¡dIdJ„ ƒZ9dKdL„ Z:e &d'¡dMdN„ ƒZ;dOdP„ Z<dQdR„ Z=e &d'¡dSdT„ ƒZ>e &d'¡dUdV„ ƒZ?dWdX„ Z@dYdZ„ ZAe &d'¡d[d\„ ƒZBe &d'¡ej) 2d]d;dg¡d^d_„ ƒƒZCd`da„ ZDdbdc„ ZEddde„ ZFdfdg„ ZGe &d'¡dhdi„ ƒZHdjdk„ ZIdldm„ ZJdndo„ ZKdpdq„ ZLdrds„ ZMdtdu„ ZNdvdw„ ZOe &d'¡dxdy„ ƒZPe &d'¡dzd{„ ƒZQd|d}„ ZRe Sd'¡d~d„ ƒZTd€d�„ ZUe &d'¡d‚dƒ„ ƒZVd„d…„ ZWe &d'¡d†d‡„ ƒZXe &d'¡dˆd‰„ ƒZYe &d'¡dŠd‹„ ƒZZe &d'¡dŒd�„ ƒZ[e &d'¡dŽd�„ ƒZ\e &d'¡d�d‘„ ƒZ]e &d'¡d’d“„ ƒZ^e &d'¡d”d•„ ƒZ_e &d'¡d–d—„ ƒZ`e &d'¡d˜d™„ ƒZae &d'¡ej) 2d:d;d<g¡dšd›„ ƒƒZbej)j*e &d'¡ej*dœd�„ ƒƒƒZcdždŸ„ Zdd d¡„ Zed¢d£„ Zfej)j*e &d¤¡e &d'¡ej)jgeƒ d¥d¦�ej*d§d¨„ ƒƒƒƒƒZhdS )©é    )Úannotations)ÚBytesIOÚStringIO)Ú	LZMAErrorN)Ú	HTTPError)Ú
BadZipFile)Úis_ci_environment)Úimport_optional_dependency)Ú	DataFrame)Úread_xml©ZsquareÚcircleÚtriangle©éh  r   é´   é   é   ©ÚshapeÚdegreesZ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ÚnameZstyleUrlZextrudeZaltitudeModeZcoordinatesÚrbÚr)Úparamsc                 C  s   | j S ©N©Úparam©Úrequest© r$   ú\/home/ja/django-apps/lartica_env/lib/python3.9/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    r)   c                 C  s6   | ddddƒ}t |dd�}t |dd�}t ||¡ d S )NÚioÚdataÚxmlú	books.xmlr'   ©r)   r(   ©r   ÚtmÚassert_frame_equal)ÚdatapathÚfilenameZdf_file_lxmlZdf_file_etreer$   r$   r%   Útest_parser_consistency_fileù   s    r4   c                  C  s0   d} t | ddd�}t | ddd�}t ||¡ d S )NzOhttps://data.cityofchicago.org/api/views/8pix-ypme/rows.xml?accessType=DOWNLOADz
.//row/rowr'   ©Úxpathr)   r(   r/   )ÚurlZdf_url_lxmlZdf_url_etreer$   r$   r%   Útest_parser_consistency_url  s
    ÿr8   c                 C  s|   | ddddƒ}t ||ƒ�}t||d�}W d   ƒ n1 s:0    Y  tg d¢g d¢g d¢g d	¢g d
¢dœƒ}t ||¡ d S ©Nr*   r+   r,   r-   r.   ©ÚcookingÚchildrenZweb©zEveryday ItalianzHarry PotterzLearning XML©zGiada De LaurentiiszJ K. RowlingzErik T. Ray©éÕ  r@   iÓ  ©g      >@g=
×£pý=@gš™™™™ùC@)ÚcategoryÚtitleÚauthorÚyearÚprice)Úopenr   r
   r0   r1   )r2   r)   r&   r3   ÚfÚdf_fileÚdf_expectedr$   r$   r%   Útest_file_like  s    *ûÿ
rK   c                 C  sš   | ddddƒ}t ||ƒ�}| ¡ }W d   ƒ n1 s60    Y  tt|tƒrTt|ƒnt|ƒ|d�}tg d¢g d¢g d¢g d	¢g d
¢dœƒ}t 	||¡ d S r9   )
rG   Úreadr   Ú
isinstanceÚbytesr   r   r
   r0   r1   )r2   r)   r&   r3   rH   Úxml_objZdf_iorJ   r$   r$   r%   Útest_file_io#  s     &þûÿ
rP   c                 C  s„   | ddddƒ}t ||ƒ�}| ¡ }W d   ƒ n1 s60    Y  t||d�}tg d¢g d¢g d¢g d	¢g d
¢dœƒ}t ||¡ d S r9   )rG   rL   r   r
   r0   r1   ©r2   r)   r&   r3   rH   rO   Zdf_strrJ   r$   r$   r%   Ú test_file_buffered_reader_string:  s    &ûÿ
rR   c                 C  sŒ   | ddddƒ}t ||ƒ� }t|ƒ | ¡ }W d   ƒ n1 s>0    Y  t||d�}tg d¢g d¢g d¢g d	¢g d
¢dœƒ}t ||¡ d S r9   )rG   ÚnextrL   r   r
   r0   r1   rQ   r$   r$   r%   Ú,test_file_buffered_reader_no_xml_declarationN  s    &ûÿ
rT   c                 C  sZ   | ddddƒ}t |dƒ�.}tt| ¡ ƒ|d� |jr8J ‚W d   ƒ n1 sL0    Y  d S )Nr*   r+   r,   r-   r   r.   )rG   r   r   rL   Úclosed)r2   r)   Zxml_filerH   r$   r$   r%   Útest_file_handle_closec  s    rV   ÚvalÚ ó    c                 C  sJ   ddl m} tj|dd�� t| dd� W d   ƒ n1 s<0    Y  d S )Nr   ©ÚXMLSyntaxErrorzDocument is empty©Úmatchr'   r.   ©Ú
lxml.etreer[   ÚpytestÚraisesr   )rW   r[   r$   r$   r%   Útest_empty_string_lxmll  s    rb   c                 C  sJ   ddl m} tj|dd�� t| dd� W d   ƒ n1 s<0    Y  d S )Nr   ©Ú
ParseErrorzno element foundr\   r(   r.   )Úxml.etree.ElementTreerd   r`   ra   r   )rW   rd   r$   r$   r%   Útest_empty_string_etreeu  s    rf   c                  C  sZ   ddl m}  tj ddd¡}tj| dd�� t|dd	� W d   ƒ n1 sL0    Y  d S )
Nr   rZ   r+   Úhtmlr-   ú!Start tag expected, '<' not foundr\   r'   r.   ©r_   r[   ÚosÚpathÚjoinr`   ra   r   )r[   r3   r$   r$   r%   Útest_wrong_file_path_lxml}  s    þrm   c                  C  sZ   ddl m}  tj ddd¡}tj| dd�� t|dd	� W d   ƒ n1 sL0    Y  d S )
Nr   rc   r+   rg   r-   znot well-formedr\   r(   r.   )re   rd   rj   rk   rl   r`   ra   r   )rd   r3   r$   r$   r%   Útest_wrong_file_path_etreeŠ  s    þrn   c                  C  sN   d} t | dd�}tg d¢g d¢g d¢g d¢g d¢g d	¢d
œƒ}t ||¡ d S )Nz'https://www.w3schools.com/xml/books.xmlú.//book[count(*)=4]©r6   r:   r=   r>   r?   rA   )NNZ	paperback)rB   rC   rD   rE   rF   Zcover©r   r
   r0   r1   )r7   Zdf_urlrJ   r$   r$   r%   Útest_url–  s    úÿrr   c                 C  sD   t jtdd��" d}t|d| d� W d   ƒ n1 s60    Y  d S )NzHTTP Error 404: Not Foundr\   z(https://www.w3schools.com/xml/python.xmlro   r5   )r`   ra   r   r   )r)   r7   r$   r$   r%   Útest_wrong_url«  s    rs   c                 C  sN   | ddddƒ}t jtdd�� t|ddd	� W d   ƒ n1 s@0    Y  d S )
Nr*   r+   r,   r-   úxpath does not return any nodesr\   z	.//pythonr'   r5   ©r`   ra   Ú
ValueErrorr   ©r2   r3   r$   r$   r%   Útest_empty_xpath_lxml¶  s    rx   c                 C  sN   | ddddƒ}t jtdd�� t|ddd	� W d   ƒ n1 s@0    Y  d S )
Nr*   r+   r,   r-   z/You have used an incorrect or unsupported XPathr\   ú	.//[book]r(   r5   ©r`   ra   ÚSyntaxErrorr   rw   r$   r$   r%   Útest_bad_xpath_etree½  s
    ÿr|   c                 C  sZ   ddl m} | ddddƒ}tj|dd�� t|d	d
d� W d   ƒ n1 sL0    Y  d S )Nr   ©ÚXPathEvalErrorr*   r+   r,   r-   zInvalid expressionr\   ry   r'   r5   ©r_   r~   r`   ra   r   ©r2   r~   r3   r$   r$   r%   Útest_bad_xpath_lxmlÅ  s    r�   c                 C  sF   t tdddi| d�}tg d¢g d¢dtdƒd	gd
œƒ}t ||¡ d S )Nú	.//ns:rowÚnsúhttp://example.com©r6   Ú
namespacesr)   r   r   ç      @Únanç      @r   )r   Úxml_default_nmspr
   Úfloatr0   r1   ©r)   Zdf_nmsprJ   r$   r$   r%   Útest_default_namespaceÑ  s    üýÿr�   c                 C  sF   t tdddi| d�}tg d¢g d¢dtdƒd	gd
œƒ}t ||¡ d S )Nú
.//doc:rowÚdocr„   r…   r   r   r‡   rˆ   r‰   r   )r   Úxml_prefix_nmspr
   r‹   r0   r1   rŒ   r$   r$   r%   Útest_prefix_namespaceä  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�   r(   )r   rŠ   r0   r1   ©Údf_lxmlÚdf_etreer$   r$   r%   Ú"test_consistency_default_namespace÷  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   r�   r0   r1   r’   r$   r$   r%   Ú!test_consistency_prefix_namespace
  s    üür–   c                 C  sN   | ddddƒ}t jtdd�� t|d|d� W d   ƒ n1 s@0    Y  d S )	Nr*   r+   r,   r-   rt   r\   z.//Placemarkr5   ru   ©r2   r)   r3   r$   r$   r%   Ú*test_missing_prefix_with_default_namespace   s    r˜   c                 C  sN   | ddddƒ}t jtdd�� t|ddd	� W d   ƒ n1 s@0    Y  d S )
Nr*   r+   r,   úcta_rail_lines.kmlz'you used an undeclared namespace prefixr\   ú.//kml:Placemarkr(   r5   rz   rw   r$   r$   r%   Ú$test_missing_prefix_definition_etree&  s    r›   c                 C  sZ   ddl m} | ddddƒ}tj|dd�� t|d	d
d� W d   ƒ n1 sL0    Y  d S )Nr   r}   r*   r+   r,   r™   zUndefined namespace prefixr\   rš   r'   r5   r   r€   r$   r$   r%   Ú#test_missing_prefix_definition_lxml,  s    rœ   Úkeyc                 C  sF   t jtdd��$ ttd| didd� W d   ƒ n1 s80    Y  d S )Nz0empty namespace prefix is not supported in XPathr\   rš   úhttp://www.opengis.net/kml/2.2r'   r…   )r`   ra   Ú	TypeErrorr   rŠ   )r�   r$   r$   r%   Útest_none_namespace_prefix5  s    ÿür    c                 C  sR   | ddddƒ}t ||d�}tg d¢g d¢g d¢g d	¢g d
¢dœƒ}t ||¡ d S r9   rq   ©r2   r)   r3   rI   rJ   r$   r$   r%   Útest_file_elems_and_attrsF  s    ûÿ
r¢   c                 C  s<   | ddddƒ}t |d|d�}tdg d¢iƒ}t ||¡ d S )	Nr*   r+   r,   r-   T)Ú
attrs_onlyr)   rB   r:   rq   r¡   r$   r$   r%   Útest_file_only_attrsV  s    r¤   c                 C  sN   | ddddƒ}t |d|d�}tg d¢g d¢g d	¢g d
¢dœƒ}t ||¡ d S )Nr*   r+   r,   r-   T)Ú
elems_onlyr)   r=   r>   r?   rA   )rC   rD   rE   rF   rq   r¡   r$   r$   r%   Útest_file_only_elems^  s    üÿ	r¦   c                 C  sP   | ddddƒ}t jtdd��  t|dd|d� W d   ƒ n1 sB0    Y  d S )	Nr*   r+   r,   r™   z3Either element or attributes can be parsed not bothr\   T)r¥   r£   r)   ru   r—   r$   r$   r%   Útest_elem_and_attrs_onlym  s    þr§   c                  C  s.   d} t | dd�}t | ddd�}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
.//stationrp   r(   r5   r/   )r,   r“   r”   r$   r$   r%   Útest_attribute_centric_xmlv  s    r¨   c                 C  sX   | ddddƒ}t |g d¢|d�}tg d¢g d¢g d	¢g d
¢g d¢dœƒ}t ||¡ d S )Nr*   r+   r,   r-   )ÚCol1ÚCol2ÚCol3ZCol4ZCol5©Únamesr)   r:   r=   r>   r?   rA   rq   r¡   r$   r$   r%   Útest_names_option_output•  s    
ÿûÿ
r®   c                 C  sR   | ddddƒ}t jtdd��" t|g d¢|d� W d   ƒ n1 sD0    Y  d S )	Nr*   r+   r,   r-   znames does not match lengthr\   )r©   rª   r«   r¬   ru   r—   r$   r$   r%   Útest_names_option_wrong_length¨  s    r¯   c                 C  sN   | ddddƒ}t jtdd�� t|d|d� W d   ƒ n1 s@0    Y  d S )	Nr*   r+   r,   r-   zis not a valid type for namesr\   zCol1, Col2, Col3r¬   )r`   ra   rŸ   r   r—   r$   r$   r%   Útest_names_option_wrong_type¯  s    r°   c                 C  sL   | ddddƒ}t jtdd�� t||d� W d   ƒ n1 s>0    Y  d S )Nr*   r+   r,   úbaby_names.xmlz'utf-8' codec can't decoder\   r.   ©r`   ra   ÚUnicodeDecodeErrorr   r—   r$   r$   r%   Útest_wrong_encoding¹  s    r´   c                 C  sN   | ddddƒ}t jtdd�� t|d|d� W d   ƒ n1 s@0    Y  d S )	Nr*   r+   r,   r±   zIUTF-16 stream does not start with BOM|'utf-16-le' codec can't decode byter\   zUTF-16©Úencodingr)   )r`   ra   ÚUnicodeErrorr   r—   r$   r$   r%   Útest_utf16_encoding¿  s    ýr¸   c                 C  sN   | ddddƒ}t jtdd�� t|d|d� W d   ƒ n1 s@0    Y  d S )	Nr*   r+   r,   r±   zunknown encoding: UFT-8r\   zUFT-8rµ   )r`   ra   ÚLookupErrorr   r—   r$   r$   r%   Útest_unknown_encodingË  s    rº   c                 C  sN   | ddddƒ}t jtdd�� t|d|d� W d   ƒ n1 s@0    Y  d S )	Nr*   r+   r,   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 S )
Nr*   r+   r,   r±   r'   z
ISO-8859-1©r)   r¶   r(   z
iso-8859-1r/   )r2   r3   r“   r”   r$   r$   r%   Ú%test_parser_consistency_with_encoding×  s    r¾   c                  C  sH   d} t jtdd��" tt| ƒdd d� W d   ƒ n1 s:0    Y  d S )Nú-<data>
  <row>
    <a>c</a>
  </row>
</data>
zencoding Noner\   r'   r½   )r`   ra   rŸ   r   r   )r+   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¿   r(   r½   ÚaÚc)r   r   r
   r0   r1   )r+   ÚresultÚexpectedr$   r$   r%   Útest_none_encoding_etreeí  s    rÅ   c                 C  sH   | ddddƒ}t jtdd�� t|ƒ W d   ƒ n1 s:0    Y  d S )Nr*   r+   r,   r-   z7lxml not found, please install or use the etree parser.r\   )r`   ra   ÚImportErrorr   rw   r$   r$   r%   Útest_default_parser_no_lxmlý  s
    ÿrÇ   c                 C  sL   | ddddƒ}t jtdd�� t|dd� W d   ƒ n1 s>0    Y  d S )	Nr*   r+   r,   r-   z,Values for parser can only be lxml or etree.r\   Zbs4r.   ru   rw   r$   r$   r%   Útest_wrong_parser  s
    ÿrÈ   c                 C  s@   | ddddƒ}| ddddƒ}t |dddi|d	�}t t|¡ d S ©
Nr*   r+   r,   r™   úflatten_doc.xslú.//k:PlacemarkÚkrž   ©r6   r†   Ú
stylesheet)r   r0   r1   Údf_kml)r2   ÚkmlÚxslÚdf_styler$   r$   r%   Útest_stylesheet_file  s    ürÓ   c                 C  sT   | ddddƒ}t jtdd��$ t|ddd	i|d
� W d   ƒ n1 sF0    Y  d S )Nr*   r+   r,   r™   zkeyword-onlyr\   rË   rÌ   rž   )r†   r)   )r0   Zassert_produces_warningÚFutureWarningr   )r2   r)   rÐ   r$   r$   r%   Ú.test_read_xml_passing_as_positional_deprecated"  s    ürÕ   c                 C  sj   | ddddƒ}| ddddƒ}t ||ƒ�$}t|dddi|d	�}W d   ƒ n1 sP0    Y  t t|¡ d S rÉ   )rG   r   r0   r1   rÏ   )r2   r&   rÐ   rÑ   rH   rÒ   r$   r$   r%   Útest_stylesheet_file_like/  s    ü$rÖ   c                 C  sŒ   | ddddƒ}| ddddƒ}t ||ƒ�2}|dkr>t| ¡ ƒ}nt| ¡ ƒ}W d   ƒ n1 s^0    Y  t|ddd	i|d
�}t t|¡ d S )Nr*   r+   r,   r™   rÊ   r   rË   rÌ   rž   rÍ   )rG   r   rL   r   r   r0   r1   rÏ   ©r2   r&   rÐ   rÑ   rH   Úxsl_objrÒ   r$   r$   r%   Útest_stylesheet_io?  s    *ürÙ   c                 C  sr   | ddddƒ}| ddddƒ}t ||ƒ�}| ¡ }W d   ƒ n1 sD0    Y  t|dddi|d	�}t t|¡ d S rÉ   )rG   rL   r   r0   r1   rÏ   r×   r$   r$   r%   Útest_stylesheet_buffered_readerV  s    &ürÚ   c                 C  sf   ddl m} | ddddƒ}| ddddƒ}tj|dd	�� t||d
� W d   ƒ n1 sX0    Y  d S )Nr   ©ÚXSLTParseErrorr*   r+   r,   r™   r-   zdocument is not a stylesheetr\   ©rÎ   ©r_   rÜ   r`   ra   r   )r2   rÜ   rÐ   rÑ   r$   r$   r%   Útest_not_stylesheeth  s
    rß   c                 C  s\   ddl m} d}| ddddƒ}tj|dd	�� t||d
� W d   ƒ n1 sN0    Y  d S )Nr   rZ   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>r*   r+   r,   r™   z(Extra content at the end of the documentr\   rÝ   r^   )r2   r[   rÑ   rÐ   r$   r$   r%   Útest_incorrect_xsl_syntaxs  s    ÿrà   c                 C  s\   ddl m} d}| ddddƒ}tj|dd	�� t||d
� W d   ƒ n1 sN0    Y  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>r*   r+   r,   r™   zfailed to compiler\   rÝ   rÞ   )r2   rÜ   rÑ   rÐ   r$   r$   r%   Útest_incorrect_xsl_eval“  s
    rá   c                 C  s\   ddl m} d}| ddddƒ}tj|dd	�� t||d
� W d   ƒ n1 sN0    Y  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>r*   r+   r,   r™   zCannot resolve URIr\   rÝ   )r_   râ   r`   ra   r   )r2   râ   rÑ   rÐ   r$   r$   r%   Útest_incorrect_xsl_apply±  s
    rã   c                  C  sj   ddl m}  tj ddd¡}tj ddd¡}tj| dd�� t||d	� W d   ƒ n1 s\0    Y  d S )
Nr   rZ   r+   r,   r™   zflatten.xslrh   r\   rÝ   ri   )r[   rÐ   rÑ   r$   r$   r%   Útest_wrong_stylesheetÇ  s    þrä   c                 C  s‚   | ddddƒ}| ddddƒ}t ||ƒ�H}|dkr>t| ¡ ƒ}nt| ¡ ƒ}t||d� |jr`J ‚W d   ƒ n1 st0    Y  d S )Nr*   r+   r,   r™   rÊ   r   rÝ   )rG   r   rL   r   r   rU   )r2   r&   rÐ   rÑ   rH   rØ   r$   r$   r%   Útest_stylesheet_file_closeÕ  s    rå   c                 C  s`   t j ddd¡}t j ddd¡}tjtdd�� t|d|d� W d   ƒ n1 sR0    Y  d S )	Nr+   r,   r™   rÊ   z*To use stylesheet, you need lxml installedr\   r(   )r)   rÎ   )rj   rk   rl   r`   ra   rv   r   )r2   rÐ   rÑ   r$   r$   r%   Útest_stylesheet_with_etreeç  s    ÿræ   c                 C  sZ   ddl m} tj ddd¡}tj|dd�� t|| d� W d   ƒ n1 sL0    Y  d S )	Nr   rZ   r+   r,   r™   z3Document is empty|Start tag expected, '<' not foundr\   rÝ   ri   )rW   r[   rÐ   r$   r$   r%   Útest_empty_stylesheetò  s    ÿrç   c                  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 )Nz4https://www.w3schools.com/xml/cdcatalog_with_xsl.xmlz+https://www.w3schools.com/xml/cdcatalog.xslz.//tr[td and position() <= 6]rC   Úartist)r6   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)rC   rè   rq   )r,   rÑ   Zdf_xslrJ   r$   r$   r%   Útest_online_stylesheetÿ  s0    üûûøÿré   c                 C  sX   t  ¡ �0}tj|d| |d� t|| |d�}W d   ƒ n1 s>0    Y  t  |t¡ d S )NF)Úindexr)   Úcompression©r)   rë   )r0   Úensure_cleanÚgeom_dfÚto_xmlr   r1   )r)   Úcompression_onlyrk   Zxml_dfr$   r$   r%   Útest_compression_read&  s    
,rñ   c              	   C  sò   |}|}||krd S t dft dftdfdœ}tddd�}|d urN|jdf|d	< td
dd�}|d urntdf|d< || \}}	t ¡ �\}
tj|
| |d� t	j
||	d�� t|
| |d� W d   ƒ n1 sÆ0    Y  W d   ƒ n1 sä0    Y  d S )NzInvalid data streamzNot a gzipped filezFile is not a zip file)Úbz2ÚgzipÚzipZ	zstandardÚignore)ÚerrorszUnknown frame descriptorÚzstdÚlzmaz%Input format not supported by decoderÚxzrì   r\   )ÚOSErrorr   r	   Z	ZstdErrorr   r0   rí   rî   rï   r`   ra   r   )r)   rë   rð   Zactual_compressionZattempted_compressionrö   r÷   rø   Z	error_clsZ	error_strrk   r$   r$   r%   Útest_wrong_compression/  s&    ý
rû   c              	   C  sh   t jtdd��F t ¡ �}t||dd� W d   ƒ n1 s<0    Y  W d   ƒ n1 sZ0    Y  d S )NzUnrecognized compression typer\   Z7zrì   )r`   ra   rv   r0   rí   r   )r2   r)   rk   r$   r$   r%   Útest_unsuported_compressionJ  s    
rü   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)r6   r†   r)   Zstorage_optionsr(   r/   )Zs3r“   r”   r$   r$   r%   Útest_s3_parser_consistencyS  s     
ûûrþ   )iÚ
__future__r   r*   r   r   rø   r   rj   Úurllib.errorr   Úzipfiler   ÚnumpyÚnpr`   Zpandas.compatr   Zpandas.compat._optionalr	   Zpandas.util._test_decoratorsÚutilZ_test_decoratorsÚtdZpandasr
   Zpandas._testingZ_testingr0   Zpandas.io.xmlr   rˆ   rî   rŠ   r�   rÏ   Zfixturer&   r!   Z
skip_if_nor)   r4   ÚmarkÚnetworkZslowr8   rK   rP   rR   rT   rV   Zparametrizerb   rf   rm   rn   rr   rs   rx   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ß   rà   rá   rã   rä   rå   ræ   rç   ré   rñ   rû   rü   Zskipifrþ   r$   r$   r$   r%   Ú<module>   sN  8
ýÿûûûû	Æâÿm


	

	




	




	





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

$		þ