zmc
2023-08-08 e792e9a60d958b93aef96050644f369feb25d61b
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
U
­ý°dû8ã @s€dZddlmZddlZddlmZmZmZddlm    Z    ddl
Z
ddl m Z m Z ddlmZmZmZddlmZdd    „Ze
j d
d d d g¡dd„ƒZdd„Ze
j dddiddig¡dd„ƒZdd„Ze
j dddg¡dd„ƒZdd„Ze
j dd
d id!d"ig¡d#d$„ƒZe
j d%d&d'g¡d(d)„ƒZd*d+„Z d,d-„Z!e
j d.d d/g¡d0d1„ƒZ"e
j dd2d3d4d5d6d7d8d9g¡e
j dd:d;d<d=d>g¡d?d@„ƒƒZ#e
j dAej$ej%g¡dBdC„ƒZ&dDdE„Z'e
j dFdGdHg¡e
j d
ddIg¡dJdK„ƒƒZ(dLdM„Z)dNdO„Z*e
j dPdQdR„dSdR„g¡dTdU„ƒZ+dVdW„Z,e
j dPdXdR„dYdR„g¡e
j ddZd[g¡d\d]„ƒƒZ-d^d_„Z.d`da„Z/dbdc„Z0ddde„Z1dfdg„Z2dhdi„Z3dS)jzø
Tests that apply specifically to the Python parser. Unless specifically
stated as a Python-specific issue, the goal is to eventually move as many of
these tests out of this module as soon as the C parser can accept further
arguments when parsing.
é)Ú annotationsN)ÚBytesIOÚStringIOÚ TextIOWrapper)ÚIterator)Ú ParserErrorÚ ParserWarning)Ú    DataFrameÚIndexÚ
MultiIndexcCs@d}|}tddgddgdœƒ}|jt|ƒdd}t ||¡dS)Nz aob
1o2
3o4éééé©ÚaÚb©Úsep©r    Úread_csvrÚtmÚassert_frame_equal©Úpython_parser_onlyÚdataÚparserÚexpectedÚresult©rúed:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\pandas/tests/io/parser/test_python_parser_only.pyÚtest_default_separator s
r!Ú
skipfooterÚfoogø?Tc    Cs<d}|}d}tjt|d|jt|ƒ|dW5QRXdS)Núa
1
2zskipfooter must be an integer©Úmatch©r"©ÚpytestÚraisesÚ
ValueErrorrr)rr"rrÚmsgrrr Útest_invalid_skipfooter_non_int,s
r-c    Cs<d}|}d}tjt|d|jt|ƒddW5QRXdS)Nr$zskipfooter cannot be negativer%éÿÿÿÿr'r()rrrr,rrr Ú test_invalid_skipfooter_negative7s
r/ÚkwargsrÚ    delimiterú|cCsld}|}|jt|ƒfddi|—Ž}tdddgddd    gd
d d ggd ddgtdddgddd}t ||¡dS)Nz*index|A|B|C
foo|1|2|3
bar|4|5|6
baz|7|8|9
Ú    index_colrr rr rééééé    ÚAÚBÚCr#ÚbarÚbazÚindex©Úname©Úcolumnsr>©rrr    r
rr©rr0rrrrrrr Útest_sniff_delimiterAsýrEcCshd}|}|jt|ƒdddd}tdddgdd    d
gd d d ggdddgtdddgddd}t ||¡dS)NzX# comment line
index|A|B|C
# comment line
foo|1|2|3 # ignore | this
bar|4|5|6
baz|7|8|9
rú#)r3rÚcommentr rr rr4r5r6r7r8r9r:r;r#r<r=r>r?rArC)rrrrrrrr Útest_sniff_delimiter_commentRsýrHÚencodingzutf-8cCs–|}d}|dk    r0| |¡}t|ƒ}t||d}nt|ƒ}|j|ddd|d}tdddgdd    d
gd d d ggdddgtdddgddd}t ||¡dS)NzFignore this
ignore this too
index|A|B|C
foo|1|2|3
bar|4|5|6
baz|7|8|9
)rIrr)r3rZskiprowsrIr r rr4r5r6r7r8r9r:r;r#r<r=r>r?rA)    Úencoderrrrr    r
rr)rrIrrrrrrr Útest_sniff_delimiter_encodingds
ýrKcCs@|}|jtdƒddgddd}tdgdgdœƒ}t ||¡dS)Nz1,2rr)ÚnamesÚheaderrr rr©rrr    rr)rrrrrrr Útest_single_linesrOrZnrowsr cCsTd}|}|jt|ƒf|Ž}tdddgdddgdd    d
ggd d d gd}t ||¡dS)Nz>A,B,C
1,2,3
4,5,6
7,8,9
want to skip this
also also skip this
r rr rr4r5r6r7r8r9r:r;)rBrNrDrrr Útest_skipfooterˆs
*rPzcompression,klass)ÚgzipÚGzipFile)Úbz2ÚBZ2Filec
Cs¢|}t|dƒ}| ¡}W5QRX| dd¡}| |¡}t |¡}t||ƒ}t ¡D}    ||    dd}
|
     |¡W5QRX|j|    d|d} t 
| |¡W5QRXdS)NÚrbó,s::Úwb)Úmodeú::)rÚ compression) ÚopenÚreadÚreplacerr)Z importorskipÚgetattrrZ ensure_cleanÚwriter) rZcsv1rZÚklassrÚfrrÚmoduleÚpathÚtmprrrr Útest_decompression_regex_sep™s  
 
 
 
rec    Cs~d}|}tdddddgddd    d
d gd d dddggdddddgtjdddgddddgdd}|jt|ƒdd }t ||¡dS)!Na                      A       B       C       D        E
one two three   four
a   b   10.0032 5    -0.5109 -2.3358 -0.4645  0.05076  0.3640
a   q   20      4     0.4473  1.4152  0.2834  1.00661  0.1744
x   q   30      3    -0.6662 -0.5243 -0.3580  0.89145  2.5838gEØðôJYà¿grùé·¯Àgî|?5^ºÝ¿gÌÑã÷6ý©?g²ï§ÆK×?g à- Ü?g†ÉTÁ¨¤ö?gúíëÀ9#Ò?g—9]ð?g46<½RÆ?gá “©‚Qå¿gž^)ËÇà¿g¶óýÔxéÖ¿gI€&†ì?g=›UŸ«@r9r:r;ÚDÚE)rrgı.n£$@r4)rÚqér)Úxrhér ZoneZtwoZthreeZfour)rLrAú\s+r)r    r Ú from_tuplesrrrrrrrr Ú#test_read_csv_buglet_4x_multi_index±s   ý 
þù rncCsFd}|}tjddgtdƒtdƒd}|jt|ƒdd}t ||¡dS)    Nz)      A B C
a b c
1 3 7 0 3 6
3 1 4 1 5 9)r r r6rr r5)r r rr r4r8ZabcABCÚabcrArlr)r    Z from_recordsÚlistrrrrrrrr Ú$test_read_csv_buglet_4x_multi_index2ÊsýrqÚ
add_footerFcCs`d}|}tdddgiƒ}|r.ddi}|d7}ni}|jt|ƒfdgdd    œ|—Ž}t ||¡dS)
Nz1#2
3#4rg333333ó?g333333 @r"r z
FooterrF)rLÚdecimalr)rrrrrrr0rrrr Útest_skipfooter_with_decimalØs
rtrYz#####z!!!Z123z#1!c5z%!c!dz@@#4:2z_!pd#_zutf-16z    utf-16-bez    utf-16-lezutf-32Úcp037cCsVtdgdgdœƒ}|}d|d}| |¡}|jt|ƒ|ddg|d}t ||¡dS)    Nr rrÚ1Ú2rr)rrLrI)r    rJrrrr)rrrIrrrZ encoded_datarrrr Ú$test_encoding_non_utf8_multichar_sepës 
ÿrxÚquotingc    Csddi}|}d}|tjkrTd}tjt|d |jt|ƒfd|i|—ŽW5QRXn8d}tjt|d |jt|ƒfd|i|—ŽW5QRXdS)Nrz,,za,,b
1,,a
2,,"2,,b"z"Expected 2 fields in line 3, saw 3r%ryz+ignored when a multi-char delimiter is used)ÚcsvÚ
QUOTE_NONEr)r*rrr)rryr0rrr,rrr Útest_multi_char_sep_quotesÿs
&r|cCs`|}d}tddgddgddgdœƒ}|jt|ƒddd    d
}t ||¡| ¡}d |jks\t‚dS) Nza,b,c
0,1,2
3,4,5,6
7,8,9rr6r r7rr8)rrÚcÚwarn)rMrÚ on_bad_lineszSkipping line 3)r    rrrrZ
readouterrÚerrÚAssertionError)rZcapsysrrrrZcapturedrrr Útest_none_delimiters r‚rza
1
"b"aza,b,c
cat,foo,bar
dog,foo,"bazr c    Csn|}|r:d}tjt|d|jt|ƒ|dW5QRXn0d}tjt|d|jt|ƒ|dW5QRXdS)Nz)parsing errors in the skipped footer rowsr%r'z%unexpected end of data|expected after©r)r*rrr)rrr"rr,rrr Útest_skipfooter_bad_row!sr„c    Cs@|}d}d}tjt|d|jt|ƒddddW5QRXdS)Nz4ignore
A,B,C
1,2,3 # comment
1,2,3,4,5
2,3,4
footer
z"Expected 3 fields in line 4, saw 5r%r rF)rMrGr"rƒ)rrrr,rrr Útest_malformed_skipfooter0s
r…cCs$|}Gdd„dƒ}| |dƒ¡dS)Nc@s8eZdZddœdd„Zddœdd„Zdd    „Zd
d „Zd S) z5test_python_engine_file_no_next.<locals>.NoNextBufferÚNone)ÚreturncSs
||_dS©N©r)ÚselfZcsv_datarrr Ú__init__Bsz>test_python_engine_file_no_next.<locals>.NoNextBuffer.__init__rcSs
|j ¡Srˆ)rÚ__iter__©rŠrrr rŒEsz>test_python_engine_file_no_next.<locals>.NoNextBuffer.__iter__cSs|jSrˆr‰rrrr r\Hsz:test_python_engine_file_no_next.<locals>.NoNextBuffer.readcSs|jSrˆr‰rrrr ÚreadlineKsz>test_python_engine_file_no_next.<locals>.NoNextBuffer.readlineN)Ú__name__Ú
__module__Ú __qualname__r‹rŒr\rŽrrrr Ú NoNextBufferAsr’za
1)r)rrr’rrr Útest_python_engine_file_no_next>s r“Ú bad_line_funccCsddgS©NrwÚ3r©rjrrr Ú<lambda>Qór˜cCs |dd…S©Nrrr—rrr r˜Qr™cCsH|}d}t|ƒ}|j||d}tdddgdddgdœƒ}t ||¡dS)Núa,b
1,2
2,3,4,5,6
3,4
©rr rr rr©rrr    rr)rr”rrÚbad_siorrrrr Útest_on_bad_lines_callableQs rŸcsx|}d}t|ƒ}g‰dddœ‡fdd„ }|j||d}tddd    gdd    d
gd œƒ}t ||¡ˆd d dddggkstt‚dS)Nr›z    list[str])Úbad_liner‡csˆ |¡ddgSr•)Úappend©r ©Úlstrr r”ks
zHtest_on_bad_lines_callable_write_to_external_list.<locals>.bad_line_funcrœr rr rrrwr–Ú4Ú5Ú6)rrr    rrr)rrrržr”rrrr£r Ú1test_on_bad_lines_callable_write_to_external_list`s r¨cCsddgS)Nr#r<rr—rrr r˜ur™cCs |dd…Sršrr—rrr r˜ur™ú,Z111c Cs¢|}d|›d|›d|›d|›d|›d }t|ƒ}|j||dd|d    }d
d d œd dd œddd œg}tt||ƒƒD].\}\}    }
t|
t||dƒd}
t |    |
¡qndS)Nz
0z1
hiz    there
foor<zbaz
goodzbye
r T)rÚ    chunksizeÚiteratorrÚhiZthere)Ú0rvr#ZgoodZbye©r>)rrÚ    enumerateÚzipr    Úrangerr) rr”rrrržZ result_iterÚ    expectedsÚirrrrr Ú(test_on_bad_lines_callable_iterator_trueus6ÿÿÿÿÿÿýr´c    sL|}d}t|ƒ}d‰‡fdd„}tjtˆd|j||dW5QRXdS)Nr›zThis function is buggy.cs tˆƒ‚dSrˆ)r+r¢©r,rr r”šszEtest_on_bad_lines_callable_dont_swallow_errors.<locals>.bad_line_funcr%rœ)rr)r*r+r)rrrržr”rrµr Ú.test_on_bad_lines_callable_dont_swallow_errorss r¶cCsP|}d}t|ƒ}|jtd|dd„d}tdddgddd    gd
œƒ}t ||¡dS) Nr›zLength of header or namescSs|Srˆrr—rrr r˜¬r™z@test_on_bad_lines_callable_not_expected_length.<locals>.<lambda>rœr rr rr©rÚread_csv_check_warningsrr    rr©rrrržrrrrr Ú.test_on_bad_lines_callable_not_expected_length¡sÿrºcCsH|}d}t|ƒ}|j|dd„d}tddgddgd    œƒ}t ||¡dS)
Nr›cSsdSrˆrr—rrr r˜¼r™z9test_on_bad_lines_callable_returns_none.<locals>.<lambda>rœr r rrrrr¹rrr Ú'test_on_bad_lines_callable_returns_none²s r»cCsP|}d}t|ƒ}|j|dd„d}tddgddgd    œd
d gd }t ||¡dS) Nza,b
1,2,3
4,5,6
cSsddgS)NZ99rr—rrr r˜Êr™z6test_on_bad_lines_index_col_inferred.<locals>.<lambda>rœrr4r r5rr rr®rr¹rrr Ú$test_on_bad_lines_index_col_inferredÁs r¼cCsH|}d}|jtdt|ƒdddd}tddgdd    gd
œƒ}t ||¡dS) Nz
0.5,0.03
0.1,0.2,0.3,2
úLength of headerr©F)rrMr3gà?gš™™™™™¹?g¸…ëQ¸ž?gš™™™™™É?)rr )r¸rrr    rr©rrrrrrrr Ú$test_index_col_false_and_header_noneÏsúr¿cCsB|}tdƒ}|jtd|ddd}tddddgiƒ}t ||¡dS)    Nza
a,b
c,d,e
f,g,hr½ÚpythonF)Zenginer3rr}rar·r¾rrr Ú?test_header_int_do_not_infer_multiindex_names_on_different_lineâsÿrÁ)4Ú__doc__Ú
__future__rrzÚiorrrÚtypingrr)Z pandas.errorsrrZpandasr    r
r Zpandas._testingZ_testingrr!ÚmarkZ parametrizer-r/rErHrKrOrPrernrqrtrxÚ QUOTE_MINIMALr{r|r‚r„r…r“rŸr¨r´r¶rºr»r¼r¿rÁrrrr Ú<module>st    
 
 
 
 
    
ÿ
 
ÿ ÿ