U
    *ifܷ                     @   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 dddgZd	d
ddddddgZG dd dZdS )    N)StringIO)ParserError)		DataFrameIndex
MultiIndexNaTSeries	Timestamp
date_rangeread_csvto_datetime)
get_handleZfloat16float32float64Zuint8Zuint16Zuint32Zuint64Zint8Zint16Zint32int64c                   @   s  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	dd Z
ejjdd Zejjdd Zdd Zdd Zdd Zdd Zd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jd-d. Zd/d0 Zd1d2 Zd3d4 Zd5d6 Z d7d8 Z!d9d: Z"d;d< Z#d=d> Z$d?d@ Z%dAdB Z&dCdD Z'ej(dEe)dFdGdHgdIdJdKggdLdMgdNdOdPgdQdRfe)dSdTdUggdNdOdPgdVdWfe)dXdYdZd[gg dNdOdPgdVd\fe)dXdYd]d^gg dNdOdPgdVd_fgd`da Z*dbdc Z+ddde Z,dfdg Z-dhdi Z.djdk Z/dldm Z0dndo Z1dpdq Z2drds Z3dRS )tTestDataFrameToCSVc                 K   s"   ddd}|j f | t|f|S )Nr   T	index_colparse_dates)updater   )selfpathkwargsparams r   Y/home/mars/bis/venv/lib/python3.8/site-packages/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randnr0   r   r2   r   from_tuplesr   copyr    pytestraises
ValueError)
r   r9   r   dfresultZmidxZcol_aliasesrsxpmsgr   r   r   test_to_csv_from_csv2V   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>   s     z<TestDataFrameToCSV.test_to_csv_from_csv3.<locals>.<listcomp>c                 S   s   g | ]}t |qS r   rX   rZ   r   r   r   r]      s     )r,   r-   r   r.   rJ   rK   r0   pdconcatr   r    r2   )r   r   Zdf1df2rT   rS   r   r   r   test_to_csv_from_csv3v   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]      s     z<TestDataFrameToCSV.test_to_csv_from_csv4.<locals>.<listcomp>r(   c                    s   g | ]}|  qS r   r   rc   re   r   r   r]      s     dt_indexnamer#   r&   T)Zcheck_index_type)r,   r-   r^   	Timedeltar   r7   r   r0   r   Zto_timedeltar$   r2   r   r   rQ   rR   r   re   r   test_to_csv_from_csv4   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   rf   
tz_converttz)crR   timezone_framer   r   <lambda>   s   
z:TestDataFrameToCSV.test_to_csv_from_csv5.<locals>.<lambda>r   C)r,   r-   r0   r   r2   )r   rr   r   	converterr   rq   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&   FrD   )rY   r,   makeCustomDataframer    r-   r0   r   r2   )r   ry   NrQ   cscolsr   rs_cr   r   r   test_to_csv_cols_reordering   s    
z.TestDataFrameToCSV.test_to_csv_cols_reorderingc                    sV   d fdd	}d t  d }t|d}dddg|_||d  ddg}||| d S )	Nc           	   	      s   t  }| j|| d t|dd}|d k	r| jjr>||_n| j|\}}| j||_|D ]<}| | }|| }t|t	rt 
|| q`t j||dd q`n| j|_t j| |dd W 5 Q R X d S )Nrx   r   r&   FrD   )r,   r-   r0   r   r    Z	is_uniqueZget_indexer_non_uniqueZtake
isinstancer   Zassert_series_equalr2   )	rQ   r}   r   r~   Zindexermissingrp   Zobj_dfZobj_rsry   r   r   	_check_df   s     

z?TestDataFrameToCSV.test_to_csv_new_dupe_cols.<locals>._check_dfr   rw   r(   r>   r?   )N)rY   r,   rz   r    )r   r   r{   rQ   r}   r   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   )rY   listr
   r.   rJ   randintr3   r   )nZnnatsrd   r   r   r   make_dtnat_arr   s    

z<TestDataFrameToCSV.test_to_csv_dtnat.<locals>.make_dtnat_arr  r   r   z1.csv)r>   r?   r   FrD   )N)r,   r-   r   r0   r   applyr   r2   )r   r   ry   r*   r+   pthrQ   r;   r   r   r   test_to_csv_dtnat   s    
z$TestDataFrameToCSV.test_to_csv_dtnatc                    s^  d fdd	}d}d d} | }dd|d	 ||d	 |d d| d d| d	 d| d| d	 d| d |d	 ||d	 fD ]}|t j||d
ddd
d q|dD ]\}}dD ]} | }dd|d	 ||d	 |d d| d d| d	 d| d| d	 d| d |d	 ||d	 fD ] }|t j||||d|| qqqdD ]} | }d|d |d	 ||d	 |d d| d d| d	 d| d| d	 d| d |d	 ||d	 fD ]}|t || qq:d|d |d	 ||d	 |d fD ]~}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 < |
|_|	|_||dd q|ttdd |t j d d	 ddddd dD ]}t | }d|d |d	 ||d	 |d d| d d| d	 d| d| d	 d| d |d	 ||d	 fD ]R}|t j||dddd |t j||dddd |t j||dddddd qqd S )NFc              	      s  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| _tj| dd! d S )"Nr   Fr   r"   Z__tmp_to_csv_moar__utf8)encodingry   r   c                 S   s   t | ts| dS | S )Nr   )r   strdecoder@   r   r   r   _to_uni  s    

zFTestDataFrameToCSV.test_to_csv_moar.<locals>._do_test.<locals>._to_unic                    s    g | ]} j d d |f jqS )N)ilocr6   rc   )r;   r   r   r]     s     zITestDataFrameToCSV.test_to_csv_moar.<locals>._do_test.<locals>.<listcomp>r'   rd   fO)rd   r   r   urf   pr   c                    s   g | ]} |qS r   r   rZ   r   r   r   r]   $  s     dtypec                    s   g | ]} |qS r   r   rZ   r   r   r   r]   '  s     rf   c                 S   s   g | ]}t |qS r   r	   rZ   r   r   r   r]   ,  s     c                 S   s   g | ]}t |qS r   r   rZ   r   r   r   r]   /  s     r   c                 S   s   g | ]}t |qS r   r   rZ   r   r   r   r]   5  s     c                    s   g | ]} |qS r   r   rZ   r   r   r   r]   B  s     c                    s   g | ]} |qS r   r   rZ   r   r   r   r]   E  s     c                 S   s   g | ]}t |qS r   r   rZ   r   r   r   r]   J  s     c                 S   s   g | ]}t |qS r   r   rZ   r   r   r   r]   M  s     c                 S   s   g | ]}t |qS r   r   rZ   r   r   r   r]   S  s     c                 S   s   g | ]}t |qS r   r   rZ   r   r   r   r]   W  s     rD   )r   r7   r,   r-   r0   r   r    r   from_arraysr$   r   r.   arrayr   mapr	   Zto_timestampgetr2   )rQ   Zr_dtypeZc_dtypernlvlcnlvldupe_colr   r   Z	delta_lvlixZtype_mapZidx_listZcol_listry   r   )r   r;   r   _do_test   s    
  

  


  


  

  


 
 

z5TestDataFrameToCSV.test_to_csv_moar.<locals>._do_testr   r      r)   
   r'   rf   r   )
r_idx_type
c_idx_type))rd   rd   )r   r   )r   rf   )r   r   )r'   r)   r(   r   r(   ZdupeZrdupeT)r   r#   )r_idx_nlevels)r   )r)   r(   r   )c_idx_nlevels)r   r   r   )r   r   )NNNNF)	r,   rz   r   r    r$   r   r.   r8   rY   )r   r   r{   ZncolsbaseZnrowsr   r   rQ   r}   r   r   r   r   test_to_csv_moar   s             d







   



$

 



   z#TestDataFrameToCSV.test_to_csv_moarc              	   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 )Ng      ?)r.   infr/   rJ   Zrandr   r   r   r   rs         zETestDataFrameToCSV.test_to_csv_from_csv_w_some_infs.<locals>.<lambda>H)
r.   r/   r$   r   r,   r-   r0   r   r2   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-   r0   r   r2   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      )c1c2Fr#         	   r   r   c3)r,   r-   r   r0   r   r2   r   rk   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?   rp   aaZbbcc)r   r'   txttestr   r'   r   )r   r0   r4   )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-   r0   r   r2   Zreset_indexr4   )r   Zfrom_dfZto_dfr   r;   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   rD   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.   rJ   r   r   rL   r   r   r   r   _make_frameK  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 filerH   z%cannot specify cols with a MultiIndexr   )N)r$   r.   r8   r3   Zreshaper   r   r,   r-   r0   r   r2   r   r4   r    r5   r6   rz   comZall_nonerN   rO   r   r   r7   	TypeErrorZassert_index_equal)r   r9   r:   frameZ	old_indexZarraysZ	new_indexr   rQ   Ztsframer;   r   rR   rd   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__.csvr&   )r   r   r7   r^   Zinterval_ranger,   r-   r0   r   rM   r$   astyper   r2   )r   rQ   r   rR   expectedr   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   r   r/   r,   r-   r0   open	readlinessplitr4   )r   rQ   r   r   linesr   r   r   test_to_csv_float32_nanrep  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-   r0   r   r2   r   rQ   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   rc   rh   r   r   r]     s     zMTestDataFrameToCSV.test_to_csv_mixed.<locals>.create_cols.<locals>.<listcomp>r   )r7   rh   r   rh   r   create_cols  s    z9TestDataFrameToCSV.test_to_csv_mixed.<locals>.create_colsr   r   r   float)r   r    r   rY   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   r   Zbool_r   r,   r-   r0   r   r2   )r   r   df_floatdf_intdf_bool	df_objectdf_dtrQ   Zdtypesr   r   rp   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   r&   r(   r   r   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   r7   r,   r-   r0   r   r    r2   r   r$   r	   r^   r_   r   rz   rename)r   rQ   r   rR   r   r   r   r   r   rd   r{   r   r   r   test_to_csv_dups_cols  sH    

  



z(TestDataFrameToCSV.test_to_csv_dups_colsc              
   C   s   t dtdi}|jd |d< |jd |d< |jd |d< d	D ]>}t ,}|j||d
 t|dd}t|| W 5 Q R X q>d S )Nr   順       ?r   g       @rt   g      @D)i'  iP  r   r   r   r&   )r   r7   r   r,   r-   r0   r   r2   )r   r   ry   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-   r0   r   r2   )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   r&   FrD   )r   r   r   r    r,   r-   r0   r2   )r   f1rQ   Znewdfr   r;   r   r   r   test_to_csv_bug3  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   r0   seekr   r,   r2   )r   bufrQ   r`   r   r   r   test_to_csv_unicode_index_colL  s    

z0TestDataFrameToCSV.test_to_csv_unicode_index_colc                 C   s6   t  }|| |d t|dd}t|| d S )Nr   r&   )r   r0   r  r   r,   r2   )r   r9   r  r;   r   r   r   test_to_csv_stringioZ  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)Zfloat_formatr   r&   gQ?gq=
ףp?g=
ףp=?gp=
ף(@r   )r   rQ   r   rS   rT   r   r   r   test_to_csv_float_formata  s    
z+TestDataFrameToCSV.test_to_csv_float_formatc                 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   r0   csvQUOTE_NONNUMERICgetvaluer,   convert_rows_list_to_csv_strr4   )r   rQ   r  rR   expected_rowsr   r   r   r   !test_to_csv_unicodewriter_quotingu  s    
z4TestDataFrameToCSV.test_to_csv_unicodewriter_quotingc                 C   s`   t dddgi}dD ]F}t }|j|tj|dd | }dddg}t|}||kstqd S )Nr   Zhelloz	{"hello"})Nr  F)r  r   r$   )	r   r   r0   r  
QUOTE_NONEr  r,   r   r4   )r   rQ   r   r  rR   r!  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   r0   r,   r   r  r4   )r   rQ   r  r!  r   r   r   r   "test_to_csv_index_no_leading_comma  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&  r'  r#   
Zline_terminators#   ,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
r  s   ,A,Bs   one,1,4s   two,2,5s	   three,3,6)
r   r,   r-   r0   r   readr4   oslinesepencode)r   rQ   r   r   r   Z
os_linesepr   r   r   test_to_csv_line_terminators  s@    $
$
$

z/TestDataFrameToCSV.test_to_csv_line_terminatorsc                 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?   rp   Fr!   r   )r   r^   ZCategoricalr   r0   r  r4   r   )r   r   r+   resr   rQ   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&   )r0   r   r   r4   r   r   r,   r2   )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   Nr   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   )r9  r   r   wr
  )r9  r   r   r    r   r  )r,   r-   r0   r   r2   r   handleclosedr4   Zsqueezedecompress_filer-  r   r    )
r   rQ   r   r9  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   r&   c                 S   s   t | dS NrB  rY   strftimer   r   r   r   rs   !  r   z<TestDataFrameToCSV.test_to_csv_date_format.<locals>.<lambda>c                 S   s   t | dS rE  rF  r   r   r   r   rs   $  r   %Y-%m-%dc                 S   s
   |  dS NrH  rG  r   r   r   r   rs   .  r   c                 S   s
   |  dS rI  rJ  r   r   r   r   rs   1  r   c                 S   s   t | dS rE  rF  r   r   r   r   rs   =  r   c                 S   s
   |  dS rE  rJ  r   r   r   r   rs   A  r   r   r   
2000-01-011/1/2000z1-1-2000r   )r   r   )r,   r-   r$   r   shiftr0   r   Zapplymapr   r2   Tr    r   )
r   r:   r   rg   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_formatc              	   C   s  t d}tdddddd}||td fD ]p}|d }tjtt	|d	d
}t
d|i|d}|j|dd t|dd}t|jddd|_t || q0W 5 Q R X 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csv_date_format_with_dstz2013-10-26 23:00z2013-10-27 01:00zEurope/Londonr   Zinfer)ro   r   Z	ambiguousZ10sr   r   r   r#   Tr   r&   )utcz
2015-01-01z
2015-12-31zEurope/Paris)r   ro   r'   )r6   idxrQ  zdatetime64[ns, Europe/Paris])r,   r-   r
   r^   rj   r1   r.   r   r7   r3   r   r0   r   r   r$   rn   r2   _dataZ_freqr   r   Z	to_pickleZread_pickle)r   r   timesrd   Z
time_rangerQ   rR   rQ  r   r   r    test_to_csv_with_dst_transitionsQ  sJ    




z3TestDataFrameToCSV.test_to_csv_with_dst_transitionsc           	   	   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)Zc_boolZ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")r  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   )r  
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 
",3r  r  r'   r)   r(   r   r   r   )r>   r?   rp   r?   z"a","b","c"z"1","3","5"z"2","4","6")r   r.   r/   r,   r   r0   r4   r  QUOTE_MINIMAL	QUOTE_ALLr  rN   rO   Errorr#  r   r   r  Z	set_index)	r   rQ   r!  r   rR   rU   Z	text_rowsr?  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-01rK  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-%YrC  z01-01-1990,4z01-01-2000,5z01-01-3005,6z,5)r^   ZPeriodIndexr   r0   r,   r   r4   r   )r   datesr$   rQ   rR   r!  r   rD  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?   rp   dr!   z,a,b,c,dz	0,1,2,3,4z	1,5,6,7,8)r   rL   r   r    r0   r,   r   r4   )r   r    rQ   r"   rR   r!  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
r,  r*  )r   r   Zreindexr0   r,   r5   )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)   12z__test_gz_lineend.csv.gzFr#   gzip)r9  r  )	r   r,   r   r-   r0   r=  r-  r   r4   )r   rQ   r!  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>   rL  r   )r   rK  )r   r
   r   r0   r  r4   )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   r)  r,  z""
""
)r   r0   replacer4   )r   rR   r   r   r   r   test_to_csv_na_quoting.  s        z)TestDataFrameToCSV.test_to_csv_na_quoting)4__name__
__module____qualname__r   r=   rV   ra   rl   rv   r   r   rN   markZslowr   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r"  r$  r(  r1  r3  r4  Zparametrizer   rA  rO  rT  r\  r^  r`  ra  re  rf  rh  r   r   r   r   r   (   s   ' )

 [ 
.2

&		 
#<1b		r   ) r  ior   r.  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   ZMIXED_FLOAT_DTYPESZMIXED_INT_DTYPESr   r   r   r   r   <module>   s*   ,
