
    Eg              	      T   d dl mZ d dlmZmZ d dlZd dlZd dlZd dl	m
c mZ d dlmZmZmZ d dlmZ d dlmZ d dlmZ ej        d             Zej        d             Zej        d	             Zd
 Z ej        ddg          d             Z ej         ej        d ej        d                    dg          d             Z d Z!d Z"d Z#d Z$d Z%d Z&ej'        (                    d e) e*dd                    d  e*dd          D             g          d             Z+dZ,d Z-d  Z.d! Z/d" Z0d# Z1d$ Z2d% Z3d& Z4d' Z5d( Z6d) Z7d* Z8d+ Z9d, Z:d- Z;d. Z<d/ Z=d0 Z>d1 Z?d2 Z@d3ZAd4 ZBd5 ZCej'        (                    d6g d7          d8             ZDd9 ZEd: ZFd; ZGd< ZH ejI        d          d=             ZJd> ZKd?ZLd@ ZMdA ZNdB ZOdC ZPej'        (                    dDdEdFg          dG             ZQdH ZRdI ZSdJ ZTdK ZUdL ZVdM ZWdN ZXdZYdO ZZdP Z[dQ Z\dR Z]ej'        j^        dS             Z_dS )T    )annotations)BytesIOStringION)NA	DataFrameIndex)
get_handle)read_xmlc                 J    t          g dg ddt          j        dgd          S )N)squarecircletriangle)h  r            shapedegreessides)r   npnan     T/var/www/sysmax/venv/lib/python3.11/site-packages/pandas/tests/io/xml/test_to_xml.pygeom_dfr   ;   s9    555&^	
 	
  r   c                 :    t          g dg dg dg dd          S )N)MercuryVenusEarthMarsJupiterSaturnUranusNeptune)terrestrialr&   r&   r&   	gas giantr'   	ice giantr(   )innerr)   r)   r)   outerr*   r*   r*   )g`|x ?gcAJx@g2r@gl?gh|@g	@gd]FU@g	hY@)planettypelocationmass)r   r   r   r   	planet_dfr/   F   sZ    	 	 		 	 		 	 		 	 	?)	
 )	
+ + +r   c                     dS )Nac  <?xml version='1.0' encoding='utf-8'?>
<data>
  <row>
    <index>0</index>
    <category>cooking</category>
    <title>Everyday Italian</title>
    <author>Giada De Laurentiis</author>
    <year>2005</year>
    <price>30.0</price>
  </row>
  <row>
    <index>1</index>
    <category>children</category>
    <title>Harry Potter</title>
    <author>J K. Rowling</author>
    <year>2005</year>
    <price>29.99</price>
  </row>
  <row>
    <index>2</index>
    <category>web</category>
    <title>Learning XML</title>
    <author>Erik T. Ray</author>
    <year>2003</year>
    <price>39.95</price>
  </row>
</data>r   r   r   r   from_file_expectedr1   v   s     r   c                6    | |                      dd          } | S )Nz%<?xml version="1.0" encoding="utf-8"?z%<?xml version='1.0' encoding='utf-8'?)replace)docs    r   equalize_declr5      s'    
kk33
 
 Jr   rbr)paramsc                    | j         S Nparamrequests    r   moder?      
    =r   lxml)marksetreec                    | j         S r:   r;   r=   s    r   parserrE      r@   r   c                   t          | |          }t          j        d          5 }|                    ||           t	          |d          5 }|                                                    d                                          }d d d            n# 1 swxY w Y   t          |          }||k    sJ 	 d d d            d S # 1 swxY w Y   d S NrE   test.xmlr6   utf-8	r
   tmensure_cleanto_xmlopenreaddecodestripr5   	xml_booksrE   r1   df_filepathfoutputs          r   test_file_output_str_readrY      F   y000G		$	$ ,tF+++$ 	6VVXX__W--3355F	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 v&&++++++, , , , , , , , , , , , , , , , , ,5   (C:BCB	CB	CCCc                   t          | |          }t          j        d          5 }|                    ||           t	          |d          5 }|                                                    d                                          }d d d            n# 1 swxY w Y   t          |          }||k    sJ 	 d d d            d S # 1 swxY w Y   d S rG   rK   rS   s          r   test_file_output_bytes_readr]      rZ   r[   c                    t          | |          }|                    |          }t          |          }||k    sJ d S NrH   )r
   rN   r5   )rT   rE   r1   rU   rX   s        r   test_str_outputr`      sL    y000G^^6^**F6""F'''''''r   c                    d}t          j        t          d          5  |                    ||            d d d            d S # 1 swxY w Y   d S )Nz/my/fake/path/output.xmlz6Cannot save file into a non-existent directory: .*pathmatchrH   )pytestraisesOSErrorrN   rE   r   rV   s      r   test_wrong_file_pathrh      s    %D	H
 
 
 , , 	tF+++	, , , , , , , , , , , , , , , , , ,   AA
Ac                   d}t          | |          }t          j        d          5 }|                    |d|           t	          |d          5 }|                                                    d                                          }d d d            n# 1 swxY w Y   t          |          }||k    sJ 	 d d d            d S # 1 swxY w Y   d S )Na$  <?xml version='1.0' encoding='utf-8'?>
<data>
  <row>
    <category>cooking</category>
    <title>Everyday Italian</title>
    <author>Giada De Laurentiis</author>
    <year>2005</year>
    <price>30.0</price>
  </row>
  <row>
    <category>children</category>
    <title>Harry Potter</title>
    <author>J K. Rowling</author>
    <year>2005</year>
    <price>29.99</price>
  </row>
  <row>
    <category>web</category>
    <title>Learning XML</title>
    <author>Erik T. Ray</author>
    <year>2003</year>
    <price>39.95</price>
  </row>
</data>rH   rI   FindexrE   r6   rJ   rK   rT   rE   expectedrU   rV   rW   rX   s          r   test_index_falsero      sP   H4 y000G		$	$ "t5888$ 	6VVXX__W--3355F	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 v&&!!!!!" " " " " " " " " " " " " " " " " "s5   )C:BCB	CB	CCCc                   d}t          | |          }t          j        d          5 }|                    |ddd|           t	          |d          5 }|                                                    d	                                          }d d d            n# 1 swxY w Y   t          |          }||k    sJ 	 d d d            d S # 1 swxY w Y   d S )
Na,  <?xml version='1.0' encoding='utf-8'?>
<books>
  <book>
    <category>cooking</category>
    <title>Everyday Italian</title>
    <author>Giada De Laurentiis</author>
    <year>2005</year>
    <price>30.0</price>
  </book>
  <book>
    <category>children</category>
    <title>Harry Potter</title>
    <author>J K. Rowling</author>
    <year>2005</year>
    <price>29.99</price>
  </book>
  <book>
    <category>web</category>
    <title>Learning XML</title>
    <author>Erik T. Ray</author>
    <year>2003</year>
    <price>39.95</price>
  </book>
</books>rH   rI   Fbooksbook)rl   	root_namerow_namerE   r6   rJ   rK   rm   s          r    test_index_false_rename_row_rootru     s`   H4 y000G		$	$ 	"6& 	 	
 	
 	
 $ 	6VVXX__W--3355F	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 v&&!!!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"s5   +C	:BC	B	C	 B	!C		CCoffset_index
      c                ,    g | ]}t          |          S r   )str).0is     r   
<listcomp>r}   .  s    *I*I*Ia3q66*I*I*Ir   c                    d}|                                 }t          |          |_        |                    d|           }t	          |          }||k    sJ dS )z
    Tests that the output does not contain the `<index>` field when the index of the
    input Dataframe has an offset.

    This is a regression test for issue #42458.
    aD  <?xml version='1.0' encoding='utf-8'?>
<data>
  <row>
    <shape>square</shape>
    <degrees>360</degrees>
    <sides>4.0</sides>
  </row>
  <row>
    <shape>circle</shape>
    <degrees>360</degrees>
    <sides/>
  </row>
  <row>
    <shape>triangle</shape>
    <degrees>180</degrees>
    <sides>3.0</sides>
  </row>
</data>Frk   N)copyr   rl   rN   r5   )rE   rv   r   rn   offset_geom_dfrX   s         r   (test_index_false_with_offset_input_indexr   -  sd    H( \\^^N ..N""v">>F6""FXr   a  <?xml version='1.0' encoding='utf-8'?>
<data>
  <row>
    <index>0</index>
    <shape>square</shape>
    <degrees>360</degrees>
    <sides>4.0</sides>
  </row>
  <row>
    <index>1</index>
    <shape>circle</shape>
    <degrees>360</degrees>
    <sides/>
  </row>
  <row>
    <index>2</index>
    <shape>triangle</shape>
    <degrees>180</degrees>
    <sides>3.0</sides>
  </row>
</data>c                j    |                     |           }t          |          }|t          k    sJ d S r_   rN   r5   na_expectedrE   r   rX   s      r   test_na_elem_outputr   n  s9    ^^6^**F6""F[      r   c                l    |                     d|           }t          |          }|t          k    sJ d S )N na_reprE   r   r   s      r   test_na_empty_str_elem_optionr   u  s;    ^^2f^55F6""F[      r   c                f    d}|                     d|           }t          |          }||k    sJ d S )Na  <?xml version='1.0' encoding='utf-8'?>
<data>
  <row>
    <index>0</index>
    <shape>square</shape>
    <degrees>360</degrees>
    <sides>4.0</sides>
  </row>
  <row>
    <index>1</index>
    <shape>circle</shape>
    <degrees>360</degrees>
    <sides>0.0</sides>
  </row>
  <row>
    <index>2</index>
    <shape>triangle</shape>
    <degrees>180</degrees>
    <sides>3.0</sides>
  </row>
</data>z0.0r   rN   r5   rE   r   rn   rX   s       r   test_na_empty_elem_optionr   |  sD    H. ^^5^88F6""FXr   c                j    d}|                     g d|           }t          |          }||k    sJ d S )Nz<?xml version='1.0' encoding='utf-8'?>
<data>
  <row index="0" shape="square" degrees="360" sides="4.0"/>
  <row index="1" shape="circle" degrees="360"/>
  <row index="2" shape="triangle" degrees="180" sides="3.0"/>
</data>r   	attr_colsrE   r   r   s       r   test_attrs_cols_nan_outputr     sK    H ^^&C&C&CF^SSF6""FXr   c                r    d}|                     g dddid|           }t          |          }||k    sJ d S )Na>  <?xml version='1.0' encoding='utf-8'?>
<doc:data xmlns:doc="http://example.xom">
  <doc:row doc:index="0" doc:shape="square" doc:degrees="360" doc:sides="4.0"/>
  <doc:row doc:index="1" doc:shape="circle" doc:degrees="360"/>
  <doc:row doc:index="2" doc:shape="triangle" doc:degrees="180" doc:sides="3.0"/>
</doc:data>)rl   r   r   r   r4   zhttp://example.xom)r   
namespacesprefixrE   r   r   s       r   test_attrs_cols_prefixr     sa    	H ^^888/0	   F 6""FXr   c                    t          j        t          d          5  |                    g d|            d d d            d S # 1 swxY w Y   d S )Nno valid columnrb   r   degreer   r   rd   re   KeyErrorrN   rE   r   s     r   test_attrs_unknown_columnr         	x(9	;	;	; N N!=!=!=fMMMN N N N N N N N N N N N N N N N N N   AA
Ac                    t          j        t          d          5  |                    d|            d d d            d S # 1 swxY w Y   d S )Nz!is not a valid type for attr_colsrb   "shape", "degree", "sides"r   rd   re   	TypeErrorrN   r   s     r   test_attrs_wrong_typer         	y)L	N	N	N N N!=fMMMN N N N N N N N N N N N N N N N N N   AAAc                l    d}|                     dg d|           }t          |          }||k    sJ d S )NaD  <?xml version='1.0' encoding='utf-8'?>
<data>
  <row>
    <degrees>360</degrees>
    <sides>4.0</sides>
    <shape>square</shape>
  </row>
  <row>
    <degrees>360</degrees>
    <sides/>
    <shape>circle</shape>
  </row>
  <row>
    <degrees>180</degrees>
    <sides>3.0</sides>
    <shape>triangle</shape>
  </row>
</data>F)r   r   r   )rl   	elem_colsrE   r   rE   r   elems_cols_expectedrX   s       r   test_elems_cols_nan_outputr     sY    ( ^^<<<V   F 6""F(((((((r   c                    t          j        t          d          5  |                    g d|            d d d            d S # 1 swxY w Y   d S )Nr   rb   r   r   rE   r   r   s     r   test_elems_unknown_columnr     r   r   c                    t          j        t          d          5  |                    d|            d d d            d S # 1 swxY w Y   d S )Nz!is not a valid type for elem_colsrb   r   r   r   r   s     r   test_elems_wrong_typer     r   r   c                p    d}|                     dddgdg|           }t          |          }||k    sJ d S )Na#  <?xml version='1.0' encoding='utf-8'?>
<data>
  <row shape="square">
    <degrees>360</degrees>
    <sides>4.0</sides>
  </row>
  <row shape="circle">
    <degrees>360</degrees>
    <sides/>
  </row>
  <row shape="triangle">
    <degrees>180</degrees>
    <sides>3.0</sides>
  </row>
</data>Fr   r   r   )rl   r   r   rE   r   r   s       r   test_elems_and_attrs_colsr     s^    " ^^g&)	   F 6""F(((((((r   c                    d}|                     ddgdg dd                              d          }|                    | 	          }t          |          }||k    sJ d S )
Na  <?xml version='1.0' encoding='utf-8'?>
<data>
  <row>
    <location>inner</location>
    <type>terrestrial</type>
    <count_mass>4</count_mass>
    <sum_mass>11.81</sum_mass>
    <mean_mass>2.95</mean_mass>
  </row>
  <row>
    <location>outer</location>
    <type>gas giant</type>
    <count_mass>2</count_mass>
    <sum_mass>2466.5</sum_mass>
    <mean_mass>1233.25</mean_mass>
  </row>
  <row>
    <location>outer</location>
    <type>ice giant</type>
    <count_mass>2</count_mass>
    <sum_mass>189.23</sum_mass>
    <mean_mass>94.61</mean_mass>
  </row>
  <row>
    <location>All</location>
    <type/>
    <count_mass>8</count_mass>
    <sum_mass>2667.54</sum_mass>
    <mean_mass>333.44</mean_mass>
  </row>
</data>r-   r,   r.   countsummeanTrl   valuesaggfuncmargins   rH   )pivot_tableroundrN   r5   rE   r/   rn   pvtrX   s        r   test_hierarchical_columnsr     s    HB 

6"(((	    
 eAhh  ZZvZ&&F6""FXr   c                   d}|                     ddgdg dd                              d          }|                    t          |                                j        j                  | 	          }t          |          }||k    sJ d S )
Na  <?xml version='1.0' encoding='utf-8'?>
<data>
  <row location="inner" type="terrestrial" count_mass="4" sum_mass="11.81" mean_mass="2.95"/>
  <row location="outer" type="gas giant" count_mass="2" sum_mass="2466.5" mean_mass="1233.25"/>
  <row location="outer" type="ice giant" count_mass="2" sum_mass="189.23" mean_mass="94.61"/>
  <row location="All" type="" count_mass="8" sum_mass="2667.54" mean_mass="333.44"/>
</data>r-   r,   r.   r   Tr   r   r   )r   r   rN   listreset_indexcolumnsr   r5   r   s        r   test_hierarchical_attrs_columnsr   F  s    H 

6"(((	    
 eAhh  ZZ$s'8'8'@'G"H"HQWZXXF6""FXr   c                    d}|                     ddg          d                             g d                              d          }|                    |           }t	          |          }||k    sJ d S )Na  <?xml version='1.0' encoding='utf-8'?>
<data>
  <row>
    <location>inner</location>
    <type>terrestrial</type>
    <count>4</count>
    <sum>11.81</sum>
    <mean>2.95</mean>
  </row>
  <row>
    <location>outer</location>
    <type>gas giant</type>
    <count>2</count>
    <sum>2466.5</sum>
    <mean>1233.25</mean>
  </row>
  <row>
    <location>outer</location>
    <type>ice giant</type>
    <count>2</count>
    <sum>189.23</sum>
    <mean>94.61</mean>
  </row>
</data>r-   r,   r.   r   r   rH   )groupbyaggr   rN   r5   rE   r/   rn   r   rX   s        r   test_multi_indexr   d  s    H6 	:v.//7	%%%	&	&	q  ZZvZ&&F6""FXr   c                B   d}|                     ddg          d                             g d                              d          }|                    t	          |                                j        j                  |           }t          |          }||k    sJ d S )Na$  <?xml version='1.0' encoding='utf-8'?>
<data>
  <row location="inner" type="terrestrial" count="4" sum="11.81" mean="2.95"/>
  <row location="outer" type="gas giant" count="2" sum="2466.5" mean="1233.25"/>
  <row location="outer" type="ice giant" count="2" sum="189.23" mean="94.61"/>
</data>r-   r,   r.   r   r   r   )	r   r   r   rN   r   r   r   r   r5   r   s        r   test_multi_index_attrs_colsr     s    	H 	:v.//7	%%%	&	&	q 
 ZZ$s'8'8'@'G"H"HQWZXXF6""FXr   c                j    d}|                     ddi|           }t          |          }||k    sJ d S )Na  <?xml version='1.0' encoding='utf-8'?>
<data xmlns="http://example.com">
  <row>
    <index>0</index>
    <shape>square</shape>
    <degrees>360</degrees>
    <sides>4.0</sides>
  </row>
  <row>
    <index>1</index>
    <shape>circle</shape>
    <degrees>360</degrees>
    <sides/>
  </row>
  <row>
    <index>2</index>
    <shape>triangle</shape>
    <degrees>180</degrees>
    <sides>3.0</sides>
  </row>
</data>r   http://example.comr   rE   r   r   s       r   test_default_namespacer     sJ    H. ^^,@'A&^QQF6""FXr   c                l    d}|                     ddd|           }t          |          }||k    sJ d S )Na  <?xml version='1.0' encoding='utf-8'?>
<data xmlns:oth="http://other.org" xmlns:ex="http://example.com">
  <row>
    <index>0</index>
    <shape>square</shape>
    <degrees>360</degrees>
    <sides>4.0</sides>
  </row>
  <row>
    <index>1</index>
    <shape>circle</shape>
    <degrees>360</degrees>
    <sides/>
  </row>
  <row>
    <index>2</index>
    <shape>triangle</shape>
    <degrees>180</degrees>
    <sides>3.0</sides>
  </row>
</data>http://other.orgr   )othexr   r   r   s       r   test_unused_namespacesr     sX    H. ^^-5IJJ   F 6""FXr   c                l    d}|                     ddid|           }t          |          }||k    sJ d S )Na  <?xml version='1.0' encoding='utf-8'?>
<doc:data xmlns:doc="http://example.com">
  <doc:row>
    <doc:index>0</doc:index>
    <doc:shape>square</doc:shape>
    <doc:degrees>360</doc:degrees>
    <doc:sides>4.0</doc:sides>
  </doc:row>
  <doc:row>
    <doc:index>1</doc:index>
    <doc:shape>circle</doc:shape>
    <doc:degrees>360</doc:degrees>
    <doc:sides/>
  </doc:row>
  <doc:row>
    <doc:index>2</doc:index>
    <doc:shape>triangle</doc:shape>
    <doc:degrees>180</doc:degrees>
    <doc:sides>3.0</doc:sides>
  </doc:row>
</doc:data>r4   r   r   r   rE   r   r   s       r   test_namespace_prefixr     sV    H. ^^/0v   F 6""FXr   c                    t          j        t          d          5  |                    ddid|            d d d            d S # 1 swxY w Y   d S )Nz!doc is not included in namespacesrb   r   r   r4   r   r   r   s     r   test_missing_prefix_in_nmspr     s    	x(K	M	M	M 
 
01% 	 	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s   AAAc                n    d}|                     dddd|           }t          |          }||k    sJ d S )Na7  <?xml version='1.0' encoding='utf-8'?>
<doc:data xmlns:doc="http://other.org" xmlns="http://example.com">
  <doc:row>
    <doc:index>0</doc:index>
    <doc:shape>square</doc:shape>
    <doc:degrees>360</doc:degrees>
    <doc:sides>4.0</doc:sides>
  </doc:row>
  <doc:row>
    <doc:index>1</doc:index>
    <doc:shape>circle</doc:shape>
    <doc:degrees>360</doc:degrees>
    <doc:sides/>
  </doc:row>
  <doc:row>
    <doc:index>2</doc:index>
    <doc:shape>triangle</doc:shape>
    <doc:degrees>180</doc:degrees>
    <doc:sides>3.0</doc:sides>
  </doc:row>
</doc:data>r   r   )r   r4   r4   r   r   r   s       r   !test_namespace_prefix_and_defaultr     s[    H. ^^,5GHH   F
 6""FXr   u  <?xml version='1.0' encoding='ISO-8859-1'?>
<data>
  <row>
    <index>0</index>
    <rank>1</rank>
    <malename>José</malename>
    <femalename>Sofía</femalename>
  </row>
  <row>
    <index>1</index>
    <rank>2</rank>
    <malename>Luis</malename>
    <femalename>Valentina</femalename>
  </row>
  <row>
    <index>2</index>
    <rank>3</rank>
    <malename>Carlos</malename>
    <femalename>Isabella</femalename>
  </row>
  <row>
    <index>3</index>
    <rank>4</rank>
    <malename>Juan</malename>
    <femalename>Camila</femalename>
  </row>
  <row>
    <index>4</index>
    <rank>5</rank>
    <malename>Jorge</malename>
    <femalename>Valeria</femalename>
  </row>
</data>c                    t          | |d                              d          }|                    d|          }||                    dd          }|t          k    sJ d S )N
ISO-8859-1)rE   encoding   r   rE   z*<?xml version="1.0" encoding="ISO-8859-1"?z*<?xml version='1.0' encoding='ISO-8859-1'?)r
   headrN   r3   encoding_expected)xml_baby_namesrE   rU   rX   s       r   test_encoding_option_strr   V  ss    ~f|LLLQQRSTTG^^\&^AAF88
 

 &&&&&&&r   c                    t          j        d           t          | dd          }t          j        d          5 }|                    |ddd           d d d            d S # 1 swxY w Y   d S NrA   r   r   rI   F)rl   r   rE   rd   importorskipr
   rL   rM   rN   )r   rU   rV   s      r   test_correct_encoding_filer   e  s    
~VLLLG		$	$ Pt5<OOOP P P P P P P P P P P P P P P P P P   A""A&)A&r   )zUTF-8zUTF-16r   c                    t          j        d           t          | dd          }t          j        d          5 }|                    |d||           d d d            d S # 1 swxY w Y   d S r   r   )r   rE   r   rU   rV   s        r   test_wrong_encoding_option_lxmlr   m  s    
~VLLLG		$	$ Lt58FKKKL L L L L L L L L L L L L L L L L Lr   c                    t          j        t          d          5  |                    d|            d d d            d S # 1 swxY w Y   d S )Nzunknown encodingrb   zuft-8r   )rd   re   LookupErrorrN   r   s     r   test_misspelled_encodingr   v  s    	{+=	?	?	? 8 87778 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8r   c                n    t          j        d           d}|                     d          }||k    sJ d S )NrA   a\  <data>
  <row>
    <index>0</index>
    <shape>square</shape>
    <degrees>360</degrees>
    <sides>4.0</sides>
  </row>
  <row>
    <index>1</index>
    <shape>circle</shape>
    <degrees>360</degrees>
    <sides/>
  </row>
  <row>
    <index>2</index>
    <shape>triangle</shape>
    <degrees>180</degrees>
    <sides>3.0</sides>
  </row>
</data>F)xml_declaration)rd   r   rN   )r   rn   rX   s      r   !test_xml_declaration_pretty_printr   ~  sF    
H, ^^E^22FXr   c                    d}|                     d|           }t          |          }||                    dd          }||k    sJ d S )Na4  <?xml version='1.0' encoding='utf-8'?>
<data><row><index>0</index><shape>square</shape><degrees>360</degrees><sides>4.0</sides></row><row><index>1</index><shape>circle</shape><degrees>360</degrees><sides/></row><row><index>2</index><shape>triangle</shape><degrees>180</degrees><sides>3.0</sides></row></data>F)pretty_printrE    />/>)rN   r5   r3   r   s       r   test_no_pretty_print_with_declr     sb    	  ^^v^>>F6""F t,,Xr   c                z    d}|                     dd|           }||                    dd          }||k    sJ d S )Na  <data><row><index>0</index><shape>square</shape><degrees>360</degrees><sides>4.0</sides></row><row><index>1</index><shape>circle</shape><degrees>360</degrees><sides/></row><row><index>2</index><shape>triangle</shape><degrees>180</degrees><sides>3.0</sides></row></data>F)r   r   rE   r   r   )rN   r3   r   s       r   test_no_pretty_print_no_declr     sW    	  ^^Ef^UUF t,,Xr   c                    t          j        t          d          5  |                                  d d d            d S # 1 swxY w Y   d S )Nz7lxml not found, please install or use the etree parser.rb   )rd   re   ImportErrorrN   r   s    r   test_default_parser_no_lxmlr    s    	U
 
 
   	                 s   >AAc                    t          j        t          d          5  |                     d           d d d            d S # 1 swxY w Y   d S )Nz,Values for parser can only be lxml or etree.rb   bs4rH   rd   re   
ValueErrorrN   r   s    r   test_unknown_parserr    s    	I
 
 
 % % 	e$$$% % % % % % % % % % % % % % % % % %s   A  AAa%  <?xml version="1.0" encoding="utf-8"?>
<data>
  <row>
    <field field="index">0</field>
    <field field="shape">square</field>
    <field field="degrees">360</field>
    <field field="sides">4.0</field>
  </row>
  <row>
    <field field="index">1</field>
    <field field="shape">circle</field>
    <field field="degrees">360</field>
    <field field="sides"/>
  </row>
  <row>
    <field field="index">2</field>
    <field field="shape">triangle</field>
    <field field="degrees">180</field>
    <field field="sides">3.0</field>
  </row>
</data>c                    t          j        d           t          | ||dk    rdnd           5 }|                    |          t          k    sJ 	 d d d            d S # 1 swxY w Y   d S NrA   r7   rJ   r   
stylesheet)rd   r   rO   rN   xsl_expected)xsl_row_field_outputr?   r   rW   s       r   test_stylesheet_file_liker    s    
	dWW
 
 
 <	
~~~++|;;;;;< < < < < < < < < < < < < < < < < <s   "AA#&A#c                j   t          j        d           t          | ||dk    rdnd           5 }|dk    r"t          |                                          }n!t          |                                          }d d d            n# 1 swxY w Y   |                    |          }|t          k    sJ d S )NrA   r7   rJ   r	  r6   r
  )rd   r   rO   r   rP   r   rN   r  r  r?   r   rW   xsl_objrX   s         r   test_stylesheet_ior    s      
dWW
 
 
 )	
4<<affhh''GGqvvxx((G) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ^^w^//F\!!!!!!s   A
BB	B	c                    t          j        d           t          | ||dk    rdnd           5 }|                                }d d d            n# 1 swxY w Y   |                    |          }|t
          k    sJ d S r  )rd   r   rO   rP   rN   r  r  s         r   test_stylesheet_buffered_readerr  
  s    
	dWW
 
 
 	
&&((              
 ^^w^//F\!!!!!!s   AAAc                   t          j        d          }t          j                            ddd          }t          j        |j        d          5  |                     |           d d d            d S # 1 swxY w Y   d S )N
lxml.etreedataxmlzrow_field_output.xslt!Start tag expected, '<' not foundrb   r
  )rd   r   osrV   joinre   XMLSyntaxErrorrN   r   
lxml_etreexsls      r   test_stylesheet_wrong_pathr     s    $\22J
',,vu&=
>
>C	!2
 
 
 ' ' 	#&&&	' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 's   A55A9<A9valr   r   c                    t          j        d          }d                    g d          }t          j        |j        |          5  |                    |            d d d            d S # 1 swxY w Y   d S )Nr  |)zDocument is emptyr  zNone \(line 0\)rb   r
  )rd   r   r  re   r  rN   )r!  r   r  msgs       r   test_empty_string_stylesheetr%  "  s    $\22J
((	
 	
 	
 C 
z0	<	<	< ' '#&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 's   A++A/2A/c                    t          j        d          }d}t          j        |j        d          5  |                     |           d d d            d S # 1 swxY w Y   d S )Nr  aR  <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:apply-templates select="@*|node()"/>
        </xsl:copy>
    </xsl:template>

    <xsl:template match="row/*">
        <field>
            <xsl:attribute name="field">
                <xsl:value-of select="name()"/>
            </xsl:attribute>
            <xsl:value-of select="text()"/>
        </field>
    </xsl:template>
</xsl:stylesheet>zOpening and ending tag mismatchrb   r
  )rd   r   re   r  rN   r  s      r   test_incorrect_xsl_syntaxr'  3  s    $\22JC* 
!*K
 
 
 ' ' 	#&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '   AAAc                    t          j        d          }d}t          j        |j        d          5  |                     |           d d d            d S # 1 swxY w Y   d S )Nr  aT  <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:apply-templates select="@*|node()"/>
        </xsl:copy>
    </xsl:template>

    <xsl:template match="row/*">
        <field>
            <xsl:attribute name="field">
                <xsl:value-of select="name()"/>
            </xsl:attribute>
            <xsl:value-of select="text()"/>
        </field>
    </xsl:template>
</xsl:stylesheet>zfailed to compilerb   r
  )rd   r   re   XSLTParseErrorrN   r  s      r   test_incorrect_xsl_evalr+  Q  s    $\22JC* 
z09L	N	N	N ' '#&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 'r(  c                    t          j        d          }d}t          j        |j        d          5  t	          j        d          5 }|                     ||           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 )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 URIrb   rI   r
  )rd   r   re   XSLTApplyErrorrL   rM   rN   )r   r  r  rV   s       r   test_incorrect_xsl_applyr.  m  s   $\22J
C 
z09M	O	O	O 1 1_Z(( 	1DNN4CN000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1s5   BA+B+A/	/B2A/	3BB
Bc                    d}t          j        t          d          5  |                     d|           d d d            d S # 1 swxY w Y   d S )NaI  <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:apply-templates select="@*|node()"/>
        </xsl:copy>
    </xsl:template>z*To use stylesheet, you need lxml installedrb   rC   )rE   r  r  )r   r  s     r   test_stylesheet_with_etreer0    s    	C 
G
 
 
 7 7 	g#6667 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7ri   c                    t          j        d           d}|                     d          }||                                }|                     |          }||k    sJ d S )NrA   aQ  <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="text" indent="yes" />
    <xsl:strip-space elements="*"/>

    <xsl:param name="delim">,</xsl:param>
    <xsl:template match="/data">
        <xsl:text>,shape,degrees,sides&#xa;</xsl:text>
        <xsl:apply-templates select="row"/>
    </xsl:template>

    <xsl:template match="row">
        <xsl:value-of select="concat(index, $delim, shape, $delim,
                                     degrees, $delim, sides)"/>
         <xsl:text>&#xa;</xsl:text>
    </xsl:template>
</xsl:stylesheet>
)lineterminatorr
  )rd   r   to_csvrR   rN   )r   r  out_csvout_xmls       r   test_style_to_csvr7    sl    
C$ nnDn11G--//nnn,,Ggr   c                    t          j        d           d}|                                 }|                     d|          }||k    sJ d S )NrA   a  <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="text" indent="yes" />
    <xsl:strip-space elements="*"/>

    <xsl:param name="delim"><xsl:text>               </xsl:text></xsl:param>
    <xsl:template match="/data">
        <xsl:text>      shape  degrees  sides&#xa;</xsl:text>
        <xsl:apply-templates select="row"/>
    </xsl:template>

    <xsl:template match="row">
        <xsl:value-of select="concat(index, ' ',
                                     substring($delim, 1, string-length('triangle')
                                               - string-length(shape) + 1),
                                     shape,
                                     substring($delim, 1, string-length(name(degrees))
                                               - string-length(degrees) + 2),
                                     degrees,
                                     substring($delim, 1, string-length(name(sides))
                                               - string-length(sides) + 2),
                                     sides)"/>
         <xsl:text>&#xa;</xsl:text>
    </xsl:template>
</xsl:stylesheet>NaN)r   r  )rd   r   	to_stringrN   )r   r  out_strr6  s       r   test_style_to_stringr<    sY    
C4 !!GnnEcn::Ggr   c                    t          j        d           d}|                                 }|                     |          }||k    sJ d S )NrA   a]  <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="text" indent="yes" />
    <xsl:strip-space elements="*"/>

    <xsl:param name="quot">"</xsl:param>

    <xsl:template match="/data">
        <xsl:text>{"shape":{</xsl:text>
        <xsl:apply-templates select="descendant::row/shape"/>
        <xsl:text>},"degrees":{</xsl:text>
        <xsl:apply-templates select="descendant::row/degrees"/>
        <xsl:text>},"sides":{</xsl:text>
        <xsl:apply-templates select="descendant::row/sides"/>
        <xsl:text>}}</xsl:text>
    </xsl:template>

    <xsl:template match="shape|degrees|sides">
        <xsl:variable name="val">
            <xsl:if test = ".=''">
                <xsl:value-of select="'null'"/>
            </xsl:if>
            <xsl:if test = "number(text()) = text()">
                <xsl:value-of select="text()"/>
            </xsl:if>
            <xsl:if test = "number(text()) != text()">
                <xsl:value-of select="concat($quot, text(), $quot)"/>
            </xsl:if>
        </xsl:variable>
        <xsl:value-of select="concat($quot, preceding-sibling::index,
                                     $quot,':', $val)"/>
        <xsl:if test="preceding-sibling::index != //row[last()]/index">
            <xsl:text>,</xsl:text>
        </xsl:if>
    </xsl:template>
</xsl:stylesheet>r
  )rd   r   to_jsonrN   )r   r  out_jsonr6  s       r   test_style_to_jsonr@    sV    
#CJ   Hnnn,,Gwr   c                n   t          j                    5 }|                    || |           t          |d|          5 }|j                                        }d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          |          }t          |                                k    sJ d S )NrE   compressionr7   rC  	rL   rM   rN   r	   handlerP   r5   geom_xmlrR   )rE   compression_onlyr   rV   
handle_objrX   s         r   test_compression_outputrJ    s0   			 .dtF8HIII(
 
 
 	. &++--F	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.. . . . . . . . . . . . . . . 6""Fv||~~%%%%%%s4   +A<A%A<%A)	)A<,A)	-A<<B B c                   d||         z   }t          j        |          5 }|                    || |           t          |d|          5 }|j                                        }d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          |          }t          |                                k    sJ d S )Nzxml.)filenamerB  r7   rD  rE  )rE   rH  r   compression_to_extensioncompfilerV   rI  rX   s           r   test_filename_and_suffix_comprO  *  sH    01ABBH	(	+	+	+ .ttF8HIII(
 
 
 	. &++--F	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.. . . . . . . . . . . . . . . 6""Fv||~~%%%%%%s5   +B	A2&B	2A6	6B	9A6	:B		BBc                    d}t          dt          gi                              |           }|                    |          }t	          |                                          |k    sJ d S )Nzd<?xml version='1.0' encoding='utf-8'?>
<data>
  <row>
    <index>0</index>
    <a/>
  </row>
</data>arH   )r   r   astyperN   r5   rR   )any_numeric_ea_dtyperE   rn   dfresults        r   test_ea_dtypesrV  =  sk    H 
C";			&	&';	<	<BYYfY%%F  &&((H444444r   c                    t          j        t          d          5  t          j                    5 }|                    || 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 typerb   7zrB  )rd   re   r  rL   rM   rN   rg   s      r   test_unsuported_compressionrY  K  s   	z)H	I	I	I B B_ 	B$NN4DNAAA	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	BB B B B B B B B B B B B B B B B B Bs4   A-A	A-A	A-A	A--A14A1c                j   t          j        d          }t          j        d           t          j        t          t
          f          5  |                    d          }|                    |j                   |	                    d|j         dd|            d d d            d S # 1 swxY w Y   d S )	Ns3fsrA   T)anonzs3://z	/geom.xmlzip)rC  rE   )
rd   r   rL   external_error_raisedPermissionErrorFileNotFoundErrorS3FileSystemlsnamerN   )rE   s3_public_bucketr   r[  fss        r   test_s3_permission_outputrf  T  s    v&&D
		!?4E"F	G	G 
 
D))
#$$$4$)444%PV 	 	
 	
 	
	
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s   	AB((B,/B,)`
__future__r   ior   r   r  numpyr   rd   pandas.util._test_decoratorsutil_test_decoratorstdpandasr   r   r   pandas._testing_testingrL   pandas.io.commonr	   pandas.io.xmlr
   fixturer   r/   r1   r5   r?   r<   
skip_if_norE   rY   r]   r`   rh   ro   ru   markparametrizer   ranger   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   skip_if_installedr  r  r  r  r  r  r   r%  r'  r+  r.  r0  r7  r<  r@  rG  rJ  rO  rV  rY  
single_cpurf  r   r   r   <module>rz     s   " " " " " "        
			      ) ) ) ) ) ) ) ) )         
       ' ' ' ' ' ' " " " " " "J    , , ,^   >   c{###  $# V=2=3H3HIII7STTT  UT
, 
, 
,
, 
, 
,( ( (, , ,$" $" $"N&" &" &"R TT%%B--((*I*I55R==*I*I*IJ ! ! !L0! ! !! ! !  B    .N N N
N N N) ) ):N N N
N N N
) ) )@, , ,^  <$ $ $N  4  <  H  @
 
 
  H! H' ' 'P P P %F%F%FGGL L HGL8 8 8  :  *  , f  % % %0< < <" " "&	" 	" 	"	' 	' 	' S	**' ' +*' ' ' '<' ' '81 1 1(7 7 7$  :  D* * *`0& & & & & &&5 5 5B B B 

 

 

 

 

r   