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
U
­ý°dò*ã@sdZddlmZmZddlZddlZddlmm    Z
ddlm Z ddl m Z ddlmZddlmZmZddlmZGdd    „d    ƒZd
d „ZdS) z\
Tests the TextReader class in parsers.pyx, which
is integral to the C engine in parsers.py
é)ÚBytesIOÚStringION)Ú
TextReader)Ú    DataFrame)ÚTextFileReaderÚread_csv)Úensure_dtype_objsc @seZdZejdd„ƒZdd„Zdd„Zdd„Zd    d
„Z    d d „Z
d d„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd „Zd!d"„Zd#d$„Zd%d&„Zd'd(„Zej d)d*d+d,ifd-d.d/ifd0d+d,ifd1d+d,ifd2d.d/ifd3d.d/ifg¡d4d5„ƒZd6d7„Zd8d9„Zd:S);ÚTestTextReadercCs|ddddƒS)NÚioÚdataÚcsvz    test1.csv©)ÚselfÚdatapathr r ú]d:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\pandas/tests/io/parser/test_textreader.pyÚcsv_pathszTestTextReader.csv_pathc    Cs*t|dƒ}t|ƒ}| ¡W5QRXdS)NÚrb©ÚopenrÚread©rrÚfÚreaderr r rÚtest_file_handles zTestTextReader.test_file_handlec    Cs.t|dƒ}t|dd}| ¡W5QRXdS©Nr©Úheaderrrr r rÚtest_file_handle_mmap$s  z$TestTextReader.test_file_handle_mmapc    Cs>t|dƒ}| ¡}W5QRXt|ƒ}t|dd}| ¡dSr)rrrr)rrrÚtextÚsrcrr r rÚ test_StringIO*s
  zTestTextReader.test_StringIOcCs>d}tt|ƒdd}| ¡}tttt|dƒƒƒdks:t‚dS)Nz    a
b
a
b
arré)rrrÚlenÚsetÚmapÚidÚAssertionError©rr rÚresultr r rÚtest_string_factorize1sz$TestTextReader.test_string_factorizecCsjd}tt|ƒddd}| ¡}t |dtjddddgtjd¡t |dtjddddgtjd¡dS)    Nza,   b
a,   b
a,   b
a,   bT)ÚskipinitialspacerrÚa©ÚdtypeéÚb©rrrÚtmÚassert_numpy_array_equalÚnpÚarrayÚobject_r'r r rÚtest_skipinitialspace8sÿÿz$TestTextReader.test_skipinitialspacecCs4d}tt|ƒdd}| ¡}|djtjks0t‚dS)NzTrue
False
True
Truerr)rrrr-r3Zbool_r&r'r r rÚtest_parse_booleansEsz"TestTextReader.test_parse_booleanscCsfd}tt|ƒddd}| ¡}t |dtjdddgtjd¡t |dtjdddgtjd¡dS)    Nza  b
a         "b"
"a"          bT)Údelim_whitespacerrr+r,r.r/r0r'r r rÚtest_delimit_whitespaceMsÿÿz&TestTextReader.test_delimit_whitespacecCsFd}tt|ƒdd}| ¡}tjdddgtjd}t |d|¡dS)Nza
"hello
there"
thisrr+z hello
thereÚthisr,r)rrrr3r4r5r1r2©rr rr(Úexpectedr r rÚtest_embedded_newlineZs
z$TestTextReader.test_embedded_newlinecCsBd}tt|ƒdddd}| ¡}t ddg¡}t |d|¡dS)Nz12345,67
345,678ú:ú,)Ú    delimiterÚdecimalrg)\ÂÕÈ@g+‡ٚu@r)rrrr3r4r1Úassert_almost_equalr;r r rÚtest_euro_decimalcs
z TestTextReader.test_euro_decimalcCsHd}tt|ƒdddd}| ¡}tjddgtjd}t |d|¡dS)    Nz123,456
12,500r>r?©r@Z    thousandsré@âéÔ0r,r)rrrr3r4Úint64r1rBr;r r rÚtest_integer_thousandsls
z%TestTextReader.test_integer_thousandscCs<d}tt|ƒdddd}| ¡}tddgƒ}t ||¡dS)Nz123.456
12.500r>Ú.rDrErF)rrrrr1Úassert_frame_equalr;r r rÚtest_integer_thousands_altusÿ z)TestTextReader.test_integer_thousands_altc    Csêd}tt|ƒddd}d}tjtj|d| ¡W5QRXtt|ƒdddd}| ¡}tjdd    d
d gt    d tjd dddgt    d tjddddgt    d dœ}t
||ƒtt|ƒdddd}| ¡|  ¡}d|j ksØt ‚d|j ksæt ‚dS)Nz'a:b:c
d:e:f
g:h:i
j:k:l:m
l:m:n
o:p:q:rr>©r@rzCError tokenizing data\. C error: Expected 3 fields in line 4, saw 4)Úmatchr!)r@rZ on_bad_linesr+ÚdÚgÚlr,r/ÚeÚhÚmÚcrÚiÚn©rr.r!r.zSkipping line 4zSkipping line 6)rrÚpytestZraisesÚparserZ ParserErrorrr3r4ÚobjectÚassert_array_dicts_equalZ
readouterrÚerrr&)rZcapsysr rÚmsgr(r<Zcapturedr r rÚtest_skip_bad_lines€s6ÿý
ÿz"TestTextReader.test_skip_bad_linescCs†d}tt|ƒddd}|j}dddgg}||ks4t‚| ¡}tjdd    gtjd
tjdd gtjd
tjd d gtjd
dœ}t||ƒdS)Nz%skip this
skip this
a,b,c
1,2,3
4,5,6r?r!rLr+r/rTr.ér,ééérW)    rrrr&rr3r4rGr[)rr rrr<Zrecsr r rÚtest_header_not_enough_liness  ýz+TestTextReader.test_header_not_enough_linescCsFd}tt|ƒdddd}| ¡}dtjdgdtdi}t||ƒdS)    Nz,\"hello world"
\"hello world"
\"hello world"r?ú\)r@rÚ
escapecharrz "hello world"rar,)rrrr3r4rZr[r;r r rÚtest_escapechar­s
zTestTextReader.test_escapecharcCsdS©Nr ©rr r rÚtest_eof_has_eolµszTestTextReader.test_eof_has_eolcCsdSrgr rhr r rÚtest_na_substitution¹sz#TestTextReader.test_na_substitutioncsØd‰‡fdd„}|dd}| ¡}|djdks4t‚tjdd    d
d d gdd}|d|k ¡s`t‚|d jdksrt‚|dd}| ¡}|djdks–t‚tjdd    d
d d gdd}|d|k ¡sÂt‚|d jdksÔt‚dS)Nza,1
aa,2
aaa,3
aaaa,4
aaaaa,5cs2d|krt|dƒ|d<ttˆƒfdddœ|—ŽS)Nr-r?rL©rrr©Úkwds©r r rÚ _make_readerÄsz<TestTextReader.test_numpy_string_dtype.<locals>._make_readerzS5,i4r,rZS5r+ZaaZaaaZaaaaZaaaaar.Úi4ZS4)rr-r&r3r4Úall)rrorr(Z    ex_valuesr rnrÚtest_numpy_string_dtype¼s 
 
z&TestTextReader.test_numpy_string_dtypecsÖd‰‡fdd„}|dddœd}| ¡}|djdks:t‚|d    jdksLt‚|tjtdœd}| ¡}|djdksxt‚|d    jd
ksŠt‚|t d¡t d
¡dœd}| ¡}|djdksÀt‚|d    jd
ksÒt‚dS) Nzone,two
1,a
2,b
3,c
4,dcs0d|krt|dƒ|d<ttˆƒfddi|—ŽS)Nr-r@r?rkrlrnr rroász4TestTextReader.test_pass_dtype.<locals>._make_readerÚu1ZS1)Zoner.r,rr.ÚO)rr-r&r3Zuint8rZ)rrorr(r rnrÚtest_pass_dtypeÙs zTestTextReader.test_pass_dtypecspd‰‡fdd„}|dd}| ¡}|ƒ ¡}t|ƒdks<t‚|d|dk ¡sTt‚|d|dk ¡slt‚dS)Nz a,b,c
1,2,3
4,5,6
7,8,9
10,11,12csttˆƒfddi|—ŽS)Nr@r?)rrrlrnr rroýsz1TestTextReader.test_usecols.<locals>._make_reader)r.r!)Zusecolsr!r.)rr"r&rq)rrorr(Úexpr rnrÚ test_usecolsõs 
 
zTestTextReader.test_usecolsz text, kwargsz a,b,c 1,2,3 4,5,6 7,8,9 10,11,12r@r?z*a  b  c 1  2  3 4  5  6 7  8  9 10  11  12r8Tz a,b,c 1,2,3 4,5,6 ,88,9 10,11,12zdA,B,C,D,E,F,G,H,I,J,K,L,M,N,O AAAAA,BBBBB,0,0,0,0,0,0,0,0,0,0,0,0,0 ,BBBBB,0,0,0,0,0,0,0,0,0,0,0,0,0zA  B  C   2  3 4  5  6zA B C 2 3 4 5 6cCsB| dd¡}tt|ƒf|Ž ¡}tt|ƒf|Ž ¡}t||ƒdS)Nú z
)Úreplacerrrr[)rrÚkwargsZ    nice_textr(r<r r rÚtest_cr_delimiteds z TestTextReader.test_cr_delimitedc    Csfd}tt|ƒdd ¡}tjddgtjdtjddgtdtjd    dgtdd
œ}t||ƒtd gtj    ggd gd d gd}tddddgddddggt
dƒddgd}tddddgdtj    tj    tj    gddddgddtj    tj    ggt
dƒddddgd}t dƒD]j}t tdƒdd gd d}t  ||¡t td ƒt
dƒd d!}t  ||¡t td"ƒt
dƒd d!}t  ||¡qödS)#Nza,b,c
1,2,3
4,,r?)r@r.r_r,Ú2ÚÚ3rWr/r+rT)ÚcolumnsÚindexrZabcdr!rarbéé    é
é é ér`éé édza,b
c
)ZskiprowsÚnamesÚenginez1,1,1,1,0
1,1,1,1,0
 
 
)rŠr‹z"0,1,2,3,4
5,6
7,8,9,10,11
12,13,14)rrrr3r4rGrZr[rÚnanÚlistÚrangerr1rJ)    rr r(r<r+r/rTÚ_Údfr r rÚtest_empty_field_eof#sBý
*
 
ü
ø  ÿ ýz#TestTextReader.test_empty_field_eofc    Cs6ttƒdddddgd}t|tƒs(t‚W5QRXdS)Nér+r/rT)Ú    chunksizerrŠ)rrÚ
isinstancerr&)rrr r rÚtest_empty_csv_inputMsÿz#TestTextReader.test_empty_csv_inputN)Ú__name__Ú
__module__Ú __qualname__rXZfixturerrrr r)r6r7r9r=rCrHrKr^rcrfrirjrrrurwÚmarkZ parametrizer{r‘r•r r r rr    sL
               
þ
ú
 
ðþ
*r    cCs2| ¡D]$\}}t t |¡t ||¡¡qdSrg)Úitemsr1r2r3Zasarray)ÚleftÚrightÚkÚvr r rr[Usr[)Ú__doc__r
rrÚnumpyr3rXZpandas._libs.parsersZ_libsÚparsersrYrZpandasrZpandas._testingZ_testingr1Zpandas.io.parsersrrZ"pandas.io.parsers.c_parser_wrapperrr    r[r r r rÚ<module>s    =