
    d                       d dl mZ d dlmZmZ d dlmZ d dlZd dlm	Z	 d dl
mZ d dlmZ d dlmZ d dlZd dlZd d	lmZ d d
lmZ d dlmZmZ d dlmc mZ d dlZd dlm Z m!Z!m"Z" d dl#m$Z% d dl&m'Z'm(Z( d dl)m*Z* d dl+m,Z,  e!g dg ddej-        dgd          Z.dZ/dZ0 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&          Z1 ej2        d'd(g)          d*             Z3 ej2         ej4        d+ ej5        d+          ,          d-g)          d.             Z6d/ Z7d0 Z8 ej5        d+          d1             Z9ej:        j;        ej:        j<         e%j;        d2d34          d5                                     Z=d6 Z>d7 Z?d8 Z@d9 ZAd: ZBd; ZCd< ZD ej5        d+          ej:        E                    d=d>d?g          d@                         ZFej:        E                    d=d>d?g          dA             ZG ej5        d+          dB             ZHdC ZIej:        j;         e%j;        dDd34           ej5        d+          dE                                     ZJej:        j;         e%j;        dFd34          dG                         ZK ej5        d+          dH             ZLdI ZM ej5        d+          dJ             ZNdK ZOdL ZP ej5        d+          dM             ZQ ej5        d+          dN             ZRdO ZSdP ZT ej5        d+          dQ             ZU ej5        d+          ej:        E                    dRd>dg          dS                         ZVdT ZWdU ZXdV ZYdW ZZdX Z[dY Z\ ej5        d+          dZ             Z]d[ Z^d\ Z_d] Z`d^ Zad_ Zbd` Zcda Zddb Zedc Zfdd Zg ej5        d+          de             Zh ej5        d+          df             Zidg Zj ejk        d+          dh             Zldi Zm ej5        d+          dj             Zn ej5        d+          dk             Zo ej5        d+          dl             Zp ej5        d+          dm             Zq ej5        d+          dn             Zr ej5        d+          do             Zs ej5        d+          dp             Zt ej5        d+          dq             Zu ej5        d+          dr             Zv ej5        d+          ds             Zw ej5        d+          dt             Zx ej5        d+          du             Zy ej5        d+          ej:        E                    d=d>d?g          dv                         Zzdw Z{dx Z|dy Z}ej:        j;         e%j;        dDd34          dz                         Z~d{ Zd| Zd} Zd~ Zd Zd Zd Zd Zd Zej:        j;         ej5        d+           e%j;        dd34          d                                     Zd Zd Zd Zej:        j;         ej5        d           ej5        d+          ej:                             e            d          e%j;        d                                                             Zd Zd ZdS )    )annotations)BytesIOStringIO)	LZMAErrorN)	ReadError)	HTTPError)
ParseError)
BadZipFile)is_ci_environment)import_optional_dependency)EmptyDataErrorParserError)NA	DataFrameSeries)ArrowStringArrayStringArray)
get_handle)read_xmlsquarecircletriangleh  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                    | j         S Nparamrequests    X/var/www/html/t/fyr/venv311/lib/python3.11/site-packages/pandas/tests/io/xml/test_xml.pymoder=      
    =    lxml)marksetreec                    | j         S r7   r8   r:   s    r<   parserrD      r>   r?   c                    t          j                    5 }t          |d          5 }|                    |            d d d            n# 1 swxY w Y   t	          |fi |cd d d            S # 1 swxY w Y   d S )Nw)tmensure_cleanopenwriter   )datakwargspathfs       r<   read_xml_iterparserO     s    			 (d$__ 	GGDMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	''''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (s3   A+AA+A	A+A	A++A/2A/c                   t          | d|          5 }t          j                    5 }t          |d          5 }|                    |j                                                   d d d            n# 1 swxY w Y   t          |fi |cd d d            cd d d            S # 1 swxY w Y   	 d d d            d S # 1 swxY w Y   d S )Nr4   )compressionrF   )r   rG   rH   rI   rJ   handlereadr   )	comp_pathcompression_onlyrL   handlesrM   rN   s         r<   read_xml_iterparse_comprW     s   	Is0@	A	A	A ,W_ 	,$dC /A++--.../ / / / / / / / / / / / / / /D++F++	, 	, 	, 	, 	, 	, 	,, , , , , , , ,	, 	, 	, 	, 	, 	, 	, 	, 	,, , , , , , , , , , , , , , , , , ,sW   B:B!-A1%B!1A55B!8A59B!B:!B%	%B:(B%	)B::B>B>c                <    | dddd          }t          |d          }t          |d          }t          |ddg d	i
          }t          |ddg d	i
          }t          j        ||           t          j        ||           t          j        ||           d S )NiorK   xml	books.xmlr@   rD   rB   bookcategorytitleyearauthorpricerD   	iterparser   rG   assert_frame_equal)datapathfilenamedf_file_lxmldf_file_etreedf_iter_lxmldf_iter_etrees         r<   test_parser_consistency_filern     s    xfe[99HHV444LXg666MKKKL  L
 KKKL  M ,666,555,66666r?   Ohttps://data.cityofchicago.org/api/views/8pix-ypme/rows.xml?accessType=DOWNLOADT)urlcheck_before_testc                *   d}t          j        d          5 }t          |d|                               |d           t          ||           }t          || d	g d
i          }d d d            n# 1 swxY w Y   t          j        ||           d S )Nro   zcta.xmlri   z
.//row/rowxpathrD   Findexr\   row)_id_uuid	_position_addressstop_iddirection_id	stop_namestation_namestation_descriptive_namemap_idadaredbluegbrnppexpypnkolocationrd   )rG   rH   r   to_xmlrg   )rD   rp   rM   df_xpathdf_iters        r<   test_parser_consistency_urlr   ,  s    	1 
 
)	,	,	,  
	#\&	9	9	9	@	@U	@	S	S	SD000   
 
 
	 
  
  
  
  
  
  
  
  
  
  
  
  
  
  
D (G,,,,,s   AA33A7:A7c                     | dddd          }t          ||          5 }t          ||          }d d d            n# 1 swxY w Y   t          g dg dg dg d	g d
d          }t          j        ||           d S NrY   rK   rZ   r[   r\   cookingchildrenwebzEveryday ItalianzHarry PotterzLearning XMLzGiada De LaurentiiszJ K. RowlingzErik T. Ray  r   i  g      >@g=
ףp=@gC@r_   r`   rb   ra   rc   )rI   r   r   rG   rg   )rh   rD   r=   ri   rN   df_filedf_expecteds          r<   test_file_liker   `  s    xfe[99H	h		 -1V,,,- - - - - - - - - - - - - - - 666IIILLL&&&***	
 	
 K ';/////s   =AAc                    | dddd          }t          ||          5 }|                                }d d d            n# 1 swxY w Y   t          t          |t                    rt          |          nt          |          |          }t          g dg dg dg d	g d
d          }t          j	        ||           d S r   )
rI   rS   r   
isinstancebytesr   r   r   rG   rg   )rh   rD   r=   ri   rN   xml_objdf_ior   s           r<   test_file_ior   r  s)   xfe[99H	h		 &&((               '77	N			Xg=N=N  E
 666IIILLL&&&***	
 	
 K %-----   A  AAc                $    | dddd          }t          ||          5 }|                                }d d d            n# 1 swxY w Y   t          ||          }t          g dg dg dg d	g d
d          }t	          j        ||           d S r   )rI   rS   r   r   rG   rg   rh   rD   r=   ri   rN   r   df_strr   s           r<    test_file_buffered_reader_stringr     s    xfe[99H	h		 &&((               gf---F666IIILLL&&&***	
 	
 K &+.....r   c                B    | dddd          }t          ||          5 }t          |           |                                }d d d            n# 1 swxY w Y   t          ||          }t	          g dg dg dg d	g d
d          }t          j        ||           d S r   )rI   nextrS   r   r   rG   rg   r   s           r<   ,test_file_buffered_reader_no_xml_declarationr     s   xfe[99H	h		 Q&&((               gf---F666IIILLL&&&***	
 	
 K &+.....s   $AAAc                    d}t          ||           }t          ddddg          }t          j        ||           d S )N<   <中文標籤><row><c1>1</c1><c2>2</c2></row></中文標籤>r\   r)   r*   )c1c2r   rv   r   r   rG   rg   )rD   txtr   r   s       r<   test_string_charsetr     sN    
HCc&)))F1A..qc:::K&+.....r?   c                     | dddd          }t           | |          |          }t          g dg dg dd	          }t          j        ||           d S )
NrY   rK   rZ   zdoc_ch_utf.xmlr\   )uP   問  若箇是邪而言破邪 何者是正而道(Sorry, this is Big5 only)申正u;   問 既破有得申無得 亦應但破性執申假名以不uO   問 既破性申假 亦應但破有申無 若有無兩洗 亦應性假雙破耶)uw   答  邪既無量 正亦多途  大略為言不出二種 謂有得與無得 有得是邪須破 無得是正須申
		故NuL   答  不例  有無皆是性 所以須雙破 既分性假異 故有破不破)NuV   答 性執是有得 假名是無得  今破有得申無得 即是破性執申假名也N)u   問u   答ar   )rh   rD   xml_filer   r   s        r<   test_file_charsetr     s    xfe-=>>Hxx))&999G  
  
 xww	
 	
 K  ';/////r?   c                     | dddd          }t          |d          5 }t          t          |                                          |           |j        rJ 	 d d d            d S # 1 swxY w Y   d S )NrY   rK   rZ   r[   r3   r\   )rI   r   r   rS   closed)rh   rD   r   rN   s       r<   test_file_handle_closer     s    xfe[99H	h		 ""622228                 s   :A''A+.A+val r?   c                    ddl m} d                    ddg          }t          j        ||          5  t          | d           d d d            d S # 1 swxY w Y   d S )	Nr   XMLSyntaxError|zDocument is emptyzNone \(line 0\)matchr@   r\   )
lxml.etreer   joinpytestraisesr   )r   r   msgs      r<   test_empty_string_lxmlr     s     *)))))
((	
 C 
~S	1	1	1 % %V$$$$% % % % % % % % % % % % % % % % % %s   AAAc                    t          j        t          d          5  t          | d           d d d            d S # 1 swxY w Y   d S )Nzno element foundr   rB   r\   )r   r   r	   r   )r   s    r<   test_empty_string_etreer     s    	z);	<	<	< & &W%%%%& & & & & & & & & & & & & & & & & &s   ;??c                     ddl m}  t          j                            ddd          }t          j        | d          5  t          |d	           d d d            d S # 1 swxY w Y   d S )
Nr   r   rK   htmlr[   !Start tag expected, '<' not foundr   r@   r\   r   r   osrM   r   r   r   r   )r   ri   s     r<   test_wrong_file_path_lxmlr     s    ))))))w||FFK88H	2
 
 
 * * 	&))))	* * * * * * * * * * * * * * * * * *   AA!$A!c                     t           j                            ddd          } t          j        t
          d          5  t          | d           d d d            d S # 1 swxY w Y   d S )NrK   r   r[   znot well-formedr   rB   r\   )r   rM   r   r   r   r	   r   rs   s    r<   test_wrong_file_path_etreer      s    w||FFK88H	 
 
 
 + + 	'****	+ + + + + + + + + + + + + + + + + +s   AA #A 'https://www.w3schools.com/xml/books.xmlc            	         d} t          | d          }t          g dg dg dg dg dg d	d
          }t          j        ||           d S )Nr   .//book[count(*)=4]ru   r   r   r   r   r   )NN	paperback)r_   r`   rb   ra   rc   coverr   )rp   df_urlr   s      r<   test_urlr   
  s     4Cc!6777F666IIILLL&&&***...	
 	
	 	K &+.....r?   (https://www.w3schools.com/xml/python.xmlc                    t          j        t          d          5  d}t          |d|            d d d            d S # 1 swxY w Y   d S )NzHTTP Error 404: Not Foundr   r   r   rt   )r   r   r   r   rD   rp   s     r<   test_wrong_urlr   "  s     
y)D	F	F	F B B81&AAAAB B B B B B B B B B B B B B B B B Bs   >AAc                     | dddd          }t          j        t          d          5  t          |dd	           d d d            d S # 1 swxY w Y   d S )
NrY   rK   rZ   r[   xpath does not return any nodesr   z	.//pythonr@   rt   r   r   
ValueErrorr   rh   ri   s     r<   test_empty_xpath_lxmlr   -  s    xfe[99H	z*K	M	M	M = =V<<<<= = = = = = = = = = = = = = = = = =   A

AAc                     | dddd          }t          j        t          d          5  t          |dd	           d d d            d S # 1 swxY w Y   d S )
NrY   rK   rZ   r[   z/You have used an incorrect or unsupported XPathr   	.//[book]rB   rt   r   r   SyntaxErrorr   r   s     r<   test_bad_xpath_etreer   4  s    xfe[99H	M
 
 
 > > 	W====> > > > > > > > > > > > > > > > > >r   c                    ddl m}  | dddd          }t          j        |d          5  t	          |d	d
           d d d            d S # 1 swxY w Y   d S )Nr   XPathEvalErrorrY   rK   rZ   r[   zInvalid expressionr   r   r@   rt   r   r   r   r   r   rh   r   ri   s      r<   test_bad_xpath_lxmlr   <  s    ))))))xfe[99H	~.B	D	D	D = =V<<<<= = = = = = = = = = = = = = = = = =   AAAc                   t          t          dddi|           }t          t          | dg di          }t          g dg d	d
t	          d          dgd          }t          j        ||           t          j        ||           d S )N	.//ns:rownshttp://example.comru   
namespacesrD   rx   r   rd   r   r         @nan      @)r   xml_default_nmsprO   r   floatrG   rg   rD   df_nmspr   r   s       r<   test_default_namespacer  H  s    ./	  G !7778  G 555&5<<-	
 	
 K ';///';/////r?   c                   t          t          dddi|           }t          t          | dg di          }t          g dg d	d
t	          d          dgd          }t          j        ||           t          j        ||           d S )N
.//doc:rowdocr   r   rx   r   rd   r   r   r   r   r   )r   xml_prefix_nmsprO   r   r   rG   rg   r   s       r<   test_prefix_namespacer  b  s    /0	  G !5:W:W:W2X  G 555&5<<-	
 	
 K ';///';/////r?   c                     t          t          dddid          } t          t          dddid          }t          j        | |           d S )	Nr   r   r   r@   r   r  r  rB   )r   r   rG   rg   df_lxmldf_etrees     r<   "test_consistency_default_namespacer  y  sk    ./	  G /0	  H '8,,,,,r?   c                     t          t          dddid          } t          t          dddid          }t          j        | |           d S )Nr  r  r   r@   r   rB   )r   r  rG   rg   r	  s     r<   !test_consistency_prefix_namespacer    sk    /0	  G /0	  H '8,,,,,r?   c                     | dddd          }t          j        t          d          5  t          |d|           d d d            d S # 1 swxY w Y   d S )	NrY   rK   rZ   r[   r   r   z.//Placemarkrt   r   rh   rD   ri   s      r<   *test_missing_prefix_with_default_namespacer    s    xfe[99H	z*K	M	M	M @ @????@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @r   c                     | dddd          }t          j        t          d          5  t          |dd	           d d d            d S # 1 swxY w Y   d S )
NrY   rK   rZ   cta_rail_lines.kmlz'you used an undeclared namespace prefixr   .//kml:PlacemarkrB   rt   r   r   s     r<   $test_missing_prefix_definition_etreer    s    xfe-ABBH	{+T	V	V	V E E!3GDDDDE E E E E E E E E E E E E E E E E Er   c                    ddl m}  | dddd          }t          j        |d          5  t	          |d	d
           d d d            d S # 1 swxY w Y   d S )Nr   r   rY   rK   rZ   r  zUndefined namespace prefixr   r  r@   rt   r   r   s      r<   #test_missing_prefix_definition_lxmlr    s    ))))))xfe-ABBH	~.J	L	L	L D D!3FCCCCD D D D D D D D D D D D D D D D D Dr   keyc                    t          j        t          d          5  t          t          d| did           d d d            d S # 1 swxY w Y   d S )Nz0empty namespace prefix is not supported in XPathr   r  http://www.opengis.net/kml/2.2r@   r   )r   r   	TypeErrorr   r   )r  s    r<   test_none_namespace_prefixr    s     
L
 
 
 
 
 	$=>		
 	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s   AAAc                    | dddd          }t          ||          }t          ||dg di          }t          g d	g d
g dg dg dd          }t          j        ||           t          j        ||           d S )NrY   rK   rZ   r[   r\   r]   r   rd   r   r   r   r   r   r   rh   rD   ri   r   r   r   s         r<   test_file_elems_and_attrsr    s    xfe[99Hx///GKKKL  G
 666IIILLL&&&***	
 	
 K ';///';/////r?   c                     | dddd          }t          |d|          }t          ||ddgi	          }t          dg d
i          }t          j        ||           t          j        ||           d S )NrY   rK   rZ   r[   T)
attrs_onlyrD   r]   r_   rd   r   r   r  s         r<   test_file_only_attrsr"    s    xfe[99HxD@@@Gx6J<:PQQQGZ)G)G)GHIIK';///';/////r?   c                     | dddd          }t          |d|          }t          ||dg di	          }t          g d
g dg dg dd          }t          j        ||           t          j        ||           d S )NrY   rK   rZ   r[   T)
elems_onlyrD   r]   )r`   rb   ra   rc   rd   r   r   r   r   r   r  s         r<   test_file_only_elemsr%    s    xfe[99HxD@@@G???@  G
 IIILLL&&&***		
 	
 K ';///';/////r?   c                     | dddd          }t          j        t          d          5  t          |dd|           d d d            d S # 1 swxY w Y   d S )	NrY   rK   rZ   r  z3Either element or attributes can be parsed not bothr   T)r$  r!  rD   r   r  s      r<   test_elem_and_attrs_onlyr'    s    xfe-ABBH	D
 
 
 L L 	dtFKKKK	L L L L L L L L L L L L L L L L L Ls   AAAc                    d}t          j        t          d          5  t          |dd|            d d d            d S # 1 swxY w Y   d S )NaU  
      <data>
        <row>
          <shape sides="4">square</shape>
          <degrees>360</degrees>
        </row>
        <row>
          <shape sides="0">circle</shape>
          <degrees>360</degrees>
        </row>
        <row>
          <shape sides="3">triangle</shape>
          <degrees>180</degrees>
        </row>
      </data>-xpath does not return any nodes or attributesr   ./rowT)ru   r!  rD   r   rD   rZ   s     r<   test_empty_attrs_onlyr,    s    C  
>
 
 
 E E 	GVDDDD	E E E E E E E E E E E E E E E E E E   ?AAc                    d}t          j        t          d          5  t          |dd|            d d d            d S # 1 swxY w Y   d S )Nz
      <data>
        <row sides="4" shape="square" degrees="360"/>
        <row sides="0" shape="circle" degrees="360"/>
        <row sides="3" shape="triangle" degrees="180"/>
      </data>r)  r   r*  T)ru   r$  rD   r   r+  s     r<   test_empty_elems_onlyr/    s    C 
>
 
 
 E E 	GVDDDD	E E E E E E E E E E E E E E E E E Er-  c                     d} t          | d          }t          | dd          }t          | dddgi	          }t          | ddddgi
          }t          j        ||           t          j        ||           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   rB   rt   stationNamecoordsre   rd   )r   rO   rG   rg   )rZ   r
  r  
df_iter_lx
df_iter_ets        r<   test_attribute_centric_xmlr7  -  s    C( s,///G<@@@H#CI?Q3RSSSJ#G	FH3E'F  J '8,,,*j11111r?   c                    | dddd          }t          |g d|          }t          ||g ddg di	          }t          g d
g dg dg dg dd          }t          j        ||           t          j        ||           d S )NrY   rK   rZ   r[   )Col1Col2Col3Col4Col5namesrD   r]   r   )rD   r?  re   r   r   r   r   r   r   r  s         r<   test_names_option_outputr@  R  s    xfe[99H@@@  G 666KKKL	  G 222HHHJJJ&&&)))	
 	
 K ';///';/////r?   c                    d}t          |d| g d          }t          || dg dig d          }t          dd	gd
dgddgd          }t          j        ||           t          j        ||           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ru   rD   r?  r    )typer.   rF  rD   re   r?  2D3Dr   spherecurvedr   rO   r   rG   rg   rD   rZ   r   r   r   s        r<   test_repeat_namesrN  l  s    
C :f4V4V4V  H !4445000	  G t)"H-	
 	
 K (K000';/////r?   c                    d}t          |d| ddg          }t          || dddgiddg          }t          g d	g d
d          }t          j        ||           t          j        ||           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>rB  r.   grouprE  r    familyrG  )	rectangler   ellipser   )rR  rR  rS  rS  )r.   rP  rL  rM  s        r<   test_repeat_values_new_namesrT    s    C& :fVWDUVVVH VX./w	  G @@@EEE	
 	
 K (K000';/////r?   c                    d}t          |d| g d          }t          || dg dig d          }t          g dg d	g d
g dd          }t          j        ||           t          j        ||           d S )Na  <shapes>
  <shape>
    <value item="name">circle</value>
    <value item="family">ellipse</value>
    <value item="degrees">360</value>
    <value item="sides">0</value>
  </shape>
  <shape>
    <value item="name">triangle</value>
    <value item="family">polygon</value>
    <value item="degrees">180</value>
    <value item="sides">3</value>
  </shape>
  <shape>
    <value item="name">square</value>
    <value item="family">polygon</value>
    <value item="degrees">360</value>
    <value item="sides">4</value>
  </shape>
</shapes>rB  )r.   rQ  r!   r"   rE  r    )valuerV  rV  rV  rG  )r   r   r   )rS  polygonrW  )r   r   r   )r   r   r   rL  rM  s        r<   test_repeat_elementsrX    s    C* 444	  H !@@@A444	  G 444777&YY		
 	
 K (K000';/////r?   c                     | dddd          }t          j        t          d          5  t          |g d|           d d d            d S # 1 swxY w Y   d S )	NrY   rK   rZ   r[   znames does not match lengthr   )r9  r:  r;  r>  r   r  s      r<   test_names_option_wrong_lengthrZ    s    xfe[99H	z*G	I	I	I J J!9!9!9&IIIIJ J J J J J J J J J J J J J J J J J   AAAc                     | dddd          }t          j        t          d          5  t          |d|           d d d            d S # 1 swxY w Y   d S )	NrY   rK   rZ   r[   zis not a valid type for namesr   zCol1, Col2, Col3r>  r   r   r  r   r  s      r<   test_names_option_wrong_typer^    s    xfe[99H	y)H	J	J	J D D!3FCCCCD D D D D D D D D D D D D D D D D Dr   c                     | dddd          }t          j        t          d          5  t          ||           d d d            d S # 1 swxY w Y   d S )NrY   rK   rZ   baby_names.xmlz'utf-8' codec can't decoder   r\   r   r   UnicodeDecodeErrorr   r  s      r<   test_wrong_encodingrc    s    xfe-=>>H	)2N	P	P	P * *&))))* * * * * * * * * * * * * * * * * *   A		AAc                     | dddd          }t          j        t          d          5  t          |d|           d d d            d S # 1 swxY w Y   d S )	NrY   rK   rZ   r`  zIUTF-16 stream does not start with BOM|'utf-16-le' codec can't decode byter   zUTF-16encodingrD   )r   r   UnicodeErrorr   r  s      r<   test_utf16_encodingri    s    xfe-=>>H	2
 
 
 = = 	HV<<<<= = = = = = = = = = = = = = = = = =r   c                     | dddd          }t          j        t          d          5  t          |d|           d d d            d S # 1 swxY w Y   d S )	NrY   rK   rZ   r`  zunknown encoding: UFT-8r   zUFT-8rf  )r   r   LookupErrorr   r  s      r<   test_unknown_encodingrl    s    xfe-=>>H	{+D	F	F	F < <GF;;;;< < < < < < < < < < < < < < < < < <r   c                     | dddd          }t          j        t          d          5  t          |d|           d d d            d S # 1 swxY w Y   d S )	NrY   rK   rZ   r`  z'ascii' codec can't decode byter   asciirf  ra  r  s      r<   test_ascii_encodingro    s    xfe-=>>H	)2S	U	U	U < <GF;;;;< < < < < < < < < < < < < < < < < <r   c                D    | dddd          }t          |dd          }t          |dd	          }t          |ddd
g di          }t          |ddd
g di          }t          j        ||           t          j        ||           t          j        ||           d S )NrY   rK   rZ   r`  r@   z
ISO-8859-1rD   rg  rB   z
iso-8859-1rx   )rankmalename
femalename)rD   rg  re   rf   )rh   ri   df_xpath_lxmldf_xpath_etreerl   rm   s         r<   %test_parser_consistency_with_encodingrw    s    xfe-=>>HXf|LLLMhwNNNN<<<=	  L <<<=	  M -888.-888,66666r?   c                     d} t          j        t          d          5  t          t	          |           dd            d d d            d S # 1 swxY w Y   d S )N-<data>
  <row>
    <a>c</a>
  </row>
</data>
zencoding Noner   r@   rq  )r   r   r  r   r   )rK   s    r<   test_wrong_encoding_for_lxmlrz  /  s    D 
y	8	8	8 ? ?$>>>>? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?s    AAAc                     d} t          t          |           dd           }t          ddgi          }t          j        ||           d S )Nry  rB   rq  r   c)r   r   r   rG   rg   )rK   resultexpecteds      r<   test_none_encoding_etreer  <  sQ    D htnnWtDDDF#u&&H&(+++++r?   c                     | dddd          }t          j        t          d          5  t          |           d d d            d S # 1 swxY w Y   d S )NrY   rK   rZ   r[   z7lxml not found, please install or use the etree parser.r   )r   r   ImportErrorr   r   s     r<   test_default_parser_no_lxmlr  L  s    xfe[99H	U
 
 
   	                 s   AAAc                     | dddd          }t          j        t          d          5  t          |d           d d d            d S # 1 swxY w Y   d S )	NrY   rK   rZ   r[   z,Values for parser can only be lxml or etree.r   bs4r\   r   r   s     r<   test_wrong_parserr  V  s    xfe[99H	I
 
 
 ) ) 	%(((() ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )rd  c                     | dddd          } | dddd          }t          |dddi|	          }t          |d
g di          }t          j        t          |           t          j        t          |           d S )NrY   rK   rZ   r  flatten_doc.xsl.//k:Placemarkkr  ru   r   
stylesheet	Placemarkr,   r4  )r   rG   rg   df_kml)rh   kmlxsldf_styler   s        r<   test_stylesheet_filer  b  s    
(4(<
=
=C
(4(9
:
:C9:	  H    	
  G &(+++&'*****r?   c                     | dddd          } | dddd          }t          ||          5 }t          |dddi|	          }d d d            n# 1 swxY w Y   t          j        t          |           d S 
NrY   rK   rZ   r  r  r  r  r  r  )rI   r   rG   rg   r  )rh   r=   r  r  rN   r  s         r<   test_stylesheet_file_liker    s    
(4(<
=
=C
(4(9
:
:C	c4 
A"=>	
 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 &(+++++s   AAAc                ~    | dddd          } | dddd          }t          ||          5 }|dk    r"t          |                                          }n!t          |                                          }d d d            n# 1 swxY w Y   t	          |ddd	i|
          }t          j        t          |           d S )NrY   rK   rZ   r  r  r3   r  r  r  r  )rI   r   rS   r   r   rG   rg   r  rh   r=   r  r  rN   xsl_objr  s          r<   test_stylesheet_ior    s   
(4(<
=
=C
(4(9
:
:C 
c4 )A4<<affhh''GGqvvxx((G	) ) ) ) ) ) ) ) ) ) ) ) ) ) ) 9:	  H &(+++++s   A
BB
Bc                    | dddd          } | dddd          }t          ||          5 }|                                }d d d            n# 1 swxY w Y   t          |dddi|	          }t          j        t
          |           d S r  )rI   rS   r   rG   rg   r  r  s          r<   test_stylesheet_buffered_readerr    s    
(4(<
=
=C
(4(9
:
:C	c4 A&&((               9:	  H &(+++++s   AAAc                 x    d} d}t          |           }t          | |          }t          j        ||           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  rf   )rZ   r  df_origr  s       r<   test_style_charsetr    sF    
HCC& smmG,,,H'8,,,,,r?   c                    ddl m}  | dddd          } | dddd          }t          j        |d	          5  t	          ||
           d d d            d S # 1 swxY w Y   d S )Nr   XSLTParseErrorrY   rK   rZ   r  r[   zdocument is not a stylesheetr   r  r   r  r   r   r   )rh   r  r  r  s       r<   test_not_stylesheetr    s    ))))))
(4(<
=
=C
(4
4
4C	~.L	N	N	N & &%%%%& & & & & & & & & & & & & & & & & &s   AAAc                    ddl m} d} | dddd          }t          j        |d	          5  t	          ||
           d d d            d S # 1 swxY w 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>rY   rK   rZ   r  z(Extra content at the end of the documentr   r  )r   r   r   r   r   )rh   r   r  r  s       r<   test_incorrect_xsl_syntaxr    s    ))))))C( (4(<
=
=C	I
 
 
 & & 	%%%%& & & & & & & & & & & & & & & & & &   AAAc                    ddl m} d} | dddd          }t          j        |d	          5  t	          ||
           d d d            d S # 1 swxY w 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>rY   rK   rZ   r  zfailed to compiler   r  r  )rh   r  r  r  s       r<   test_incorrect_xsl_evalr    s    ))))))C( (4(<
=
=C	~.A	C	C	C & &%%%%& & & & & & & & & & & & & & & & & &r  c                    ddl m} d} | dddd          }t          j        |d	          5  t	          ||
           d d d            d S # 1 swxY w 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>rY   rK   rZ   r  zCannot resolve URIr   r  )r   r  r   r   r   )rh   r  r  r  s       r<   test_incorrect_xsl_applyr    s    ))))))
C (4(<
=
=C	~.B	D	D	D & &%%%%& & & & & & & & & & & & & & & & & &r  c                    ddl m}  t          j                            ddd          }t          j                            ddd          }t          j        | d          5  t          ||	           d d d            d S # 1 swxY w Y   d S )
Nr   r   rK   rZ   r  zflatten.xslr   r   r  r   )r   r  r  s      r<   test_wrong_stylesheetr  5  s    ))))))
',,vu&:
;
;C
',,vum
4
4C	2
 
 
 & & 	%%%%	& & & & & & & & & & & & & & & & & &s   A>>BBc                X    | dddd          } | dddd          }t          ||          5 }|dk    r"t          |                                          }n!t          |                                          }t	          ||           |j        rJ 	 d d d            d S # 1 swxY w Y   d S )NrY   rK   rZ   r  r  r3   r  )rI   r   rS   r   r   r   )rh   r=   r  r  rN   r  s         r<   test_stylesheet_file_closer  C  s    
(4(<
=
=C
(4(9
:
:C 
c4 A4<<affhh''GGqvvxx((G))))8                 s   A$BB#&B#c                    t           j                            ddd          } t           j                            ddd          }t          j        t
          d          5  t          | d|           d d d            d S # 1 swxY w Y   d S )	NrK   rZ   r  r  z*To use stylesheet, you need lxml installedr   rB   )rD   r  )r   rM   r   r   r   r   r   )r  r  s     r<   test_stylesheet_with_etreer  U  s    
',,vu&:
;
;C
',,vu&7
8
8C	G
 
 
 6 6 	W55556 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6s   A>>BBc                    ddl m} t          j                            ddd          }t          j        |d          5  t          ||            d d d            d S # 1 swxY w Y   d S )	Nr   r   rK   rZ   r  z3Document is empty|Start tag expected, '<' not foundr   r  r   )r   r   r  s      r<   test_empty_stylesheetr  `  s     *)))))
',,vu&:
;
;C	T
 
 
 & & 	%%%%& & & & & & & & & & & & & & & & & &r   c                    t          j        t          d          5  t          t          | dg di           d d d            d S # 1 swxY w Y   d S )N)iterparse is designed for large XML filesr   rx   r    r!   r"   daterd   )r   r   r   r   r   r\   s    r<   test_string_errorr  p  s    	G
 
 
 
 
 	CCCD	
 	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s   AA	A	c           	         | dddd          }t          ||          5 }|dk    r]|dk    rWt          j        t          d          5  t	          ||d	g d
i           d d d            n# 1 swxY w Y   	 d d d            d S t	          ||d	g d
i          }	 d d d            n# 1 swxY w Y   t          g dg dg dg dg dd          }t          j        ||           d S NrY   rK   rZ   r[   r4   r@   z.reading file objects must return bytes objectsr   r]   r^   rd   r   r   r   r   r   r   )rI   r   r   r  r   r   rG   rg   )rh   rD   r=   ri   rN   df_fileliker   s          r<   test_file_like_iterparser  {  s   xfe[99H	h		 3;;6V++"R   	 	 ! P P P   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	         #!#S#S#ST  KK              ( 666IIILLL&&&***	
 	
 K +{33333s;   (B&A*B&*A.	.B&1A.	2B&B&&B*-B*c           
     v    | dddd          }|dk    rt           nt          }t          ||          5 } ||                                          5 }|dk    rh|dk    rbt	          j        t          d          5  t          ||d	g d
i           d d d            n# 1 swxY w Y   	 d d d            d d d            d S t          ||d	g d
i          }	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          g dg dg dg dg dd          }t          j
        ||           d S r  )r   r   rI   rS   r   r   r  r   r   rG   rg   )	rh   rD   r=   ri   funcIOrN   b	df_fileior   s	            r<   test_file_io_iterparser    s   xfe[99HXX'F	h		 VAFFHH 	s{{v//]&V   	 	 %"$T$T$T#   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	        %! P P P  			 	 	 	 	 	 	 	 	 	 	 	 	 	 	              . 666IIILLL&&&***	
 	
 K )[11111se   C:(C#9BC#B  C##B $C#(C: C#C:#C'	'C:*C'	+C::C>C>c                    d}t          j        t          d          5  t          || dg di           d d d            d S # 1 swxY w Y   d S )Nr   r  r   rx   r  rd   r   r   r   r   r   s     r<   test_url_path_errorr    s     4C	G
 
 
 
 
 	CCCD	
 	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s   AA	Ac           	     0   t          j        d          5 }t                              || |           t	          j        t          d          5  t          || dg di|           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )	Nzgeom_xml.ziprs   rD   rQ   r  r   rx   r  rD   re   rQ   )rG   rH   geom_dfr   r   r   r   r   )rD   rU   rM   s      r<   test_compression_errorr    s2   	.	1	1	1 TtF8HIII] K
 
 
 	 	  "G"G"GH,	   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	                 s5   9BA3'B3A7	7B:A7	;BBBc                     | dddd          }t          j        t          d          5  t          ||g d           d d d            d S # 1 swxY w Y   d S )	NrY   rK   rZ   r[   z&list is not a valid type for iterparser   r^   rd   r]  r  s      r<   test_wrong_dict_typer    s    xfe[99H	y(P	Q	Q	Q 
 
FFF	
 	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
r[  c                     | dddd          }t          j        t          d          5  t          ||ddi	           d d d            d S # 1 swxY w Y   d S )
NrY   rK   rZ   r[   z8<class 'str'> is not a valid type for value in iterparser   r]   r_   rd   r]  r  s      r<   test_wrong_dict_valuer    s    xfe[99H	S
 
 
 J J 	&VZ4HIIIIJ J J J J J J J J J J J J J J J J Jr[  c           
     v   d}t          j        d          5 }t          |d          5 }|                    |           d d d            n# 1 swxY w Y   t	          j        t          d          5  t          || dgdg d	i
           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   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.xmlrs   rF   zDExtra content at the end of the document|junk after document elementr   r  rx   r  )rD   parse_datesre   )rG   rH   rI   rJ   r   r   r   r   )rD   bad_xmlrM   rN   s       r<   test_bad_xmlr    s   G* 
)	,	,	, $__ 	GGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ].
 
 
 	 	 #H "G"G"GH	   	 	 	 	 	 	 	 	 	 	 	 	 	 	 		                 sW   B.AB.A	B.A	B.1B
B.B	B.B	B..B25B2c                    d}t          |d|           }t          || dddgi          }t          dd	gd
dgd          }t          j        ||           t          j        ||           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 -->rB  rt   r    r.   rF  rd   r   rJ  rH  rI  r.   rF  rL  rM  s        r<   test_commentr    s    C" :f===H Fw0@&A  G x(4L	
 	
 K (K000';/////r?   c                    d}t          |d|           }t          || dddgi          }t          dd	gd
dgd          }t          j        ||           t          j        ||           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>rB  rt   r    r.   rF  rd   r   rJ  rH  rI  r  rL  rM  s        r<   test_dtdr  B      C$ :f===H Fw0@&A  G x(4L	
 	
 K (K000';/////r?   c                    d}t          |d|           }t          || dddgi          }t          dd	gd
dgd          }t          j        ||           t          j        ||           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>rB  rt   r    r.   rF  rd   r   rJ  rH  rI  r  rL  rM  s        r<   test_processing_instructionr  f  r  r?   c                     | dddd          }t          j        t          d          5  t          ||dg di	           d d d            d S # 1 swxY w Y   d S )
NrY   rK   rZ   r[   z+No result from selected items in iterparse.r   nodeattr1elem1elem2elem3rd   r  r  s      r<   test_no_resultr    s    xfe[99H	H
 
 
 
 
 	CCCD	
 	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
   AAAc                     | dddd          }t          j        t          d          5  t          ||dg di	           d d d            d S # 1 swxY w Y   d S )
NrY   rK   rZ   r[   zNo columns to parse from filer   r]   r  rd   )r   r   r   r   r  s      r<   test_empty_datar    s    xfe[99H	~-L	M	M	M 
 
CCCD	
 	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
r  4https://www.w3schools.com/xml/cdcatalog_with_xsl.xmlc            	         d} d}t          | dddg|          }t          ddd	d
ddddddddd          }t          j        ||           d S )Nr  z+https://www.w3schools.com/xml/cdcatalog.xslz.//tr[td and position() <= 6]r`   artist)ru   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)r`   r  r   )rZ   r  df_xslr   s       r<   test_online_stylesheetr    s     AC
7C-!	  F  &$"(  !!$ 	
 	
 K& +v.....r?   c           	     T   t          j                    5 }t                              |d| |           t	          || |          }t          ||| dg di|          }d d d            n# 1 swxY w Y   t          j        |t                     t          j        |t                     d S )NF)rw   rD   rQ   r  rx   r   r  )rG   rH   r  r   r   rW   rg   )rD   rU   rT   r   r   s        r<   test_compression_readr    s    			 
iU6?O 	 	
 	
 	
 IfBRSSS);;;<(
 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 (G,,,'7+++++s   A	A))A-0A-c                   |}|}||k    rd S t           dft           dft          dft          dfd}t          dd          }||j        d	f|d
<   t          dd          }|t
          df|d<   ||         \  }}	t          j                    5 }
t          	                    |
| |           t          j        ||	          5  t          |
| |           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   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tar	zstandardignore)errorszUnknown frame descriptorzstdlzmaz%Input format not supported by decoderxzr  r   )OSErrorr
   r   r   	ZstdErrorr   rG   rH   r  r   r   r   r   )rD   rQ   rU   actual_compressionattempted_compressionr  r  r  	error_cls	error_strrM   s              r<   test_wrong_compressionr    s   $,222 ././45BC	 F &k(CCCD.*DEv%fX>>>D!#JKt!"78Iy			 MdtF8JKKK]9I666 	M 	MT&6KLLLL	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	MM M M M M M M M M M M M M M M M M Ms6   4C7 CC7C#	#C7&C#	'C77C;>C;c                    t          j        t          d          5  t          j                    5 }t          || d           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )NzUnrecognized compression typer   7zr  )r   r   r   rG   rH   r   )rD   rM   s     r<   test_unsuported_compressionr    s    	z)H	I	I	I < <_ 	<$T&d;;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<< < < < < < < < < < < < < < < < < <s4   A'AA'A	A'A	A''A+.A+s3fsz02022.1.17: Hanging on the CI min versions build.)reasonc                     d} t          | dddidddi          }t          | dddid	ddi          }t          j        ||           d S )
Nz/s3://irs-form-990/201923199349319487_public.xmlz .//irs:Form990PartVIISectionAGrpirszhttp://www.irs.gov/efiler@   anonT)ru   r   rD   storage_optionsrB   rf   )s3r
  r  s      r<   test_s3_parser_consistencyr	    s     
;B
056  G 
056  H '8,,,,,r?   c                `  	 d}|dk    rdt          t          j        ddgt          j                            }t          t          j        dt          gt          j                            }n\t          j        d          	t          	                    ddg                    }t          	                    dd g                    }t          j	        d|          5  t          || |          }d d d            n# 1 swxY w Y   t          |t          d	d
gd          t          ddgd          |t          d
t          gd          t          dt          gd          t          t          t          gd          t          ddgd          t          dt          gd          d	          |dk    r_t          j        d          	ddlm t          	fdj        D                        	                    d d g                    d<   t!          j        |           d S )Na;  <?xml version='1.0' encoding='utf-8'?>
<data xmlns="http://example.com">
<row>
  <a>x</a>
  <b>1</b>
  <c>4.0</c>
  <d>x</d>
  <e>2</e>
  <f>4.0</f>
  <g></g>
  <h>True</h>
  <i>False</i>
</row>
<row>
  <a>y</a>
  <b>2</b>
  <c>5.0</c>
  <d></d>
  <e></e>
  <f></f>
  <g></g>
  <h>False</h>
  <i></i>
</row>
</data>pythonxr   )dtypepyarrowzmode.string_storage)rD   dtype_backendr)   r*   Int64r   g      @Float64TFboolean)	r   r  r|  derN   r   hir   )ArrowExtensionArrayc           	     ^    i | ])}|                      |         d                     *S )T)from_pandas)array).0colr  r~  pas     r<   
<dictcomp>z1test_read_xml_nullable_dtypes.<locals>.<dictcomp>\  sK        (((3-T)R)RSS  r?   r   )r   npr  object_r   r   importorskipr   pdoption_contextr   r   r   pandas.arraysr  columnsrG   rg   )
rD   string_storager  rK   string_arraystring_array_nar}  r  r~  r  s
          @@@r<   test_read_xml_nullable_dtypesr)  !  s   D4 !!"28S#Jbj#I#I#IJJ%bhRy
&K&K&KLL  ++'#s(<(<==*288S$K+@+@AA		0.	A	A L L$v]KKKL L L L L L L L L L L L L L L Ag...c
)444 Bw///b	333R000uY7779555
	
 
	
 H 	!! ++555555     #+  
 
 ,+BHHdD\,B,BCC&(+++++s   !D  DDc                     d} t          j        t          |           5  t          dd           d d d            d S # 1 swxY w Y   d S )NzPdtype_backend numpy is invalid, only 'numpy_nullable' and 'pyarrow' are allowed.r   testnumpy)r  r   )r   s    r<   test_invalid_dtype_backendr-  f  s    	!  
z	-	-	- 0 0w////0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0s   =AA)
__future__r   rY   r   r   r  r   r   tarfiler   urllib.errorr   xml.etree.ElementTreer	   zipfiler
   r,  r  r   pandas.compatr   pandas.compat._optionalr   pandas.errorsr   r   pandas.util._test_decoratorsutil_test_decoratorstdpandasr"  r   r   r   pandas._testing_testingrG   pandas.core.arraysr   r   pandas.io.commonr   pandas.io.xmlr   r   r  r   r  r  fixturer=   r9   
skip_if_norD   rO   rW   rn   marknetworkslowr   r   r   r   r   r   r   r   parametrizer   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r  r"  r%  r'  r,  r/  r7  r@  rN  rT  rX  rZ  r^  rc  ri  rl  ro  rw  rz  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  r  r  r  r  r  r  skipifr	  r)  r-   r?   r<   <module>rI     sB   " " " " " "              				       " " " " " " , , , , , ,            + + + + + + > > > > > >        * ) ) ) ) ) ) ) )             
             
 ( ' ' ' ' ' " " " " " "l )111"??RVQ   (* 
 
 
 )!!!!
 
 
 
 Q1q11     
 
999&9$9uI
 I
=h hj
 j
Z c{###  $# V=2=3H3HIII7STTT  UT( ( (, , , v7 7 7* 	1   (- (-   (-V0 0 0$. . ../ / /(/ / /*/ / /0 0 00   vS	**% % +* % S	**& & +*&
 v	* 	* 	*+ + + 1   v/ / 	  /$ :dSSSB B TS B v= = => > > v= = =0 0 040 0 0. v- - -$ v- - -*@ @ @E E E vD D D vT
++	
 	
 ,+ 	
0 0 0,0 0 00 0 0*L L LE E E0E E E v2 2 2H0 0 04 0  0  0F%0 %0 %0P.0 .0 .0bJ J JD D D* * *	= 	= 	=< < << < < v7 7 7. v	? 	? 	?
, 
, 
,  f  ) ) ) v+ + +: v, , , v, , ,, v, , ," v- - -8 v& & & v& & &> v& & &: v& & &* v
& 
& 
& v  " v6 6 6 vS	**& & +* &
 
 
!4 !4 !4H%2 %2 %2P 9TRRR	
 	
 SR 	
  
 
 
J J J& & &R 0  0  0F!0 !0 !0H!0 !0 !0H	
 	
 	

 
 
 v>RV  / /   
/H, , ,(M M M8< < < vv=    - - 	    -.B, B, B,J0 0 0 0 0r?   