U
    MZf                     @   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i}|j f | t|f|S )N	index_colr   )updater   )selfpathkwargsparams r   J/tmp/pip-unpacked-wheel-nbcvw55c/pandas/tests/frame/methods/test_to_csv.pyr      s    zTestDataFrameToCSV.read_csvc              	   C   sh  t dR}tj|jd d|jdf< || |j|ddgd |j|dd |j|dd |j	d |_|| | j
|d	d
}t || |j|dd | j
|d d	d}t|jt|jd kst|j|dd | j
|d d	d}t |j|j tttdtjdtjddttdtjdtjddd}|| | 
|}t || W 5 Q R X d S )NZ__tmp_to_csv_from_csv1__   ABcolumnsFheaderindexT)parse_datesr   Zindex_labelr   r          dtype   )s1s2)tmensure_cleannpnanilocr   Zget_locto_csvr   
_with_freqr   assert_frame_equallenAssertionErrorassert_almost_equalvaluesr   r   rangearangeint64)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   r1   r   from_tuplesr   copyr   pytestraises
ValueError)
r   r9   r   dfresultZmidxZcol_aliasesrsxpmsgr   r   r   test_to_csv_from_csv2I   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>p   s     z<TestDataFrameToCSV.test_to_csv_from_csv3.<locals>.<listcomp>c                 S   s   g | ]}t |qS r   rY   r[   r   r   r   r^   q   s     )r*   r+   r   r,   rJ   rK   r/   pdconcatr   r   r1   )r   r   Zdf1df2rT   rS   r   r   r   test_to_csv_from_csv3g   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   r\   idtr   r   r^   y   s     z<TestDataFrameToCSV.test_to_csv_from_csv4.<locals>.<listcomp>r$   c                    s   g | ]}|  qS r   r   rd   rf   r   r   r^   z   s     dt_indexnamer   rX   T)Zcheck_index_type)r*   r+   r_   	Timedeltar   r6   r   r/   r   Zto_timedeltar   r1   r   r   rQ   rR   r   rf   r   test_to_csv_from_csv4t   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   rg   
tz_converttz)crR   timezone_framer   r   <lambda>   s   
z:TestDataFrameToCSV.test_to_csv_from_csv5.<locals>.<lambda>r   C)r*   r+   r/   r   r1   )r   rs   r   	converterr   rr   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   	chunksizerX   FrD   )rZ   r*   makeCustomDataframer   r+   r/   r   r1   )r   rz   NrQ   cscolsr   rs_cr   r   r   test_to_csv_cols_reordering   s    
z.TestDataFrameToCSV.test_to_csv_cols_reorderingr~   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   rx   r$   r>   r?   ry   r   rX   FrD   )rZ   r*   r{   r   r+   r/   r   Z	is_uniqueZget_indexer_non_uniqueZtake
isinstancer   Zassert_series_equalr1   )r   r~   rz   r|   rQ   r   r   Zindexermissingrq   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   )rZ   listr
   r,   rJ   randintr2   r   )nZnnatsre   r   r   r   make_dtnat_arr   s    

z<TestDataFrameToCSV.test_to_csv_dtnat.<locals>.make_dtnat_arr  r   r   z1.csvr>   r?   rz   FrD   )N)r*   r+   r   r/   r   applyr   r1   )r   r   rz   r(   r)   pthrQ   r;   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)encodingrz   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)r.   r5   rd   )r;   r   r   r^     s     z>TestDataFrameToCSV._return_result_expected.<locals>.<listcomp>r#   re   fO)re   r   r   urg   pr   c                    s   g | ]} |qS r   r   r[   r   r   r   r^     s     r%   c                    s   g | ]} |qS r   r   r[   r   r   r   r^     s     rg   c                 S   s   g | ]}t |qS r   r	   r[   r   r   r   r^     s     c                 S   s   g | ]}t |qS r   r   r[   r   r   r   r^     s     r   c                 S   s   g | ]}t |qS r   r   r[   r   r   r   r^     s     c                    s   g | ]} |qS r   r   r[   r   r   r   r^   *  s     c                    s   g | ]} |qS r   r   r[   r   r   r   r^   -  s     c                 S   s   g | ]}t |qS r   r   r[   r   r   r   r^   2  s     c                 S   s   g | ]}t |qS r   r   r[   r   r   r   r^   5  s     c                 S   s   g | ]}t |qS r   r   r[   r   r   r   r^   ;  s     c                 S   s   g | ]}t |qS r   r   r[   r   r   r   r^   ?  s     )r   r6   r*   r+   r/   r   r   r   from_arraysr   r.   r,   arrayr   mapr	   Zto_timestampget)r   rQ   rz   Zr_dtypeZc_dtypernlvlcnlvldupe_colr   r   Z	delta_lvlixZtype_mapZidx_listZcol_listr   )r   r;   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   rg   r   
r_idx_type
c_idx_typer   FrD   r*   r{   r   r1   )r   r   rQ   rR   expectedr   r   r   test_to_csv_nrowsG  s    z$TestDataFrameToCSV.test_to_csv_nrowszr_idx_type, c_idx_type)re   re   )r   r   )r   rg   )r   r   ncolsr#   r$   r   c                 C   s:   t j||||d}| |d||\}}t j||dd d S )Nr   r   FrD   r   )r   r   r   r   r   rQ   rR   r   r   r   r   test_to_csv_idx_typesP  s    	   z(TestDataFrameToCSV.test_to_csv_idx_typesb   c                 C   s0   t ||}| |d\}}t j||dd d S Nr   FrD   r   )r   r   r   rQ   rR   r   r   r   r   test_to_csv_idx_ncolsd  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   FrD   )r*   r{   r   r   r   r   r1   )r   r   rQ   r~   r   rR   r   r   r   r   test_to_csv_dup_colsn  s    

z'TestDataFrameToCSV.test_to_csv_dup_colsc                 C   s:   t tjdtjdd}| |d\}}tj||dd d S )Nr   r%   r   r   F)Zcheck_column_type)r   r,   r7   r8   r   r*   r1   )r   rQ   rR   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   FrD   r   )r   rz   rQ   rR   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   rQ   rR   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-   rJ   Zrandr   r   r   r   rt         zETestDataFrameToCSV.test_to_csv_from_csv_w_some_infs.<locals>.<lambda>H)
r,   r-   r   r   r*   r+   r/   r   r1   isinf)r   r9   r   r   r;   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   r1   r   )r   r9   r   r;   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         	   r8   r%   c3)r*   r+   r   r/   r   r1   r   rl   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?   rq   aaZbbcc)r   r#   txttestr   r#   r   )r   r/   r3   )r   rQ   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   rE   rF   Z__tmp_to_csv_headers__r   F)r   r   T)Zinplace)r   r*   r+   r/   r   r1   Zreset_indexr3   )r   Zfrom_dfZto_dfr   r;   Zreturn_valuer   r   r   test_to_csv_headers  s    

z&TestDataFrameToCSV.test_to_csv_headersc                 C   sf  |}|j }tjt|d tjddd}tj|ddgd}||_ t	dT}|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jt|tjdg}t||	_ |	j
|ddgd tjtdd | j|ddgdd}
W 5 Q R X tj|	|
dd |	
| | j|d d}
t|
jt|	jd kslt|	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 q~d#}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sXtW 5 Q R X d S )&Nr'   r%   firstsecondnamesZ__tmp_to_csv_multiindex__Fr   r   r   r   r   r#   r"   rD   timefoor!   zCould not infer formatrH   TrX   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   r8   r   r&   )r   r,   rJ   r   r   rL   r   r   r   r   _make_frame  s     z>TestDataFrameToCSV.test_to_csv_multiindex.<locals>._make_framer   r$   r   r   )r   r   )r   r   zlen of z, but only 5 lines in filez%cannot specify cols with a MultiIndexr   )N)r   r,   r7   r2   r8   Zreshaper   r   r*   r+   r/   r   r1   r   r3   Zassert_produces_warningUserWarningr   r4   r5   r{   comZall_nonerN   rO   r   r   r6   	TypeErrorZassert_index_equal)r   r9   r:   frameZ	old_indexZarraysZ	new_indexr   rQ   Ztsframer;   r   rR   re   rU   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__.csvrX   )r   r   r6   r_   Zinterval_ranger*   r+   r/   r   rM   r   astyper   r1   )r   rQ   r   rR   r   r   r   r   test_to_csv_interval_index`  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,   rJ   rK   r   Zfloat32r-   r*   r+   r/   open	readlinessplitr3   )r   rQ   r   r   linesr   r   r   test_to_csv_float32_nanrepn  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   r1   r   rQ   r   ra   r   r   r   test_to_csv_withcommasy  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   rd   ri   r   r   r^     s     zMTestDataFrameToCSV.test_to_csv_mixed.<locals>.create_cols.<locals>.<listcomp>r   )r6   ri   r   ri   r   create_cols  s    z9TestDataFrameToCSV.test_to_csv_mixed.<locals>.create_colsr   r   float64float)r&   r   r8   rZ   TboolrC   r   object20010101date   2   r#   r$   )axisr   )r   r&   r    )r   r,   rJ   rK   r   r   r	   r-   r.   r_   r`   r  r8   Zbool_r  r*   r+   r/   r   r1   )r   r  df_floatdf_intdf_bool	df_objectdf_dtrQ   Zdtypesr   r&   rq   filenamerS   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   rX   r$   r%   r8   TrC   r   r  r#   )r
  Zignore_indexr'   r   )z0.4z1.4z2.4r   r>   r?   za.1r   )r   r,   rJ   rK   r   r6   r*   r+   r/   r   r   r1   r   r   r	   r_   r`   r   r{   rename)r   rQ   r  rR   r  r  r  r  r  re   r|   r   r   r   test_to_csv_dups_cols  sH    

  



z(TestDataFrameToCSV.test_to_csv_dups_colsrz   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       @ru   g      @Dr   r   rX   )r   r6   r   r*   r+   r/   r   r1   )r   rz   r   r  rS   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,   rJ   rK   r*   r+   r/   r   r1   )r   rQ   r  rS   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   rX   FrD   )r   r   r   r   r*   r+   r/   r1   )r   f1rQ   Znewdfr   r;   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*   r1   )r   bufrQ   ra   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   rX   )r   r/   r%  r   r*   r1   )r   r9   r&  r;   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   rE   rF   rG   rC   z%.2f)float_formatr   rX   gQ?gq=
ףp?g=
ףp=?gp=
ף(@r   )r   rQ   r  rS   rT   r   r   r   test_to_csv_float_format"  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   rt   9  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_strr3   r   rQ   rR   expected_rowsr   r   r   r   %test_to_csv_float_format_over_decimal4  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*   r4  r3   )r   rQ   r&  rR   r6  r   r   r   r   !test_to_csv_unicodewriter_quoting@  s    
z4TestDataFrameToCSV.test_to_csv_unicodewriter_quotingr   r8  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)r9  r   r   )	r   r   r/   r:  
QUOTE_NONEr<  r*   r4  r3   )r   r   rQ   r&  rR   r6  r   r   r   r   test_to_csv_quote_noneK  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*   r4  r<  r3   )r   rQ   r&  r6  r   r   r   r   "test_to_csv_index_no_leading_commaW  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@  rA  rB  r   
lineterminators#   ,A,B
one,1,4
two,2,5
three,3,6
rb)rW   
s   ,A,B
one,1,4
two,2,5
three,3,6
r8  s   ,A,Bs   one,1,4s   two,2,5s	   three,3,6)
r   r*   r+   r/   r   readr3   oslinesepencode)r   rQ   r   r   r   Z
os_linesepr   r   r   test_to_csv_lineterminatorsa  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?   rq   Fr   r   )r   r_   ZCategoricalr   r/   r<  r3   r   )r   r   r)   resr   rQ   ra   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   rX   )r/   r   r   r3   r   r   r*   r1   )r   r9   Zcsv_strr;   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   rE   rF   rG   rC   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   )rU  r   r   wr  )rU  r   r   r   r   r   )r*   r+   r/   r   r1   r   handleclosedr3   Zsqueezedecompress_filerI  r   r   )
r   rQ   r   rU  r  rR   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   rX   c                 S   s   t | dS Nr^  rZ   strftimer   r   r   r   rt     r   z<TestDataFrameToCSV.test_to_csv_date_format.<locals>.<lambda>c                 S   s   t | dS ra  rb  r   r   r   r   rt     r   %Y-%m-%dc                 S   s
   |  dS Nrd  rc  r   r   r   r   rt     r   c                 S   s
   |  dS re  rf  r   r   r   r   rt     r   c                 S   s   t | dS ra  rb  r   r   r   r   rt     r   c                 S   s
   |  dS ra  rf  r   r   r   r   rt   	  r   r   r   
2000-01-01r   )r    r   )r*   r+   r   r   shiftr/   r   Zapplymapr   r1   Tr   r   )
r   r:   r   rh   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)rp   r   Z	ambiguousr8   r%   r   r   Tr   rX   utc)r*   r+   r
   r0   r,   r   r6   r2   r   r/   r   r   r   ro   r1   )r   rk  r   timesre   Z
time_rangerQ   rR   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   rp   r#   )r5   idxr   rl  Tr   rX   rm  rq  zdatetime64[ns, Europe/Paris])r
   r0   _dataZ_freqr   r*   r+   r/   r   r   r   ro   r   r1   r   Z	to_pickler_   Zread_pickle)r   rq  rQ   r   rR   r   r   r   ,test_to_csv_with_dst_transitions_with_pickle1  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")r9  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 setrH   )r9  
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 
",3r8  r!  r#   r'   r$   r   r   r   )r>   r?   rq   r?   z"a","b","c"z"1","3","5"z"2","4","6")r   r,   r-   r*   r4  r/   r3   r:  QUOTE_MINIMAL	QUOTE_ALLr;  rN   rO   Errorr>  r   r   r<  Z	set_index)	r   rQ   r6  r   rR   rU   Z	text_rowsr[  r&  r   r   r   test_to_csv_quotingJ  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-01rg  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*   r4  r3   r   )r   datesr   rQ   rR   r6  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?   rq   dr   z,a,b,c,dz	0,1,2,3,4z	1,5,6,7,8)r   rL   r   r   r/   r*   r4  r3   )r   r   rQ   r   rR   r6  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
rH  rE  )r   r   Zreindexr/   r*   r4   )r   r   rQ   r   rR   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'   r3  2z__test_gz_lineend.csv.gzFr   gzip)rU  r8  )	r   r*   r4  r+   r/   rY  rI  r   r3   )r   rQ   r6  r   r   r   rR   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>   z1/1/2000r   )r   rg  )r   r
   r   r/   r<  r3   )r   r   r&  rR   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   rD  rH  z""
""
)r   r/   replacer3   )r   rR   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*   r4  r3   r5  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)rX  r  z,az0,"[2020-01-01, 2020-01-02]")	r   r_   ZIntervalr	   r   r/   r*   r4  r3   r5  r   r   r   $test_to_csv_categorical_and_interval  s    
z7TestDataFrameToCSV.test_to_csv_categorical_and_interval)NNNNF)A__name__
__module____qualname__r   r=   rV   rb   rm   rw   r   rN   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(  r0  r7  r=  r?  rC  rM  rO  rP  r   r]  rj  r_   rk   rp  rs  r}  r  r  r  r  r  r  r  r  r   r   r   r   r      s   &
!
     
i   
 

  	.1



&		 
!<
b		
r   )r:  ior   rJ  Znumpyr,   rN   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   ,