U
    f/eׄ                     @  s*  d dl mZ d dlmZmZ d dlZd dlmZ d dlZ	d dl
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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$d*d+ Z!e d'd,d- Z"ej#e
j$j%e d'e
j$j&e d.d/d0d1 Z'd2d3 Z(d4d5 Z)d6d7 Z*d8d9 Z+d:d; Z,e d'e
j$-d<d=d>gd?d@ Z.e
j$-d<d=d>gdAdB Z/e d'dCdD Z0dEdF Z1ej#e d'dGdH Z2dIdJ Z3e d'dKdL Z4dMdN Z5e d'dOdP Z6dQdR Z7dSdT Z8e d'dUdV Z9e d'dWdX Z:dYdZ Z;d[d\ Z<e d'd]d^ Z=e d'e
j$-d_d=dgd`da Z>dbdc Z?ddde Z@dfdg ZAdhdi ZBe d'djdk ZCdldm ZDdndo ZEdpdq ZFdrds ZGdtdu ZHdvdw ZIdxdy ZJe d'dzd{ ZKeLd'd|d} ZMd~d ZNe d'dd ZOe d'dd ZPe d'dd ZQe d'dd ZRe d'dd ZSe d'dd ZTe d'dd ZUe d'dd ZVe d'dd ZWe d'dd ZXe d'dd ZYe d'e
j$-d<d=d>gdd ZZej#e d'dd Z[e
j$-dddddgdd Z\e
j$-ddddgdd Z]e
j$-ddddgdd Z^e
j$-ddddgdd Z_e
j$-ddddgdd Z`dd Zaej#e de d'dd ZbdS )    )annotations)BytesIOStringION)	HTTPError)PY38)	DataFrame)read_xmlsquarecircletriangleh           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    @/tmp/pip-unpacked-wheel-tiezk1ph/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    r0   z&etree alpha ordered attributes < py3.8)reasonc                 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+   )r.   urlZdf_url_lxmlZdf_url_etreer    r    r!   test_parser_consistency_url   s
    	r5   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 Nr&   r'   r(   r)   r*   cookingchildrenwebEveryday ItalianHarry PotterLearning XMLGiada De LaurentiisJ K. RowlingErik T. Ray          >@=
ףp=@皙C@)categorytitleauthoryearprice)openr   r   r,   r-   )r.   r%   r"   r/   fdf_filedf_expectedr    r    r!   test_file_like  s    
rN   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 r6   )
rJ   readr   
isinstancebytesr   r   r   r,   r-   )r.   r%   r"   r/   rK   xml_objZdf_iorM   r    r    r!   test_file_io#  s     
rS   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 r6   )rJ   rO   r   r   r,   r-   r.   r%   r"   r/   rK   rR   Zdf_strrM   r    r    r!    test_file_buffered_reader_string:  s    
rU   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 r6   )rJ   nextrO   r   r   r,   r-   rT   r    r    r!   ,test_file_buffered_reader_no_xml_declarationN  s    
rW   c              	   C  sF   | dddd}t |d$}tt| |d |jr8tW 5 Q R X d S )Nr&   r'   r(   r)   r   r*   )rJ   r   r   rO   closedAssertionError)r.   r%   Zxml_filerK   r    r    r!   test_file_handle_closec  s    rZ   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#   r*   
lxml.etreer_   pytestraisesr   )r[   r_   r    r    r!   test_empty_string_lxmll  s    rf   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`   r$   r*   )xml.etree.ElementTreerh   rd   re   r   )r[   rh   r    r    r!   test_empty_string_etreeu  s    rj   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'   htmlr)   !Start tag expected, '<' not foundr`   r#   r*   rc   r_   ospathjoinrd   re   r   )r_   r/   r    r    r!   test_wrong_file_path_lxml}  s    rq   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   rg   r'   rk   r)   znot well-formedr`   r$   r*   )ri   rh   rn   ro   rp   rd   re   r   )rh   r/   r    r    r!   test_wrong_file_path_etree  s    rr   c               	   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 )Nz'https://www.w3schools.com/xml/books.xml.//book[count(*)=4]r3   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   Z	paperback)rE   rF   rG   rH   rI   Zcoverr   r   r,   r-   )r4   Zdf_urlrM   r    r    r!   test_url  s    rv   c              	   C  s0   t jtdd d}t|d| d W 5 Q R X d S )NzHTTP Error 404: Not Foundr`   z(https://www.w3schools.com/xml/python.xmlrs   r2   )rd   re   r   r   )r%   r4   r    r    r!   test_wrong_url  s    rw   c              	   C  s:   | dddd}t jtdd t|ddd	 W 5 Q R X d S )
Nr&   r'   r(   r)   xpath does not return any nodesr`   z	.//pythonr#   r2   rd   re   
ValueErrorr   r.   r/   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 )
Nr&   r'   r(   r)   z/You have used an incorrect or unsupported XPathr`   	.//[book]r$   r2   rd   re   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   XPathEvalErrorr&   r'   r(   r)   zInvalid expressionr`   r}   r#   r2   rc   r   rd   re   r   r.   r   r/   r    r    r!   test_bad_xpath_lxml  s    r   c                 C  sJ   t tdddi| d}tdddgddd	gd
tddgd}t|| d S )N	.//ns:rownshttp://example.comr3   
namespacesr%   r	   r
   r   r   r         @nan      @r   )r   xml_default_nmspr   floatr,   r-   r%   Zdf_nmsprM   r    r    r!   test_default_namespace  s    r   c                 C  sJ   t tdddi| d}tdddgddd	gd
tddgd}t|| d S )N
.//doc:rowdocr   r   r	   r
   r   r   r   r   r   r   r   )r   xml_prefix_nmspr   r   r,   r-   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   r,   r-   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   r,   r-   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 )	Nr&   r'   r(   r)   rx   r`   z.//Placemarkr2   ry   r.   r%   r/   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 )
Nr&   r'   r(   cta_rail_lines.kmlz'you used an undeclared namespace prefixr`   .//kml:Placemarkr$   r2   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   r&   r'   r(   r   zUndefined namespace prefixr`   r   r#   r2   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   )rd   re   	TypeErrorr   r   )r   r    r    r!   test_none_namespace_prefix2  s     r   c                 C  s\   | dddd}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 r6   ru   r.   r%   r/   rL   rM   r    r    r!   test_file_elems_and_attrsC  s    
r   c                 C  s>   | dddd}t |d|d}tddd	d
gi}t|| d S )Nr&   r'   r(   r)   T)
attrs_onlyr%   rE   r7   r8   r9   ru   r   r    r    r!   test_file_only_attrsS  s    r   c                 C  sV   | dddd}t |d|d}tddd	gd
ddgdddgdddgd}t|| d S )Nr&   r'   r(   r)   T)
elems_onlyr%   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   )rF   rG   rH   rI   ru   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 )	Nr&   r'   r(   r   z3Either element or attributes can be parsed not bothr`   T)r   r   r%   ry   r   r    r    r!   test_elem_and_attrs_onlyj  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
.//stationrt   r$   r2   r+   )r(   r   r   r    r    r!   test_attribute_centric_xmls  s    r   c                 C  sh   | dddd}t |ddddd	g|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 )Nr&   r'   r(   r)   Col1Col2Col3Col4Col5namesr%   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   )r   r   r   r   r   ru   r   r    r    r!   test_names_option_output  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 )Nr&   r'   r(   r)   znames does not match lengthr`   r   r   r   r   ry   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 )	Nr&   r'   r(   r)   zis not a valid type for namesr`   zCol1, Col2, Col3r   )rd   re   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 )Nr&   r'   r(   baby_names.xmlz'utf-8' codec can't decoder`   r*   rd   re   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 )	Nr&   r'   r(   r   zIUTF-16 stream does not start with BOM|'utf-16-le' codec can't decode byter`   zUTF-16encodingr%   )rd   re   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 )	Nr&   r'   r(   r   zunknown encoding: uft-8r`   zUFT-8r   )rd   re   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 )	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+   )r.   r/   r   r   r    r    r!   %test_parser_consistency_with_encoding  s    r   c              	   C  s4   | dddd}t jtdd t| W 5 Q R X d S )Nr&   r'   r(   r)   z7lxml not found, please install or use the etree parser.r`   )rd   re   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 )	Nr&   r'   r(   r)   z,Values for parser can only be lxml or etree.r`   Zbs4r*   ry   r{   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   r3   r   
stylesheet)r   r,   r-   df_kml)r.   kmlxsldf_styler    r    r!   test_stylesheet_file  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 r   )rJ   r   r,   r-   r   )r.   r"   r   r   rK   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 )Nr&   r'   r(   r   r   r   r   r   r   r   )rJ   r   rO   r   r   r,   r-   r   r.   r"   r   r   rK   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   )rJ   rO   r   r,   r-   r   r   r    r    r!   test_stylesheet_buffered_reader.  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   XSLTParseErrorr&   r'   r(   r   r)   zdocument is not a stylesheetr`   r   rc   r   rd   re   r   )r.   r   r   r   r    r    r!   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>r&   r'   r(   r   z(Extra content at the end of the documentr`   r   rb   )r.   r_   r   r   r    r    r!   test_incorrect_xsl_syntaxK  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>r&   r'   r(   r   zfailed to compiler`   r   r   )r.   r   r   r   r    r    r!   test_incorrect_xsl_evalk  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>r&   r'   r(   r   zCannot resolve URIr`   r   )rc   r   rd   re   r   )r.   r   r   r   r    r    r!   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'   r(   r   zflatten.xslrl   r`   r   rm   )r_   r   r   r    r    r!   test_wrong_stylesheet  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 )Nr&   r'   r(   r   r   r   r   )rJ   r   rO   r   r   rX   rY   )r.   r"   r   r   rK   r   r    r    r!   test_stylesheet_file_close  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'   r(   r   r   z*To use stylesheet, you need lxml installedr`   r$   )r%   r   )rn   ro   rp   rd   re   rz   r   )r.   r   r   r    r    r!   test_stylesheet_with_etree  s     r   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'   r(   r   z3Document is empty|Start tag expected, '<' not foundr`   r   rm   )r[   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]rF   artist)r3   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)rF   r   ru   )r(   r   Zdf_xslrM   r    r    r!   test_online_stylesheet  s0    r   compbz2gzipxzzipc              	   C  sD   t  &}tj|d| |d t|| |d}W 5 Q R X t |t d S )NF)indexr%   compressionr%   r   )r,   ensure_cleangeom_dfto_xmlr   r-   )r%   r   ro   Zxml_dfr    r    r!   test_compression_read  s    
r   c              
   C  sP   t  >}tj|| |d tjtdd t|| dd W 5 Q R X W 5 Q R X d S )Nr   zInvalid data streamr`   r   r,   r   r   r   rd   re   OSErrorr   r%   r   ro   r    r    r!   test_wrong_compression_bz2  s    
r   c              
   C  sP   t  >}tj|| |d tjtdd t|| dd W 5 Q R X W 5 Q R X d S )Nr   zNot a gzipped filer`   r   r   r   r    r    r!   test_wrong_compression_gz  s    
r   c              
   C  s\   ddl m} t >}tj|| |d tj|dd t|| dd W 5 Q R X W 5 Q R X d S )Nr   )	LZMAErrorr   z%Input format not supported by decoderr`   r   )	lzmar   r,   r   r   r   rd   re   r   )r%   r   r   ro   r    r    r!   test_wrong_compression_xz  s
    
r   c              
   C  s\   ddl m} t >}tj|| |d tj|dd t|| dd W 5 Q R X W 5 Q R X d S )Nr   )
BadZipFiler   zFile is not a zip filer`   r   )	zipfiler   r,   r   r   r   rd   re   r   )r%   r   r   ro   r    r    r!   test_wrong_compression_zip$  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   )rd   re   rz   r,   r   r   )r.   r%   ro   r    r    r!   test_unsuported_compression/  s    
r   Zs3fsc                  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)r3   r   r%   Zstorage_optionsr$   r+   )Zs3r   r   r    r    r!   test_s3_parser_consistency8  s     r   )c
__future__r   r&   r   r   rn   urllib.errorr   Znumpynprd   Zpandas.compatr   Zpandas.util._test_decoratorsutilZ_test_decoratorstdZpandasr   Zpandas._testingZ_testingr,   Zpandas.io.xmlr   r   r   r   r   r   Zfixturer"   r   Z
skip_if_nor%   r0   networkmarkZslowZskipifr5   rN   rS   rU   rW   rZ   Zparametrizerf   rj   rq   rr   rv   rw   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   r   r   r   r    r    r    r!   <module>   sD  8
	m


	

	




	


	





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

$
	





	