o
    iu                     @   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!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d/d0d1id2d1igd3d1id4d1igd1d1d5d1d1d6ggd7d8 Zd9d: Zd;d< Zd=d> Zd?d@ ZdAdB ZdCdD ZdEdF ZdGdH ZdIdJ Z dKdL Z!dMdN Z"e
jdOg dPdQdR Z#e
jjdSdT Z$dUdV Z%dWdX Z&dYdZ Z'd[d\ Z(d]d^ Z)d_d` Z*dadb Z+e
jdcdddgdedf Z,dgdh Z-didj Z.dkdl Z/dmdn Z0e
jdoe1g dpg dqgdrdsgg dtdudfe1g dvgg dtdwdxfe1dyg dzg g dtdwd{fe1dyg d|g g dtdwd}fgd~d Z2dd Z3e
jde45de45dgdd Z6dd Z7dd Z8dd Z9dd Z:dd Z;dd Z<dd Z=dd Z>dd Z?dd Z@dS )TestDataFrameToCSVc                 K   s*   ddd}|j di | t|fi |S )Nr   T	index_colparse_dates )updater   )selfpathkwargsparamsr   r   a/var/www/edux/Edux_v2/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|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s^J |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 d    d S 1 sw   Y  d S )N__tmp_to_csv_from_csv1__A   BcolumnsFheaderindexr"   index_labelr            )s1s2)tmensure_cleannpnanto_csvr"   
_with_freqr   assert_frame_equallenr   assert_almost_equalvaluesr   r   rangearange)r   float_framedatetime_framer   reconsdmr   r   r   test_to_csv_from_csv1#   s2   




"z(TestDataFrameToCSV.test_to_csv_from_csv1c           
   	   C   sZ  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'   ar>   b)xyzr"   r   )r   r&   r(   rD   )r   r&   r(   r   r&   r(   Fr   check_names)AAXYZr   z Writing 4 cols but got 2 aliasesmatchrH   rI   )r+   r,   r   r-   randomrandnr/   r   r1   r   from_tuplesr   copyr   pytestraises
ValueError)
r   r7   r   dfresultmidxcol_aliasesrsxpmsgr   r   r   test_to_csv_from_csv2J   s2   



"z(TestDataFrameToCSV.test_to_csv_from_csv2c                 C   s   t dM}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 sUw   Y  d S )N__tmp_to_csv_from_csv3__r'   r&   r>   F)moder    r   r%   c                 S      g | ]}t |qS r   int.0labelr   r   r   
<listcomp>t       z<TestDataFrameToCSV.test_to_csv_from_csv3.<locals>.<listcomp>c                 S   r_   r   r`   rb   r   r   r   re   u   rf   )r+   r,   r   r-   rN   rO   r/   pdconcatr   r   r1   )r   r   df1df2rZ   rY   r   r   r   test_to_csv_from_csv3j   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   rc   idtr   r   re   ~   rf   z<TestDataFrameToCSV.test_to_csv_from_csv4.<locals>.<listcomp>r'   c                    ro   r   r   rp   rr   r   r   re      rf   dt_indexnamer!   r%   T)check_index_type)r+   r,   rg   	Timedeltar   r5   r   r/   r   to_timedeltar"   r1   r   r   rU   rV   r   rr   r   test_to_csv_from_csv4x   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   rs   
tz_converttz)crV   timezone_framer   r   <lambda>   s   
 z:TestDataFrameToCSV.test_to_csv_from_csv5.<locals>.<lambda>r   C)r+   r,   r/   r   r1   )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   	chunksizer%   FrF   )ra   r+   makeCustomDataframer   r,   r/   r   r1   )r   r   NrU   cscolsr   rs_cr   r   r   test_to_csv_cols_reordering   s   
z.TestDataFrameToCSV.test_to_csv_cols_reorderingr   Nr?   r>   c                 C   s  d}t |d }t|d}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'   r=   r   r   r%   FrF   )ra   r+   r   r   r,   r/   r   	is_uniqueget_indexer_non_uniquetake
isinstancer   assert_series_equalr1   )r   r   r   r   rU   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   sn   |d u r
t | d }ttdd| d}|r5tjdt||D ]}t||< qtjd}t|| < t||< |S )Ng?20005min)freqperiodsr   d   )ra   listr
   r-   rN   randintr2   r   )nnnatsrq   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   FrF   N)r+   r,   r   r/   r   applyr   r1   )r   r   r   r)   r*   pthrU   r9   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r@   r   r   r   _to_uni   s   

z;TestDataFrameToCSV._return_result_expected.<locals>._to_unic                    s    g | ]} j d d |f jqS r   )ilocr4   rp   )r9   r   r   re   
  s     z>TestDataFrameToCSV._return_result_expected.<locals>.<listcomp>r&   rq   fO)rq   r   r   urs   pr   c                       g | ]} |qS r   r   rb   r   r   r   re     rf   dtypec                    r   r   r   rb   r   r   r   re     rf   rs   c                 S   r_   r   r	   rb   r   r   r   re     rf   c                 S   r_   r   r   rb   r   r   r   re     rf   r   c                 S   r_   r   r   rb   r   r   r   re   %  rf   c                    r   r   r   rb   r   r   r   re   2  rf   c                    r   r   r   rb   r   r   r   re   5  rf   c                 S   r_   r   r   rb   r   r   r   re   :  rf   c                 S   r_   r   r   rb   r   r   r   re   =  rf   c                 S   r_   r   r   rb   r   r   r   re   C  rf   c                 S   r_   r   r   rb   r   r   r   re   G  rf   )r   r5   r+   r,   r/   r   r   r   from_arraysr"   r   r-   arrayr   mapr	   to_timestampget)r   rU   r   r_dtypec_dtypernlvlcnlvldupe_colr   r   	delta_lvlixtype_mapidx_listcol_listr   )r   r9   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   rs   r   
r_idx_type
c_idx_typer   FrF   r+   r   r   r1   )r   r   rU   rV   expectedr   r   r   test_to_csv_nrowsO  s   z$TestDataFrameToCSV.test_to_csv_nrowszr_idx_type, c_idx_type))rq   rq   )r   r   )r   rs   )r   r   ncolsr&   r(   r'   r   c                 C   s:   t j||||d}| |d||\}}t j||dd d S )Nr   r   FrF   r   )r   r   r   r   r   rU   rV   r   r   r   r   test_to_csv_idx_typesX  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   FrF   r   )r   r   r   rU   rV   r   r   r   r   test_to_csv_idx_ncolsl  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   FrF   )r+   r   r   r   r"   r   r1   )r   r   rU   r   r   rV   r   r   r   r   test_to_csv_dup_colsv  s   

z'TestDataFrameToCSV.test_to_csv_dup_colsc                 C   s4   t tdd}| |d\}}tj||dd d S )Nr   r!   r   FrF   )r   r-   r6   r   r+   r1   )r   rU   rV   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   FrF   r   )r   r   rU   rV   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   rU   rV   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k  S )N      ?)r-   infr.   rN   randr   r   r   r   r         zETestDataFrameToCSV.test_to_csv_from_csv_w_some_infs.<locals>.<lambda>H)
r-   r.   r"   r   r+   r,   r/   r   r1   isinf)r   r7   r   r   r9   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,   r/   r   r1   r   )r   r7   r   r9   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!   )      	   int64r   c3)r+   r,   r   r/   r   r1   r   rz   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r>   r?   r   )aabbcc)r   r&   txttest)r   r&   r  r   )r   r/   )r   rU   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   rI   rJ   __tmp_to_csv_headers__r   F)r"   r    T)inplace)r   r+   r,   r/   r   r1   reset_index)r   from_dfto_dfr   r9   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}|j	|dd |j	|d	d
gd |	| | j
|ddgdd}tj||dd |j j|j jksUJ ||_ |}	|	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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 sdJ |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 sw   Y  W d    n	1 sw   Y  td1}|	d d 	| | 
|}
|	d d }g |_ t|
j|j t|
dks:J W d    d S 1 sFw   Y  d S )&Nr(   firstsecondnames__tmp_to_csv_multiindex__Fr   r   r   r   r   r&   r   rF   timefoor#   r%   r!   c                 S   s:   | du rddg} t tjjddddtjg d| d	d
dS )NTr  r  r   r   )r'   r'   )size))bahr  )r!  bar)banbazr  r  r   r   )r   r-   rN   r   r   rP   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   rE   T)r  r  zlen of z, but only 5 lines in filerL   z%cannot specify cols with a MultiIndexr"  r   )r"   r-   r6   r2   reshaper   r   r+   r,   r/   r   r1   r  r   r3   r4   r   comall_nonerR   rS   r   r   r5   	TypeErrorassert_index_equal)r   r7   r8   frame	old_indexarrays	new_indexr   rU   tsframer9   r&  rV   rq   r[   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__.csvr%   )r   r   r5   rg   interval_ranger+   r,   r/   r   rQ   r"   astyper   r1   )r   rU   r   rV   r   r   r   r   test_to_csv_interval_indexi  s   "
"z-TestDataFrameToCSV.test_to_csv_interval_indexc              	   C   s   t tjddtj}tj|d< td=}|j	|dd t
|}| }|d dd dks5J W d    n1 s?w   Y  W d    d S W d    d S 1 sWw   Y  d S )	Nr&   r   z!__tmp_to_csv_float32_nanrep__.csvi  )na_rep,r(   999)r   r-   rN   rO   r6  float32r.   r+   r,   r/   open	readlinessplit)r   rU   r   r   linesr   r   r   test_to_csv_float32_nanrepw  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,0r4  z__tmp_to_csv_withcommas__.csvr   r+   r,   r/   r   r1   r   rU   r   rj   r   r   r   test_to_csv_withcommas  s   

"z)TestDataFrameToCSV.test_to_csv_withcommasc                 C   sT  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 ]}|
||< qvqnt }|| 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   rp   ru   r   r   re     r   zMTestDataFrameToCSV.test_to_csv_mixed.<locals>.create_cols.<locals>.<listcomp>r   )r5   ru   r   ru   r   create_cols  s   z9TestDataFrameToCSV.test_to_csv_mixed.<locals>.create_colsr   r   float64float)r   r   r  ra   TboolrC   r  object20010101date   2   r&   r'   )axisr   )r   r   r   )r   r-   rN   rO   r6  r"   r	   r.   r   rg   rh   rF  r  bool_rI  r+   r,   r/   r   r1   )r   rE  df_floatdf_intdf_bool	df_objectdf_dtrU   dtypesr   r   r   filenamerY   r   r   r   test_to_csv_mixed  sD   


"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|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   rL     rF  r%  r   r%   r'   r   r  TrC   r  rJ  r&   )rN  ignore_indexrE   r   )z0.4z1.4z2.4r   r=   za.1r>   r   )r   r-   rN   rO   r   r5   r+   r,   r/   r   r   r1   r6  r"   r	   rg   rh   r   r   rename)r   rU   rV  rV   rP  rQ  rR  rS  rT  rq   r   r   r   r   test_to_csv_dups_cols  sJ   






"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   r\        ?r   g       @r   g      @Dr   r   r%   )r   r5   r   r+   r,   r/   r   r1   )r   r   r  rV  rY   r   r   r   test_to_csv_chunking  s   
"z'TestDataFrameToCSV.test_to_csv_chunkingc                 C   sn   t tjddd d d}t }|j|ddd t|d d}t|| W d    d S 1 s0w   Y  d S )Nr&   i r   r"   F)r    r"   r   )	r   r-   rN   rO   r+   r,   r/   r   r1   )r   rU   rV  rY   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   r%   FrF   )r   r   r   r   r+   r,   r/   r1   )r   f1rU   newdfr   r9   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-8r   r   r   r   Fr   r"   rA  rB  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)rl     בu   גu   דrl  rt  r`  rf  rg  r   rh  )r   r   r/   seekr   r+   r1   )r   bufrU   rj   r   r   r   test_to_csv_unicode_index_col  s   
z0TestDataFrameToCSV.test_to_csv_unicode_index_colc                 C   s6   t  }|| |d t|dd}t|| d S )Nr   r%   )r   r/   ru  r   r+   r1   )r   r7   rv  r9   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   rI   rJ   rK   rC   z%.2f)float_formatr   r%   )gQ?gq=
ףp?g=
ףp=?)gp=
ף(@r{  r|  rA  )r   rU   rV  rY   rZ   r   r   r   test_to_csv_float_format0  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 )
Nr>   r   r]  r9  c                 S   s   t j| ddS )N-)trim)r-   format_float_positionalr   r   r   r   r   I      zJTestDataFrameToCSV.test_to_csv_float_format_over_decimal.<locals>.<lambda>F)decimalr~  r"   )r>   z0.51)r   r/   r+   convert_rows_list_to_csv_strr   rU   rV   expected_rowsr   r   r   r   %test_to_csv_float_format_over_decimalD  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$  r4  Futf-8)r"   quotingr   )z"A","B"z1,"foo"z2,"bar"z3,"baz")r   r   r/   csvQUOTE_NONNUMERICgetvaluer+   r  )r   rU   rv  rV   r  r   r   r   r   !test_to_csv_unicodewriter_quotingP  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   r/   r  
QUOTE_NONEr  r+   r  )r   r   rU   rv  rV   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   r4  onetwothreer!   Fr#   )zA,Bzone,1,4ztwo,2,5z	three,3,6)r   r   r/   r+   r  r  )r   rU   rv  r  r   r   r   r   "test_to_csv_index_no_leading_commag  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   r4  r  r!   
lineterminators#   ,A,B
one,1,4
two,2,5
three,3,6
rb)r^   
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,   r/   r<  readoslinesepencode)r   rU   r   r   r   
os_linesepr   r   r   test_to_csv_lineterminatorsq  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)r>   r?   r?   r>   r>   r   r   r   Fr   r   )r   rg   Categoricalr   r/   r  r   )r   r   r*   resr1  rU   rj   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   r%   )r/   r   r   r   r   r+   r1   )r   r7   csv_strr9   r   r   r   test_to_csv_path_is_none  s   z+TestDataFrameToCSV.test_to_csv_path_is_nonezdf,encodingry  rz  r   r   r}  rC   )r3  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   wrg  )r  r   r   r   r   rh  )r+   r,   r/   r   r1   r   handleclosedsqueezedecompress_filer  r   r   )
r   rU   r   r  rV  rV   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&   r4  r!   %Y%m%ddate_formatr   r%   c                 S      t | dS Nr  ra   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-011/1/2000z1-1-2000r   )r   r   )r+   r,   r"   r   shiftr/   r   applymapr   r1   Tr   r   )
r   r8   r   rt   r  datetime_frame_intdatetime_frame_strdatetime_frame_columns	nat_index	nat_framer   r   r   test_to_csv_date_format  sR   "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   r%   utc)r+   r,   r
   r0   r-   r   r5   r2   r   r/   r   r   r"   r~   r1   )r   r  r   timesrq   
time_rangerU   rV   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&   )r4   idxr!   r  Tr   r%   r  r  zdatetime64[ns, Europe/Paris])r
   r0   _data_freqr   r+   r,   r/   r   r   r"   r~   r6  r1   r   	to_picklerg   read_pickle)r   r  rU   r   rV   r   r   r   ,test_to_csv_with_dst_transitions_with_pickleE  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	@*   r>   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 setrL   )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  ri  r&   r(   r'   r   r   r  r
  r?   )z"a","b","c"z"1","3","5"z"2","4","6")r   r-   r.   r+   r  r/   r  QUOTE_MINIMAL	QUOTE_ALLr  rR   rS   Errorr  r   r   r  	set_index)	r   rU   r  r   rV   r[   	text_rowsr  rv  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  )rg   PeriodIndexr   r/   r+   r  r   )r   datesr"   rU   rV   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))r>   r&   )r>   r(   )r?   r&   )r?   r(   r   )r   r  r  r  )r>   r?   r   dr   )z,a,b,c,dz	0,1,2,3,4z	1,5,6,7,8)r   rP   r   r   r/   r+   r  )r   r   rU   r    rV   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   reindexr/   r+   r3   )r   r"   rU   r   rV   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 )Nr>   r&   r(   )r>   r  2z__test_gz_lineend.csv.gzFr!   gzip)r  r  )r   r+   r  r,   r/   r  r  r   )r   rU   r  r   r   r   rV   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 )Nr>   r  r   )r   r  )r   r
   r   r/   r  )r   r,  rv  rV   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 )NFrk  )r    r"   r8  r  r  z""
""
)r   r/   replace)r   rV   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 )Nr@   r&   r   r?   Int16category)z,a,bz0,x,1z1,x,)r   rg   NAr6  r/   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 )	Nr>   z
2020-01-01z
2020-01-02both)r  r  z,az0,"[2020-01-01, 2020-01-02]")r   rg   Intervalr	   r6  r/   r+   r  r  r   r   r   $test_to_csv_categorical_and_interval  s   
z7TestDataFrameToCSV.test_to_csv_categorical_and_interval)NNNNF)A__name__
__module____qualname__r   r;   r\   rk   r{   r   r   rR   markparametrizer   slowr   r   r   r   r   r   r   r   r   r   r   r	  r  r  r2  r7  r@  rC  rW  r[  r_  ra  re  rj  rw  rx  r  r  r  r  r  r  r  r  r   r  r  rg   rx   r  r  r  r  r  r   r  r  r  r
  r  r   r   r   r   r      s    ' 
"

i

 
.2



&		
#<
b		
r   )r  ior   r  numpyr-   rR   pandas.errorsr   pandasrg   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    ,