o
    gׄ                     @  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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#e
j$j%e d$e
j$j&e d+d,d-d. Z'd/d0 Z(d1d2 Z)d3d4 Z*d5d6 Z+d7d8 Z,e d$e
j$-d9d:d;gd<d= Z.e
j$-d9d:d;gd>d? Z/e d$d@dA Z0dBdC Z1ej#e d$dDdE Z2dFdG Z3e d$dHdI Z4dJdK Z5e d$dLdM Z6dNdO Z7dPdQ Z8e d$dRdS Z9e d$dTdU Z:dVdW Z;dXdY Z<e d$dZd[ Z=e d$e
j$-d\d:dgd]d^ Z>d_d` Z?dadb Z@dcdd ZAdedf ZBe d$dgdh ZCdidj ZDdkdl ZEdmdn ZFdodp ZGdqdr ZHdsdt ZIdudv ZJe d$dwdx ZKeLd$dydz ZMd{d| ZNe d$d}d~ ZOe d$dd 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$-d9d:d;gdd ZZej#e d$dd Z[e
j$-dg ddd Z\e
j$-dg ddd Z]e
j$-dg ddd Z^e
j$-dg ddd Z_e
j$-dg ddd Z`dd Zaej#e de d$dd ZbdS )    )annotations)BytesIOStringION)	HTTPError)PY38)	DataFrame)read_xmlsquarecircletriangleh  r            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>ID_00001ID_00002ID_00003ID_00004ID_00005r         r   r   zBlue Line (Forest Park)zRed, Purple Linez#LineStyle01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     | j S Nparamrequest r.   Z/home/ubuntu/cloudmapper/venv/lib/python3.10/site-packages/pandas/tests/io/xml/test_xml.pymode      r0   lxml)marksetreec                 C  r(   r)   r*   r,   r.   r.   r/   parser   r1   r5   c                 C  s6   | dddd}t |dd}t |dd}t|| d S )Niodataxml	books.xmlr2   r5   r4   r   tmassert_frame_equal)datapathfilenamedf_file_lxmldf_file_etreer.   r.   r/   test_parser_consistency_file   s   rB   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/rowr2   xpathr5   r4   r;   )r>   urldf_url_lxmldf_url_etreer.   r.   r/   test_parser_consistency_url   s
   	rI   c                 C  s|   | dddd}t ||}t||d}W d    n1 sw   Y  tg dg dg dg d	g d
d}t|| d S Nr6   r7   r8   r9   r:   cookingchildrenwebzEveryday ItalianzHarry PotterzLearning XMLzGiada De LaurentiiszJ K. RowlingzErik T. Ray  rR   i  g      >@g=
ףp=@gC@)categorytitleauthoryearprice)openr   r   r<   r=   )r>   r5   r0   r?   fdf_filedf_expectedr.   r.   r/   test_file_like  s   
r]   c                 C  s   | dddd}t ||}| }W d    n1 sw   Y  tt|tr*t|nt||d}tg dg dg dg d	g d
d}t	|| d S rJ   )
rY   readr   
isinstancebytesr   r   r   r<   r=   )r>   r5   r0   r?   rZ   xml_objdf_ior\   r.   r.   r/   test_file_io#  s"   

rc   c                 C  s   | dddd}t ||}| }W d    n1 sw   Y  t||d}tg dg dg dg d	g d
d}t|| d S rJ   )rY   r^   r   r   r<   r=   r>   r5   r0   r?   rZ   ra   df_strr\   r.   r.   r/    test_file_buffered_reader_string:  s   

rf   c                 C  s   | dddd}t ||}t| | }W d    n1 sw   Y  t||d}tg dg dg dg d	g d
d}t|| d S rJ   )rY   nextr^   r   r   r<   r=   rd   r.   r.   r/   ,test_file_buffered_reader_no_xml_declarationN  s   

rh   c                 C  s\   | dddd}t |d}tt| |d |jrJ W d    d S 1 s'w   Y  d S )Nr6   r7   r8   r9   r%   r:   )rY   r   r   r^   closed)r>   r5   xml_filerZ   r.   r.   r/   test_file_handle_closec  s
   "rk   val     c                 C  L   ddl m} tj|dd t| dd W d    d S 1 sw   Y  d S )Nr   XMLSyntaxErrorzDocument is emptymatchr2   r:   
lxml.etreerq   pytestraisesr   )rl   rq   r.   r.   r/   test_empty_string_lxmll  s   "rx   c                 C  ro   )Nr   
ParseErrorzno element foundrr   r4   r:   )xml.etree.ElementTreerz   rv   rw   r   )rl   rz   r.   r.   r/   test_empty_string_etreeu  s   "r|   c                  C  \   ddl m}  tjddd}tj| dd t|dd	 W d    d S 1 s'w   Y  d S )
Nr   rp   r7   htmlr9   !Start tag expected, '<' not foundrr   r2   r:   ru   rq   ospathjoinrv   rw   r   )rq   r?   r.   r.   r/   test_wrong_file_path_lxml}  s   "r   c                  C  r}   )
Nr   ry   r7   r~   r9   znot well-formedrr   r4   r:   )r{   rz   r   r   r   rv   rw   r   )rz   r?   r.   r.   r/   test_wrong_file_path_etree  s   "r   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]rE   rK   rO   rP   rQ   rS   )NN	paperback)rT   rU   rV   rW   rX   coverr   r   r<   r=   )rF   df_urlr\   r.   r.   r/   test_url  s   r   c                 C  sF   t jtdd d}t|d| d W d    d S 1 sw   Y  d S )NzHTTP Error 404: Not Foundrr   z(https://www.w3schools.com/xml/python.xmlr   rD   )rv   rw   r   r   )r5   rF   r.   r.   r/   test_wrong_url  s   "r   c                 C  P   | dddd}t jtdd t|ddd	 W d    d S 1 s!w   Y  d S )
Nr6   r7   r8   r9   xpath does not return any nodesrr   z	.//pythonr2   rD   rv   rw   
ValueErrorr   r>   r?   r.   r.   r/   test_empty_xpath_lxml  s   "r   c                 C  r   )
Nr6   r7   r8   r9   z/You have used an incorrect or unsupported XPathrr   	.//[book]r4   rD   rv   rw   SyntaxErrorr   r   r.   r.   r/   test_bad_xpath_etree  s   "r   c                 C  \   ddl m} | dddd}tj|dd t|d	d
d W d    d S 1 s'w   Y  d S )Nr   XPathEvalErrorr6   r7   r8   r9   zInvalid expressionrr   r   r2   rD   ru   r   rv   rw   r   r>   r   r?   r.   r.   r/   test_bad_xpath_lxml  
   "r   c                 C  F   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rE   
namespacesr5   r	   r         @nan      @r   )r   xml_default_nmspr   floatr<   r=   r5   df_nmspr\   r.   r.   r/   test_default_namespace     r   c                 C  r   )N
.//doc:rowdocr   r   r	   r   r   r   r   r   )r   xml_prefix_nmspr   r   r<   r=   r   r.   r.   r/   test_prefix_namespace  r   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   r2   r   r   r   r4   )r   r   r<   r=   df_lxmldf_etreer.   r.   r/   "test_consistency_default_namespace     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   r2   r   r4   )r   r   r<   r=   r   r.   r.   r/   !test_consistency_prefix_namespace  r   r   c                 C  P   | dddd}t jtdd t|d|d W d    d S 1 s!w   Y  d S )	Nr6   r7   r8   r9   r   rr   z.//PlacemarkrD   r   r>   r5   r?   r.   r.   r/   *test_missing_prefix_with_default_namespace     "r   c                 C  r   )
Nr6   r7   r8   cta_rail_lines.kmlz'you used an undeclared namespace prefixrr   .//kml:Placemarkr4   rD   r   r   r.   r.   r/   $test_missing_prefix_definition_etree#  r   r   c                 C  r   )Nr   r   r6   r7   r8   r   zUndefined namespace prefixrr   r   r2   rD   r   r   r.   r.   r/   #test_missing_prefix_definition_lxml)  r   r   keyc                 C  sH   t jtdd ttd| didd W d    d S 1 sw   Y  d S )Nz0empty namespace prefix is not supported in XPathrr   r   http://www.opengis.net/kml/2.2r2   r   )rv   rw   	TypeErrorr   r   )r   r.   r.   r/   test_none_namespace_prefix2  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 rJ   r   r>   r5   r?   r[   r\   r.   r.   r/   test_file_elems_and_attrsC  s   
r   c                 C  s<   | dddd}t |d|d}tdg di}t|| d S )	Nr6   r7   r8   r9   T)
attrs_onlyr5   rT   rK   r   r   r.   r.   r/   test_file_only_attrsS  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 )Nr6   r7   r8   r9   T)
elems_onlyr5   rO   rP   rQ   rS   )rU   rV   rW   rX   r   r   r.   r.   r/   test_file_only_elems[  s   	r   c                 C  sR   | dddd}t jtdd t|dd|d W d    d S 1 s"w   Y  d S )	Nr6   r7   r8   r   z3Either element or attributes can be parsed not bothrr   T)r   r   r5   r   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
.//stationr   r4   rD   r;   )r8   r   r   r.   r.   r/   test_attribute_centric_xmls  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 )Nr6   r7   r8   r9   )Col1Col2Col3Col4Col5namesr5   rK   rO   rP   rQ   rS   r   r   r.   r.   r/   test_names_option_output  s   

r   c                 C  sT   | dddd}t jtdd t|g d|d W d    d S 1 s#w   Y  d S )	Nr6   r7   r8   r9   znames does not match lengthrr   )r   r   r   r   r   r   r.   r.   r/   test_names_option_wrong_length  s   "r   c                 C  r   )	Nr6   r7   r8   r9   zis not a valid type for namesrr   zCol1, Col2, Col3r   )rv   rw   r   r   r   r.   r.   r/   test_names_option_wrong_type  s   "r   c                 C  sN   | dddd}t jtdd t||d W d    d S 1 s w   Y  d S )Nr6   r7   r8   baby_names.xmlz'utf-8' codec can't decoderr   r:   rv   rw   UnicodeDecodeErrorr   r   r.   r.   r/   test_wrong_encoding  s   "r   c                 C  r   )	Nr6   r7   r8   r   zIUTF-16 stream does not start with BOM|'utf-16-le' codec can't decode byterr   zUTF-16encodingr5   )rv   rw   UnicodeErrorr   r   r.   r.   r/   test_utf16_encoding  s   "r   c                 C  r   )	Nr6   r7   r8   r   zunknown encoding: uft-8rr   zUFT-8r   )rv   rw   LookupErrorr   r   r.   r.   r/   test_unknown_encoding  r   r   c                 C  r   )	Nr6   r7   r8   r   z'ascii' codec can't decode byterr   asciir   r   r   r.   r.   r/   test_ascii_encoding  r   r   c                 C  s:   | dddd}t |ddd}t |dd	d}t|| d S )
Nr6   r7   r8   r   r2   z
ISO-8859-1)r5   r   r4   z
iso-8859-1r;   )r>   r?   r   r   r.   r.   r/   %test_parser_consistency_with_encoding  s   r   c                 C  sJ   | dddd}t jtdd t| W d    d S 1 sw   Y  d S )Nr6   r7   r8   r9   z7lxml not found, please install or use the etree parser.rr   )rv   rw   ImportErrorr   r   r.   r.   r/   test_default_parser_no_lxml  s   
"r   c                 C  sN   | dddd}t jtdd t|dd W d    d S 1 s w   Y  d S )	Nr6   r7   r8   r9   z,Values for parser can only be lxml or etree.rr   bs4r:   r   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 
Nr6   r7   r8   r   flatten_doc.xsl.//k:Placemarkkr   rE   r   
stylesheet)r   r<   r=   df_kml)r>   kmlxsldf_styler.   r.   r/   test_stylesheet_file  s   r   c                 C  sj   | dddd}| dddd}t ||}t|dddi|d	}W d    n1 s(w   Y  tt| d S r   )rY   r   r<   r=   r   )r>   r0   r   r   rZ   r   r.   r.   r/   test_stylesheet_file_like  s   r   c                 C  s   | dddd}| dddd}t ||}|dkrt| }nt| }W d    n1 s/w   Y  t|ddd	i|d
}tt| d S )Nr6   r7   r8   r   r   r%   r   r   r   r   )rY   r   r^   r   r   r<   r=   r   r>   r0   r   r   rZ   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 s"w   Y  t|dddi|d	}tt| d S r   )rY   r^   r   r<   r=   r   r   r.   r.   r/   test_stylesheet_buffered_reader.  s   
r   c                 C  sh   ddl m} | dddd}| dddd}tj|dd	 t||d
 W d    d S 1 s-w   Y  d S )Nr   XSLTParseErrorr6   r7   r8   r   r9   zdocument is not a stylesheetrr   r   ru   r   rv   rw   r   )r>   r   r   r   r.   r.   r/   test_not_stylesheet@  s   "r   c                 C  ^   ddl m} d}| dddd}tj|dd	 t||d
 W d    d S 1 s(w   Y  d S )Nr   rp   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>r6   r7   r8   r   z(Extra content at the end of the documentrr   r   rt   )r>   rq   r   r   r.   r.   r/   test_incorrect_xsl_syntaxK  s   "r   c                 C  r   )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>r6   r7   r8   r   zfailed to compilerr   r   r   )r>   r   r   r   r.   r.   r/   test_incorrect_xsl_evalk  s   "r   c                 C  r   )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>r6   r7   r8   r   zCannot resolve URIrr   r   )ru   r   rv   rw   r   )r>   r   r   r   r.   r.   r/   test_incorrect_xsl_apply  s   "r   c                  C  sl   ddl m}  tjddd}tjddd}tj| dd t||d	 W d    d S 1 s/w   Y  d S )
Nr   rp   r7   r8   r   zflatten.xslr   rr   r   r   )rq   r   r   r.   r.   r/   test_wrong_stylesheet  s   "r  c                 C  s   | dddd}| dddd}t ||%}|dkrt| }nt| }t||d |jr0J W d    d S 1 s;w   Y  d S )Nr6   r7   r8   r   r   r%   r   )rY   r   r^   r   r   ri   )r>   r0   r   r   rZ   r   r.   r.   r/   test_stylesheet_file_close  s   "r  c                 C  sb   t jddd}t jddd}tjtdd t|d|d W d    d S 1 s*w   Y  d S )	Nr7   r8   r   r   z*To use stylesheet, you need lxml installedrr   r4   )r5   r   )r   r   r   rv   rw   r   r   )r>   r   r   r.   r.   r/   test_stylesheet_with_etree  s   "r  c                 C  s\   ddl m} tjddd}tj|dd t|| d W d    d S 1 s'w   Y  d S )	Nr   rp   r7   r8   r   z3Document is empty|Start tag expected, '<' not foundrr   r   r   )rl   rq   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]rU   artist)rE   r   r   zEmpire BurlesquezHide your heartzGreatest HitszStill got the bluesErosr   z	Bob DylanzBonnie TylerzDolly Partonz
Gary MoorezEros Ramazzotti)rU   r  r   )r8   r   df_xslr\   r.   r.   r/   test_online_stylesheet  s0   r  comp)bz2gzipxzzipc                 C  sX   t  }tj|d| |d t|| |d}W d    n1 sw   Y  t |t d S )NF)indexr5   compressionr5   r  )r<   ensure_cleangeom_dfto_xmlr   r=   )r5   r	  r   xml_dfr.   r.   r/   test_compression_read  s
   
r  )r  r  r  c              	   C     t  7}tj|| |d tjtdd t|| dd W d    n1 s&w   Y  W d    d S W d    d S 1 s>w   Y  d S )Nr  zInvalid data streamrr   r
  r<   r  r  r  rv   rw   OSErrorr   r5   r	  r   r.   r.   r/   test_wrong_compression_bz2     
"r  )r
  r  r  c              	   C  r  )Nr  zNot a gzipped filerr   r  r  r  r.   r.   r/   test_wrong_compression_gz  r  r  )r
  r  r  c              	   C     ddl m} t 7}tj|| |d tj|dd t|| dd W d    n1 s,w   Y  W d    d S W d    d S 1 sDw   Y  d S )Nr   )	LZMAErrorr  z%Input format not supported by decoderrr   r  )	lzmar  r<   r  r  r  rv   rw   r   )r5   r	  r  r   r.   r.   r/   test_wrong_compression_xz     
"r   )r
  r  r  c              	   C  r  )Nr   )
BadZipFiler  zFile is not a zip filerr   r  )	zipfiler"  r<   r  r  r  rv   rw   r   )r5   r	  r"  r   r.   r.   r/   test_wrong_compression_zip$  r!  r$  c              	   C  sz   t jtdd, t }t||dd W d    n1 sw   Y  W d    d S W d    d S 1 s6w   Y  d S )NzUnrecognized compression typerr   7zr  )rv   rw   r   r<   r  r   )r>   r5   r   r.   r.   r/   test_unsuported_compression/  s   
"r&  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:Form990PartVIISectionAGrpirszhttp://www.irs.gov/efiler2   anonT)rE   r   r5   storage_optionsr4   r;   )s3r   r   r.   r.   r/   test_s3_parser_consistency8  s    r,  )c
__future__r   r6   r   r   r   urllib.errorr   numpynprv   pandas.compatr   pandas.util._test_decoratorsutil_test_decoratorstdpandasr   pandas._testing_testingr<   pandas.io.xmlr   r   r  r   r   r   fixturer0   r+   
skip_if_nor5   rB   networkmarkslowskipifrI   r]   rc   rf   rh   rk   parametrizerx   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   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>   sH   6
	m


	

	




	


	












$
	





	