U
    cu                     @   s   d dl Z d dlmZ d dlZd dlZd dlZd dlmZ d dl	Z
d dl	mZmZmZmZmZmZmZmZmZ d dlmZ d dlm  mZ d dlmZ G dd dZdS )    N)StringIO)ParserError)		DataFrameIndex
MultiIndexNaTSeries	Timestamp
date_rangeread_csvto_datetime)
get_handlec                   @   sP  e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	e
jddddggdd Ze
jjdd ZdddZe
jje
jddddddd d!d"d#d$d%d&d'd(gd)d* Ze
jje
jddddddd d!d"d#d$d%d&d'd(ge
jd+d,d-d.d/ge
jd0d1dd2d3gd4d5 Ze
jje
jddd6dddd d!d"d#d$d%d&d'd(ge
jd0d1dd2d3gd7d8 Ze
jje
jddd6dddd gd9d: Ze
jjd;d< Ze
jjd=d> Ze
jje
jddddddd d!d"d#d$d%d&d'd(ge
jd0dd2d3ge
jd?d@didAdigdBdidCdigdddDdddEggdFdG ZdHdI ZdJdK ZdLdM ZdNdO ZdPdQ ZdRdS ZdTdU ZdVdW ZdXdY Z dZd[ Z!d\d] Z"e
jd^d_d`dagdbdc Z#e
jjddde Z$dfdg Z%dhdi Z&djdk Z'dldm Z(dndo Z)dpdq Z*drds Z+e
jdtddugdvdw Z,dxdy Z-dzd{ Z.d|d} Z/d~d Z0e
jde1dddgdddggddgdddgddfe1dddggdddgddfe1ddddgg dddgddfe1ddddgg dddgddfgdd Z2dd Z3e
jde45de45dgdd Z6dd Z7dd Z8dd Z9dd Z:dd Z;dd Z<dd Z=dd Z>dd Z?dd Z@dS )TestDataFrameToCSVc                 K   s"   ddd}|j f | t|f|S )Nr   T	index_colparse_dates)updater   )selfpathkwargsparams r   J/tmp/pip-unpacked-wheel-g7fro6k3/pandas/tests/frame/methods/test_to_csv.pyr      s    
zTestDataFrameToCSV.read_csvc              	   C   sJ  t d4}tj|d d d< || |j|ddgd |j|dd |j|dd |jd |_|| | |}t || |j|d	d
 | j|d d}t	|j
t	|j
d kst|j|dd | j|d d}t |j|j tttdtddttdtddd}|| | |}t || W 5 Q R X d S )NZ__tmp_to_csv_from_csv1__A   BcolumnsFheaderindexr!   Zindex_labelr            )s1s2)tmensure_cleannpnanto_csvr!   
_with_freqr   assert_frame_equallenr   AssertionErrorassert_almost_equalvaluesr   r   rangearange)r   float_framedatetime_framer   reconsdmr   r   r   test_to_csv_from_csv1#   s0    




z(TestDataFrameToCSV.test_to_csv_from_csv1c           
   
   C   s0  t d}ttjdddddgdddgd}|| | |}t || t	
d	d	d
g}ttjdd|dddgd}|| | j|dddgdd}t j||dd tddddg}|j||d | |}| }||_t || d}	tjt|	d |j|ddgd W 5 Q R X W 5 Q R X d S )NZ__tmp_to_csv_from_csv2__r%   abxyzr!   r   )r   r$   r&   )r   r$   r&   r   r$   r&   Fr   Zcheck_namesZAAXYZr   z Writing 4 cols but got 2 aliasesmatch)r)   r*   r   r+   randomrandnr-   r   r/   r   from_tuplesr   copyr   pytestraises
ValueError)
r   r6   r   dfresultZmidxZcol_aliasesrsxpmsgr   r   r   test_to_csv_from_csv2J   s.      



z(TestDataFrameToCSV.test_to_csv_from_csv2c              	   C   s   t d}ttjdd}ttjdd}|| |j|ddd t||g}t	|dd}d	d
 |j
D |_
dd
 |j
D |_
t || W 5 Q R X d S )NZ__tmp_to_csv_from_csv3__r%   r$   r;   F)moder   r   r#   c                 S   s   g | ]}t |qS r   int.0labelr   r   r   
<listcomp>t   s     z<TestDataFrameToCSV.test_to_csv_from_csv3.<locals>.<listcomp>c                 S   s   g | ]}t |qS r   rU   rW   r   r   r   rZ   u   s     )r)   r*   r   r+   rG   rH   r-   pdconcatr   r   r/   )r   r   Zdf1df2rQ   rP   r   r   r   test_to_csv_from_csv3j   s    
z(TestDataFrameToCSV.test_to_csv_from_csv3c              	      s   t d}tjdd td fddtdD it fddtdD d	d
d}|| t|d	d}t	|j
|_
t	|d |d< t j||dd W 5 Q R X d S )NZ__tmp_to_csv_from_csv4__r$   )secondsZdt_datac                    s   g | ]}|  qS r   r   rX   idtr   r   rZ   ~   s     z<TestDataFrameToCSV.test_to_csv_from_csv4.<locals>.<listcomp>r%   c                    s   g | ]}|  qS r   r   r`   rb   r   r   rZ      s     dt_indexnamer    r#   T)Zcheck_index_type)r)   r*   r[   	Timedeltar   r4   r   r-   r   Zto_timedeltar!   r/   r   r   rN   rO   r   rb   r   test_to_csv_from_csv4x   s    
z(TestDataFrameToCSV.test_to_csv_from_csv4c              	      sf   t dR}| t|ddgd  fdd}|d d< |d d< t   W 5 Q R X d S )	NZ__tmp_to_csv_from_csv5__r   r   r   c                    s$   t  |  jdj|  jjS )NUTC)r   rc   
tz_converttz)crO   timezone_framer   r   <lambda>   s   
z:TestDataFrameToCSV.test_to_csv_from_csv5.<locals>.<lambda>r   C)r)   r*   r-   r   r/   )r   ro   r   	converterr   rn   r   test_to_csv_from_csv5   s    
z(TestDataFrameToCSV.test_to_csv_from_csv5c              	   C   sz   d}t |d }t|d}|j}|d |d g}t "}|j|||d t|dd}W 5 Q R X tj|| |dd	 d S )
Nr         @r%   r&   r   r   	chunksizer#   FrA   )rV   r)   makeCustomDataframer   r*   r-   r   r/   )r   rv   NrN   cscolsr   rs_cr   r   r   test_to_csv_cols_reordering   s    
z.TestDataFrameToCSV.test_to_csv_cols_reorderingrz   Nr<   r;   c              	   C   s   d}t |d }t|d}dddg|_t }|j|||d t|dd}|d k	r|jjrf||_n|j|\}}|j	||_|D ]<}	||	 }
||	 }t
|
trt|
| qtj|
|d	d
 qn|j|_tj||d	d
 W 5 Q R X d S )Nr   rt   r%   r;   r<   ru   r   r#   FrA   )rV   r)   rw   r   r*   r-   r   Z	is_uniqueZget_indexer_non_uniqueZtake
isinstancer   Zassert_series_equalr/   )r   rz   rv   rx   rN   r   r{   Zindexermissingrm   Zobj_dfZobj_rsr   r   r   test_to_csv_new_dupe_cols   s(    

z,TestDataFrameToCSV.test_to_csv_new_dupe_colsc              	   C   s~   ddd}d}||d }||d d}t dB}t||d}|j||d | |t}t j||d	d
 W 5 Q R X d S )Nc                 S   sn   |d krt | d }ttdd| d}|rjtjdt||D ]}t||< q>tjd}t|| < t||< |S )Ng?2000Z5min)freqperiodsr   d   )rV   listr
   r+   rG   randintr0   r   )nZnnatsra   r   r   r   make_dtnat_arr   s    

z<TestDataFrameToCSV.test_to_csv_dtnat.<locals>.make_dtnat_arr  r   r   z1.csvr;   r<   rv   FrA   )N)r)   r*   r   r-   r   applyr   r/   )r   r   rv   r'   r(   pthrN   r8   r   r   r   test_to_csv_dtnat   s    
z$TestDataFrameToCSV.test_to_csv_dtnatFc              	      st  ddi}|rj|d k	r$t t||d< t t||d< td$}	|j|	d|d | j|	f|W 5 Q R X n<d|d< td$}	|j|	d|d | j|	f|W 5 Q R X d	d
  |r|j_|r|sfddt|d D }
tt j	g|
 }|_	j
d d |d d f ddddddd}|rH|dkr~d}tj fddj	D |d_	tj fdd|j	D |d|_	n|dkrd}tjdd j	D |d_	tjdd |j	D |d|_	n|dkrd}tj	}tjdd |D |d_	tjt tt|j	 |d|_	n.||}tjj	|d_	tj|j	|d|_	|rl|dkrd}tj fddjD |d_tj fdd|jD |d|_n|dkrd}tjdd jD |d_tjdd |jD |d|_n|dkr>d}tj}tjdd |D |d_|j }tjd d |D |d|_n.||}tjj|d_tj|j|d|_|fS )!Nr   Fr   r   Z__tmp_to_csv_moar__utf8)encodingrv   r   c                 S   s   t | ts| dS | S )Nr   )r}   strdecoder=   r   r   r   _to_uni   s    

z;TestDataFrameToCSV._return_result_expected.<locals>._to_unic                    s    g | ]} j d d |f jqS )N)ilocr3   r`   )r8   r   r   rZ   
  s     z>TestDataFrameToCSV._return_result_expected.<locals>.<listcomp>r$   ra   fO)ra   r   r   urc   pr   c                    s   g | ]} |qS r   r   rW   r   r   r   rZ     s     dtypec                    s   g | ]} |qS r   r   rW   r   r   r   rZ     s     rc   c                 S   s   g | ]}t |qS r   r	   rW   r   r   r   rZ     s     c                 S   s   g | ]}t |qS r   r   rW   r   r   r   rZ     s     r   c                 S   s   g | ]}t |qS r   r   rW   r   r   r   rZ   %  s     c                    s   g | ]} |qS r   r   rW   r   r   r   rZ   2  s     c                    s   g | ]} |qS r   r   rW   r   r   r   rZ   5  s     c                 S   s   g | ]}t |qS r   r   rW   r   r   r   rZ   :  s     c                 S   s   g | ]}t |qS r   r   rW   r   r   r   rZ   =  s     c                 S   s   g | ]}t |qS r   r   rW   r   r   r   rZ   C  s     c                 S   s   g | ]}t |qS r   r   rW   r   r   r   rZ   G  s     )r   r4   r)   r*   r-   r   r   r   from_arraysr!   r   r+   arrayr   mapr	   Zto_timestampget)r   rN   rv   Zr_dtypeZc_dtypernlvlcnlvldupe_colr   r   Z	delta_lvlixZtype_mapZidx_listZcol_listr   )r   r8   r   _return_result_expected   s    

  

  


  


  

  


 
 

z*TestDataFrameToCSV._return_result_expectednrowsr&   
   c   r   e   f                           c                 C   s:   t j|dddd}| |ddd\}}t j||dd d S )N   rc   r   
r_idx_type
c_idx_typer   FrA   r)   rw   r   r/   )r   r   rN   rO   expectedr   r   r   test_to_csv_nrowsO  s    z$TestDataFrameToCSV.test_to_csv_nrowszr_idx_type, c_idx_type)ra   ra   )r   r   )r   rc   )r   r   ncolsr$   r%   r   c                 C   s:   t j||||d}| |d||\}}t j||dd d S )Nr   r   FrA   r   )r   r   r   r   r   rN   rO   r   r   r   r   test_to_csv_idx_typesX  s    	   z(TestDataFrameToCSV.test_to_csv_idx_typesb   c                 C   s0   t ||}| |d\}}t j||dd d S Nr   FrA   r   )r   r   r   rN   rO   r   r   r   r   test_to_csv_idx_ncolsl  s    z(TestDataFrameToCSV.test_to_csv_idx_ncolsc                 C   s   t |d}t|j}ddg|d d< ddg|dd < t|j}ddg|d d< ddg|dd < ||_||_| j|ddd\}}t j||d	d
 d S )Nr%   Zduper&   Zrduper   T)r   FrA   )r)   rw   r   r   r!   r   r/   )r   r   rN   rz   r   rO   r   r   r   r   test_to_csv_dup_colsv  s    

z'TestDataFrameToCSV.test_to_csv_dup_colsc                 C   s4   t tdd}| |d\}}tj||dd d S )Nr   r    r   FrA   )r   r+   r5   r   r)   r/   )r   rN   rO   r   r   r   r   test_to_csv_empty  s    z$TestDataFrameToCSV.test_to_csv_emptyc                 C   sD   d}t j|d d ddd}| j||dd\}}t j||dd d S )Nr   r&   r$   )r_idx_nlevels)r   FrA   r   )r   rv   rN   rO   r   r   r   r   test_to_csv_chunksize  s    z(TestDataFrameToCSV.test_to_csv_chunksizezdf_params, func_paramsr   r   c_idx_nlevelsr   r   r   )r   r   c                 C   s8   t j||f|}| j|df|\}}t j||dd d S r   r   )r   r   Z	df_paramsZfunc_paramsr   rN   rO   r   r   r   r   test_to_csv_params  s    z%TestDataFrameToCSV.test_to_csv_paramsc              	   C   sr   t j|d< dd }|j||d< t >}|| | |}t|| tt 	|t 	| W 5 Q R X d S )NGc                 S   s   t jt jgt j dk  S )N      ?)r+   infr,   rG   Zrandr   r   r   r   rp         zETestDataFrameToCSV.test_to_csv_from_csv_w_some_infs.<locals>.<lambda>H)
r+   r,   r!   r   r)   r*   r-   r   r/   isinf)r   r6   r   r   r8   r   r   r    test_to_csv_from_csv_w_some_infs  s    



z3TestDataFrameToCSV.test_to_csv_from_csv_w_some_infsc              	   C   sf   t j|d< t j |d< t >}|| | |}t|| tt |t | W 5 Q R X d S )NEF)r+   r   r)   r*   r-   r   r/   r   )r   r6   r   r8   r   r   r   test_to_csv_from_csv_w_all_infs  s    



z2TestDataFrameToCSV.test_to_csv_from_csv_w_all_infsc              	   C   s   t dz}tdddgdddgd}|j|d	d
 t|}t || tdddgdd|d< |j|d	d
 t|}t || W 5 Q R X d S )NZ__tmp_to_csv_no_index__r$   r&   r%   r   r      )Zc1c2Fr          	   int64r   c3)r)   r*   r   r-   r   r/   r   rh   r   r   r   test_to_csv_no_index  s    z'TestDataFrameToCSV.test_to_csv_no_indexc                 C   sD   t dddgdddgd}d|d	< | |jd
dd	gdks@td S )Nr;   r<   rm   aaZbbcc)r   r$   txttestr   r$   r   )r   r-   r1   )r   rN   r   r   r   test_to_csv_with_mix_columns  s    z/TestDataFrameToCSV.test_to_csv_with_mix_columnsc              	   C   s   t ddgddggddgd}t ddgddggdd	gd}td
p}|j|dd	gd | |}t|| |j|ddd	gd | |}|jdd}|d kstt|| W 5 Q R X d S )Nr$   r&   r%   r   r   r   r   rB   rC   Z__tmp_to_csv_headers__r   F)r!   r   T)Zinplace)r   r)   r*   r-   r   r/   Zreset_indexr1   )r   Zfrom_dfZto_dfr   r8   Zreturn_valuer   r   r   test_to_csv_headers  s    

z&TestDataFrameToCSV.test_to_csv_headersc                 C   s>  |}|j }tt|d dd}tj|ddgd}||_ td2}|j	|dd |j	|d	d
gd |	| | j
|ddgdd}tj||dd |j j|j jkst||_ |}	|	j }|tt|g}t||	_ |	j	|ddgd | j
|ddgd}
tj|	|
dd |		| | j
|d d}
t|
jt|	jd ksDt|	j	|dd | j
|d d}
t|
j|j ||_ W 5 Q R X tdB}d#dd}tjddddd}|	| t
|ddddgddgd}t|| tjddddd}|	| t
|ddddgdd}t|| tjddddd}|	| t
|ddddgdddgd}t|| | }|j	|dd t
|ddgd}t|| |d}|j	|dd t
|ddgd}tj|jj st|jj|j_t|| | }|	| t
|ddgdgd}t|| |d}|	| t
|ddgdgd}t|| |d}|	| dD ]B}d| d}tjt|d  t
|tt|dd W 5 Q R X qVd!}tjt|d  |j	|dd"gd W 5 Q R X W 5 Q R X tdV}|	d d 	| | 
|}
|	d d }g |_ t|
j|j t|
dks0tW 5 Q R X d S )$Nr&   firstsecondnamesZ__tmp_to_csv_multiindex__Fr   r   r   r   r   r$   r   rA   timefoor"   r#   r    c                 S   s<   | dkrddg} t tjjddddtjdd	d
g| dddS )NTr   r   r   r   )r%   r%   )size)bahr   )r   bar)Zbanbazr   r   r   r   )r   r+   rG   r   r   rI   r   r   r   r   _make_frame  s     z>TestDataFrameToCSV.test_to_csv_multiindex.<locals>._make_framer   r%   r   r   )r   r   T)r   r   zlen of z, but only 5 lines in filerE   z%cannot specify cols with a MultiIndexr   )N)r!   r+   r5   r0   Zreshaper   r   r)   r*   r-   r   r/   r   r1   r   r2   r3   rw   comZall_nonerK   rL   r   r   r4   	TypeErrorZassert_index_equal)r   r6   r7   frameZ	old_indexZarraysZ	new_indexr   rN   Ztsframer8   r   rO   ra   rR   expr   r   r   test_to_csv_multiindex  s    








$&
z)TestDataFrameToCSV.test_to_csv_multiindexc              	   C   sv   t tdtddtddd}td@}|| | j|dd}|	 }|j
t|_
t|| W 5 Q R X d S )Nabcr%   r   r   r   r    z!__tmp_to_csv_interval_index__.csvr#   )r   r   r4   r[   Zinterval_ranger)   r*   r-   r   rJ   r!   astyper   r/   )r   rN   r   rO   r   r   r   r   test_to_csv_interval_indexi  s    "
z-TestDataFrameToCSV.test_to_csv_interval_indexc              
   C   s   t tjddtj}tj|d< tdJ}|j	|dd t
|(}| }|d dd dksjtW 5 Q R X W 5 Q R X d S )	Nr$   r   z!__tmp_to_csv_float32_nanrep__.csvi  )na_rep,r&   Z999)r   r+   rG   rH   r   Zfloat32r,   r)   r*   r-   open	readlinessplitr1   )r   rN   r   r   linesr   r   r   test_to_csv_float32_nanrepw  s    

z-TestDataFrameToCSV.test_to_csv_float32_nanrepc              	   C   sT   t dddgdddgd}td&}|| | |}t|| W 5 Q R X d S )	Nr$   r&   r%   z5,6z7,8z9,0r   z__tmp_to_csv_withcommas__.csvr   r)   r*   r-   r   r/   r   rN   r   r]   r   r   r   test_to_csv_withcommas  s
    

z)TestDataFrameToCSV.test_to_csv_withcommasc              	   C   s>  dd }t tjddd|dd}t tjdddd|d	d}t d
|j|dd}t d|j|dd}t td|j|dd}tj|jddddf< t	j
|||||gdd}i }dtjfd	tjfdtjfdtffD ]\}	}
||	D ]}|
||< qqt 0}|| t|d||dd}t|| W 5 Q R X d S )Nc                    s    fddt dD S )Nc                    s   g | ]}  |d qS )Z03dr   r`   re   r   r   rZ     s     zMTestDataFrameToCSV.test_to_csv_mixed.<locals>.create_cols.<locals>.<listcomp>r   )r4   re   r   re   r   create_cols  s    z9TestDataFrameToCSV.test_to_csv_mixed.<locals>.create_colsr   r   float64float)r   r   r   rV   Tboolr@   r   object20010101date   2   r$   r%   )axisr   )r   r   r   )r   r+   rG   rH   r   r!   r	   r,   r   r[   r\   r  r   Zbool_r  r)   r*   r-   r   r/   )r   r   df_floatdf_intdf_bool	df_objectdf_dtrN   Zdtypesr   r   rm   filenamerP   r   r   r   test_to_csv_mixed  sR          

   z$TestDataFrameToCSV.test_to_csv_mixedc              	   C   s  t tjddttdttd dd}t 0}|| t	|dd}|j
|_
t|| W 5 Q R X t tjdddd	}t tjddd
}t d|jtdd}t d|jtdd}t td|jtdd}tj|||||gddd}dddgd |_
t L}|| t	|dd}dD ]}	t||	 ||	< q&|j
|_
t|| W 5 Q R X d}
t|
d}dddg|_
t 8}|| t	|dd}|jddid}t|| W 5 Q R X d S )Nr   r     r  r   r   r#   r%   r   r   Tr@   r   r  r$   )r	  Zignore_indexr&   r   )z0.4z1.4z2.4r   r;   r<   za.1r   )r   r+   rG   rH   r   r4   r)   r*   r-   r   r   r/   r   r!   r	   r[   r\   r   rw   rename)r   rN   r  rO   r
  r  r  r  r  ra   rx   r   r   r   test_to_csv_dups_cols  sH    

  



z(TestDataFrameToCSV.test_to_csv_dups_colsrv   i'  iP  順 c              	   C   sx   t dtdi}|jd |d< |jd |d< |jd |d< t ,}|j||d	 t|d
d}t|| W 5 Q R X d S )Nr   r        ?r   g       @rq   g      @Dr   r   r#   )r   r4   r   r)   r*   r-   r   r/   )r   rv   r   r  rP   r   r   r   test_to_csv_chunking  s    
z'TestDataFrameToCSV.test_to_csv_chunkingc              	   C   sX   t tjddd d d}t .}|j|ddd t|d d}t|| W 5 Q R X d S )Nr$   i r   r!   F)r   r!   r   )	r   r+   rG   rH   r)   r*   r-   r   r/   )r   rN   r  rP   r   r   r   !test_to_csv_wide_frame_formatting  s
    
z4TestDataFrameToCSV.test_to_csv_wide_frame_formattingc              	   C   sj   t d}| j|d d}td||jd  i}t ,}|| t|dd}tj||dd W 5 Q R X d S )Nza,1.0
b,2.0r   tr   r#   FrA   )r   r   r   r   r)   r*   r-   r/   )r   f1rN   Znewdfr   r8   r   r   r   test_to_csv_bug  s    

z"TestDataFrameToCSV.test_to_csv_bugc              	   C   s|   t ddddgi}t X}|j|dd t|ddd}t|| |j|dd	d
 t|d dd}t|| W 5 Q R X d S )Nu   c/σr$   r&   r%   UTF-8r   r   r   r   Fr   r!   r   r   r   r   r   test_to_csv_unicode  s    
z&TestDataFrameToCSV.test_to_csv_unicodec                 C   sl   t d}tddddgdddd	ggdd
ddgdd
gd}|j|dd |d t|ddd}t|| d S )N u   אZd2Zd3Zd4Za1Za2a3Za4u   בu   גu   דr  r  r  r   r  )r   r   r-   seekr   r)   r/   )r   bufrN   r]   r   r   r   test_to_csv_unicode_index_col  s    

z0TestDataFrameToCSV.test_to_csv_unicode_index_colc                 C   s6   t  }|| |d t|dd}t|| d S )Nr   r#   )r   r-   r$  r   r)   r/   )r   r6   r%  r8   r   r   r   test_to_csv_stringio)  s
    

z'TestDataFrameToCSV.test_to_csv_stringioc              	   C   s   t dddgdddggddgd	d
dgd}t T}|j|dd t|dd}t dddgdddggddgd	d
dgd}t|| W 5 Q R X d S )N翶~Ϛ?9DܜJ?>D)?.4i(@33333@̤Ar   r   rB   rC   rD   r@   z%.2f)float_formatr   r#   gQ?gq=
ףp?g=
ףp=?gp=
ף(@r   )r   rN   r  rP   rQ   r   r   r   test_to_csv_float_format0  s    
z+TestDataFrameToCSV.test_to_csv_float_formatc                 C   sH   t dddgi}|jddd dd}dd	d
g}t|}||ksDtd S )Nr;   r   r  r   c                 S   s   t j| ddS )N-)Ztrim)r+   Zformat_float_positionalr   r   r   r   rp   I  r   zJTestDataFrameToCSV.test_to_csv_float_format_over_decimal.<locals>.<lambda>F)decimalr.  r!   z0.51)r   r-   r)   convert_rows_list_to_csv_strr1   r   rN   rO   expected_rowsr   r   r   r   %test_to_csv_float_format_over_decimalD  s    

z8TestDataFrameToCSV.test_to_csv_float_format_over_decimalc                 C   sb   t dddgdddgd}t }|j|dtjd	d
 | }ddddg}t|}||ks^td S )Nr$   r&   r%   r   r   r   r   Futf-8)r!   quotingr   z"A","B"z1,"foo"z2,"bar"z3,"baz")	r   r   r-   csvQUOTE_NONNUMERICgetvaluer)   r3  r1   )r   rN   r%  rO   r5  r   r   r   r   !test_to_csv_unicodewriter_quotingP  s    
z4TestDataFrameToCSV.test_to_csv_unicodewriter_quotingr   r7  c                 C   sV   t dddgi}t }|j|tj|dd | }dddg}t|}||ksRtd S )Nr   Zhelloz	{"hello"}F)r8  r   r!   )	r   r   r-   r9  
QUOTE_NONEr;  r)   r3  r1   )r   r   rN   r%  rO   r5  r   r   r   r   test_to_csv_quote_none[  s    

z)TestDataFrameToCSV.test_to_csv_quote_nonec                 C   sb   t dddgdddgddd	d
gd}t }|j|dd ddddg}t|}| |ks^td S )Nr$   r&   r%   r   r   r   r   onetwothreer    Fr"   zA,Bzone,1,4ztwo,2,5z	three,3,6)r   r   r-   r)   r3  r;  r1   )r   rN   r%  r5  r   r   r   r   "test_to_csv_index_no_leading_commag  s    $
z5TestDataFrameToCSV.test_to_csv_index_no_leading_commac              
   C   s8  t dddgdddgddd	d
gd}t @}|j|dd d}t|dd}| |ks^tW 5 Q R X W 5 Q R X t @}|j|dd d}t|dd}| |kstW 5 Q R X W 5 Q R X t f}|| tj	d}d| d | d | d | }t|dd}| |ks tW 5 Q R X W 5 Q R X d S )Nr$   r&   r%   r   r   r   r   r?  r@  rA  r    
lineterminators#   ,A,B
one,1,4
two,2,5
three,3,6
rb)rT   
s   ,A,B
one,1,4
two,2,5
three,3,6
r7  s   ,A,Bs   one,1,4s   two,2,5s	   three,3,6)
r   r)   r*   r-   r   readr1   oslinesepencode)r   rN   r   r   r   Z
os_linesepr   r   r   test_to_csv_lineterminatorsq  s@    $
$
$

z.TestDataFrameToCSV.test_to_csv_lineterminatorsc                 C   s   t tddddddddg}t ddddddddg}t }|j|dd t }|j|dd | | ksrttd|i}td|i}t }|| t }|| | | kstd S )Nr;   r<   rm   Fr   r   )r   r[   ZCategoricalr   r-   r;  r1   r   )r   r   r(   resr   rN   r]   r   r   r    test_to_csv_from_csv_categorical  s    

z3TestDataFrameToCSV.test_to_csv_from_csv_categoricalc                 C   s:   |j d d}t|tsttt|dd}t|| d S )N)Zpath_or_bufr   r#   )r-   r}   r   r1   r   r   r)   r/   )r   r6   Zcsv_strr8   r   r   r   test_to_csv_path_is_none  s    z+TestDataFrameToCSV.test_to_csv_path_is_nonezdf,encodingr(  r)  r*  r+  r,  r-  r   r   rB   rC   rD   r@   r   defZghir   asciir   {   u   你好u   世界gb2312u   Γειά σουu
   ΚόσμεZcp737c           
   
   C   s  t  }|j|||d t||d|d}t || t|d||d"}|j|j|d |jjrdtW 5 Q R X t|||dd	d}t || t 
||0}| |pd}|jD ]}	|	|kstqW 5 Q R X t 
||}t |t|d|d	 W 5 Q R X W 5 Q R X d S )
N)compressionr   r   )rT  r   r   wr  )rT  r   r   r   r   r  )r)   r*   r-   r   r/   r   handleclosedr1   Zsqueezedecompress_filerH  r   r   )
r   rN   r   rT  r  rO   Zhandlesfhtextcolr   r   r   test_to_csv_compression  sB    
      
z*TestDataFrameToCSV.test_to_csv_compressionc           
   	   C   sf  t dP}|j}t||dd|d}|j|dd t|dd}|d	d
 }|jdd
 |_t 	|| |j|dd t|dd}|dd
 }|jdd
 |_t 	|| |j
}|j|dd t|dd}|dd
 }|jdd
 |_t 	|| tdgd dddg }td|i|d}	|	j|dd t|ddgdd}t 	||	 W 5 Q R X d S )NZ__tmp_to_csv_date_format__r$   r   r    %Y%m%ddate_formatr   r#   c                 S   s   t | dS Nr]  rV   strftimer   r   r   r   rp     r   z<TestDataFrameToCSV.test_to_csv_date_format.<locals>.<lambda>c                 S   s   t | dS r`  ra  r   r   r   r   rp     r   %Y-%m-%dc                 S   s
   |  dS Nrc  rb  r   r   r   r   rp   	  r   c                 S   s
   |  dS rd  re  r   r   r   r   rp     r   c                 S   s   t | dS r`  ra  r   r   r   r   rp     r   c                 S   s
   |  dS r`  re  r   r   r   r   rp     r   r   r   
2000-01-011/1/2000z1-1-2000r   )r   r   )r)   r*   r!   r   shiftr-   r   Zapplymapr   r/   Tr   r   )
r   r7   r   rd   r   Zdatetime_frame_intZdatetime_frame_strZdatetime_frame_columnsZ	nat_indexZ	nat_framer   r   r   test_to_csv_date_format  sR     z*TestDataFrameToCSV.test_to_csv_date_formattdr   Z10sc              	   C   s   t d}tdddddd}|| }|d }tjtt|dd	}td
|i|d}|j	|dd t
|dd}t|jddd|_t || W 5 Q R X d S )Ncsv_date_format_with_dstz2013-10-26 23:00z2013-10-27 01:00zEurope/Londonr   Zinfer)rl   r   Z	ambiguousr   r   r   r    Tr   r#   utc)r)   r*   r
   r.   r+   r   r4   r0   r   r-   r   r   r!   rk   r/   )r   rk  r   timesra   Z
time_rangerN   rO   r   r   r    test_to_csv_with_dst_transitions,  s$    
z3TestDataFrameToCSV.test_to_csv_with_dst_transitionsc              	   C   s   t ddddd}|d }d |j_td|d|d}td	\}|j|d
d t|dd}t	|j
d
dd|_
t	|d d
dd|d< t|| W 5 Q R X |t td	&}|| t|}t|| W 5 Q R X d S )Nz
2015-01-01z
2015-12-31r   zEurope/Paris)r   rl   r$   )r3   idxr    rl  Tr   r#   rm  rq  zdatetime64[ns, Europe/Paris])r
   r.   _dataZ_freqr   r)   r*   r-   r   r   r!   rk   r   r/   r   Z	to_pickler[   Zread_pickle)r   rq  rN   r   rO   r   r   r   ,test_to_csv_with_dst_transitions_with_pickleE  s&    



z?TestDataFrameToCSV.test_to_csv_with_dst_transitions_with_picklec           	   	   C   sL  t ddgddgdtjgddgd}d	d
dg}t|}| }||ksLt|jd d}||ksdtd	d
dg}t|}|jtjd}||kstdddg}t|}|jtj	d}||kstdddg}t|}|jtj
d}||kstd}tjtj|d |jtjd W 5 Q R X tjtj|d |jtjd d W 5 Q R X d	d
dg}t|}|jtjdd}||ksztdd
dg}t|}|jtjdd}||kstddg}t|}tt|}t }|j|ddd | |kstt ddgd d!gd"d#gd$}|dd%g}d&d'd(g}t|}|jtj	d|ksHtd S ))NTFr  g	@*   r;   zb,c)c_boolc_floatc_intZc_stringz,c_bool,c_float,c_int,c_stringz0,True,1.0,42.0,az1,False,3.2,,"b,c")r8  z("","c_bool","c_float","c_int","c_string"z"0","True","1.0","42.0","a"z"1","False","3.2","","b,c"z0,True,1.0,42.0,"a"z1,False,3.2,"","b,c"z%need to escape, but no escapechar setrE   )r8  
escapecharz1,False,3.2,,b!,c!z,c_bool,c_ffloat,c_int,c_stringz1,False,3.2,,bf,cr   za,b,cz1,"test 
",3r7  r   r$   r&   r%   r   r   r   )r;   r<   rm   r<   z"a","b","c"z"1","3","5"z"2","4","6")r   r+   r,   r)   r3  r-   r1   r9  QUOTE_MINIMAL	QUOTE_ALLr:  rK   rL   Errorr=  r   r   r;  Z	set_index)	r   rN   r5  r   rO   rR   Z	text_rowsrZ  r%  r   r   r   test_to_csv_quoting^  s    









z&TestDataFrameToCSV.test_to_csv_quotingc                 C   s   dddg}t j|dd}tdddg|d	}| }d
dddg}t|}||ksTtd}|j|d}d
dddg}t|}||kstdtdg}t j|dd}tdddg|d	}| }d
dddg}t|}||kstd S )Nz
1990-01-01rf  z
3005-01-01r  )r   r   r   r   r    z,0z1990-01-01,4z2000-01-01,5z3005-01-01,6z%m-%d-%Yr^  z01-01-1990,4z01-01-2000,5z01-01-3005,6z,5)r[   ZPeriodIndexr   r-   r)   r3  r1   r   )r   datesr!   rN   rO   r5  r   r_  r   r   r   test_period_index_date_overflow  s&    




z2TestDataFrameToCSV.test_period_index_date_overflowc                 C   sp   t ddddg}tddddgd	d
ddgg}||_ddddg}|j|d}dddg}t|}||ksltd S )N)r;   r$   )r;   r&   )r<   r$   )r<   r&   r$   r&   r%   r   r   r   r   r   r;   r<   rm   dr   z,a,b,c,dz	0,1,2,3,4z	1,5,6,7,8)r   rI   r   r   r-   r)   r3  r1   )r   r   rN   r   rO   r5  r   r   r   r   test_multi_index_header  s    

z*TestDataFrameToCSV.test_multi_index_headerc                 C   sR   t dddg}tdddgg|d}|jddgd}d}|jd	d
}t|| d S )N)r$   )r&   )r%   r$   r&   r%   r   z,1,3
0,1,3
rG  rD  )r   r   Zreindexr-   r)   r2   )r   r!   rN   r   rO   r   r   r   $test_to_csv_single_level_multi_index  s    z7TestDataFrameToCSV.test_to_csv_single_level_multi_indexc              
   C   s   t dddgi}dddg}t|}td<}|j|dd tj|d	d
}| d}W 5 Q R X W 5 Q R X ||ks|td S )Nr;   r$   r&   r2  2z__test_gz_lineend.csv.gzFr    gzip)rT  r7  )	r   r)   r3  r*   r-   rX  rH  r   r1   )r   rN   r5  r   r   r   rO   r   r   r   test_gz_lineend  s    

"z"TestDataFrameToCSV.test_gz_lineendc                 C   s<   t dtdddi}t }|| | }d|ks8td S )Nr;   rg  r   )r   rf  )r   r
   r   r-   r;  r1   )r   r   r%  rO   r   r   r   test_to_csv_numpy_16_bug  s
    
z+TestDataFrameToCSV.test_to_csv_numpy_16_bugc                 C   s6   t d d gjd dddddd}d}||ks2td S )NFr"  )r   r!   r   rC  rG  z""
""
)r   r-   replacer1   )r   rO   r   r   r   r   test_to_csv_na_quoting
  s        z)TestDataFrameToCSV.test_to_csv_na_quotingc                 C   sd   t ddtjgd}|d d|d< |d d|d< | }ddd	g}t|}||ks`td S )
Nr=   r$   r   r<   ZInt16categoryz,a,bz0,x,1z1,x,)r   r[   ZNAr   r-   r)   r3  r1   r4  r   r   r   test_to_csv_categorical_and_ea  s    

z1TestDataFrameToCSV.test_to_csv_categorical_and_eac                 C   s^   t dtjtdtdddgi}|d d|d< | }ddg}t|}||ksZtd S )	Nr;   z
2020-01-01z
2020-01-02Zboth)rW  r  z,az0,"[2020-01-01, 2020-01-02]")	r   r[   ZIntervalr	   r   r-   r)   r3  r1   r4  r   r   r   $test_to_csv_categorical_and_interval  s    
z7TestDataFrameToCSV.test_to_csv_categorical_and_interval)NNNNF)A__name__
__module____qualname__r   r:   rS   r^   ri   rs   r|   rK   markZparametrizer   Zslowr   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/  r6  r<  r>  rB  rL  rN  rO  r   r\  rj  r[   rg   rp  rs  r}  r  r  r  r  r  r  r  r  r   r   r   r   r      s   ' 
"
     
i   
 

  
.2



&		 
#<
b		
r   )r9  ior   rI  Znumpyr+   rK   Zpandas.errorsr   Zpandasr[   r   r   r   r   r   r	   r
   r   r   Zpandas._testingZ_testingr)   Zpandas.core.commoncorecommonr   Zpandas.io.commonr   r   r   r   r   r   <module>   s   ,