o
    ŀg	                     @   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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period_rangeread_csvto_datetime)
get_handlec                   @   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	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g ddd Ze
jje
jdg de
jdg de
jd g d!e
jd"d#d$ Ze
jje
jdg d%e
jd g d!d&d' Ze
jje
jdg d(d)d* Ze
jjd+d, Ze
jjd-d. Ze
jje
jdg de
jd g d/e
jd0d1d2id3d2igd4d2id5d2igd2d2d6d2d2d7ggd8d9 Zd:d; Zd<d= Zd>d? Zd@dA ZdBdC ZdDdE ZdFdG ZdHdI Z dJdK Z!dLdM Z"dNdO Z#dPdQ Z$e
jdRg dSdTdU Z%e
jjdVdW Z&dXdY Z'dZd[ Z(d\d] Z)d^d_ Z*d`da Z+dbdc Z,ddde Z-e
jdfddggdhdi Z.djdk Z/dldm Z0dndo Z1dpdq Z2e
jdre3g dsg dtgdudvgg dwdxdfe3g dygg dwdzd{fe3d|g d}g g dwdzd~fe3d|g dg g dwdzdfgdd Z4dd Z5e
jde67de67dgdd Z8dd Z9dd Z:dd Z;dd Z<dd Z=dd Z>dd Z?dd Z@dd ZAdd ZBdS )TestDataFrameToCSVc                 K   s(   ddi}|j di | t|fi |S )N	index_colr    )updater   )selfpathkwargsparamsr   r   Z/var/www/html/myenv/lib/python3.10/site-packages/pandas/tests/frame/methods/test_to_csv.pyr      s   zTestDataFrameToCSV.read_csvc              	   C   s|  t d}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sfJ |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 d    d S 1 sw   Y  d S )N__tmp_to_csv_from_csv1__   ABcolumnsFheaderindexT)parse_datesr!   index_labelr   r"         dtype   )s1s2)tmensure_cleannpnanilocr   get_locto_csvr!   
_with_freqr   assert_frame_equallenassert_almost_equalvaluesr   r   rangearangeint64)r   float_framedatetime_framer   reconsdmr   r   r   test_to_csv_from_csv1$   s2   



"z(TestDataFrameToCSV.test_to_csv_from_csv1c           
   	   C   sb  t d}ttjddg dg dd}|| | |}t 	|| t
g d}ttjdd|g dd}|| | j|g dd	d
}t j	||d	d tg d}|j||d | |}| }||_t 	|| d}	tjt|	d |j|ddgd W d    n1 sw   Y  W d    d S W d    d S 1 sw   Y  d S )N__tmp_to_csv_from_csv2__r*   r'   r'   arD   b)xyzr!   r   )r   r&   r*   rJ   )r   r&   r*   r   r&   r*   Fr%   check_names)AAXYZr   z Writing 4 cols but got 2 aliasesmatchrN   rO   )r-   r.   r   r/   randomdefault_rngstandard_normalr3   r   r5   r   from_tuplesr   copyr   pytestraises
ValueError)
r   r<   r   dfresultmidxcol_aliasesrsxpmsgr   r   r   test_to_csv_from_csv2J   s>   



 "z(TestDataFrameToCSV.test_to_csv_from_csv2c                 C   s   t dQ}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 d    d S 1 sYw   Y  d S )N__tmp_to_csv_from_csv3__r*   )r'   r&   rD   F)moder   r   r   c                 S      g | ]}t |qS r   int.0labelr   r   r   
<listcomp>w       z<TestDataFrameToCSV.test_to_csv_from_csv3.<locals>.<listcomp>c                 S   rg   r   rh   rj   r   r   r   rm   x   rn   )r-   r.   r   r/   rT   rU   rV   r3   pdconcatr   r   r5   )r   r   df1df2ra   r`   r   r   r   test_to_csv_from_csv3n   s   
"z(TestDataFrameToCSV.test_to_csv_from_csv3c                    s   t dP}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 d    d S 1 sXw   Y  d S )N__tmp_to_csv_from_csv4__r&   )secondsdt_datac                       g | ]}|  qS r   r   rk   idtr   r   rm      rn   z<TestDataFrameToCSV.test_to_csv_from_csv4.<locals>.<listcomp>r'   c                    rw   r   r   rx   rz   r   r   rm      rn   dt_indexnamer    rf   T)check_index_type)r-   r.   ro   	Timedeltar   r9   r   r3   r   to_timedeltar!   r5   r   r   r\   r]   r   rz   r   test_to_csv_from_csv4{   s   
"z(TestDataFrameToCSV.test_to_csv_from_csv4c                    s|   t d/}| t|ddgd  fdd}|d d< |d d< t   W d    d S 1 s7w   Y  d S )	N__tmp_to_csv_from_csv5__r   r   r%   c                    s$   t  |  jdj|  jjS )NUTC)r   r{   
tz_converttz)cr]   timezone_framer   r   <lambda>   s   
 z:TestDataFrameToCSV.test_to_csv_from_csv5.<locals>.<lambda>r   C)r-   r.   r3   r   r5   )r   r   r   	converterr   r   r   test_to_csv_from_csv5   s   
"z(TestDataFrameToCSV.test_to_csv_from_csv5c                 C   s   d}t |d }tt|dftdd t|D ddtdd tdD ddd	}|j}|d
 |d g}t }|j	|||d t
|dd}W d    n1 sRw   Y  tj|| |dd d S )Nr         @r'   c                 S      g | ]}d | qS zi-r   rx   r   r   r   rm          zBTestDataFrameToCSV.test_to_csv_cols_reordering.<locals>.<listcomp>rD   r}   c                 S   r   r   r   rx   r   r   r   rm      r   rI   r*   r   r   	chunksizerf   FrL   )ri   r   r/   onesr   r9   r   r-   r.   r3   r   r5   )r   r   Nr\   cscolsr   rs_cr   r   r   test_to_csv_cols_reordering   s   
z.TestDataFrameToCSV.test_to_csv_cols_reorderingr   NrE   rD   c                 C   s.  d}t |d }tt|dftdd t|D ddg dd	}t h}|j|||d
 t	|dd}|d urq|j
jr@||_
n|j
|\}}|j
||_
|D ]}	||	 }
||	 }t|
trgt|
| qQtj|
|dd qQn|j
|_
tj||dd W d    d S W d    d S 1 sw   Y  d S )Nr   r   r'   c                 S   r   r   r   rx   r   r   r   rm      r   z@TestDataFrameToCSV.test_to_csv_new_dupe_cols.<locals>.<listcomp>rD   r}   rC   rI   r   r   rf   FrL   )ri   r   r/   r   r   r9   r-   r.   r3   r   r   	is_uniqueget_indexer_non_uniquetake
isinstancer   assert_series_equalr5   )r   r   r   r   r\   r   r   indexermissingr   obj_dfobj_rsr   r   r   test_to_csv_new_dupe_cols   s6   


"z,TestDataFrameToCSV.test_to_csv_new_dupe_colsc                 C   s   ddd}d}||d }||d d}t d'}t||d}|j||d | |t}t j||d	d
 W d    d S 1 sCw   Y  d S )Nc                 S   sz   |d u r
t | d }ttdd| d}|r;tjddt||D ]}t||< q"tjdd}t|| < t||< |S )Ng?20005min)freqperiodsr*   r   d   )	ri   listr
   r/   rT   rU   integersr6   r   )nnnatsry   r   r   r   make_dtnat_arr   s   

z<TestDataFrameToCSV.test_to_csv_dtnat.<locals>.make_dtnat_arr  r   r   z1.csvrD   rE   r   FrL   N)r-   r.   r   r3   r   applyr   r5   )r   r   r   r+   r,   pthr\   r>   r   r   r   test_to_csv_dtnat   s   
"z$TestDataFrameToCSV.test_to_csv_dtnatFc                    s  ddi}|rA|d urt t||d< t t||d< td}	|j|	d|d | j|	fi |W d    n1 s;w   Y  n*d|d< td}	|j|	d|d | j|	fi |W d    n1 sfw   Y  d	d
  |ru|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}|r8|dkrd}tj fddj	D |d_	tj fdd|j	D |d|_	nd|dkrd}tjdd j	D |d_	tjdd |j	D |d|_	nA|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|_	|r|dkrfd}tj fddjD |d_tj fdd|jD |d|_|fS |dkrd}tjdd jD |d_tjdd |jD |d|_|fS |dkrd}tj}tjdd |D |d_|j }tjd d |D |d|_|fS ||}tjj|d_tj|j|d|_|fS )!Nr"   Fr   r   __tmp_to_csv_moar__utf8)encodingr   r   c                 S   s   t | ts
| dS | S )Nr   )r   strdecoderF   r   r   r   _to_uni  s   

z;TestDataFrameToCSV._return_result_expected.<locals>._to_unic                    s    g | ]} j d d |f jqS r   )r1   r8   rx   )r>   r   r   rm          z>TestDataFrameToCSV._return_result_expected.<locals>.<listcomp>r&   ry   fO)ry   r   r   ur{   pr   c                       g | ]} |qS r   r   rj   r   r   r   rm     rn   r(   c                    r   r   r   rj   r   r   r   rm     rn   r{   c                 S   rg   r   r	   rj   r   r   r   rm   "  rn   c                 S   rg   r   r   rj   r   r   r   rm   %  rn   r   c                 S   rg   r   r   rj   r   r   r   rm   +  rn   c                    r   r   r   rj   r   r   r   rm   8  rn   c                    r   r   r   rj   r   r   r   rm   ;  rn   c                 S   rg   r   r   rj   r   r   r   rm   @  rn   c                 S   rg   r   r   rj   r   r   r   rm   C  rn   c                 S   rg   r   r   rj   r   r   r   rm   I  rn   c                 S   rg   r   r   rj   r   r   r   rm   M  rn   )r   r9   r-   r.   r3   r   r   r   from_arraysr!   r1   r/   arrayr   mapr	   to_timestampget)r   r\   r   r_dtypec_dtypernlvlcnlvldupe_colr   r   	delta_lvlixtype_mapidx_listcol_listr   )r   r>   r   _return_result_expected   s   












z*TestDataFrameToCSV._return_result_expectednrows)r*   
   c   r   e   f                           c                 C   sT   t t|dftd|dttdtdd}| |ddd	\}}tj	||d
d d S )N   
2020-01-01r   abcdr(   rI   r   r{   r   FrL   )
r   r/   r   r
   r   r   objectr   r-   r5   )r   r   r\   r]   expectedr   r   r   test_to_csv_nrowsU  s   
z$TestDataFrameToCSV.test_to_csv_nrowszr_idx_type, c_idx_type))ry   ry   )r   r   )r   r{   )r   r   ncolsr&   r*   r'   r   z3ignore:PeriodDtype\[B\] is deprecated:FutureWarningc           	      C   sn   dd dd dd dd d}t t||f|| ||| |d}| |d||\}}tj||d	d
 d S )Nc                 S   s   t t| tjdS )Nr(   )r   r/   r:   r;   r   r   r   r   r   m  rn   z:TestDataFrameToCSV.test_to_csv_idx_types.<locals>.<lambda>c                 S   s   t dd tdd|  D S )Nc                 S   s   g | ]}| d t | qS )_)chrrx   r   r   r   rm   n      zNTestDataFrameToCSV.test_to_csv_idx_types.<locals>.<lambda>.<locals>.<listcomp>a   )r   r9   r   r   r   r   r   n  s    c                 S   s   t d| dS )Nr   r   )r
   r   r   r   r   r   o  s    c                 S   s   t d| ddS )Nr   D)r   r   )r   r   r   r   r   r   p      )ry   r   r{   r   rI   r   FrL   )r   r/   r   r   r-   r5   )	r   r   
r_idx_type
c_idx_typer   axesr\   r]   r   r   r   r   test_to_csv_idx_typesb  s"   

z(TestDataFrameToCSV.test_to_csv_idx_types)r   b   r   r   r   r   r   r   r   r   r   r   r   r   c                 C   sh   t t||ftdd t|D ddtdd t|D ddd}| |d\}}tj||dd	 d S )
Nc                 S   r   r   r   rx   r   r   r   rm     r   z<TestDataFrameToCSV.test_to_csv_idx_ncols.<locals>.<listcomp>rD   r}   c                 S   r   r   r   rx   r   r   r   rm     r   rI   r   FrL   )r   r/   r   r   r9   r   r-   r5   )r   r   r   r\   r]   r   r   r   r   test_to_csv_idx_ncols  s   z(TestDataFrameToCSV.test_to_csv_idx_ncols)r   r   r   r   r   r   c                 C   s   t t|dftdd t|D ddtdd tdD dd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'   c                 S   r   r   r   rx   r   r   r   rm     r   z;TestDataFrameToCSV.test_to_csv_dup_cols.<locals>.<listcomp>rD   r}   c                 S   r   r   r   rx   r   r   r   rm     r   rI   duper*   rduper   T)r   FrL   )r   r/   r   r   r9   r   r   r!   r   r-   r5   )r   r   r\   r   r   r]   r   r   r   r   test_to_csv_dup_cols  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)check_column_type)r   r/   r:   r;   r   r-   r5   )r   r\   r]   r   r   r   r   test_to_csv_empty  s   z$TestDataFrameToCSV.test_to_csv_emptyc                    st   d}|d d  t t dfttdtdt fddtdD d}| j	||dd	\}}t
j||d
d d S )Nr   r*   r&   abr(   c                    s   g | ]}t  qS r   r9   rk   r   rowsr   r   rm     rn   z<TestDataFrameToCSV.test_to_csv_chunksize.<locals>.<listcomp>r   r!   )r   FrL   )r   r/   r   r   r   r   r   r   r9   r   r-   r5   )r   r   r\   r]   r   r   r  r   test_to_csv_chunksize  s   z(TestDataFrameToCSV.test_to_csv_chunksize)r*   r'   r   zdf_params, func_paramsr_idx_nlevelsr*   r   c_idx_nlevelsr   )r  r  )r   r   c           
         s   | drtfddt|d D }nd }| dr.t fddt|d D }ntdd t D td}tt f||d	}| j	|d
fi |\}}	t
j||	dd d S )Nr  c                 3   "    | ]}d d t  D V  qdS )c                 S   r   r   r   rx   r   r   r   rm     r   CTestDataFrameToCSV.test_to_csv_params.<locals>.<genexpr>.<listcomp>Nr   r  )r   r   r   	<genexpr>  
    
z8TestDataFrameToCSV.test_to_csv_params.<locals>.<genexpr>r  c                 3   r  )c                 S   r   r   r   rx   r   r   r   rm     r   r	  Nr   r  )r   r   r   r
    r  c                 S   r   r   r   rx   r   r   r   rm     r   z9TestDataFrameToCSV.test_to_csv_params.<locals>.<listcomp>r(   rI   r   FrL   )r   r   r   r9   r   r   r   r/   r   r   r-   r5   )
r   r   	df_paramsfunc_paramsr   r!   r   r\   r]   r   r   )r   r   r   test_to_csv_params  s   





z%TestDataFrameToCSV.test_to_csv_paramsc                 C   s   t j|d< dd }|j||d< t %}|| | |}t|| tt 	|t 	| W d    d S 1 s=w   Y  d S )NGc                 S   s    t jt jgt jd dk  S )Nr*         ?)r/   infr0   rT   rU   r   r   r   r   r     r   zETestDataFrameToCSV.test_to_csv_from_csv_w_some_infs.<locals>.<lambda>h)
r/   r0   r!   r   r-   r.   r3   r   r5   isinf)r   r<   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   s|   t j|d< t j |d< t %}|| | |}t|| tt |t | W d    d S 1 s7w   Y  d S )NEF)r/   r  r-   r.   r3   r   r5   r  )r   r<   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@}tg dg dd}|j|dd t|}t || tg ddd	|d
< |j|dd t|}t || W d    d S 1 sHw   Y  d S )N__tmp_to_csv_no_index__r&   r*   r'   r   r      )c1c2Fr    )      	   r;   r(   c3)r-   r.   r   r3   r   r5   r   r   r   r   r   test_to_csv_no_index  s   "z'TestDataFrameToCSV.test_to_csv_no_indexc                 C   s>   t g dg dd}d|d< | |jg ddksJ d S )NrD   rE   r   )aabbcc)r   r&   txttest)r   r&   r(  r   )r   r3   )r   r\   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
>}|j|dd	gd | |}t|| |j|ddd	gd | |}|jdd}|d u sQJ t|| W d    d S 1 sbw   Y  d S )Nr&   r*   r'   r   r   r   r   rO   rP   __tmp_to_csv_headers__r   F)r!   r   T)inplace)r   r-   r.   r3   r   r5   reset_index)r   from_dfto_dfr   r>   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}|j
|dd	 |j
|d
dgd |
| | j|ddgdd}tj||dd |j j|j jksXJ ||_ |}	|	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 d    n1 sw   Y  tj|	|
dd |	
| | j|d d}
t|
jt|	jd ksJ |	j
|dd | j|d d}
t|
j|j ||_ W d    n1 sw   Y  t	d}}d0dd}ttdtjdd tdD tddtjd d tdD td!dd"}|
| t|g d#ddgd$}t|| ttdtjd%d tdD tddd}|
| t|g d#dd$}t|| ttdtjd&d tdD tddtjd'd td(D td)dd"}|
| t|g d#g d*d$}t|| | }|j
|dd t|ddgd	}t|| |d}|j
|dd t|ddgd	}tj|jj sJ |jj|j_t|| | }|
| t|ddgdgd$}t|| |d}|
| t|ddgdgd$}t|| |d}|
| d+D ],}d,| d-}tjt|d t|tt|dd$ W d    n	1 s8w   Y  qd.}tjt|d |j
|dd/gd W d    n	1 s]w   Y  W d    n	1 smw   Y  t	d1}|	d d 
| | |}
|	d d }g |_ t|
j|j t|
dksJ W d    d S 1 sw   Y  d S )1Nr*   r(   firstsecondnames__tmp_to_csv_multiindex__Fr   r   r   r   r   r&   r%   rL   timefoor#   zCould not infer formatrR   Trf   r    c                 S   s@   | du rddg} t tjdjddddtjg d	| d
ddS )NTr2  r3  r*   r   r   rB   )size))bahr8  )r:  bar)banbazr4  r;   r   r)   )r   r/   rT   rU   r   r   rW   r4  r   r   r   _make_frameI  s   z>TestDataFrameToCSV.test_to_csv_multiindex.<locals>._make_framer   r'   c                 S      g | ]}d d t dD qS )c                 S   r   r   r   rx   r   r   r   rm   X  r   HTestDataFrameToCSV.test_to_csv_multiindex.<locals>.<listcomp>.<listcomp>r'   r   r  r   r   r   rm   X  r   z=TestDataFrameToCSV.test_to_csv_multiindex.<locals>.<listcomp>r   r   c                 S   rA  )c                 S   r   r   r   rx   r   r   r   rm   [  r   rB  r   r   r  r   r   r   rm   [  r   r   r  )r   r&   r*   r'   )r   r   c                 S   rA  )c                 S   r   r   r   rx   r   r   r   rm   f  r   rB  r'   r   r  r   r   r   rm   f  r   c                 S   rA  )c                 S   r   r   r   rx   r   r   r   rm   q  r   rB  r'   r   r  r   r   r   rm   q  r   c                 S   rA  )c                 S   r   r   r   rx   r   r   r   rm   t  r   rB  r   r   r  r   r   r   rm   t  r   r'   abcrK   )r  r  zlen of z, but only 5 lines in filez%cannot specify cols with a MultiIndexr;  r   )r!   r/   r:   r6   r;   reshaper   r   r-   r.   r3   r   r5   r5  assert_produces_warningUserWarningr   r7   r8   r   r   r9   r   comall_nonerY   rZ   r   	TypeErrorassert_index_equal)r   r<   r=   frame	old_indexarrays	new_indexr   r\   tsframer>   r?  r]   ry   rb   expr   r   r   test_to_csv_multiindex  s    

,

	

	


\
$z)TestDataFrameToCSV.test_to_csv_multiindexc                 C   s   t tdtddtddd}td0}|| | j|dd}|	 }|r1|j
d|_
n|j
t|_
t|| W d    d S 1 sIw   Y  d S )	NrC  r'   r   r   r   r    z!__tmp_to_csv_interval_index__.csvrf   zstring[pyarrow_numpy])r   r   r9   ro   interval_ranger-   r.   r3   r   rX   r!   astyper   r5   )r   using_infer_stringr\   r   r]   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
|dd t|dd}| }|d d	d d
ks9J W d    n1 sCw   Y  W d    d S W d    d S 1 s[w   Y  d S )Nr*   )r&   r   r&   z!__tmp_to_csv_float32_nanrep__.csvi  )na_reputf-8r   ,999)r   r/   rT   rU   rV   rT  float32r0   r-   r.   r3   open	readlinessplit)r   r\   r   r   linesr   r   r   test_to_csv_float32_nanrep  s   
"z-TestDataFrameToCSV.test_to_csv_float32_nanrepc                 C   sf   t g dg dd}td}|| | |}t|| W d    d S 1 s,w   Y  d S )Nr  )z5,6z7,8z9,0rR  z__tmp_to_csv_withcommas__.csvr   r-   r.   r3   r   r5   r   r\   r   rr   r   r   r   test_to_csv_withcommas  s   

"z)TestDataFrameToCSV.test_to_csv_withcommasc                 C   sz  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d|j|dd}tj	|j
ddddf< 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 }|| t|d||dd}t|| W d    d S 1 sw   Y  d S )Nc                    s    fddt dD S )Nc                    s   g | ]	}  |d qS )03dr   rx   r}   r   r   rm     s    zMTestDataFrameToCSV.test_to_csv_mixed.<locals>.create_cols.<locals>.<listcomp>r   r   r}   r   r}   r   create_cols  s   z9TestDataFrameToCSV.test_to_csv_mixed.<locals>.create_colsr*   )r   r   float64float)r)   r   r;   ri   TboolrI   r8  r   20010101nsdate   2   r&   r'   )axisr   )r   r)   r"   )r   r/   rT   rU   rV   rT  r!   r	   as_unitr0   r1   ro   rp   rg  r;   bool_r   r-   r.   r3   r   r5   )r   rf  df_floatdf_intdf_bool	df_objectdf_dtr\   dtypesr   r)   r   filenamer`   r   r   r   test_to_csv_mixed  sN   


"z$TestDataFrameToCSV.test_to_csv_mixedc           
      C   s  t tjddttdttd dd}t }|	| t
|dd}|j|_t|| W d    n1 s<w   Y  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d|jtdd}tj|||||gddd}g dd |_t +}|	| t
|dd}dD ]
}	t||	 ||	< q|j|_t|| W d    d S 1 sw   Y  d S )Nr*   )r   rm     rg  r>  r   rf   )r   r'   r(   r;   Tr'   rI   r8  rj  rk  r&   )ro  ignore_indexrK   r   )z0.4z1.4z2.4)r   r/   rT   rU   rV   r   r9   r-   r.   r3   r   r   r5   rT  r!   r	   rp  ro   rp   r   )
r   r\   rx  r]   rr  rs  rt  ru  rv  ry   r   r   r   test_to_csv_dups_cols  sD   



"z(TestDataFrameToCSV.test_to_csv_dups_colsc                 C   s   t tdtdd tdD ddtg dtdd	}t "}|| t	|d
d}|j
ddid}t|| W d    d S 1 sDw   Y  d S )Nr@  c                 S   r   r   r   rx   r   r   r   rm   1  r   z=TestDataFrameToCSV.test_to_csv_dups_cols2.<locals>.<listcomp>r   r8  r}   rC   r(   rI   r   rf   za.1rD   r   )r   r/   r   r   r9   r   r-   r.   r3   r   renamer5   )r   r\   rx  r]   r   r   r   test_to_csv_dups_cols2-  s   

"z)TestDataFrameToCSV.test_to_csv_dups_cols2r   )i'  iP  順 c                 C   s   t dtdi}|jd |d< |jd |d< |jd |d< t }|j||d	 t|d
d}t|| W d    d S 1 s@w   Y  d S )Nr   r        ?r   g       @r   g      @r   r   r   rf   )r   r9   r   r-   r.   r3   r   r5   )r   r   r$  rx  r`   r   r   r   test_to_csv_chunking=  s   
"z'TestDataFrameToCSV.test_to_csv_chunkingc              	   C   s   d}t tjdd|d fd d d}t 0}| }|d| |j	|ddd W d    n1 s6w   Y  t
|d d	}W d    n1 sKw   Y  t|| d S )
Nr   r*   r&   r   r  z/pandas.io.formats.csvs._DEFAULT_CHUNKSIZE_CELLSF)r   r!   r   )r   r/   rT   rU   rV   r-   r.   contextsetattrr3   r   r5   )r   monkeypatchr   r\   rx  mr`   r   r   r   !test_to_csv_wide_frame_formattingI  s   

z4TestDataFrameToCSV.test_to_csv_wide_frame_formattingc                 C   s   t d}| j|d d}td||jd  i}t }|| t|dd}tj||dd W d    d S 1 s9w   Y  d S )Nza,1.0
b,2.0r   tr   rf   FrL   )r   r   r   r   r-   r.   r3   r5   )r   f1r\   newdfr   r>   r   r   r   test_to_csv_bugY  s   

"z"TestDataFrameToCSV.test_to_csv_bugc                 C   s   t dg di}t 2}|j|dd t|ddd}t|| |j|ddd t|d dd}t|| W d    d S 1 sAw   Y  d S )	Nu   c/σr  UTF-8rY  r   r   r   Fr   r!   rb  rc  r   r   r   test_to_csv_unicodee  s   
"z&TestDataFrameToCSV.test_to_csv_unicodec                 C   s`   t d}tg dg dgg dddgd}|j|dd	 |d
 t|d
dd}t|| d S )N )   אd2d3d4)a1a2a3a4)r     בu   גu   דr  r  r  r  rY  r   r  )r   r   r3   seekr   r-   r5   )r   bufr\   rr   r   r   r   test_to_csv_unicode_index_colp  s   
z0TestDataFrameToCSV.test_to_csv_unicode_index_colc                 C   s6   t  }|| |d t|dd}t|| d S )Nr   rf   )r   r3   r  r   r-   r5   )r   r<   r  r>   r   r   r   test_to_csv_stringio~  s
   

z'TestDataFrameToCSV.test_to_csv_stringioc                 C   s   t g dg dgddgg dd}t -}|j|dd t|d	d
}t g dg dgddgg dd}t|| W d    d S 1 sEw   Y  d S )Ng~Ϛ?g9DܜJ?g>D)?g.4i(@33333@̤Ar   r   rO   rP   rQ   rI   z%.2f)float_formatr   rf   )gQ?gq=
ףp?g=
ףp=?)gp=
ף(@r  r  rb  )r   r\   rx  r`   ra   r   r   r   test_to_csv_float_format  s   
"z+TestDataFrameToCSV.test_to_csv_float_formatc                 C   sF   t dddgi}|jddd dd}g d	}t|}||ks!J d S )
NrD   r  r  rZ  c                 S   s   t j| ddS )N-)trim)r/   format_float_positionalr   r   r   r   r     r   zJTestDataFrameToCSV.test_to_csv_float_format_over_decimal.<locals>.<lambda>F)decimalr  r!   )rD   z0.51)r   r3   r-   convert_rows_list_to_csv_strr   r\   r]   expected_rowsr   r   r   r   %test_to_csv_float_format_over_decimal  s   
z8TestDataFrameToCSV.test_to_csv_float_format_over_decimalc                 C   sZ   t g dg dd}t }|j|dtjdd | }g d}t|}||ks+J d S )Nr  )r8  r;  r=  rR  FrX  )r!   quotingr   )z"A","B"z1,"foo"z2,"bar"z3,"baz")r   r   r3   csvQUOTE_NONNUMERICgetvaluer-   r  )r   r\   r  r]   r  r   r   r   r   !test_to_csv_unicodewriter_quoting  s   
z4TestDataFrameToCSV.test_to_csv_unicodewriter_quotingr   rX  c                 C   sT   t dddgi}t }|j|tj|dd | }g d}t|}||ks(J d S )Nr   hello	{"hello"}F)r  r   r!   )r   r  r  )r   r   r3   r  
QUOTE_NONEr  r-   r  )r   r   r\   r  r]   r  r   r   r   r   test_to_csv_quote_none  s   
z)TestDataFrameToCSV.test_to_csv_quote_nonec                 C   sX   t g dg ddg dd}t }|j|dd g d}t|}| |ks*J d S )	Nr  r  rR  onetwothreer    Fr#   )zA,Bzone,1,4ztwo,2,5z	three,3,6)r   r   r3   r-   r  r  )r   r\   r  r  r   r   r   r   "test_to_csv_index_no_leading_comma  s   
z5TestDataFrameToCSV.test_to_csv_index_no_leading_commac              	   C   s  t g dg ddg dd}t /}|j|dd d}t|d	d
}| |ks,J W d    n1 s6w   Y  W d    n1 sEw   Y  t /}|j|dd d}t|d	d
}| |ksgJ W d    n1 sqw   Y  W d    n1 sw   Y  t J}|| tjd}d| d | d | d | }t|d	d
}| |ksJ W d    n1 sw   Y  W d    d S W d    d S 1 sw   Y  d S )Nr  r  rR  r  r    
lineterminators#   ,A,B
one,1,4
two,2,5
three,3,6
rb)re   
s   ,A,B
one,1,4
two,2,5
three,3,6
rX  s   ,A,Bs   one,1,4s   two,2,5s	   three,3,6)	r   r-   r.   r3   r]  readoslinesepencode)r   r\   r   r   r   
os_linesepr   r   r   test_to_csv_lineterminators  sT   



"z.TestDataFrameToCSV.test_to_csv_lineterminatorsc                 C   s   t tg d}t g d}t }|j|dd t }|j|dd | | ks-J td|i}td|i}t }|| t }|| | | ksSJ d S )N)rD   rE   rE   rD   rD   r   r   r   Fr   r   )r   ro   Categoricalr   r3   r  r   )r   r   r,   resrP  r\   rr   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J tt|dd}t|| d S )N)path_or_bufr   rf   )r3   r   r   r   r   r-   r5   )r   r<   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  rI   )rC  defghir   asciir   ){   u   你好u   世界gb2312)r  u   Γειά σουu
   Κόσμεcp737c           
   
   C   sp  t  }|j|||d t||d|d}t || t|d||d}|j|j|d |jjr2J W d    n1 s<w   Y  t|||ddd}t || t 	||}|
 |p`d}|jD ]}	|	|v smJ qeW d    n1 sxw   Y  t 	||}t |t|d|d	 W d    n1 sw   Y  W d    d S W d    d S 1 sw   Y  d S )
N)compressionr   r   )r  r   r   wrY  )r  r   r   r   r   r  )r-   r.   r3   r   r5   r   handleclosedsqueezedecompress_filer  r   r   )
r   r\   r   r  rx  r]   handlesfhtextcolr   r   r   test_to_csv_compression  sD   

"z*TestDataFrameToCSV.test_to_csv_compressionc           
      C   sx  t d}|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 g d }td|i|d}	|	j|dd t|ddgdd}t ||	 W d    d S 1 sw   Y  d S )N__tmp_to_csv_date_format__r&   rR  r    %Y%m%ddate_formatr   rf   c                 S      t | dS Nr  ri   strftimer   r   r   r   r   N  r   z<TestDataFrameToCSV.test_to_csv_date_format.<locals>.<lambda>c                 S   r  r  r  r   r   r   r   r   P  r   %Y-%m-%dc                 S   
   |  dS Nr  r  r   r   r   r   r   Y     
 c                 S   r  r  r  r   r   r   r   r   [  r  c                 S   r  r  r  r   r   r   r   r   g  r   c                 S   r  r  r  r   r   r   r   r   k  r  r   r   )
2000-01-01r  r  r   )r"   r   )r-   r.   r!   r   shiftr3   r   r   r5   Tr   r   )
r   r=   r   r|   r(  datetime_frame_intdatetime_frame_strdatetime_frame_columns	nat_index	nat_framer   r   r   test_to_csv_date_formatC  sJ   "z*TestDataFrameToCSV.test_to_csv_date_formattdr   10sc                 C   s   t dL}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 d    d S 1 sTw   Y  d S )Ncsv_date_format_with_dstz2013-10-26 23:00z2013-10-27 01:00zEurope/Londonr  infer)r   r   	ambiguousr;   r(   r   r    Tr   rf   utc)r-   r.   r
   r4   r/   r   r9   r6   r   r3   r   r   r!   r   r5   )r   r  r   timesry   
time_ranger\   r]   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	3}|j|d
d t|dd}t	|j
d
dd|_
t	|d d
dd|d< t|| W d    n1 sUw   Y  |t td	}|| t|}t|| W d    d S 1 sw   Y  d S )Nz
2015-01-01z
2015-12-31r  zEurope/Paris)r   r   r&   )r8   idxr    r  Tr   rf   r  r  zdatetime64[ns, Europe/Paris])r
   r4   _data_freqr   r-   r.   r3   r   r   r!   r   rT  r5   r   	to_picklero   read_pickle)r   r  r\   r   r]   r   r   r   ,test_to_csv_with_dst_transitions_with_pickle  s*   



"z?TestDataFrameToCSV.test_to_csv_with_dst_transitions_with_picklec           	      C   sb  t ddgddgdtjgddgd}g d	}t|}| }||ks%J |jd d
}||ks1J g d	}t|}|jtjd
}||ksGJ g d}t|}|jtjd
}||ks]J g d}t|}|jtj	d
}||kssJ d}t
jtj|d |jtjd
 W d    n1 sw   Y  t
jtj|d |jtjd d W d    n1 sw   Y  g d}t|}|jtjdd}||ksJ g d}t|}|jtjdd}||ksJ ddg}t|}tt|}t }|j|ddd | |ksJ t ddgddgddgd}|ddg}g d }t|}|jtjd
|ks/J d S )!NTFr  g	@*   rD   zb,c)c_boolc_floatc_intc_string),c_bool,c_float,c_int,c_string0,True,1.0,42.0,az1,False,3.2,,"b,c")r  )("","c_bool","c_float","c_int","c_string"z"0","True","1.0","42.0","a"z"1","False","3.2","","b,c")r
  z0,True,1.0,42.0,"a"z1,False,3.2,"","b,c"z%need to escape, but no escapechar setrR   )r  
escapechar)r  r	  z1,False,3.2,,b!,c!)z,c_bool,c_ffloat,c_int,c_stringr	  z1,False,3.2,,bf,cr   za,b,cz1,"test 
",3rX  r  r&   r*   r'   r   r   r  r#  rE   )z"a","b","c"z"1","3","5"z"2","4","6")r   r/   r0   r-   r  r3   r  QUOTE_MINIMAL	QUOTE_ALLr  rY   rZ   Errorr  r   r   r  	set_index)	r   r\   r  r   r]   rb   	text_rowsr  r  r   r   r   test_to_csv_quoting  sf   	







z&TestDataFrameToCSV.test_to_csv_quotingc                 C   s   g d}t j|dd}tg d|d}| }g d}t|}||ks&J d}|j|d}g d	}t|}||ks=J d
tdg}t j|dd}tg d|d}| }g d}t|}||ksdJ d S )N)
1990-01-01r  
3005-01-01r   )r   r  r    ),01990-01-01,4z2000-01-01,53005-01-01,6z%m-%d-%Yr  )r  z01-01-1990,4z01-01-2000,5z01-01-3005,6r  r  )r  r  z,5r  )ro   PeriodIndexr   r3   r-   r  r   )r   datesr!   r\   r]   r  r   r  r   r   r   test_period_index_date_overflow  s&   



z2TestDataFrameToCSV.test_period_index_date_overflowc                 C   s^   t g d}tg dg dg}||_g d}|j|d}g d}t|}||ks-J d S )N))rD   r&   )rD   r*   )rE   r&   )rE   r*   r   )r   r  r  r  )rD   rE   r   dr   )z,a,b,c,dz	0,1,2,3,4z	1,5,6,7,8)r   rW   r   r   r3   r-   r  )r   r   r\   r   r]   r  r   r   r   r   test_multi_index_header-  s   
z*TestDataFrameToCSV.test_multi_index_headerc                 C   sN   t g d}tg d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   reindexr3   r-   r7   )r   r!   r\   r   r]   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}g d}t|}td-}|j|dd tj|dd	}| d
}W d    n1 s7w   Y  W d    n1 sFw   Y  ||ksQJ d S )NrD   r&   r*   )rD   r  2z__test_gz_lineend.csv.gzFr    gzip)r  rX  )r   r-   r  r.   r3   r  r  r   )r   r\   r  r   r   r   r]   r   r   r   test_gz_lineendC  s   
z"TestDataFrameToCSV.test_gz_lineendc                 C   s<   t dtdddi}t }|| | }d|v sJ d S )NrD   z1/1/2000r   r   r  )r   r
   r   r3   r  )r   rK  r  r]   r   r   r   test_to_csv_numpy_16_bugO  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sJ d S )NFr  )r   r!   rW  r  r  z""
""
)r   r3   replace)r   r]   r   r   r   r   test_to_csv_na_quotingX  s   

z)TestDataFrameToCSV.test_to_csv_na_quotingc                 C   sb   t ddtjgd}|d d|d< |d d|d< | }g d}t|}||ks/J d S )NrF   r&   r   rE   Int16category)z,a,bz0,x,1z1,x,)r   ro   NArT  r3   r-   r  r  r   r   r   test_to_csv_categorical_and_eac  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s-J d S )	NrD   r   z
2020-01-02both)r  r(  z,az.0,"[2020-01-01 00:00:00, 2020-01-02 00:00:00]")r   ro   Intervalr	   rT  r3   r-   r  r  r   r   r   $test_to_csv_categorical_and_intervalm  s   
z7TestDataFrameToCSV.test_to_csv_categorical_and_interval)NNNNF)C__name__
__module____qualname__r   r@   rc   rs   r   r   r   rY   markparametrizer   slowr   r   r   filterwarningsr   r   r   r   r  r  r  r  r"  r)  r0  rQ  rV  ra  rd  ry  r|  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  ro   r   r  r  r  r  r  r   r#  r$  r&  r*  r-  r   r   r   r   r      s    &$
$

i	
	

 	0)



&		
!8
b		
r   )r  ior   r  numpyr/   rY   pandas.errorsr   pandasro   r   r   r   r   r   r	   r
   r   r   r   pandas._testing_testingr-   pandas.core.commoncorecommonrG  pandas.io.commonr   r   r   r   r   r   <module>   s    0