o
    ҷh                     @   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                   @   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#e
jdPg dQdRdS Z$e
jjdTdU Z%dVdW Z&dXdY Z'dZd[ Z(d\d] Z)d^d_ Z*d`da Z+dbdc Z,e
jddddegdfdg Z-dhdi Z.djdk Z/dldm Z0dndo Z1e
jdpe2g dqg drgdsdtgg dudvdfe2g dwgg dudxdyfe2dzg d{g g dudxd|fe2dzg d}g g dudxd~fgdd Z3dd Z4e
jde56de56dgdd Z7dd Z8dd Z9dd Z:dd Z;dd Z<dd Z=dd Z>dd Z?dd Z@dd ZAdS )TestDataFrameToCSVc                 K   s(   ddi}|j di | t|fi |S )N	index_colr    )updater   )selfpathkwargsparamsr   r   Y/var/www/html/venv/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&   arC   b)xyzr    r   )r   r%   r)   rI   )r   r%   r)   r   r%   r)   Fr$   check_names)AAXYZr   z Writing 4 cols but got 2 aliasesmatchrM   rN   )r,   r-   r   r.   randomdefault_rngstandard_normalr2   r   r4   r   from_tuplesr   copyr   pytestraises
ValueError)
r   r;   r   dfresultmidxcol_aliasesrsxpmsgr   r   r   test_to_csv_from_csv2I   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%   rC   F)moder   r   r   c                 S      g | ]}t |qS r   int.0labelr   r   r   
<listcomp>v       z<TestDataFrameToCSV.test_to_csv_from_csv3.<locals>.<listcomp>c                 S   rf   r   rg   ri   r   r   r   rl   w   rm   )r,   r-   r   r.   rS   rT   rU   r2   pdconcatr   r   r4   )r   r   df1df2r`   r_   r   r   r   test_to_csv_from_csv3m   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   rj   idtr   r   rl      rm   z<TestDataFrameToCSV.test_to_csv_from_csv4.<locals>.<listcomp>r&   c                    rv   r   r   rw   ry   r   r   rl      rm   dt_indexnamer   re   T)check_index_type)r,   r-   rn   	Timedeltar   r8   r   r2   r   to_timedeltar    r4   r   r   r[   r\   r   ry   r   test_to_csv_from_csv4z   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   rz   
tz_converttz)cr\   timezone_framer   r   <lambda>   s   
 z:TestDataFrameToCSV.test_to_csv_from_csv5.<locals>.<lambda>r   C)r,   r-   r2   r   r4   )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|d}|j}|d |d g}t }|j|||d t|dd}W d    n1 s6w   Y  tj|| |dd	 d S )
Nr         @r&   r)   r   r   	chunksizere   FrK   )rh   r,   makeCustomDataframer   r-   r2   r   r4   )r   r   Nr[   cscolsr   rs_cr   r   r   test_to_csv_cols_reordering   s   
z.TestDataFrameToCSV.test_to_csv_cols_reorderingr   NrD   rC   c                 C   s  d}t |d }t|d}g d|_t h}|j|||d t|dd}|d urc|jjr2||_n|j|\}}|j	||_|D ]}	||	 }
||	 }t
|
trYt|
| qCtj|
|dd	 qCn|j|_tj||dd	 W d    d S W d    d S 1 sw   Y  d S )
Nr   r   r&   rB   r   r   re   FrK   )rh   r,   r   r   r-   r2   r   	is_uniqueget_indexer_non_uniquetake
isinstancer   assert_series_equalr4   )r   r   r   r   r[   r   r   indexermissingr   obj_dfobj_rsr   r   r   test_to_csv_new_dupe_cols   s0   



"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   )	rh   listr
   r.   rS   rT   integersr5   r   )nnnatsrx   r   r   r   make_dtnat_arr   s   

z<TestDataFrameToCSV.test_to_csv_dtnat.<locals>.make_dtnat_arr  r   r   z1.csvrC   rD   r   FrK   N)r,   r-   r   r2   r   applyr   r4   )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rE   r   r   r   _to_uni   s   

z;TestDataFrameToCSV._return_result_expected.<locals>._to_unic                    s    g | ]} j d d |f jqS r   )r0   r7   rw   )r=   r   r   rl          z>TestDataFrameToCSV._return_result_expected.<locals>.<listcomp>r%   rx   fO)rx   r   r   urz   pr   c                       g | ]} |qS r   r   ri   r   r   r   rl     rm   r'   c                    r   r   r   ri   r   r   r   rl     rm   rz   c                 S   rf   r   r	   ri   r   r   r   rl     rm   c                 S   rf   r   r   ri   r   r   r   rl     rm   r   c                 S   rf   r   r   ri   r   r   r   rl   #  rm   c                    r   r   r   ri   r   r   r   rl   0  rm   c                    r   r   r   ri   r   r   r   rl   3  rm   c                 S   rf   r   r   ri   r   r   r   rl   8  rm   c                 S   rf   r   r   ri   r   r   r   rl   ;  rm   c                 S   rf   r   r   ri   r   r   r   rl   A  rm   c                 S   rf   r   r   ri   r   r   r   rl   E  rm   )r   r8   r,   r-   r2   r   r   r   from_arraysr    r0   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   s:   t j|dddd}| |ddd\}}t j||dd d S )N   rz   r   
r_idx_type
c_idx_typer   FrK   r,   r   r   r4   )r   r   r[   r\   expectedr   r   r   test_to_csv_nrowsM  s   z$TestDataFrameToCSV.test_to_csv_nrowszr_idx_type, c_idx_type))rx   rx   )r   r   )r   rz   )r   r   ncolsr%   r)   r&   r   z3ignore:PeriodDtype\[B\] is deprecated:FutureWarningc                 C   s:   t j||||d}| |d||\}}t j||dd d S )Nr   r   FrK   r   )r   r   r   r   r   r[   r\   r   r   r   r   test_to_csv_idx_typesV  s   
z(TestDataFrameToCSV.test_to_csv_idx_types)r   b   r   r   r   r   r   r   r   r   r   r   r   r   c                 C   s0   t ||}| |d\}}t j||dd d S Nr   FrK   r   )r   r   r   r[   r\   r   r   r   r   test_to_csv_idx_ncolsk  s   z(TestDataFrameToCSV.test_to_csv_idx_ncols)r   r   r   r   r   r   c                 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&   duper)   rduper   T)r   FrK   )r,   r   r   r   r    r   r4   )r   r   r[   r   r   r\   r   r   r   r   test_to_csv_dup_colsu  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.   r9   r:   r   r,   r4   )r   r[   r\   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   FrK   r   )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_paramsr   r)   r   c_idx_nlevelsr   r   r   )r   r   c                 C   s@   t j||fi |}| j|dfi |\}}t j||dd d S r   r   )r   r   	df_paramsfunc_paramsr   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.   infr/   rS   rT   r   r   r   r   r     r   zETestDataFrameToCSV.test_to_csv_from_csv_w_some_infs.<locals>.<lambda>H)
r.   r/   r    r   r,   r-   r2   r   r4   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-   r2   r   r4   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   r2   r   r4   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rC   rD   r   )aabbcc)r   r%   txttest)r   r%   r  r   )r   r2   )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   rN   rO   __tmp_to_csv_headers__r   F)r    r   T)inplace)r   r,   r-   r2   r   r4   reset_index)r   from_dfto_dfr   r=   return_valuer   r   r   test_to_csv_headers  s   

"z&TestDataFrameToCSV.test_to_csv_headersc              
   C   s  |}|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5}d'dd}tjddddd}|
| t|g dddgd }t|| tjddddd}|
| t|g ddd }t|| tjdd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 sw   Y  qd%}tjt|d |j
|dd&gd W d    n	1 sw   Y  W d    n	1 s%w   Y  t	d1}|	d d 
| | |}
|	d d }g |_ t|
j|j t|
dksXJ W d    d S 1 sdw   Y  d S )(Nr)   r'   firstsecondnames__tmp_to_csv_multiindex__Fr   r   r   r   r   r%   r$   rK   timefoor"   zCould not infer formatrQ   Tre   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 )NTr  r  r)   r   r   rA   )size))bahr"  )r$  bar)banbazr  r:   r   r(   )r   r.   rS   rT   r   r   rV   r  r   r   r   _make_frame  s   z>TestDataFrameToCSV.test_to_csv_multiindex.<locals>._make_framer   r&   r   r   )r   r%   r)   r&   )r   r   rJ   )r  r  zlen of z, but only 5 lines in filez%cannot specify cols with a MultiIndexr%  r   )r    r.   r9   r5   r:   reshaper   r   r,   r-   r2   r   r4   r  assert_produces_warningUserWarningr   r6   r7   r   comall_nonerX   rY   r   r   r8   	TypeErrorassert_index_equal)r   r;   r<   frame	old_indexarrays	new_indexr   r[   tsframer=   r)  r\   rx   ra   expr   r   r   test_to_csv_multiindex  s    

,






G
$z)TestDataFrameToCSV.test_to_csv_multiindexc                 C   s   t tdtddtddd}td&}|| | j|dd}|	 }|j
t|_
t|| W d    d S 1 s?w   Y  d S )Nabcr&   r   r   r   r   z!__tmp_to_csv_interval_index__.csvre   )r   r   r8   rn   interval_ranger,   r-   r2   r   rW   r    astyper   r4   )r   r[   r   r\   r   r   r   r   test_to_csv_interval_indexg  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.   rS   rT   rU   r;  float32r/   r,   r-   r2   open	readlinessplit)r   r[   r   r   linesr   r   r   test_to_csv_float32_nanrepu  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,0r9  z__tmp_to_csv_withcommas__.csvr   r,   r-   r2   r   r4   r   r[   r   rq   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   rw   r|   r   r   rl     s    zMTestDataFrameToCSV.test_to_csv_mixed.<locals>.create_cols.<locals>.<listcomp>r   )r8   r|   r   r|   r   create_cols  s   z9TestDataFrameToCSV.test_to_csv_mixed.<locals>.create_colsr)   )r   r   float64float)r(   r   r:   rh   TboolrH   r"  object20010101nsdate   2   r%   r&   )axisr   )r   r(   r!   )r   r.   rS   rT   rU   r;  r    r	   as_unitr/   r0   rn   ro   rM  r:   bool_rP  r,   r-   r2   r   r4   )r   rL  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    n1 sw   Y  d}
t|
d}g d|_t "}|	| t
|dd}|jddid}t|| W d    d S 1 sw   Y  d S )Nr)   )r   rT     rM  r(  r   re   )r   r&   r'   r:   Tr&   rH   r"  rQ  rR  r%   )rV  ignore_indexrJ   r   )z0.4z1.4z2.4r   rB   za.1rC   r   )r   r.   rS   rT   rU   r   r8   r,   r-   r2   r   r   r4   r;  r    r	   rW  rn   ro   r   r   rename)r   r[   r_  r\   rY  rZ  r[  r\  r]  rx   r   r   r   r   test_to_csv_dups_cols  sV   






"z(TestDataFrameToCSV.test_to_csv_dups_colsr   )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   re        ?r   g       @r   g      @Dr   r   re   )r   r8   r   r,   r-   r2   r   r4   )r   r   r  r_  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   r    z/pandas.io.formats.csvs._DEFAULT_CHUNKSIZE_CELLSF)r   r    r   )r   r.   rS   rT   rU   r,   r-   contextsetattrr2   r   r4   )r   monkeypatchr   r[   r_  mr_   r   r   r   !test_to_csv_wide_frame_formatting  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   re   FrK   )r   r   r   r   r,   r-   r2   r4   )r   f1r[   newdfr   r=   r   r   r   test_to_csv_bug  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-8r?  r   r   r   Fr   r    rH  rI  r   r   r   test_to_csv_unicode  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)rx     בu   גu   דrx  r  ri  rs  r?  r   rt  )r   r   r2   seekr   r,   r4   )r   bufr[   rq   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   re   )r   r2   r  r   r,   r4   )r   r;   r  r=   r   r   r   test_to_csv_stringio3  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   rN   rO   rP   rH   z%.2f)float_formatr   re   )gQ?gq=
ףp?g=
ףp=?)gp=
ף(@r  r  rH  )r   r[   r_  r_   r`   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 )
NrC   r   rf  r@  c                 S   s   t j| ddS )N-)trim)r.   format_float_positionalr   r   r   r   r   Q      zJTestDataFrameToCSV.test_to_csv_float_format_over_decimal.<locals>.<lambda>F)decimalr  r    )rC   z0.51)r   r2   r,   convert_rows_list_to_csv_strr   r[   r\   expected_rowsr   r   r   r   %test_to_csv_float_format_over_decimalL  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  )r"  r%  r'  r9  Fr>  )r    quotingr   )z"A","B"z1,"foo"z2,"bar"z3,"baz")r   r   r2   csvQUOTE_NONNUMERICgetvaluer,   r  )r   r[   r  r\   r  r   r   r   r   !test_to_csv_unicodewriter_quotingX  s   
z4TestDataFrameToCSV.test_to_csv_unicodewriter_quotingr   r>  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   r2   r  
QUOTE_NONEr  r,   r  )r   r   r[   r  r\   r  r   r   r   r   test_to_csv_quote_nonec  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  r9  onetwothreer   Fr"   )zA,Bzone,1,4ztwo,2,5z	three,3,6)r   r   r2   r,   r  r  )r   r[   r  r  r   r   r   r   "test_to_csv_index_no_leading_commao  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  r9  r  r   
lineterminators#   ,A,B
one,1,4
two,2,5
three,3,6
rb)rd   
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-   r2   rC  readoslinesepencode)r   r[   r   r   r   
os_linesepr   r   r   test_to_csv_lineterminatorsy  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)rC   rD   rD   rC   rC   r   r   r   Fr   r   )r   rn   Categoricalr   r2   r  r   )r   r   r+   resr6  r[   rq   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   re   )r2   r   r   r   r   r,   r4   )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  rH   )r8  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   wr?  )r  r   r   r   r   rt  )r,   r-   r2   r   r4   r   handleclosedsqueezedecompress_filer  r   r   )
r   r[   r   r  r_  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%   r9  r   %Y%m%ddate_formatr   re   c                 S      t | dS Nr  rh   strftimer   r   r   r   r     r  z<TestDataFrameToCSV.test_to_csv_date_format.<locals>.<lambda>c                 S   r  r  r  r   r   r   r   r     r  %Y-%m-%dc                 S   
   |  dS Nr  r  r   r   r   r   r        
 c                 S   r  r  r  r   r   r   r   r     r  c                 S   r  r  r  r   r   r   r   r     r  c                 S   r  r  r  r   r   r   r   r      r  r   r   )
2000-01-01r  r  r   )r!   r   )r,   r-   r    r   shiftr2   r   r   r4   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_format  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   re   utc)r,   r-   r
   r3   r.   r   r8   r5   r   r2   r   r   r    r   r4   )r   r  r   timesrx   
time_ranger[   r\   r   r   r    test_to_csv_with_dst_transitions0  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%   )r7   idxr   r  Tr   re   r  r  zdatetime64[ns, Europe/Paris])r
   r3   _data_freqr   r,   r-   r2   r   r   r    r   r;  r4   r   	to_picklern   read_pickle)r   r  r[   r   r\   r   r   r   ,test_to_csv_with_dst_transitions_with_pickleH  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 )!NTFrf  g	@*   rC   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 setrQ   )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 
",3r>  ru  r%   r)   r&   r   r   r  r  rD   )z"a","b","c"z"1","3","5"z"2","4","6")r   r.   r/   r,   r  r2   r  QUOTE_MINIMAL	QUOTE_ALLr  rX   rY   Errorr  r   r   r  	set_index)	r   r[   r  r   r\   ra   	text_rowsr  r  r   r   r   test_to_csv_quotinga  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-01rg  )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   )rn   PeriodIndexr   r2   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))rC   r%   )rC   r)   )rD   r%   )rD   r)   r   )r   r  r  r	  )rC   rD   r   dr   )z,a,b,c,dz	0,1,2,3,4z	1,5,6,7,8)r   rV   r   r   r2   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   reindexr2   r,   r6   )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 )NrC   r%   r)   )rC   r  2z__test_gz_lineend.csv.gzFr   gzip)r  r>  )r   r,   r  r-   r2   r  r  r   )r   r[   r  r   r   r   r\   r   r   r   test_gz_lineend  s   
z"TestDataFrameToCSV.test_gz_lineendc                 C   s<   t dtdddi}t }|| | }d|v sJ d S )NrC   z1/1/2000r   )r   r  )r   r
   r   r2   r  )r   r1  r  r\   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sJ d S )NFrw  )r   r    r=  r  r  z""
""
)r   r2   replace)r   r\   r   r   r   r   test_to_csv_na_quoting  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 )NrE   r%   r   rD   Int16category)z,a,bz0,x,1z1,x,)r   rn   NAr;  r2   r,   r  r  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s-J d S )	NrC   z
2020-01-01z
2020-01-02both)r  r  z,az0,"[2020-01-01, 2020-01-02]")r   rn   Intervalr	   r;  r2   r,   r  r  r   r   r   $test_to_csv_categorical_and_interval"  s   
z7TestDataFrameToCSV.test_to_csv_categorical_and_interval)NNNNF)B__name__
__module____qualname__r   r?   rb   rr   r   r   r   rX   markparametrizer   slowr   r   r   filterwarningsr   r   r   r   r   r   r   r  r  r  r  r7  r<  rG  rJ  r`  rd  rh  rn  rr  rv  r  r  r  r  r  r  r  r  r  r  r   r  r  rn   r   r  r  r  r  r  r	  r  r  r  r  r  r   r   r   r   r      s    &$
!

i


 	07



&		
!8
b		
r   )r  ior   r  numpyr.   rX   pandas.errorsr   pandasrn   r   r   r   r   r   r	   r
   r   r   pandas._testing_testingr,   pandas.core.commoncorecommonr-  pandas.io.commonr   r   r   r   r   r   <module>   s    ,