o
    5ch                     @   s   d dl Z d dlZd dlmZ 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mZ d dlmZ d dlmZ G dd dZdd	 Zd
d ZdS )    N)Path)ZipFile)	DataFramecompat)_compression_to_extensionc                	   @   s<  e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
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ejgd+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 Zd5d6 Zejj e!" d7d8d9d: Z#d;d< Z$ejd=d>d?gejd@d>d?gdAdB Z%dCdD Z&dEdF Z'ejdGdHdIgejdJdKdLgdMdN Z(ejdOg dPdQdR Z)ejdSdTgdUdV Z*dWdX Z+dYdZ Z,ejd[g d\d]d^ Z-ejd_d`dagdbdc Z.ejd_d`dagddde Z/dfS )g	TestToCSVc              	   C   s  t d dg}d}td,}|j|d d d t|}| |ks#J W d    n1 s-w   Y  W d    n1 s<w   Y  t dd g}d}td5}|j|d d d t|}| |ksdJ W d    n1 snw   Y  W d    d S W d    d S 1 sw   Y  d S )N   z""
1.0
test.csvheaderindexz1.0
""
r   tmensure_cleanto_csvopenread)selfdf1	expected1pathfdf2	expected2 r   Y/var/www/html/gps/gps/lib/python3.10/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   s`   t dg di}td}|| ttj|dd| W d    d S 1 s)w   Y  d S )Ncol)AAAAAu
   ÄÄÄÄÄu
   ßßßßßu   聞聞聞聞聞r	   r   	index_col)r   r   r   r   assert_frame_equalpdread_csv)r   dfr   r   r   r   test_to_csv_default_encoding0   s
   
"z&TestToCSV.test_to_csv_default_encodingc              	   C   sx  t dddgi}d}td+}|j|dd t|}| |ks$J W d    n1 s.w   Y  W d    n1 s=w   Y  d}td,}|j|ddd	 t|}| |ks_J W d    n1 siw   Y  W d    n1 sxw   Y  td0}tjtd
d |j|dd d	 W d    n1 sw   Y  W d    d S W d    d S 1 sw   Y  d S )Nr   r      z"","col"
"0","1"
"1","2"
r	   )quotingz$$,$col$
$0$,$1$
$1$,$2$
$)r'   	quotecharr)   match)	r   r   r   r   r   r   pytestraises	TypeErrorr   r$   expectedr   r   r   r   r   test_to_csv_quotechar9   s0   

"zTestToCSV.test_to_csv_quotecharc              	   C   s  t dddgi}d}td,}|j|ddd t|}| |ks%J W d    n1 s/w   Y  W d    n1 s>w   Y  d	d
lm} td/}tj	|dd |j|dd W d    n1 shw   Y  W d    d S W d    d S 1 sw   Y  d S )Nr   a"a"bb"z!"","col"
"0","a""a"
"1","""bb"""
r	   r   T)r'   doublequoter   )Error
escapecharr*   F)r4   )
r   r   r   r   r   r   _csvr5   r,   r-   )r   r$   r0   r   r   r5   r   r   r   test_to_csv_doublequoteU   s"   
"z!TestToCSV.test_to_csv_doublequotec              	   C   s$  t dddgi}d}td-}|j|dddd	 t|}| |ks&J W d    n1 s0w   Y  W d    n1 s?w   Y  t dd
dgi}d}td5}|j|ddd t|}| |ksiJ W d    n1 ssw   Y  W d    d S W d    d S 1 sw   Y  d S )Nr   r2   r3   z!"","col"
"0","a\"a"
"1","\"bb\""
r	   r   F\)r'   r4   r6   za,az,bb,z,col
0,a\,a
1,\,bb\,
   )r'   r6   r   r/   r   r   r   test_to_csv_escapecharh   s&   

"z TestToCSV.test_to_csv_escapecharc                 C   s6   t dddgi}g d}t|}| |ksJ d S )Nr   r   r&   )z,col0,1z1,2)r   r   convert_rows_list_to_csv_strr   r   r$   expected_rowsr0   r   r   r   test_csv_to_string   s   
zTestToCSV.test_csv_to_stringc                 C   s,  t dgdgdgd}ddg}t|}| |ksJ ddg}t|}|jd	d
d|ks0J ddg}t|}|jdd|ksCJ ddg}t|}|jd	d
dd|ksXJ t ddgddgdd}g d}t|}|jddd|ksxJ |djdd|ksJ |ddgjdd|ksJ d S )Nr   ag333333$@)col1col2col3z,col1,col2,col3z
0,1,a,10.1z;col1;col2;col3z
0;1;a;10,1,;)decimalsepz0,1,a,10.10%.2ffloat_formatz0;1;a;10,10)rG   rH   rK   r   皙?皙@ffffff
@rA   bc)a,b,cz	0^0,2^2,1z	1^1,3^3,1F^)r   rG   )rG   rP   )r   r   r=   r   	set_index)r   r$   r?   expected_defaultexpected_european_excelexpected_float_format_defaultexpected_float_formatr0   r   r   r   test_to_csv_decimal   s,   




"zTestToCSV.test_to_csv_decimalc                 C   sf   t ddgddgdd}g d}t|}|djdd	|ks"J |dd
gjdd	|ks1J d S )Nr   r   rM   rN   rO   )rR   z0,2.20,1z1,3.30,1rA   rI   rJ   rP   )r   r   r=   rT   r   r>   r   r   r   test_to_csv_float_format   s
   
"z"TestToCSV.test_to_csv_float_formatc                 C   sf  t dtjgddgddgd}g d}t|}|djdd	|ks%J |dd
gjdd	|ks4J t tjddgddgd}g d}t|}|djdd	|ksWJ |dd
gjdd	|ksfJ t dddgddgd}g d}t|}|djdd	|ksJ |dd
gjdd	|ksJ tdtj	dgjdd	}tg d}||ksJ d S )Nr   r   r&   r:   rO   )rR   z0.0,0,2_,1,3rA   _na_reprP   )rR   z_,0,2r[   )rR   z0,0,2z0,1,3rQ   ZZZZZ,0z0,az1,ZZZZZz2,c)
r   npNaNr   r=   rT   r   r"   SeriesNA)r   r$   r?   r0   csvr   r   r   test_to_csv_na_rep   s$   


zTestToCSV.test_to_csv_na_repc                 C   s<   t g d}tjdtjdg|djdd}||ksJ d S )Nr`   rA   rQ   )dtyper_   r]   )r   r=   r"   rd   re   r   )r   nullable_string_dtyper0   rf   r   r   r   "test_to_csv_na_rep_nullable_string   s
   z,TestToCSV.test_to_csv_na_rep_nullable_stringc           	      C   s*  t dtjddddi}t dtjddddi}g d}t|}| |ks)J g d}t|}|jd	d
|ks<J g d}t|}|jdd
|ksOJ g d}t|}| |ks`J |jdd
|ksjJ d|d< d|d< ddg}t|}|tjddddg}| jdd
|ksJ d S )NA20130101   speriodsfreqd),A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:04)rs   rt   z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)date_format)rs   0,2013-01-01z1,2013-01-01z2,2013-01-01z3,2013-01-01z4,2013-01-01%Y-%m-%d)rs   rv   z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,1.01h)keyrq   )	r   r"   
date_ranger   r=   r   groupbyGroupermean)	r   df_secdf_dayr?   expected_default_secexpected_ymdhms_dayexpected_ymd_secexpected_default_daydf_sec_groupedr   r   r   test_to_csv_date_format   s*   




z!TestToCSV.test_to_csv_date_formatc                 C   sJ   t tdtjddddd}g d}t|}|jdd|ks#J d S )	Nz
1970-01-01r&   Hro   )datedatetime)zdate,datetimez1970-01-01,1970-01-01 00:00:00z1970-01-01,1970-01-01 01:00:00Fr   )r   r"   to_datetimer|   r   r=   r   r>   r   r   r   &test_to_csv_different_datetime_formats  s   
z0TestToCSV.test_to_csv_different_datetime_formatsc                 C   s   t t jdt jgdd}|d}tg d}|jdd|ks#J t t jddd	d
d	t 
t jg}|d}|jddd|ksGJ d S )N
2021-03-27rw   )formatcategory)0r   z""Fr   Dr   zEurope/Berlin)startrq   rp   tz)r   ru   )r"   rd   r   NaTastyper   r=   r   r|   appendDatetimeIndex)r   serr0   r   r   r   &test_to_csv_date_format_in_categorical.  s   

z0TestToCSV.test_to_csv_date_format_in_categoricalc                 C   sV   t ddtjdgdd}|d d|d< |jdd	d
}tg d}||ks)J d S )NrL   )\( @7 @rQ   rA   rP   rA   Float64Fz%.5f)r   rK   )a,bz	1.10000,cz	2.02000,c,cz	6.00001,cr   r"   re   r   r   r   r=   r   r$   resultr0   r   r   r   !test_to_csv_float_ea_float_format=  s   z+TestToCSV.test_to_csv_float_ea_float_formatc                 C   sT   t ddtjdgdd}|d d|d< |jdd	}tg d
}||ks(J d S )NrL   r   r   rQ   r   rA   r   Fr   )r   z1.1,cz2.02,cr   z
6.000006,cr   r   r   r   r   $test_to_csv_float_ea_no_float_formatG  s   z.TestToCSV.test_to_csv_float_ea_no_float_formatc                 C   sH  t dgtjdgdggd}g d}t|}| |ks J g d}t|}|jdd|ks3J t dgtjdgdggtjdgdggd}g d	}t|}| |ks\J g d}t|}|jdd|ksoJ t dgtjd
gdggd}g d}t|}| |ksJ g d}t|}|jdd|ksJ d S )Nr   r&   columns)z,1z,2r<   )12r   Fr   )r   r   )z,,1z,,2z1,2,1foobar)z,fooz,barr<   )r   r   r   )r   r"   
MultiIndexfrom_arraysr   r=   r   )r   r$   exp_rowsexpr   r   r   test_to_csv_multi_indexQ  s2   





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   sb   |t jdg|dd}tjtdd |jddd}W d    n1 s$w   Y  ||ks/J d S )	Nr   data)namelineterminatorr*   
T)line_terminatorr   )r"   rd   r   assert_produces_warningFutureWarningr   )r   indr0   r   objr   r   r   r   $test_to_csv_single_level_multi_indexu  s
   z.TestToCSV.test_to_csv_single_level_multi_indexc              	   C      dddgidddgig}t |}d}td4}|j|dd	 t|}| |ks,J W d    n1 s6w   Y  W d    d S W d    d S 1 sNw   Y  d S )
Nr   r   r   bazqux-,names
0,"['foo', 'bar']"
1,"['baz', 'qux']"
zstr_test.csvasciiencodingr   )r   	str_arrayr$   expected_asciir   r   r   r   r   test_to_csv_string_array_ascii     
"z(TestToCSV.test_to_csv_string_array_asciic              	   C   r   )
Nr   r   r   r   r   r   zunicode_test.csvutf-8r   r   )r   r   r$   expected_utf8r   r   r   r   r   test_to_csv_string_array_utf8  r   z'TestToCSV.test_to_csv_string_array_utf8c           	   	   C     g dg dd}t |}tdB}tjd}d| d | d | d	 | }|j|d
d t|d}| |ks>J W d    n1 sHw   Y  W d    n1 sWw   Y  td/}d}|j|dd
d t|d}| |kszJ W d    n1 sw   Y  W d    n1 sw   Y  td8}d}|j|dd
d t|d}| |ksJ W d    n1 sw   Y  W d    d S W d    d S 1 sw   Y  d S )Nr   r&   r:   )abczd
efzg
h

i)intstr_lfzlf_test.csvr   s
   int,str_lf   1,abcs   2,"d
ef"s
   3,"g
h

i"Fr   rbs%   int,str_lf
1,abc
2,"d
ef"
3,"g
h

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

i"

	r   r   r   oslinesepencoder   r   r   	r   r   r$   r   
os_linesepexpected_noargr   expected_lfexpected_crlfr   r   r   test_to_csv_string_with_lf  sV   
"z$TestToCSV.test_to_csv_string_with_lfc           	   	   C   r   )Nr   )r   zd
efz	g
h

i)r   str_crlfzcrlf_test.csvr   s   int,str_crlfr   s	   2,"d
ef"s   3,"g
h

i"Fr   r   s+   int,str_crlf
1,abc
2,"d
ef"
3,"g
h

i"
r   r   s/   int,str_crlf
1,abc
2,"d
ef"
3,"g
h

i"
r   r   r   r   r   r   test_to_csv_string_with_crlf  sX   

"z&TestToCSV.test_to_csv_string_with_crlfc                 C   sd   t ddgddggddgd}g d}t|}|jtjd	d
 | }|j|ks*J tjjr0J d S )Nr   r   r   r   name_1name_2r   )z,name_1,name_2z	0,foo,barz	1,baz,quxr   r   )	r   r   r=   r   sysstdout
readouterroutclosed)r   capsysr$   r?   r   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))reasonc              	   C   s   t dg di}d}tdO}t|d}|d |j|d d d W d    n1 s-w   Y  t|}| |ks?J W d    n1 sIw   Y  W d    d S W d    d S 1 saw   Y  d S )NrA   r   r   zzmanual header
x
y
z
test.txtwmanual header
r
   )r   r   r   r   writer   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g di}g d}dt| }tdU}t|ddd}|d |j|d d d W d    n1 s8w   Y  t|d	}| t|d
ksNJ W d    n1 sXw   Y  W d    d S W d    d S 1 spw   Y  d S )NrA   r   r   r   r    )newliner
   r   r   )	r   r   r=   r   r   r   r   r   bytes)r   r$   r?   r0   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}|t | 7 }tddgi}|rdn|}|rdn|}t|}	|j|	|d tj|	d|d}
t|
| W d    d S 1 sCw   Y  d S )Nztest.rk   r   infercompressionr   )r    r   )r   r   r   r   r   r"   r#   r!   )r   compression_onlyr   r   r   filenamer$   to_compressionread_compressionr   r   r   r   r   test_to_csv_compression%  s   "z!TestToCSV.test_to_csv_compressionc                 C   s   |}t ddgi}d}ddd||}||7 }t|}|j|d|id tj|d	d
}t|| W d    d S 1 s?w   Y  d S )NABCr   zto_csv_compress_as_dict.gzzst)gzipzstdmethodr   r   r   )r   getr   r   r   r"   r#   r!   )r   r   r	  r$   r   	extensionr   read_dfr   r   r   test_to_csv_compression_dict9  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    n1 s,w   Y  W d    d S W d    d S 1 sDw   Y  d S )	Nr  r   some_optionTzmust have key 'method'zout.zipr*   r   )r   r   r   r,   r-   
ValueErrorr   )r   r$   r   msgr   r   r   r   -test_to_csv_compression_dict_no_method_raisesH  s   "z7TestToCSV.test_to_csv_compression_dict_no_method_raisesr   zipr   archive_nameztest_to_csv.csvztest_to_csv.zipc              	   C   s   t ddgi}tdD}|j|||dd t|}t|jdks%J |jd j}||ks1J W d    n1 s;w   Y  W d    d S W d    d S 1 sSw   Y  d S )Nr  r   zto_csv_archive_name.zip)r	  r  r   r   )r   r   r   r   r   lenfilelistr   )r   r   r  r$   r   zparchived_filer   r   r   test_to_csv_zip_argumentsR  s   

"z#TestToCSV.test_to_csv_zip_argumentszfilename,expected_arcname))archive.csvr  )archive.tsvr  )zarchive.csv.zipr  )zarchive.tsv.zipr  )zarchive.ziparchivec              	   C   s   t ddgi}t F}t||}|j|dd t|}t|jdks&J |jd j}||ks2J W d    n1 s<w   Y  W d    d S W d    d S 1 sTw   Y  d S )Nr  r   r  r   r   )	r   r   ensure_clean_dirr   r   r   r  r  r   )r   r   expected_arcnamer$   dirr   r  r  r   r   r   test_to_csv_zip_infer_name`  s   


"z$TestToCSV.test_to_csv_zip_infer_namedf_new_typeInt64c                 C   sR   t dtdgd i}||}g d}t|}|jdddd}||ks'J d S )	NrQ   nanr:   )rQ   mynullr#  r#  Fr#  r   )r   r^   r   )r   floatr   r   r=   r   )r   r   r$   r?   r0   r   r   r   r   test_to_csv_na_rep_long_stringu  s   

z(TestToCSV.test_to_csv_na_rep_long_stringc                 C   sP   t ddgd}t }|| | }g d}t|}||ks&J d S )Nr   ztimedelta64[ns])ra   z0,0 days 00:00:00.000000001z1,0 days 00:00:00.000000001)	r"   rd   r   ioStringIOr   getvaluer   r=   )r   rn   bufr   r?   r0   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g d}||ksJ t ddgjdd}tg d	}||ks1J t d
dgjdd}tg d}||ksIJ d S )N      -r]   )ra   z0,8z1,9z2,10z3,11TFr"  )ra   z0,Truez1,FalserL   rM   .)ra   z0,1.1z1,2.2)r"   rd   ranger   r   r=   )r   r   r0   r   r   r   test_na_rep_truncated  s   zTestToCSV.test_na_rep_truncatederrors)surrogatepassignorereplacec                 C   sX   dg}t j|t |d}td}|j||d W d    d S 1 s%w   Y  d S )Nu   foor   r	   )r1  )r"   rd   Indexr   r   r   )r   r1  r   r   r   r   r   r   test_to_csv_errors  s
   "zTestToCSV.test_to_csv_errorsmodewbr   c              	   C   s   t  }t  1}t|dd}|j||d W d   n1 s!w   Y  t |tj|dd W d   dS 1 s<w   Y  dS )z
        Binary file objects should work (if 'mode' contains a 'b') or even without
        it in most cases.

        GH 35058 and GH 19827
        w+b)r7  Nr   r   )r   makeDataFramer   r   r   r!   r"   r#   )r   r7  r$   r   handler   r   r   test_to_csv_binary_handle  s   
"z#TestToCSV.test_to_csv_binary_handlec              	   C   s   d d}t|}tj|dd}t }|j||ddd |d | |s,J t	
 =}t|d}t j||dd |d | d	sNJ W d
   n1 sXw   Y  W d
   d
S W d
   d
S 1 spw   Y  d
S )z{
        Binary file objects should honor a specified encoding.

        GH 23854 and GH 13068 with binary handles
        u
   a, b, 🐟z	utf-8-sigr   F)r7  r   r   r   r9  )r7  r   s   ﻿""N)r   r&  BytesIOr"   r#   r   seekr(  
startswithr   r   r   r   r   )r   r7  contentbufferr$   r   r;  r   r   r   "test_to_csv_encoding_binary_handle  s    




"z,TestToCSV.test_to_csv_encoding_binary_handleN)0__name__
__module____qualname__r   r%   r1   r8   r;   r@   rY   rZ   rg   rj   r   r   r   r   r   r   r,   markparametrizer"   r   r   rd   r   r   r   r   r   r   xfailr   is_platform_windowsr   r   r  r  r  r  r  r%  r*  r0  r6  r<  rB  r   r   r   r   r      s    	$	?

$	"'





	
r   c                 C   s^   t  }t  }|j|| dd t tj|| dd| W d    d S 1 s(w   Y  d S Nr   )r   	chunksizer   )r   r    )r   r:  r   r   r!   r"   r#   )r   r$   r   r   r   r   &test_to_csv_iterative_compression_name  s   
"rL  c                 C   sr   t  }t '}|j|| dd |d t tj|| dd| |j	r'J W d    d S 1 s2w   Y  d S rJ  )
r   r:  r&  r=  r   r>  r!   r"   r#   r   )r   r$   rA  r   r   r   (test_to_csv_iterative_compression_buffer  s   

"rM  )r&  r   pathlibr   r   zipfiler   numpyrb   r,   pandasr"   r   r   pandas._testing_testingr    pandas.tests.io.test_compressionr   r   rL  rM  r   r   r   r   <module>   s&         A
