1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
U
­ý°dåXã    @s„dZddlmZddlmZmZmZddlZddlZddl    Z    ddl
Z ddl Z ddl mZmZddlmZddlmZddlmmZddlmZmZddlmZe jjd    d
d d gd ddgddd„ƒZ dd„Z!dd„Z"dd„Z#e jjddddddœifddddœdgd œfd!dd"ddœifd#ej$›d$dd%d&iifgd'd(d)ej$›d&gdd*d+„ƒZ%ej&e jj'd,d-„ƒƒZ(d.d/„Z)d0d1„Z*d2d3„Z+d4d5„Z,d6d7„Z-e jj'd8d9„ƒZ.d:d;„Z/d<d=„Z0d>d?„Z1d@dA„Z2dBdC„Z3dDdE„Z4dFdG„Z5dHdI„Z6dJdK„Z7e j dLdMdNg¡dOdP„ƒZ8e jj9e jj:eƒdQdRdSdT„ƒƒZ;dUdV„Z<dWdX„Z=dYdZ„Z>d[d\„Z?e j d]dd^d_d`g¡e j dadbdcg¡ddde„ƒƒZ@dfdg„ZAdS)hzø
Tests that apply specifically to the CParser. Unless specifically stated
as a CParser-specific issue, the goal is to eventually move as many of
these tests out of this module as soon as the Python parser can accept
further arguments when parsing.
é)ÚDecimal)ÚBytesIOÚStringIOÚ TextIOWrapperN)ÚIS64Úis_ci_environment)Únp_version_gte1p24)Ú ParserError)Ú    DataFrameÚconcatÚ    malformedz 1 1 1  1  1 z1 1 1  1  1 11 z1 1 1  1  1 11 1 z words pointerzstream pointerz lines pointer)Úidsc    Cs4d}|}tjt|d| t|ƒ¡W5QRXdS)Nz7Buffer overflow caught - possible malformed input file.©Úmatch)ÚpytestÚraisesr    Úread_csvr)Ú c_parser_onlyr ÚmsgÚparser©rú`d:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\pandas/tests/io/parser/test_c_parser_only.pyÚtest_buffer_overflow#src    CsLd}|}tdƒD]6}z|jtdt|ƒdddWqtk
rDYqXqdS)NuV‹íÃA    ±·¶ºþ¥Ì!l°¦MUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU}÷‘àG—8‹VT—Ví]ïOédzCcompression has no effect when passing a non-binary object as inputÚgzipT)Ú compressionÚdelim_whitespace)ÚrangeZread_csv_check_warningsÚRuntimeWarningrÚ    Exception)rÚdatarÚ_rrrÚtest_buffer_rd_bytes2sÿ û
r"cCsVd}|}|jt|ƒddd}tdddgdd    d
gd d d ggdddgd}t ||¡dS)Nza b c~1 2 3~4 5 6~7 8 9ú~T)Úlineterminatorrééééééééé    ÚaÚbÚc©Úcolumns©rrr
ÚtmÚassert_frame_equal)rr rÚdfÚexpectedrrrÚ'test_delim_whitespace_custom_terminatorLs
*r8c
CsX|}d}|jt|ƒddd}tddgddgdd    ggƒ}t ||¡|jt|ƒddd
d gd }tddgddgdd    ggd
d gd }t ||¡|jt|ƒddd
d gd
tjid}tddgddgd    d    ggd
d gd }|d
 tj¡|d
<t ||¡d}trút    nd}t
j t ddBtj |dd(|jt|ƒddd
d gd
tjidW5QRXW5QRXdS)Nz
1.0 1
2.0 2
3.0 3
ú\s+)ÚsepÚheaderçð?r%ç@r&g@r'r.r/)r:r;Únamesr1)r:r;r>Údtypez
1.0 1
nan 2
3.0 3
zcannot safely convertrF)Zcheck_stacklevel)rrr
r4r5ÚnpÚint32ZastyperrrrÚ
ValueErrorZassert_produces_warning)rrr Úresultr7ÚwarningrrrÚtest_dtype_and_names_errorVs: " ÿ"  ûrEz match,kwargsz]the dtype datetime64 is not supported for parsing, pass this column using parse_dates insteadr?Z
datetime64Úfloat64)ÚAÚBrH)r?Z parse_datesz2the dtype timedelta64 is not supported for parsingZ timedelta64z
the dtype zU8 is not supported for parsingrGZU8zdt64-0zdt64-1Ztd64c
Cs~|}ttj dd¡tdƒdddddgd    }t d
¡@}| |¡tj    t
|d |j |fd d i|—ŽW5QRXW5QRXdS)Nr)r&ZABZ1AZ1BZ1CZ1DZ1E)r2Úindexz__unsupported_dtype__.csvrZ    index_colr) r
r@ÚrandomZrandÚlistr4Ú ensure_cleanZto_csvrrÚ    TypeErrorr)rrÚkwargsrr6ÚpathrrrÚtest_unsupported_dtype‚s  ÿ 
rPc Cs|}g}g}tttdœdd„}tjddddD]²}d|d    ›}t|jt|ƒd
d d d ƒ}t|jt|ƒdd d d ƒ}t|jt|ƒdd d d ƒ}    t|dd…ƒ}
| |||
ƒ¡| |||
ƒ¡|    t|dd…ƒks.t‚q.t|ƒt|ƒksöt‚t    |ƒt    |ƒks t‚dS)N)ÚvalÚ
actual_valÚreturncSstt|d›ƒ|ƒS)Nz.100)Úabsr)rQrRrrrÚerror´sz&test_precise_conversion.<locals>.errorr<r=iô)Únumza
z.25Úlegacy©Úfloat_precisionr.rÚhighÚ
round_tripr&)
Úfloatrr@ZlinspacerrÚappendÚAssertionErrorÚsumÚmax) rrZ normal_errorsZprecise_errorsrUrVÚtextZ
normal_valZ precise_valZ roundtrip_valrRrrrÚtest_precise_conversion¬s* ÿÿÿrbc    Cs‚|}d}|jt|ƒddddtittdœd}|jt|ƒddddtittdœd}|jtttgk ¡sht‚|jttgk ¡s~t‚dS)Nz1,2,3
4,5,6
7,8,9
10,11,12)rr%r&)r.r/r0r.)r/r0)Úusecolsr>r;Ú
convertersr?)rr&)    rrÚstrÚintr\ÚdtypesÚobjectÚallr^)rrr rCZresult2rrrÚtest_usecols_dtypesÑs(úú    rjcCsX|}d}|jt|ƒtd}|jtk ¡s,t‚|jt|ƒtdd}|dddksTt‚dS)Nz-A,B,C
Yes,No,Yes
No,Yes,Yes
Yes,,Yes
No,No,No)r?F)r?Z    na_filterrHr&Ú)rrrhrgrir^)rrr rCrrrÚtest_disable_bool_parsingîs rlcCs@|}d}|jt|ƒdd}| t| dd¡ƒ¡}t ||¡dS)Nza,b,c~1,2,3~4,5,6r#)r$Ú
©rrÚreplacer4r5©rrr rCr7rrrÚtest_custom_lineterminatorÿs
rqcCs¤|}d}d}|jt|ƒddddddgd}|jt|ƒddddddgd}t ||¡d    }|jt|ƒdtd
ƒd}|jt|ƒdtd ƒdjtd
ƒd }t ||¡dS) Nz#1,2,3
1,2,3,4
1,2,3,4,5
1,2
1,2,3,4z*1,2,3,,
1,2,3,4,
1,2,3,4,5
1,2,,,
1,2,3,4,r.r/r0ÚdÚe)r;r>z    1,2
3,4,5é2r'r1)rrr4r5rZreindex)rrr Z    nice_datarCr7rrrÚtest_parse_ragged_csv    s( ÿ ÿ ÿrucCst|}d}|jt|ƒdd}|jt| dd¡ƒdd}t ||¡| t|ƒ¡}| t| dd¡ƒ¡}t ||¡dS)Nz a,b,c "a,b","e,d","f,f"©r;ú rmrnrprrrÚtest_tokenize_CR_with_quoting+s rxcs,|‰‡fdd„}tddƒD] }||ƒqdS)Nc    sNtd|ƒ,}tdd„t|dƒDƒd}ˆ |¡}W5QRXt ||¡dS)Nú,cSsg|]}d|›‘qS)z    Unnamed: r©Ú.0ÚirrrÚ
<listcomp>GszMtest_grow_boundary_at_cap.<locals>.test_empty_header_read.<locals>.<listcomp>r%r1)rr
rrr4r5)ÚcountÚsr7r6©rrrÚtest_empty_header_readEsz9test_grow_boundary_at_cap.<locals>.test_empty_header_readr%ée)r)rrZcntrr€rÚtest_grow_boundary_at_cap9s
 rƒc        sÜ|}d}d\}}d |g|¡d}tdd„| d¡Dƒƒ‰t‡fdd„t|ƒDƒtddd    }|jt|ƒdt|d
}t|d d d }W5QRXt     
||¡|jt|ƒdt|dd}t|d d d }W5QRXt     
||¡dS)Na9999-9,99:99,,,,ZZ,ZZ,,,ZZZ-ZZZZ,.Z-ZZZZ,-9.99,,,9.99,ZZZZZ,,-99,9,ZZZ-ZZZZ,ZZ-ZZZZ,,9.99,ZZZ-ZZZZZ,ZZZ-ZZZZZ,ZZZ-ZZZZ,ZZZ-ZZZZ,ZZZ-ZZZZ,ZZZ-ZZZZ,ZZZ-ZZZZ,ZZZ-ZZZZ,999,ZZZ-ZZZZ,,ZZ-ZZZZ,,,,,ZZZZ,ZZZ-ZZZZZ,ZZZ-ZZZZ,,,9,9,9,9,99,99,999,999,ZZZZZ,ZZZ-ZZZZZ,ZZZ-ZZZZ,9,ZZ-ZZZZ,9.99,ZZ-ZZZZ,ZZ-ZZZZ,,,,ZZZZ,,,ZZ,ZZ,,,,,,,,,,,,,9,,,999.99,999.99,,,ZZZZZ,,,Z9,,,,,,,ZZZ,ZZZ,,,,,,,,,,,ZZZZZ,ZZZZZ,ZZZ-ZZZZZZ,ZZZ-ZZZZZZ,ZZ-ZZZZ,ZZ-ZZZZ,ZZ-ZZZZ,ZZ-ZZZZ,,,999999,999999,ZZZ,ZZZ,,,ZZZ,ZZZ,999.99,999.99,,,,ZZZ-ZZZ,ZZZ-ZZZ,-9.99,-9.99,9,9,,99,,9.99,9.99,9,9,9.99,9.99,,,,9.99,9.99,,99,,99,9.99,9.99,,,ZZZ,ZZZ,,999.99,,999.99,ZZZ,ZZZ-ZZZZ,ZZZ-ZZZZ,,,ZZZZZ,ZZZZZ,ZZZ,ZZZ,9,9,,,,,,ZZZ-ZZZZ,ZZZ999Z,,,999.99,,999.99,ZZZ-ZZZZ,,,9.999,9.999,9.999,9.999,-9.999,-9.999,-9.999,-9.999,9.999,9.999,9.999,9.999,9.999,9.999,9.999,9.999,99999,ZZZ-ZZZZ,,9.99,ZZZ,,,,,,,,ZZZ,,,,,9,,,,9,,,,,,,,,,ZZZ-ZZZZ,ZZZ-ZZZZ,,ZZZZZ,ZZZZZ,ZZZZZ,ZZZZZ,,,9.99,,ZZ-ZZZZ,ZZ-ZZZZ,ZZ,999,,,,ZZ-ZZZZ,ZZZ,ZZZ,ZZZ-ZZZZ,ZZZ-ZZZZ,,,99.99,99.99,,,9.99,9.99,9.99,9.99,ZZZ-ZZZZ,,,ZZZ-ZZZZZ,,,,,-9.99,-9.99,-9.99,-9.99,,,,,,,,,ZZZ-ZZZZ,,9,9.99,9.99,99ZZ,,-9.99,-9.99,ZZZ-ZZZZ,,,,,,,ZZZ-ZZZZ,9.99,9.99,9999,,,,,,,,,,-9.9,Z/Z-ZZZZ,999.99,9.99,,999.99,ZZ-ZZZZ,ZZ-ZZZZ,9.99,9.99,9.99,9.99,9.99,9.99,,ZZZ-ZZZZZ,ZZZ-ZZZZZ,ZZZ-ZZZZZ,ZZZ-ZZZZZ,ZZZ-ZZZZZ,ZZZ,ZZZ,ZZZ,ZZZ,9.99,,,-9.99,ZZ-ZZZZ,-999.99,,-9999,,999.99,,,,999.99,99.99,,,ZZ-ZZZZZZZZ,ZZ-ZZZZ-ZZZZZZZ,,,,ZZ-ZZ-ZZZZZZZZ,ZZZZZZZZ,ZZZ-ZZZZ,9999,999.99,ZZZ-ZZZZ,-9.99,-9.99,ZZZ-ZZZZ,99:99:99,,99,99,,9.99,,-99.99,,,,,,9.99,ZZZ-ZZZZ,-9.99,-9.99,9.99,9.99,,ZZZ,,,,,,,ZZZ,ZZZ,,,,,)é€irmcss|]}|r|ntjVqdS)N)r@Únan)r{Zval_rrrÚ    <genexpr>‹sz*test_parse_trim_buffers.<locals>.<genexpr>rycsg|]}ˆ‘qSrr©r{r!©Úrowrrr}sz+test_parse_trim_buffers.<locals>.<listcomp>)r?r2rI)r;r?Ú    chunksizerT)ZaxisZ ignore_indexÚutf_8)r;r?rŠÚencoding) ÚjoinÚtupleÚsplitr
rrhrrr r4r5)    rrZrecord_rŠZn_linesZcsv_datar7Zchunks_rCrrˆrÚtest_parse_trim_buffersOs> ÿ$ÿÿ ûrcCsZ|}dddg}d}tdddgdtjd    gd
d d gg|d }|jt|ƒ|d}t ||¡dS)Nr.r/r0z1,2,3
4,,6
7,8,9r%r=r'r(r*r+r,r-r1)r>)r
r@r…rrr4r5)rrr>r r7rCrrrÚtest_internal_null_byte§s
 
&r‘cCs²|}d dd„tdƒDƒ¡d}d dd„tdƒDƒ¡d}d dd„tdƒDƒ¡d}d d    d„tdƒDƒ¡d}||d
||d }|jt|ƒdd d }|jdks®t‚dS)Nú    cSsg|]}dt|ƒ‘qS©Z COL_HEADER_©rerzrrrr}¾sz)test_read_nrows_large.<locals>.<listcomp>é
rmcSsg|]}d‘qS)Zsomedatasomedatasomedata1rr‡rrrr}¿scSsg|]}dt|ƒ‘qSr“r”rzrrrr}ÀsécSsg|]}d‘qS)Zsomedatasomedatasomedata2rr‡rrrr}Ásir&iò)r:Znrowsit')rrrrÚsizer^)rrZ header_narrowZ data_narrowZ header_wideZ    data_wideÚ
test_inputr6rrrÚtest_read_nrows_large»sr™cCs2|}|jtdƒddd}t |tddgiƒ¡dS)Nr.r[)r;rYr)rrr4r5r
)rrr6rrrÚ)test_float_precision_round_trip_with_textÉsršc    Csv|}d}d|dd…d}d}||ddd…}|jt|ƒddgd}| d¡}td    d
„|Dƒƒ}t ||¡dS) Ni'zX,éÿÿÿÿrmzXXXXXX XXXXXX,111111111111111
r*r)r;rccSsg|]}| d¡d‘qS)ryr)r)r{r‰rrrr}Üsz4test_large_difference_in_columns.<locals>.<listcomp>)rrrr
r4r5)    rrr~Z    large_rowZ
normal_rowr˜rCÚrowsr7rrrÚ test_large_difference_in_columnsÐs
rcCs6|}d}| t|ƒ¡}tdddgiƒ}t ||¡dS)Nza
1
"b"ar.Ú1Úbar3rprrrÚtest_data_after_quoteàs
r cCs‚|}d}|jt|ƒdddddd}| ¡}dD]}d|›|jks.t‚q.td    d
gd d
gd d
gd tjgdtjggƒ}t     ||¡dS)Nz‡1 2
2 2 3
3 2 3 # 3 fields
4 2 3# 3 fields
5 2 # 2 fields
6 2# 2 fields
7 # 1 field, NaN
8# 1 field, NaN
9 2 3 # skipped line
# commentú#r9rÚwarn)Úcommentr;Ú    delimiterÚskiprowsZ on_bad_lines)r&r'r(r-zSkipping line r%r&r)r*r+r,)
rrZ
readouterrÚerrr^r
r@r…r4r5)rZcapsysrr˜r6ZcapturedÚline_numr7rrrÚ!test_comment_whitespace_delimitedës ú*r¨cCsDGdd„dtƒ}|}d}tddgiƒ}| ||ƒ¡}t ||¡dS)Nc@seZdZdd„ZeZdS)z,test_file_like_no_next.<locals>.NoNextBuffercSs tdƒ‚dS)NzNo next method)ÚAttributeError)ÚselfrrrÚ__next__sz5test_file_like_no_next.<locals>.NoNextBuffer.__next__N)Ú__name__Ú
__module__Ú __qualname__r«ÚnextrrrrÚ NoNextBuffer sr°za
1r.r%)rr
rr4r5)rr°rr r7rCrrrÚtest_file_like_no_nexts r±c    CsFtdƒ}t|ddd}d}tjt|d|j|ddW5QRXdS)    Nó°ÚasciiÚsurrogateescape)rŒÚerrorsz$'utf-8' codec can't encode characterrzUTF-8)rŒ)rrrrÚ UnicodeErrorr)rÚtrrrrÚ test_buffer_rd_bytes_bad_unicodes
r¸Ú
tar_suffixz.tarz.tar.gzc        Cs`|}tj |d|¡}t |d¡4}| d¡}| |¡}tddgiƒ}t     ||¡W5QRXdS)NZtar_csvÚrz tar_data.csvr.r%)
ÚosrOrÚtarfileÚopenÚ extractfilerr
r4r5)    rZ csv_dir_pathr¹rZtar_pathÚtarZ    data_fileÚoutr7rrrÚtest_read_tarfile%s
 
rÁzToo memory intensive for CI.)ÚreasoncCsL|}|jrt d¡tdd dd„tdƒDƒ¡ƒ}| |¡}|jrHt‚dS)Nznot a low_memory testzstrings
rmcSsg|] }dd‘qS)Úxirr‡rrrr}Bsz)test_bytes_exceed_2gb.<locals>.<listcomp>i4)    Z
low_memoryrÚskiprrrrÚemptyr^)rrÚcsvr6rrrÚtest_bytes_exceed_2gb7s 
 
rÇcCsL|}ddd}d}|jt||ƒdd}tddddgƒ}t ||¡dS)Nr.iþÿz
az
 arvz ar3)rrZchunk1Zchunk2rCr7rrrÚ!test_chunk_whitespace_on_boundaryGs  rÈc
CsR|}t|ƒ<}tj| ¡dtjd}| |¡|jr:t‚W5QRXW5QRXdS)Nr)Úaccess)r½ÚmmapÚfilenoZ ACCESS_READrÚclosedr^)rZcsv1rÚfÚmrrrÚtest_file_handles_mmapVs
 
 
rÏc
Cs„|}tdddgdddggƒ}t ¡V}t|dƒ}| d¡W5QRXt|d    ƒ }|j|dd
}t ||¡W5QRXW5QRXdS) Nr%r&r'r(r)r*Úwz 1,2,3
4,5,6Úrbrv)r
r4rLr½Úwriterr5)rrr7rOrÍrCrrrÚtest_file_binary_modebs
  rÓc
Csn|}t ¡<}t|ddd}| d¡W5QRX|j|dddd}W5QRXtd    d
d gd }t ||¡dS) NrÐrm)Únewlinezblah
 
col_1,col_2,col_3
 
r&zutf-8r0)r¥rŒZengineZcol_1Zcol_2Zcol_3r1)r4rLr½rÒrr
r5)rrrOrÍrCr7rrrÚtest_unix_style_breaksps
rÕrYrWrZr[zdata,thousands,decimal)zA|B|C
1|2,334.01|5
10|13|10.
ryÚ.)zA|B|C
1|2.334,01|5
10|13|10,
rÖrycCsH|}tddgddgddgdœƒ}|jt|ƒd|||d    }t ||¡dS)
Nr%r•gìQ¸<¢@é r)g$@)rGrHÚCú|)r:Ú    thousandsÚdecimalrY)r
rrr4r5)rr rÚrÛrYrr7rCrrrÚtest_1000_sep_with_decimal{sûrÜc    Cs°|}d}| t|ƒ¡}|jt|ƒdd}t ||¡|jt|ƒdd}trd|jd|jdkr|t‚n|jd|jdks|t‚d}tjt    |d|jt|ƒddW5QRXdS)    Nz foo
243.164
rZrXrW)rrz)Unrecognized float_precision option: junkrZjunk)
rrr4r5rZilocr^rrrB)rrrr6Zdf2Zdf3rrrrÚtest_float_precision_options¡s rÝ)BÚ__doc__rÛrÚiorrrrÊr»r¼Únumpyr@rZ pandas.compatrrZpandas.compat.numpyrZ pandas.errorsr    Zpandas.util._test_decoratorsÚutilZ_test_decoratorsÚtdZpandasr
r Zpandas._testingZ_testingr4ÚmarkZ parametrizerr"r8rEZENDIANrPZ skip_if_32bitZslowrbrjrlrqrurxrƒrr‘r™ršrr r¨r±r¸rÁZ
single_cpuZskipifrÇrÈrÏrÓrÕrÜrÝrrrrÚ<module>sš    ý
 
 
, û    û þ 
þìå
 #
"
X     
   ÷þ