
    MhI                    \   S SK Jr  S SKJrJr  S SKJr  S SKrS SKJ	r	  S SK
Jr  S SKJr  S SKJr  S SKrS SKrS S	KJr  S S
KJrJr  S SKJs  Jr  S SKrS SKJrJrJ r   S SK!J"r#  S SK$J%r%J&r&  S SK'J(r(  S SK)J*r*  S SK+J,r,  \" / SQ/ SQS\RZ                  S/S.5      r.Sr/Sr0\" SSSSSS.SSSSSS.SSSSSS.S S S S S S.S S S S S S.S!S"S#S$S%S.S&.5      r1S' r2\Rf                  " S(S)/S*9S+ 5       r4\Rf                  " \Rj                  " S,\Rl                  " S,5      S-9S./S*9S/ 5       r7S0 r8S1 r9S2 r:\Rv                  Rx                  \Rv                  Rz                  S3 5       5       r>S4 r?S5 r@S6 rAS7 rBS8 rCS9 rDS: rE\Rv                  R                  S;S<S=/5      S> 5       rG\Rv                  R                  S;S<S=/5      S? 5       rHS@ rI\Rv                  Rx                  \Rv                  Rz                  SA 5       5       rJ\Rv                  Rx                  \Rv                  Rz                  SB 5       5       rKSC rLSD rMSE rNSF rOSG rPSH rQSI rRSJ rSSK rTSL rUSM rV\Rv                  R                  SNS<S/5      SO 5       rWSP rXSQ rYSR rZSS r[ST r\SU r]SV r^SW r_SX r`SY raSZ rbS[ rcS\ rdS] reS^ rfS_ rgS` rhSa riSb rjSc rk\R                  " S,5      Sd 5       rmSe rnSf roSg rpSh rqSi rrSj rsSk rtSl ruSm rvSn rwSo rxSp rySq rz\Rv                  R                  S;S<S=/5      Sr 5       r{Ss r|St r}\Rv                  Rx                  \Rv                  Rz                  Su 5       5       r~Sv rSw rSx rSy rSz rS{ rS| rS} rS~ rS rS rS rS r\Rv                  Rx                  \Rv                  Rz                  S 5       5       rS rS rg)    )annotations)BytesIOStringIO)	LZMAErrorN)	ReadError)	HTTPError)
ParseError)
BadZipFile)import_optional_dependency)EmptyDataErrorParserError)NA	DataFrameSeries)ArrowStringArrayStringArray)ArrowStringArrayNumpySemantics)
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coordinatesc                     [         R                  " S5        Sn [        R                  " [        U S9   [        [        5        S S S 5        g ! , (       d  f       g = f)NlxmlPassing literal xml to 'read_xml' is deprecated and will be removed in a future version. To read from a literal string, wrap it in a 'StringIO' object.match)pytestimportorskiptmassert_produces_warningFutureWarningr   xml_default_nmspmsgs    N/var/www/html/env/lib/python3.13/site-packages/pandas/tests/io/xml/test_xml.pytest_literal_xml_deprecationrA      sA    
	:  
	#	#M	=!" 
>	=	=s   A
Arbr)paramsc                    U R                   $ Nparamrequests    r@   moderK         ==    r4   )marksetreec                    U R                   $ rF   rG   rI   s    r@   parserrQ     rL   rM   c                    [         R                  " 5        n[        USSS9 nUR                  U 5        S S S 5        [	        U40 UD6sS S S 5        $ ! , (       d  f       N#= f! , (       d  f       g = f)Nwutf-8encoding)r:   ensure_cleanopenwriter   )datakwargspathfs       r@   read_xml_iterparser^     sQ    		d$g.!GGDM /'' 
	.. 
	s!   A"AA"
A	A""
A0c                v   [        U SUS9 n[        R                  " 5        n[        USSS9 nUR	                  UR
                  R                  5       5        S S S 5        [        U40 UD6sS S S 5        sS S S 5        $ ! , (       d  f       N,= f! , (       d  f       O= f S S S 5        g ! , (       d  f       g = f)NrC   )compressionrS   rT   rU   )r   r:   rW   rX   rY   handlereadr   )	comp_pathcompression_onlyr[   handlesr\   r]   s         r@   read_xml_iterparse_comprf     s    	Is0@	AW__$dC'2a++-. 3D+F+  
B	A22  
B	A	As9   B*B*A>B+	B*>
BB
B	B**
B8c                   [         R                  " S5        [        U SS9n[        U SS9n[        U SS/ SQ0S9n[        U SS/ SQ0S9n[        R                  " X5        [        R                  " X5        [        R                  " X45        g )Nr4   rQ   rO   bookcategorytitleyearauthorpricerQ   	iterparser8   r9   r   r:   assert_frame_equal)	xml_booksdf_file_lxmldf_file_etreedf_iter_lxmldf_iter_etrees        r@   test_parser_consistency_filery   #  s    
If5LYw7MKLL
 KLM ,6,5,6rM   c                    UR                  [        S9  [        [        [        5      U S9n[        [	        [        R                  5       5      U S/ SQ0S9n[        R                  " X#5        g )Ncontentrh   rowr   rp   )serve_contentr=   r   r   r   encoder:   rs   )rQ   
httpserverdf_xpathdf_iters       r@   test_parser_consistency_urlr   8  s`     %56!126BH '')*78G (,rM   c                    [        XUS:X  a  SOS S9 n[        X1S9nS S S 5        [        / SQ/ SQ/ SQ/ SQ/ S	QS
.5      n[        R                  " WU5        g ! , (       d  f       NA= fNrC   rT   rU   rh   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@rk   rl   rn   rm   ro   )rX   r   r   r:   rs   )rt   rQ   rK   r]   df_filedf_expecteds         r@   test_file_liker   G  sb    	i43;D	IQ1, 
J 6IL&*	
K ';/ 
J	Is   
A
A&c                D   [        XUS:X  a  SOS S9 nUR                  5       nS S S 5        [        [        W[        5      (       a  [        U5      O
[        U5      US9n[        / SQ/ SQ/ SQ/ SQ/ S	QS
.5      n[        R                  " XV5        g ! , (       d  f       Ns= fr   )
rX   rb   r   
isinstancebytesr   r   r   r:   rs   )rt   rQ   rK   r]   xml_objdf_ior   s          r@   test_file_ior   X  s    	i43;D	IQ&&( 
J '77	Xg=NE
 6IL&*	
K %-% 
J	Is   B
Bc                T   [        XUS:X  a  SOS S9 nUR                  5       nS S S 5        US:X  a  [        WR                  5       5      nOUS:X  a  [        W5      n[	        WUS9n[        / SQ/ SQ/ SQ/ S	Q/ S
QS.5      n[        R                  " XV5        g ! , (       d  f       N{= fNrC   rT   rU   rB   rh   r   r   r   r   r   r   )rX   rb   r   decoder   r   r:   rs   rt   rQ   rK   r]   r   df_strr   s          r@    test_file_buffered_reader_stringr   n  s    	i43;D	IQ&&( 
J t|7>>+,	7#gf-F6IL&*	
K &.) 
J	Is   B
B'c                j   [        XUS:X  a  SOS S9 n[        U5        UR                  5       nS S S 5        US:X  a  [        WR	                  5       5      nOUS:X  a  [        W5      n[        WUS9n[        / SQ/ SQ/ SQ/ S	Q/ S
QS.5      n[        R                  " XV5        g ! , (       d  f       N{= fr   )	rX   nextrb   r   r   r   r   r:   rs   r   s          r@   ,test_file_buffered_reader_no_xml_declarationr     s    	i43;D	IQQ&&( 
J t|7>>+,	7#gf-F6IL&*	
K &.+ 
J	Is   B$$
B2c                v    Sn[        [        U5      U S9n[        SSS.S/S9n[        R                  " X#5        g )N<   <中文標籤><row><c1>1</c1><c2>2</c2></row></中文標籤>rh   r)   r*   )c1c2r   )indexr   r   r   r:   rs   )rQ   txtr   r   s       r@   test_string_charsetr     s8    
HChsmF3F1A.qc:K&.rM   c                    [        XS9n[        / SQSR                  SS/5      S S// SQS.5      n[        R                  " X#5        g )	Nrh   )uP   問  若箇是邪而言破邪 何者是正而道(Sorry, this is Big5 only)申正u;   問 既破有得申無得 亦應但破性執申假名以不uO   問 既破性申假 亦應但破有申無 若有無兩洗 亦應性假雙破耶 u<   答  邪既無量 正亦多途  大略為言不出二種 謂u;   有得與無得 有得是邪須破 無得是正須申
		故uL   答  不例  有無皆是性 所以須雙破 既分性假異 故有破不破)NuV   答 性執是有得 假名是無得  今破有得申無得 即是破性執申假名也N)u   問u   答a)r   r   joinr:   rs   )xml_doc_ch_utfrQ   r   r   s       r@   test_file_charsetr     s[    ~5G VX ^	!	
K2 '/rM   c                    [        U S5       n[        [        UR                  5       5      US9  UR                  (       a   e S S S 5        g ! , (       d  f       g = f)NrB   rh   )rX   r   r   rb   closed)rt   rQ   r]   s      r@   test_file_handle_closer     s=    	i	!"6288|8 
		s   5A
Avalr   rM   c                @   [         R                  " S5      nSR                  SS/5      n[         R                  " UR                  US9   [        U [        5      (       a  [        [        U 5      SS9  O[        [        U 5      SS9  S S S 5        g ! , (       d  f       g = f)N
lxml.etree|zDocument is emptyzNone \(line 0\)r6   r4   rh   )
r8   r9   r   raisesXMLSyntaxErrorr   strr   r   r   )r   
lxml_etreer?   s      r@   test_empty_string_lxmlr     sv    $$\2J
((	
C 
z00	<c3Xc]62WS\&1	 
=	<	<s   	=B
Bc                    [         R                  " [        SS9   [        U [        5      (       a  [        [        U 5      SS9  O[        [        U 5      SS9  S S S 5        g ! , (       d  f       g = f)Nzno element foundr6   rO   rh   )r8   r   r	   r   r   r   r   r   )r   s    r@   test_empty_string_etreer     sF    	z);	<c3Xc]73WS\'2	 
=	<	<s   =A  
A.c                    Sn[         R                  R                  SSS5      n[        R                  " [
        US9   [        X S9  S S S 5        g ! , (       d  f       g = f)Nr5   rZ   htmlz	books.xmlr6   rh   )osr\   r   r8   r   r<   r   )rQ   r?   filenames      r@   test_wrong_file_pathr     sP    	: 
 ww||FFK8H	
 	)	
 
 
s   
A
Ac                >   [         R                  " S5        [        USS9 nU R                  UR	                  5       S9  [        U R                  SS9nS S S 5        [        / SQ/ SQ/ S	Q/ S
Q/ SQS.5      n[        R                  " WU5        g ! , (       d  f       NA= f)Nr4   rT   rU   r{   .//book[count(*)=4]xpathr   r   r   r   r   r   )
r8   r9   rX   r~   rb   r   urlr   r:   rs   )r   xml_filer]   df_urlr   s        r@   test_urlr     s     	h	)Q   2*..0EF 
* 6IL&*	
K &+. 
*	)s   2B
Bc                    UR                  SSS9  [        R                  " [        SS9   [	        UR
                  SU S9  S S S 5        g ! , (       d  f       g = f)Nz	NOT FOUNDi  )codezHTTP Error 404: NOT FOUNDr6   r   r   rQ   )r~   r8   r   r   r   r   )rQ   r   s     r@   test_wrong_urlr     sD     [s3	y)D	F'<VL 
G	F	Fs   A		
Ac                    Sn[        [        U5      U SS9n[        UU S/ SQ0SS9n[        / SQ/ SQ/ S	QS.SS
9n[        R
                  " X$5        [        R
                  " X45        g )Na  
      <data>
        <row sides=" 4 ">
          <shape>
              square
          </shape>
          <degrees>&#009;360&#009;</degrees>
        </row>
        <row sides=" 0 ">
          <shape>
              circle
          </shape>
          <degrees>&#009;360&#009;</degrees>
        </row>
        <row sides=" 3 ">
          <shape>
              triangle
          </shape>
          <degrees>&#009;180&#009;</degrees>
        </row>
      </data>string)rQ   dtyper}   )r"   r    r!   )rQ   rq   r   )z 4 z 0 z 3 )z 
              square
          z 
              circle
          z"
              triangle
          )	360	r   z	180	r   r   r   r^   r   r:   rs   rQ   xmlr   r   r   s        r@   test_whitespacer     sz    C, fHEH 78	G *
 9	
 K (0'/rM   c                    [         R                  " S5        [         R                  " [        SS9   [	        U SSS9  S S S 5        g ! , (       d  f       g = f)Nr4   xpath does not return any nodesr6   z	.//pythonr   r8   r9   r   
ValueErrorr   rt   s    r@   test_empty_xpath_lxmlr   M  s8    
	z*K	M+f= 
N	M	M   A
Ac                    [         R                  " [        SS9   [        U SSS9  S S S 5        g ! , (       d  f       g = f)Nz/You have used an incorrect or unsupported XPathr6   	.//[book]rO   r   r8   r   SyntaxErrorr   r   s    r@   test_bad_xpath_etreer   S  s2    	M
 	+g>
 
 
   /
=c                    [         R                  " S5      n[         R                  " UR                  SS9   [	        U SSS9  S S S 5        g ! , (       d  f       g = f)Nr   zInvalid expressionr6   r   r4   r   r8   r9   r   XPathEvalErrorr   )rt   r   s     r@   test_bad_xpath_lxmlr   Z  s@    $$\2J	z009M	O+f= 
P	O	O   A
Ac                    [        [        [        5      SSS0U S9n[        [        U S/ SQ0S9n[	        / SQ/ S	QS
[        S5      S/S.5      n[        R                  " X5        [        R                  " X#5        g )N	.//ns:rownshttp://example.comr   
namespacesrQ   r}   r   rp   r   r         @nan      @)r   r   r=   r^   r   floatr:   rs   rQ   df_nmspr   r   s       r@   test_default_namespacer   d  s    !"./	G !78G 5&5<-	
K '/'/rM   c                    [        [        [        5      SSS0U S9n[        [        U S/ SQ0S9n[	        / SQ/ S	QS
[        S5      S/S.5      n[        R                  " X5        [        R                  " X#5        g )N
.//doc:rowdocr   r   r}   r   rp   r   r   r   r   r   )r   r   xml_prefix_nmspr^   r   r   r:   rs   r   s       r@   test_prefix_namespacer   ~  s    !/0	G !5:W2XG 5&5<-	
K '/'/rM   c                     [         R                  " S5        [        [        [        5      SSS0SS9n [        [        [        5      SSS0SS9n[
        R                  " X5        g )	Nr4   r   r   r   r   r   r   rO   )r8   r9   r   r   r=   r:   rs   df_lxmldf_etrees     r@   "test_consistency_default_namespacer     sf    
!"./	G !"/0	H ',rM   c                     [         R                  " S5        [        [        [        5      SSS0SS9n [        [        [        5      SSS0SS9n[
        R                  " X5        g )Nr4   r   r   r   r   rO   )r8   r9   r   r   r   r:   rs   r   s     r@   !test_consistency_prefix_namespacer    sd    
!/0	G !/0	H ',rM   c                    [         R                  " [        SS9   [        U SUS9  S S S 5        g ! , (       d  f       g = f)Nr   r6   z.//Placemarkr   r8   r   r   r   rt   rQ   s     r@   *test_missing_prefix_with_default_namespacer    s*    	z*K	M.@ 
N	M	Mr   c                    [         R                  " [        SS9   [        U SSS9  S S S 5        g ! , (       d  f       g = f)Nz'you used an undeclared namespace prefixr6   .//kml:PlacemarkrO   r   r   )kml_cta_rail_liness    r@   $test_missing_prefix_definition_etreer
    s,    	{+T	V#+=gN 
W	V	Vr   c                    [         R                  " S5      n[         R                  " UR                  SS9   [	        U SSS9  S S S 5        g ! , (       d  f       g = f)Nr   zUndefined namespace prefixr6   r  r4   r   r   )r	  r   s     r@   #test_missing_prefix_definition_lxmlr    sB    $$\2J	z009U	W#+=fM 
X	W	Wr   keyc                    [         R                  " S5        [         R                  " [        SS9   [	        [        [        5      SU S0SS9  S S S 5        g ! , (       d  f       g = f)Nr4   z0empty namespace prefix is not supported in XPathr6   r  http://www.opengis.net/kml/2.2r   )r8   r9   r   	TypeErrorr   r   r=   )r  s    r@   test_none_namespace_prefixr    sT    
	L
 	%&$=>		

 
 
s   A
A#c                    [        XS9n[        U US/ SQ0S9n[        / SQ/ SQ/ SQ/ SQ/ S	QS.5      n[        R                  " X$5        [        R                  " X45        g )
Nrh   ri   r   rp   r   r   r   r   r   r   r   r:   rs   rt   rQ   r   r   r   s        r@   test_file_elems_and_attrsr    sc    y0GKLG
 6IL&*	
K '/'/rM   c                    [        U SUS9n[        XSS/0S9n[        S/ SQ05      n[        R                  " X$5        [        R                  " X45        g )NT)
attrs_onlyrQ   ri   rk   rp   r   r  r  s        r@   test_file_only_attrsr    sO    yT&AGyFZL;QRGZ)GHIK'/'/rM   c                    [        U SUS9n[        U US/ SQ0S9n[        / SQ/ SQ/ SQ/ S	QS.5      n[        R                  " X$5        [        R                  " X45        g )
NT)
elems_onlyrQ   ri   )rl   rn   rm   ro   rp   r   r   r   r   r  r  s        r@   test_file_only_elemsr    sd    yT&AG?@G
 IL&*		
K '/'/rM   c                    [         R                  " [        SS9   [        U SSUS9  S S S 5        g ! , (       d  f       g = f)Nz3Either element or attributes can be parsed not bothr6   T)r  r  rQ   r  )r	  rQ   s     r@   test_elem_and_attrs_onlyr    s5    	D
 	#fU	
 
 
   0
>c                    Sn[         R                  " [        SS9   [        [	        U5      SSU S9  S S S 5        g ! , (       d  f       g = f)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 attributesr6   ./rowT)r   r  rQ   r8   r   r   r   r   rQ   r   s     r@   test_empty_attrs_onlyr$    sA    C  
>
 	#g$vN	
 
 
	   ;
A	c                    Sn[         R                  " [        SS9   [        [	        U5      SSU S9  S S S 5        g ! , (       d  f       g = f)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   r6   r!  T)r   r  rQ   r"  r#  s     r@   test_empty_elems_onlyr'  2  sA    C 
>
 	#g$vN	
 
 
r%  c                    [         R                  " S5        Sn [        [        U 5      SS9n[        [        U 5      SSS9n[	        U SSS	/0S
9n[	        U SSSS	/0S9n[
        R                  " X5        [
        R                  " X45        g )Nr4   a  <?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   rO   r   stationNamecoordsrq   rp   )r8   r9   r   r   r^   r:   rs   )r   r   r   
df_iter_lx
df_iter_ets        r@   test_attribute_centric_xmlr/  A  s    
C( x}L9G\'JH#CI?Q3RSJ#G	FH3E'FJ ',*1rM   c                    [        U / SQUS9n[        U U/ SQS/ SQ0S9n[        / SQ/ SQ/ SQ/ S	Q/ S
QS.5      n[        R                  " X$5        [        R                  " X45        g )N)Col1Col2Col3Col4Col5namesrQ   ri   r   )rQ   r7  rq   r   r   r   r   r   r  r  s        r@   test_names_option_outputr8  f  sp    A&G 6KL	G 2HJ&)	
K '/'/rM   c                    Sn[        [        U5      SU / SQS9n[        UU S/ SQ0/ SQS9n[        SS	/S
S/SS/S.5      n[        R
                  " X$5        [        R
                  " X45        g )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r   rQ   r7  r    )typer.   r>  rQ   rq   r7  2D3Dr   spherecurvedr   r   s        r@   test_repeat_namesrD    s    
C 0	H !450	G t)"H-	
K (0'/rM   c                    Sn[        [        U5      SU SS/S9n[        UU SSS/0SS/S9n[        / S	Q/ S
QS.5      n[        R
                  " X$5        [        R
                  " X45        g )NaB  <shapes>
  <shape>
    <name>rectangle</name>
    <family>rectangle</family>
  </shape>
  <shape>
    <name>square</name>
    <family>rectangle</family>
  </shape>
  <shape>
    <name>ellipse</name>
    <family>ellipse</family>
  </shape>
  <shape>
    <name>circle</name>
    <family>ellipse</family>
  </shape>
</shapes>r:  r.   groupr=  r    familyr?  )	rectangler   ellipser   )rH  rH  rI  rI  )r.   rF  r   r   s        r@   test_repeat_values_new_namesrJ    s    C& Zvw>OH !VX./w	G @E	
K (0'/rM   c                    Sn[        [        U5      SU / SQS9n[        UU S/ SQ0/ SQS9n[        / SQ/ S	Q/ S
Q/ SQS.5      n[        R
                  " X$5        [        R
                  " X45        g )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>r:  )r.   rG  r!   r"   r=  r    )valuerL  rL  rL  r?  )r   r   r   )rI  polygonrM  )r   r   r   )r   r   r   r   r   s        r@   test_repeat_elementsrN    s~    C* 4	H !@A4	G 47&		
K (0'/rM   c                    [         R                  " [        SS9   [        U / SQUS9  S S S 5        g ! , (       d  f       g = f)Nznames does not match lengthr6   )r1  r2  r3  r6  r  r  s     r@   test_names_option_wrong_lengthrP     s+    	z*G	I":6J 
J	I	I   1
?c                    [         R                  " [        SS9   [        U SUS9  S S S 5        g ! , (       d  f       g = f)Nzis not a valid type for namesr6   zCol1, Col2, Col3r6  r8   r   r  r   r  s     r@   test_names_option_wrong_typerT    s+    	y)H	J"4VD 
K	J	Jr   c                |    [         R                  " [        SS9   [        XS9  S S S 5        g ! , (       d  f       g = f)Nz'utf-8' codec can't decoder6   rh   r8   r   UnicodeDecodeErrorr   xml_baby_namesrQ   s     r@   test_wrong_encodingrZ    s'    	)2N	P/ 
Q	P	Ps   
-
;c                    [         R                  " [        SS9   [        U SUS9  S S S 5        g ! , (       d  f       g = f)NzLUTF-16 stream does not start with BOM|'utf-16(-le)?' codec can't decode byter6   zUTF-16rV   rQ   )r8   r   UnicodeErrorr   rX  s     r@   test_utf16_encodingr^    s4    	5
 	(6B
 
 
r   c                    [         R                  " [        SS9   [        U SUS9  S S S 5        g ! , (       d  f       g = f)Nzunknown encoding: UFT-8r6   zUFT-8r\  )r8   r   LookupErrorr   rX  s     r@   test_unknown_encodingra    s*    	{+D	F'&A 
G	F	Fr   c                    [         R                  " [        SS9   [        U SUS9  S S S 5        g ! , (       d  f       g = f)Nz'ascii' codec can't decode byter6   asciir\  rV  rX  s     r@   test_ascii_encodingrd  "  s+    	)2S	U'&A 
V	U	Ur   c                    [         R                  " S5        [        U SSS9n[        U SSS9n[        U SSS/ SQ0S9n[        U SSS/ SQ0S9n[        R                  " X5        [        R                  " X$5        [        R                  " X45        g )	Nr4   z
ISO-8859-1rQ   rV   rO   z
iso-8859-1r}   )rankmalename
femalename)rQ   rV   rq   rr   )rY  df_xpath_lxmldf_xpath_etreerw   rx   s        r@   %test_parser_consistency_with_encodingrl  '  s    
^F\RMnW|TN<=	L <=	M -8.8,6rM   c                     [         R                  " S5        Sn [         R                  " [        SS9   [	        [        U 5      SS S9  S S S 5        g ! , (       d  f       g = f)Nr4   -<data>
  <row>
    <a>c</a>
  </row>
</data>
zencoding Noner6   rf  )r8   r9   r   r  r   r   )rZ   s    r@   test_wrong_encoding_for_lxmlro  >  sC    
D 
y	8$> 
9	8	8s   A
Ac                 x    Sn [        [        U 5      SS S9n[        SS/05      n[        R                  " X5        g )Nrn  rO   rf  r   cr   )rZ   resultexpecteds      r@   test_none_encoding_etreert  K  s;    D htnWtDF#u&H&+rM   c                    [         R                  " [        SS9   [        U 5        S S S 5        g ! , (       d  f       g = f)Nz7lxml not found, please install or use the etree parser.r6   )r8   r   ImportErrorr   r   s    r@   test_default_parser_no_lxmlrw  [  s.    	U
 	
 
 
r   c                ~    [         R                  " [        SS9   [        U SS9  S S S 5        g ! , (       d  f       g = f)Nz,Values for parser can only be lxml or etree.r6   bs4rh   r  r   s    r@   test_wrong_parserrz  c  s0    	I
 	5)
 
 
s   .
<c                    [         R                  " S5        [        U SSS0US9n[        U S/ SQ0S9n[        R                  " [
        U5        [        R                  " [
        U5        g )	Nr4   .//k:Placemarkkr  r   r   
stylesheet	Placemarkr,   r,  )r8   r9   r   r:   rs   df_kml)r	  xsl_flatten_docdf_styler   s       r@   test_stylesheet_filer  m  sj    
9:"	H  	
G &(+&'*rM   c                    [         R                  " S5        [        XUS:X  a  SOS S9 n[        U SSS0US9nS S S 5        [        R
                  " [        W5        g ! , (       d  f       N*= f	Nr4   rC   rT   rU   r|  r}  r  r~  )r8   r9   rX   r   r:   rs   r  )r	  r  rK   r]   r  s        r@   test_stylesheet_file_liker    sc    
	og$	OST"=>	
 
P &(+ 
P	Os   A
A*c                L   [         R                  " S5        [        XUS:X  a  SOS S9 nUS:X  a  [        UR	                  5       5      nO[        UR	                  5       5      nS S S 5        [        U SSS0WS	9n[        R                  " [        U5        g ! , (       d  f       N8= f)
Nr4   rC   rT   rU   rB   r|  r}  r  r~  )
r8   r9   rX   r   rb   r   r   r:   rs   r  r	  r  rK   r]   xsl_objr  s         r@   test_stylesheet_ior    s      
og$	OST4<affh'Gqvvx(G	 
P 9:	H &(+ 
P	Os   :B
B#c                    [         R                  " S5        [        XUS:X  a  SOS S9 nUR                  5       nS S S 5        [	        U SSS0WS9n[
        R                  " [        U5        g ! , (       d  f       N8= fr  )r8   r9   rX   rb   r   r:   rs   r  r  s         r@   test_stylesheet_buffered_readerr    sp    
	og$	OST&&( 
P 9:	H &(+ 
P	Os   A,,
A:c                     [         R                  " S5        Sn Sn[        [        U 5      5      n[        [        U 5      US9n[        R
                  " X#5        g )Nr4   r   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  )r8   r9   r   r   r:   rs   )r   xsldf_origr  s       r@   test_style_charsetr    sJ    

HCC& x}%G#6H',rM   c                    [         R                  " S5      n[         R                  " UR                  SS9   [	        XS9  S S S 5        g ! , (       d  f       g = f)Nr   zdocument is not a stylesheetr6   r  r8   r9   r   XSLTParseErrorr   )r	  rt   r   s      r@   test_not_stylesheetr    sE    $$\2J	!!*H
 	#:
 
 
s   
A		
Ac                    [         R                  " S5      nSn[         R                  " UR                  SS9   [	        XS9  S S S 5        g ! , (       d  f       g = f)Nr   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>z(Extra content at the end of the documentr6   r  r8   r9   r   r   r   r	  r   r  s      r@   test_incorrect_xsl_syntaxr    sN    $$\2JC( 
!!*T
 	#4
 
 
   
A
Ac                    [         R                  " S5      nSn[         R                  " UR                  SS9   [	        XS9  S S S 5        g ! , (       d  f       g = f)Nr   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>zfailed to compiler6   r  r  r  s      r@   test_incorrect_xsl_evalr    sF    $$\2JC( 
z009L	N#4 
O	N	Nr  c                    [         R                  " S5      nSn[         R                  " UR                  SS9   [	        XS9  S S S 5        g ! , (       d  f       g = f)Nr   ag  <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>zCannot resolve URIr6   r  )r8   r9   r   XSLTApplyErrorr   r  s      r@   test_incorrect_xsl_applyr    sF    $$\2J
C 
z009M	O#4 
P	O	Or  c                    [         R                  " S5      nUS-  n[         R                  " UR                  SS9   [	        XS9  S S S 5        g ! , (       d  f       g = f)Nr   zflatten.xslz!Start tag expected, '<' not foundr6   r  r  )r	  xml_data_path	xml_etreer  s       r@   test_wrong_stylesheetr  +  sO    ##L1I
-
'C	  2
 	#4	
 
 
s   
A
Ac                4   [         R                  " S5        [        XUS:X  a  SOS S9 nUS:X  a  [        UR	                  5       5      nO[        UR	                  5       5      n[        XS9  UR                  (       a   e S S S 5        g ! , (       d  f       g = f)Nr4   rC   rT   rU   rB   r  )r8   r9   rX   r   rb   r   r   r   )r	  r  rK   r]   r  s        r@   test_stylesheet_file_closer  7  st      
og$	OST4<affh'Gqvvx(G#888|8 
P	O	Os   AB		
Bc                    [         R                  " S5        [         R                  " [        SS9   [	        U SUS9  S S S 5        g ! , (       d  f       g = f)Nr4   z*To use stylesheet, you need lxml installedr6   rO   )rQ   r  r   )r	  r  s     r@   test_stylesheet_with_etreer  H  sA    
	G
 	#GP
 
 
r   c                    [         R                  " S5        Sn[        R                  R	                  SSS5      n[         R
                  " [        US9   [        X S9  S S S 5        g ! , (       d  f       g = f)Nr4   r5   rZ   r   zcta_rail_lines.kmlr6   r  )r8   r9   r   r\   r   r   r<   r   )r   r?   kmls      r@   test_empty_stylesheetr  P  sU    
	: 
 '',,vu&:
;C	}C	0% 
1	0	0s   
A&&
A4c           	        [        XUS:X  a  SOS S9 nUS:X  aA  US:X  a;  [        R                  " [        SS9   [	        UUS/ SQ0S	9  S S S 5         S S S 5        g [	        UUS/ SQ0S	9n S S S 5        [        / S
Q/ SQ/ SQ/ SQ/ SQS.5      n[        R                  " WU5        g ! , (       d  f       Nc= f! , (       d  f       NR= fNrC   rT   rU   r4   z.reading file objects must return bytes objectsr6   ri   rj   rp   r   r   r   r   r   r   )rX   r8   r   r  r   r   r:   rs   )rt   rQ   rK   r]   df_fileliker   s         r@   test_file_like_iterparser  _  s    	i43;D	IQ3;6V+"R ! P  
J	I #!#STK 
J( 6IL&*	
K +{39  
J	Is(   &B7B&		B7B7&
B4	0B77
Cc           
     &   US:X  a  [         O[        n[        U UUS:X  a  SOS S9 nU" UR                  5       5       nUS:X  aI  US:X  aC  [        R
                  " [        SS9   [        UUS/ SQ0S	9  S S S 5         S S S 5        S S S 5        g [        UUS/ SQ0S	9n S S S 5        S S S 5        [        / S
Q/ SQ/ SQ/ SQ/ SQS.5      n[        R                  " WU5        g ! , (       d  f       Ns= f! , (       d  f       NZ= f! , (       d  f       Nc= fr  )r   r   rX   rb   r8   r   r  r   r   r:   rs   )rt   rQ   rK   funcIOr]   b	df_fileior   s           r@   test_file_io_iterparser    s	   X'F	 CKT
 
AFFHs{v/]]&V %"$T#  
 
& %! P	 
6 6IL&*	
K )[1=  
 
sF   D&C1#C 3	C1<DC1D 
C.*C11
C?	;D
Dc           	        [        USS9 nUR                  UR                  5       S9  [        R                  " [
        SS9   [        UR                  U S/ SQ0S9  S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)	NrT   rU   r{   )iterparse is designed for large XML filesr6   r}   r    r!   r"   daterp   )rX   r~   rb   r8   r   r   r   r   )rQ   r   r   r]   s       r@   test_url_path_errorr    sw     
h	)Q   2]] K
  "GH
 
*	)
 
 
*	)s#   7A>A-A>-
A;	7A>>
Bc           	        [         R                  " SS9 n[        R                  X US9  [        R
                  " [        SS9   [        UU S/ SQ0US9  S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)	Nzgeom_xml.zipr   rQ   r`   r  r6   r}   r  rQ   rq   r`   )r:   rW   geom_dfto_xmlr8   r   r   r   )rQ   rd   r\   s      r@   test_compression_errorr    sp    	.	1Tt8HI]] K
  "GH,	
 
2	1
 
 
2	1s#   .A6A%A6%
A3	/A66
Bc                    [         R                  " [        SS9   [        U U/ SQS9  S S S 5        g ! , (       d  f       g = f)Nz&list is not a valid type for iterparser6   rj   rp   rS  r  s     r@   test_wrong_dict_typer    s/    	y(P	QF	
 
R	Q	QrQ  c                    [         R                  " [        SS9   [        XSS0S9  S S S 5        g ! , (       d  f       g = f)Nz8<class 'str'> is not a valid type for value in iterparser6   ri   rk   rp   rS  r  s     r@   test_wrong_dict_valuer    s5    	S
 	fj5IJ
 
 
r  c           
     X   Sn[         R                  " SS9 n[        USSS9 nUR                  U5        S S S 5        [        R
                  " [        SS9   [        UU S	/S
/ SQ0S9  S S S 5        S S S 5        g ! , (       d  f       NJ= f! , (       d  f       N(= f! , (       d  f       g = f)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.xmlr  rS   rT   rU   zDExtra content at the end of the document|junk after document elementr6   r  r}   r  )rQ   parse_datesrq   )r:   rW   rX   rY   r8   r   r   r   )rQ   bad_xmlr\   r]   s       r@   test_bad_xmlr    s    G* 
)	,$g.!GGG / ]].
 #H "GH	
	 
-	,..
 
	 
-	,s9   BA9!BB
(B9
B	B

B	B
B)c                    Sn[        [        U5      SU S9n[        XSSS/0S9n[        SS	/S
S/S.5      n[        R
                  " X$5        [        R
                  " X45        g )Na-  <!-- comment before root -->
<shapes>
  <!-- comment within root -->
  <shape>
    <name>circle</name>
    <type>2D</type>
  </shape>
  <shape>
    <name>sphere</name>
    <type>3D</type>
    <!-- comment within child -->
  </shape>
  <!-- comment within root -->
</shapes>
<!-- comment after root -->r:  r   r    r.   r>  rp   r   rB  r@  rA  r.   r>  r   r   s        r@   test_commentr    st    C" ZGH w0@&AG x(4L	
K (0'/rM   c                    Sn[        [        U5      SU S9n[        XSSS/0S9n[        SS	/S
S/S.5      n[        R
                  " X$5        [        R
                  " X45        g )Na8  <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE non-profits [
    <!ELEMENT shapes (shape*) >
    <!ELEMENT shape ( name, type )>
    <!ELEMENT name (#PCDATA)>
]>
<shapes>
  <shape>
    <name>circle</name>
    <type>2D</type>
  </shape>
  <shape>
    <name>sphere</name>
    <type>3D</type>
  </shape>
</shapes>r:  r   r    r.   r>  rp   r   rB  r@  rA  r  r   r   s        r@   test_dtdr  %  t    C$ ZGH w0@&AG x(4L	
K (0'/rM   c                    Sn[        [        U5      SU S9n[        XSSS/0S9n[        SS	/S
S/S.5      n[        R
                  " X$5        [        R
                  " X45        g )Nam  <?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="style.xsl"?>
<?display table-view?>
<?sort alpha-ascending?>
<?textinfo whitespace is allowed ?>
<?elementnames <shape>, <name>, <type> ?>
<shapes>
  <shape>
    <name>circle</name>
    <type>2D</type>
  </shape>
  <shape>
    <name>sphere</name>
    <type>3D</type>
  </shape>
</shapes>r:  r   r    r.   r>  rp   r   rB  r@  rA  r  r   r   s        r@   test_processing_instructionr  I  r  rM   c                    [         R                  " [        SS9   [        U US/ SQ0S9  S S S 5        g ! , (       d  f       g = f)Nz+No result from selected items in iterparse.r6   nodeattr1elem1elem2elem3rp   )r8   r   r   r   r  s     r@   test_no_resultr  m  s=    	H
 	CD	

 
 
	   3
Ac                    [         R                  " [        SS9   [        U US/ SQ0S9  S S S 5        g ! , (       d  f       g = f)NzNo columns to parse from filer6   ri   r  rp   )r8   r   r   r   r  s     r@   test_empty_datar  x  s5    	~-L	MCD	
 
N	M	Mr  c            	         [         R                  " S5        Sn Sn[        [        U 5      SSS/US9n[	        SS	S
SSS.SSSSSS.S.5      n[
        R                  " X25        g )Nr4   a  <?xml version="1.0" encoding="UTF-8"?>
<catalog>
  <cd>
    <title>Empire Burlesque</title>
    <artist>Bob Dylan</artist>
    <country>USA</country>
    <company>Columbia</company>
    <price>10.90</price>
    <year>1985</year>
  </cd>
  <cd>
    <title>Hide your heart</title>
    <artist>Bonnie Tyler</artist>
    <country>UK</country>
    <company>CBS Records</company>
    <price>9.90</price>
    <year>1988</year>
  </cd>
  <cd>
    <title>Greatest Hits</title>
    <artist>Dolly Parton</artist>
    <country>USA</country>
    <company>RCA</company>
    <price>9.90</price>
    <year>1982</year>
  </cd>
  <cd>
    <title>Still got the blues</title>
    <artist>Gary Moore</artist>
    <country>UK</country>
    <company>Virgin records</company>
    <price>10.20</price>
    <year>1990</year>
  </cd>
  <cd>
    <title>Eros</title>
    <artist>Eros Ramazzotti</artist>
    <country>EU</country>
    <company>BMG</company>
    <price>9.90</price>
    <year>1997</year>
  </cd>
  <cd>
    <title>One night only</title>
    <artist>Bee Gees</artist>
    <country>UK</country>
    <company>Polydor</company>
    <price>10.90</price>
    <year>1998</year>
  </cd>
  <cd>
    <title>Sylvias Mother</title>
    <artist>Dr.Hook</artist>
    <country>UK</country>
    <company>CBS</company>
    <price>8.10</price>
    <year>1973</year>
  </cd>
  <cd>
    <title>Maggie May</title>
    <artist>Rod Stewart</artist>
    <country>UK</country>
    <company>Pickwick</company>
    <price>8.50</price>
    <year>1990</year>
  </cd>
  <cd>
    <title>Romanza</title>
    <artist>Andrea Bocelli</artist>
    <country>EU</country>
    <company>Polydor</company>
    <price>10.80</price>
    <year>1996</year>
  </cd>
  <cd>
    <title>When a man loves a woman</title>
    <artist>Percy Sledge</artist>
    <country>USA</country>
    <company>Atlantic</company>
    <price>8.70</price>
    <year>1987</year>
  </cd>
  <cd>
    <title>Black angel</title>
    <artist>Savage Rose</artist>
    <country>EU</country>
    <company>Mega</company>
    <price>10.90</price>
    <year>1995</year>
  </cd>
  <cd>
    <title>1999 Grammy Nominees</title>
    <artist>Many</artist>
    <country>USA</country>
    <company>Grammy</company>
    <price>10.20</price>
    <year>1999</year>
  </cd>
  <cd>
    <title>For the good times</title>
    <artist>Kenny Rogers</artist>
    <country>UK</country>
    <company>Mucik Master</company>
    <price>8.70</price>
    <year>1995</year>
  </cd>
  <cd>
    <title>Big Willie style</title>
    <artist>Will Smith</artist>
    <country>USA</country>
    <company>Columbia</company>
    <price>9.90</price>
    <year>1997</year>
  </cd>
  <cd>
    <title>Tupelo Honey</title>
    <artist>Van Morrison</artist>
    <country>UK</country>
    <company>Polydor</company>
    <price>8.20</price>
    <year>1971</year>
  </cd>
  <cd>
    <title>Soulsville</title>
    <artist>Jorn Hoel</artist>
    <country>Norway</country>
    <company>WEA</company>
    <price>7.90</price>
    <year>1996</year>
  </cd>
  <cd>
    <title>The very best of</title>
    <artist>Cat Stevens</artist>
    <country>UK</country>
    <company>Island</company>
    <price>8.90</price>
    <year>1990</year>
  </cd>
  <cd>
    <title>Stop</title>
    <artist>Sam Brown</artist>
    <country>UK</country>
    <company>A and M</company>
    <price>8.90</price>
    <year>1988</year>
  </cd>
  <cd>
    <title>Bridge of Spies</title>
    <artist>T`Pau</artist>
    <country>UK</country>
    <company>Siren</company>
    <price>7.90</price>
    <year>1987</year>
  </cd>
  <cd>
    <title>Private Dancer</title>
    <artist>Tina Turner</artist>
    <country>UK</country>
    <company>Capitol</company>
    <price>8.90</price>
    <year>1983</year>
  </cd>
  <cd>
    <title>Midt om natten</title>
    <artist>Kim Larsen</artist>
    <country>EU</country>
    <company>Medley</company>
    <price>7.80</price>
    <year>1983</year>
  </cd>
  <cd>
    <title>Pavarotti Gala Concert</title>
    <artist>Luciano Pavarotti</artist>
    <country>UK</country>
    <company>DECCA</company>
    <price>9.90</price>
    <year>1991</year>
  </cd>
  <cd>
    <title>The dock of the bay</title>
    <artist>Otis Redding</artist>
    <country>USA</country>
    <COMPANY>Stax Records</COMPANY>
    <PRICE>7.90</PRICE>
    <YEAR>1968</YEAR>
  </cd>
  <cd>
    <title>Picture book</title>
    <artist>Simply Red</artist>
    <country>EU</country>
    <company>Elektra</company>
    <price>7.20</price>
    <year>1985</year>
  </cd>
  <cd>
    <title>Red</title>
    <artist>The Communards</artist>
    <country>UK</country>
    <company>London</company>
    <price>7.80</price>
    <year>1987</year>
  </cd>
  <cd>
    <title>Unchain my heart</title>
    <artist>Joe Cocker</artist>
    <country>USA</country>
    <company>EMI</company>
    <price>8.20</price>
    <year>1987</year>
  </cd>
</catalog>
a7  <?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
  <h2>My CD Collection</h2>
  <table border="1">
    <tr bgcolor="#9acd32">
      <th style="text-align:left">Title</th>
      <th style="text-align:left">Artist</th>
    </tr>
    <xsl:for-each select="catalog/cd">
    <tr>
      <td><xsl:value-of select="title"/></td>
      <td><xsl:value-of select="artist"/></td>
    </tr>
    </xsl:for-each>
  </table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
z.//tr[td and position() <= 6]rl   artist)r   r7  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)rl   r  )r8   r9   r   r   r   r:   rs   )r   r  df_xslr   s       r@   test_online_stylesheetr    s    
TCjC2 -!	F  &$"( !!$	
K& +.rM   c           	     .   [         R                  " 5        n[        R                  USXS9  [	        X US9n[        UUU S/ SQ0US9nS S S 5        [         R                  " W[        5        [         R                  " W[        5        g ! , (       d  f       NE= f)NF)r   rQ   r`   r  r}   r   r  )r:   rW   r  r  r   rf   rs   )rQ   rd   rc   r   r   s        r@   test_compression_readr    s    		iU6 	 	
 IBRS);<(
 
 (G,'7+! 
	s   1B
Bc                   UnUnX4:X  a  [         R                  " U SU 35        [        S4[        S4[        S4[        S4S.n[        SSS	9nUb  UR                  S
4US'   [        SSS	9nUb  [        S4US'   XT   u  p[        R                  " 5        n
[        R                  XUS9  [         R                  " XS9   [        XUS9  S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nz == z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  r6   )r8   skipOSErrorr
   r   r   	ZstdErrorr   r:   rW   r  r  r   r   )rQ   r`   rd   actual_compressionattempted_compressionr  r  r  	error_cls	error_strr\   s              r@   test_wrong_compressionr    s   $,2)*$/D.EFG ././45BC	F &k(CD..*DEv%fX>D!#JKt!8I		dt8JK]]96T6KL 7 
	 76 
	s$   )C+>C	C+
C(	$C++
C9c                    [         R                  " [        SS9   [        R                  " 5        n[        XSS9  S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)NzUnrecognized compression typer6   7zr  )r8   r   r   r:   rW   r   )rQ   r\   s     r@   test_unsuported_compressionr    sF    	z)H	I__$Td;  
J	I 
J	Is!   AAA
A	A
A+c                    [         R                  " S5        [         R                  " S5        SU R                   S3n[        USUS9n[        USUS9n[        R
                  " X45        g )Ns3fsr4   zs3://z
/books.xml)rQ   storage_optionsrO   )r8   r9   r.   r   r:   rs   )s3_public_bucket_with_datas3sos3r   r   s        r@   test_s3_parser_consistencyr    s`     
+001	<Br&$?G7DAH',rM   c                ^   SnU(       aP  [         R                  " S5      n[        UR                  SS/5      5      n[        UR                  SS /5      5      nGO
US:X  aa  [	        [
        R                  " SS/[
        R                  S95      n[	        [
        R                  " S[        /[
        R                  S95      nOUS:X  aO  [         R                  " S5      nSSKJ	n  U" UR                  SS/5      5      nU" UR                  SS /5      5      nON[         R                  " S5      n[        UR                  SS/5      5      n[        UR                  SS /5      5      n[        R                  " S	U5         [        [        U5      XS
9n	S S S 5        [        U[!        SS/SS9[!        SS/SS9U[!        S[        /SS9[!        S[        /SS9[!        [        [        /SS9[!        SS/SS9[!        S[        /SS9S.	5      n
US:X  at  [         R                  " S5      nSSKJ	n  [        U
R"                   Vs0 s H  nX" UR                  X   SS95      _M     sn5      n
U" UR                  S S /5      5      U
S'   [$        R&                  " W	U
5        g ! , (       d  f       GN= fs  snf )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>pyarrowxypythonr   r   )ArrowExtensionArrayzmode.string_storage)rQ   dtype_backendr)   r*   Int64r   g      @Float64TFboolean)	r   r  rq  der]   ghi)from_pandasr  )r8   r9   r   arrayr   npobject_r   pandas.arraysr  r   pdoption_contextr   r   r   r   columnsr:   rs   )rQ   string_storager  using_infer_stringrZ   pastring_arraystring_array_nar  rr  rs  cols               r@   test_read_xml_nullable_dtypesr    sV   D4   +5bhhSz6JK83+9NO	8	#"288S#Jbjj#IJ%bhhRy

&KL	)	#  +5*288S#J+?@-bhhT{.CD   +'#s(<=*288S$K+@A			0.	A(4.U 
B Ag.c
)4 Bw/b	3R0uY795
	
H 	!  +5 $+++C ((-T)RSS+
 ,BHHdD\,BC&(+; 
B	A,s   ;J;"J*
J'c                     Sn [         R                  " [        U S9   [        SSS9  S S S 5        g ! , (       d  f       g = f)NzPdtype_backend numpy is invalid, only 'numpy_nullable' and 'pyarrow' are allowed.r6   testnumpy)r  r  r>   s    r@   test_invalid_dtype_backendr!  +  s2    	!  
z	-w/ 
.	-	-s   0
>)
__future__r   ior   r   r  r   r   tarfiler   urllib.errorr   xml.etree.ElementTreer	   zipfiler
   r   r  r8   pandas.compat._optionalr   pandas.errorsr   r   pandas.util._test_decoratorsutil_test_decoratorstdpandasr  r   r   r   pandas._testing_testingr:   pandas.core.arraysr   r   pandas.core.arrays.string_arrowr   pandas.io.commonr   pandas.io.xmlr   r   r  r=   r   r  rA   fixturerK   rH   
skip_if_norQ   r^   rf   ry   marknetwork
single_cpur   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'  r/  r8  rD  rJ  rN  rP  rT  rZ  r^  ra  rd  rl  ro  rt  skip_if_installedrw  rz  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r!   rM   r@   <module>r=     s   "  	  " ,    > * )  
  K ' "l 1"RVVQ (* 
 
 )!!!!
 
 Q1q1     
999&9$9uI
=hj
Z
# c{# $ V2==3HI7ST U(,7* 
-  
-0".,/0/2/0> S	*2 +2" S	*3 +3* /  /& M  M.0h>?>040.-&-,A
O
N T
+

 ,

 0*00(VO0O2J02#0L'0T.0bK
E0
CB
B
7.
?
,  f *+6
,,,,-:;5:565&	5"Q S	*
& +
&4D'2T 
  

K&R 0F!0H!0H

J/`,(M8< 	-  	-P,f0rM   