B
    `MV                 @   s^   d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZm	Z	 d dl
mZ G dd dZdS )    N)	DataFramecompatc            	   @   s  e Zd Zejjdejkdddd Zdd Z	dd	 Z
d
d Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zejdejdggdggdgddfejdgd ggdgdggdd!gdd"fgejd#ejejgd$d% Zd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zejje d0dd1d2 Z d3d4 Z!ejd5d6d7gejd8d6d7gd9d: Z"d;d< Z#d=d> Z$ejd?d@dAgejdBdCdDdEgdFdG Z%ejdHdIgdJdK Z&dLdM Z'dNdO Z(ejdPdQdRdSgdTdU Z)dCS )V	TestToCSV)         z?Python csv library bug (see https://bugs.python.org/issue32255))reasonc          
   C   s   t d dg}d}td<}|j|d d d t|d}| |ksHtW d Q R X W d Q R X t dd g}d}td<}|j|d d d t|d}| |kstW d Q R X W d Q R X d S )N   z""
1.0
ztest.csv)headerindexrz1.0
""
)r   tmensure_cleanto_csvopenreadAssertionError)selfZdf1Z	expected1pathfZdf2Z	expected2 r   R/home/dcms/DCMS/lib/python3.7/site-packages/pandas/tests/io/formats/test_to_csv.pytest_to_csv_with_single_column   s    $z(TestToCSV.test_to_csv_with_single_columnc          	   C   sN   t dddddgi}td&}|| ttj|dd| W d Q R X d S )	NcolZAAAAAu
   ÄÄÄÄÄu
   ßßßßßu   聞聞聞聞聞ztest.csvr   )	index_col)r   r   r   r   assert_frame_equalpdread_csv)r   dfr   r   r   r   test_to_csv_defualt_encoding.   s    
z&TestToCSV.test_to_csv_defualt_encodingc          
   C   s   t dddgi}d}td:}|j|dd t|d}| |ksJtW d Q R X W d Q R X d}td<}|j|dd	d
 t|d}| |kstW d Q R X W d Q R X td0}tjt	dd |j|dd d
 W d Q R X W d Q R X d S )Nr   r	      z"","col"
"0","1"
"1","2"
ztest.csv)quotingr   z$$,$col$
$0$,$1$
$1$,$2$
$)r!   	quotecharr#   )match)
r   r   r   r   r   r   r   pytestraises	TypeError)r   r   expectedr   r   r   r   r   test_to_csv_quotechar7   s    $$zTestToCSV.test_to_csv_quotecharc          
   C   s   t dddgi}d}td<}|j|ddd t|d	}| |ksLtW d Q R X W d Q R X d
dlm} td.}t	j
|dd |j|dd W d Q R X W d Q R X d S )Nr   za"az"bb"z!"","col"
"0","a""a"
"1","""bb"""
ztest.csvr	   T)r!   doublequoter   r   )Error
escapechar)r$   F)r*   )r   r   r   r   r   r   r   _csvr+   r%   r&   )r   r   r(   r   r   r+   r   r   r   test_to_csv_doublequoteS   s    $z!TestToCSV.test_to_csv_doublequotec          
   C   s   t dddgi}d}td>}|j|dddd	 t|d
}| |ksNtW d Q R X W d Q R X t dddgi}d}td<}|j|ddd t|d
}| |kstW d Q R X W d Q R X d S )Nr   za"az"bb"z!"","col"
"0","a\"a"
"1","\"bb\""
ztest.csvr	   F\)r!   r*   r,   r   za,az,bb,z,col
0,a\,a
1,\,bb\,
r   )r!   r,   )r   r   r   r   r   r   r   )r   r   r(   r   r   r   r   r   test_to_csv_escapecharf   s    $z TestToCSV.test_to_csv_escapecharc             C   s8   t dddgi}dddg}t|}| |ks4td S )Nr   r	   r    z,colz0,1z1,2)r   r   convert_rows_list_to_csv_strr   r   )r   r   expected_rowsr(   r   r   r   test_csv_to_string   s    

zTestToCSV.test_csv_to_stringc             C   s4  t dgdgdgd}ddg}t|}| |ks8tddg}t|}|jd	d
d|ks`tddg}t|}|jdd|kstddg}t|}|jd	d
dd|kstt ddgddgdd}dddg}t|}|jddd|kst|djdd|kst|ddgjdd|ks0td S )Nr	   ag333333$@)Zcol1Zcol2Zcol3z,col1,col2,col3z
0,1,a,10.1z;col1;col2;col3z
0;1;a;10,1,;)decimalsepz0,1,a,10.10z%.2f)float_formatz0;1;a;10,10)r7   r8   r9   r   g?g@gffffff
@)r4   bcza,b,cz	0^0,2^2,1z	1^1,3^3,1F^)r   r7   )r7   r:   )r   r   r1   r   r   r   	set_index)r   r   r2   Zexpected_defaultZexpected_european_excelZexpected_float_format_defaultZexpected_float_formatr(   r   r   r   test_to_csv_decimal   s(    






zTestToCSV.test_to_csv_decimalc             C   sj   t ddgddgdd}dddg}t|}|d	jd
d|ksHt|d	dgjd
d|ksftd S )Nr   r	   g@gffffff
@)r4   r:   r;   za,b,cz0,2.20,1z1,3.30,1r4   z%.2f)r9   r:   )r   r   r   r1   r=   r   r   )r   r   r2   r(   r   r   r   test_to_csv_float_format   s
    

z"TestToCSV.test_to_csv_float_formatc             C   s  t dtjgddgddgd}dddg}t|}|d	jd
d|ksLt|d	dgjd
d|ksjtt tjddgddgd}dddg}t|}|d	jd
d|kst|d	dgjd
d|kstt dddgddgd}dddg}t|}|d	jd
d|kst|d	dgjd
d|ks8tt	d	tj
dgjdd}tddddg}||ksrttj	d	tj
dgddjdd}||kstd S )Nr   r	   r    r   )r4   r:   r;   za,b,cz0.0,0,2z_,1,3r4   _)na_repr:   z_,0,2z0,0,2z0,1,3r;   ZZZZZZz,0z0,az1,ZZZZZz2,cstring)Zdtype)r   npNaNr   r1   r=   r   r   r   SeriesZNA)r   r   r2   r(   csvr   r   r   test_to_csv_na_rep   s(    





 zTestToCSV.test_to_csv_na_repc       	      C   sL  t dtjddddi}t dtjddddi}ddd	d
ddg}t|}| |ksZtddddddg}t|}|jdd|kstddddddg}t|}|jdd|kstddddddg}t|}| |kst|jdd|kstd|d< d|d < d!d"g}t|}|tjdd#d$dg}|	 jdd|ksHtd S )%NAZ20130101r   s)Zperiodsfreqdz,Az0,2013-01-01 00:00:00z1,2013-01-01 00:00:01z2,2013-01-01 00:00:02z3,2013-01-01 00:00:03z4,2013-01-01 00:00:04z1,2013-01-02 00:00:00z2,2013-01-03 00:00:00z3,2013-01-04 00:00:00z4,2013-01-05 00:00:00z%Y-%m-%d %H:%M:%S)Zdate_formatz0,2013-01-01z1,2013-01-01z2,2013-01-01z3,2013-01-01z4,2013-01-01z%Y-%m-%dz1,2013-01-02z2,2013-01-03z3,2013-01-04z4,2013-01-05r   Br	   CzA,B,Cz2013-01-01,0,1Z1h)keyrJ   )
r   r   Z
date_ranger   r1   r   r   groupbyZGrouperZmean)	r   Zdf_secZdf_dayr2   Zexpected_default_secZexpected_ymdhms_dayZexpected_ymd_secZexpected_default_dayZdf_sec_groupedr   r   r   test_to_csv_date_format   sR    




z!TestToCSV.test_to_csv_date_formatc             C   sX  t dgtjdgdggd}dddg}t|}| |ksBtdddg}t|}|jd	d
|ksjtt dgtjdgdggtjdgdggd}dddg}t|}| |kstdddg}t|}|jd	d
|kstt dgtjdgdggd}dddg}t|}| |ks*tdddg}t|}|jd	d
|ksTtd S )Nr	   r    )columnsz,1z,2z0,112F)r   )rQ   r   z,,1z,,2z1,2,1foobarz,fooz,bar)r   r   
MultiIndexZfrom_arraysr   r1   r   r   )r   r   Zexp_rowsexpr   r   r   test_to_csv_multi_index  s0    











z!TestToCSV.test_to_csv_multi_indexzind,expectedg      ?r   x)levelscodesnameszx,data
1.0,1
g       @yzx,y,data
1.0,2.0,1
klassc             C   s0   |t jdg|ddjddd}||ks,td S )Nr	   data)name
T)line_terminatorr
   )r   rE   r   r   )r   indr(   r^   resultr   r   r   $test_to_csv_single_level_multi_index;  s    
z.TestToCSV.test_to_csv_single_level_multi_indexc          
   C   st   dddgidddgig}t |}d}td:}|j|dd	 t|d
}| |ks\tW d Q R X W d Q R X d S )Nr\   rT   rU   bazquxz-,names
0,"['foo', 'bar']"
1,"['baz', 'qux']"
zstr_test.csvascii)encodingr   )r   r   r   r   r   r   r   r   )r   	str_arrayr   expected_asciir   r   r   r   r   test_to_csv_string_array_asciiR  s    
z(TestToCSV.test_to_csv_string_array_asciic          
   C   st   dddgidddgig}t |}d}td:}|j|dd	 t|d
}| |ks\tW d Q R X W d Q R X d S )Nr\   rT   rU   rf   rg   z-,names
0,"['foo', 'bar']"
1,"['baz', 'qux']"
zunicode_test.csvzutf-8)ri   r   )r   r   r   r   r   r   r   r   )r   rj   r   Zexpected_utf8r   r   r   r   r   test_to_csv_string_array_utf8`  s    
z'TestToCSV.test_to_csv_string_array_utf8c       	   
   C   s<  dddgdddgd}t |}tdf}tjd	}d
| d | d | d | }|j|dd t|d}|	 |kst
W d Q R X W d Q R X td@}d}|j|ddd t|d}|	 |kst
W d Q R X W d Q R X tdB}d}|j|ddd t|d}|	 |ks$t
W d Q R X W d Q R X d S )Nr	   r    r   abczd
efzg
h

i)intZstr_lfzlf_test.csvzutf-8s
   int,str_lfs   1,abcs   2,"d
ef"s
   3,"g
h

i"F)r   rbs%   int,str_lf
1,abc
2,"d
ef"
3,"g
h

i"
ra   )rb   r   s)   int,str_lf
1,abc
2,"d
ef"
3,"g
h

i"
z
)r   r   r   r   oslinesepencoder   r   r   r   )	r   r_   r   r   
os_linesepexpected_noargr   expected_lfexpected_crlfr   r   r   test_to_csv_string_with_lfn  s$    
	 $$z$TestToCSV.test_to_csv_string_with_lfc       	   
   C   s<  dddgdddgd}t |}tdf}tjd	}d
| d | d | d | }|j|dd t|d}|	 |kst
W d Q R X W d Q R X td@}d}|j|ddd t|d}|	 |kst
W d Q R X W d Q R X tdB}d}|j|ddd t|d}|	 |ks$t
W d Q R X W d Q R X d S )Nr	   r    r   rn   zd
efz	g
h

i)ro   Zstr_crlfzcrlf_test.csvzutf-8s   int,str_crlfs   1,abcs	   2,"d
ef"s   3,"g
h

i"F)r   rp   s+   int,str_crlf
1,abc
2,"d
ef"
3,"g
h

i"
ra   )rb   r   s/   int,str_crlf
1,abc
2,"d
ef"
3,"g
h

i"
z
)r   r   r   r   rq   rr   rs   r   r   r   r   )	r   r_   r   r   rt   ru   r   rv   rw   r   r   r   test_to_csv_string_with_crlf  s$    
	 $$z&TestToCSV.test_to_csv_string_with_crlfc             C   sh   t jddgddggddgd}dd	d
g}t|}|jtjdd | }|j|ksXt	tjj
rdt	d S )NrT   rU   rf   rg   Zname_1Zname_2)rQ   z,name_1,name_2z	0,foo,barz	1,baz,quxrh   )ri   )r   r   r   r1   r   sysstdoutZ
readouterroutr   closed)r   Zcapsysr   r2   rk   Zcapturedr   r   r   test_to_csv_stdout_file  s    

z!TestToCSV.test_to_csv_stdout_filezEspecially in Windows, file stream should not be passedto csv writer without newline='' option.(https://docs.python.org/3.6/library/csv.html#csv.writer)c          
   C   s   t ddddgi}d}td\}t|d }|d |j|d d d	 W d Q R X t|d
}| |ksptW d Q R X W d Q R X d S )Nr4   rY   r]   zzmanual header
x
y
z
ztest.txtwzmanual header
)r
   r   r   )	r   r   r   r   r   writer   r   r   )r   r   r(   r   r   r   r   r   test_to_csv_write_to_open_file  s    

z(TestToCSV.test_to_csv_write_to_open_filec          
   C   s   t ddddgi}dddg}dt| }tdf}t|ddd	 }|d |j|d d d
 W d Q R X t|d}| t	|dkst
W d Q R X W d Q R X d S )Nr4   rY   r]   r   zmanual header
ztest.txtr    )newline)r
   r   rp   zutf-8)r   r   r   r1   r   r   r   r   r   bytesr   )r   r   r2   r(   r   r   r   r   r   /test_to_csv_write_to_open_file_with_newline_py3  s    

z9TestToCSV.test_to_csv_write_to_open_file_with_newline_py3to_inferTF
read_inferc          	   C   s   |}|dkrt | d d}|dkr2|d7 }n||7 }tddgi}|rPdn|}|r\dn|}t|0}	|j|	|d	 tj|	d
|d}
t|
| W d Q R X d S )Nzipz is not supported for to_csvztest.gzipgzrH   r	   infer)compressionr   )r   r   )	r%   skipr   r   r   r   r   r   r   )r   compression_onlyr   r   r   filenamer   Zto_compressionZread_compressionr   rd   r   r   r   test_to_csv_compression  s    
z!TestToCSV.test_to_csv_compressionc          	   C   sp   |}t ddgi}d}||dkr$dn|7 }t|2}|j|d|id tj|dd	}t|| W d Q R X d S )
NABCr	   zto_csv_compress_as_dict.r   r   method)r   r   )r   )r   r   r   r   r   r   r   )r   r   r   r   r   r   Zread_dfr   r   r   test_to_csv_compression_dict  s    z&TestToCSV.test_to_csv_compression_dictc          
   C   s\   t ddgi}ddi}d}td.}tjt|d |j||d W d Q R X W d Q R X d S )	Nr   r	   Zsome_optionTzmust have key 'method'zout.zip)r$   )r   )r   r   r   r%   r&   
ValueErrorr   )r   r   r   msgr   r   r   r   -test_to_csv_compression_dict_no_method_raises  s    z7TestToCSV.test_to_csv_compression_dict_no_method_raisesr   r   r   archive_nameNztest_to_csv.csvztest_to_csv.zipc       	   	   C   s   ddl m} tddgi}tdp}|j|||dd ||}|d krN|n|}tj|}t	|j
dkspttj|j
d j}||kstW d Q R X d S )Nr   )ZipFiler   r	   zto_csv_archive_name.zip)r   r   )r   )zipfiler   r   r   r   r   rq   r   basenamelenfilelistr   r   )	r   r   r   r   r   r   ZzpZexpected_arcnameZarchived_filer   r   r   test_to_csv_zip_arguments  s    z#TestToCSV.test_to_csv_zip_argumentsdf_new_typeZInt64c             C   sX   t dtdgd i}||}ddddg}t|}|jdddd}||ksTtd S )Nr;   nanr   ZmynullFrh   )r   rA   ri   )r   r   floatastyper   r1   r   r   )r   r   r   r2   r(   rd   r   r   r   test_to_csv_na_rep_long_string1  s    

z(TestToCSV.test_to_csv_na_rep_long_stringc             C   sR   t ddgd}t }|| | }dddg}t|}||ksNt	d S )Nr	   ztimedelta64[ns]z,0z0,0 days 00:00:00.000000001z1,0 days 00:00:00.000000001)
r   rE   r   ioStringIOr   getvaluer   r1   r   )r   rI   bufrd   r2   r(   r   r   r   test_to_csv_timedelta_precision=  s    

z)TestToCSV.test_to_csv_timedelta_precisionc             C   s   t tddjdd}tddddd	g}||ks8tt d
dgjdd}tdddg}||ksjtt ddgjdd}tdddg}||kstd S )N      -)rA   z,0z0,8z1,9z2,10z3,11TFr   z0,Truez1,Falseg?g@.z0,1.1z1,2.2)r   rE   ranger   r   r1   r   )r   rd   r(   r   r   r   test_na_rep_truncatedK  s    zTestToCSV.test_na_rep_truncatederrorssurrogatepassignorereplacec          	   C   sB   dg}t j|t |d}td}|j||d W d Q R X d S )Nu   foo)r   ztest.csv)r   )r   rE   ZIndexr   r   r   )r   r   r_   Zserr   r   r   r   test_to_csv_errorsY  s    zTestToCSV.test_to_csv_errors)*__name__
__module____qualname__r%   markZxfailrz   version_infor   r   r)   r.   r0   r3   r>   r?   rG   rP   rX   Zparametrizer   rV   r   rE   re   rl   rm   rx   ry   r~   r   Zis_platform_windowsr   r   r   r   r   r   r   r   r   r   r   r   r   r   r      sR   	$#?$ "'
r   )r   rq   rz   numpyrC   r%   Zpandasr   r   r   Zpandas._testingZ_testingr   r   r   r   r   r   <module>   s   