
    Mh)                         S r SSKJrJr  SSKrSSKrSSKJs  J	r
  SSKJr  SSKJr  SSKJr  SSKJr  SSKJrJr  SSKJr   " S	 S
5      rS rg)z\
Tests the TextReader class in parsers.pyx, which
is integral to the C engine in parsers.py
    )BytesIOStringION)
TextReader)ParserWarning)	DataFrame)TextFileReaderread_csv)ensure_dtype_objsc                      \ rS rSr\R
                  S 5       rS rS rS r	S r
S rS rS	 rS
 rS rS rS rS rS rS rS rS rS rS rS r\R4                  R7                  SSSS04SSS04SSS04SSS04SSS04S SS04/5      S! 5       rS" r\R4                  R7                  S#\" S$5      5      S% 5       rS& r S'r!g())TestTextReader   c                     U" SSSS5      $ )Niodatacsvz	test1.csv )selfdatapaths     X/var/www/html/env/lib/python3.13/site-packages/pandas/tests/io/parser/test_textreader.pycsv_pathTestTextReader.csv_path   s    fe[99    c                     [        US5       n[        U5      nUR                  5         S S S 5        g ! , (       d  f       g = f)Nrbopenr   readr   r   freaders       r   test_file_handleTestTextReader.test_file_handle    s,    (D!Q]FKKM "!!s	   2
A c                     [        US5       n[        US S9nUR                  5         S S S 5        g ! , (       d  f       g = fNr   headerr   r   s       r   test_file_handle_mmap$TestTextReader.test_file_handle_mmap%   s/    (D!Q$/FKKM "!!s   1
?c                     [        US5       nUR                  5       nS S S 5        [        W5      n[        US S9nUR                  5         g ! , (       d  f       N4= fr$   )r   r   r   r   )r   r   r   textsrcr    s         r   test_StringIOTestTextReader.test_StringIO+   sE    (D!Q668D "dmC-	 "!s   A
Ac           	          Sn[        [        U5      S S9nUR                  5       n[        [	        [        [        US   5      5      5      S:X  d   eg )Nz	a
b
a
b
ar%   r      )r   r   r   lensetmapidr   r   r    results       r   test_string_factorize$TestTextReader.test_string_factorize2   sE    HTN483s2vay)*+q000r   c                 D   Sn[        [        U5      SS S9nUR                  5       n[        R                  " US   [
        R                  " / SQ[
        R                  S95        [        R                  " US   [
        R                  " / SQ[
        R                  S95        g )	Nza,   b
a,   b
a,   b
a,   bT)skipinitialspacer&   r   )ar:   r:   r:   dtype   )br>   r>   r>   r   r   r   tmassert_numpy_array_equalnparrayobject_r4   s       r   test_skipinitialspace$TestTextReader.test_skipinitialspace9   st    /HTNT$O
##1Irxx 4BJJG	
 	##1Irxx 4BJJG	
r   c                     Sn[        [        U5      S S9nUR                  5       nUS   R                  [        R
                  :X  d   eg )NzTrue
False
True
Truer%   r   )r   r   r   r<   rB   bool_r4   s       r   test_parse_booleans"TestTextReader.test_parse_booleansF   s<    (HTN48ay"((***r   c                 D   Sn[        [        U5      SS S9nUR                  5       n[        R                  " US   [
        R                  " / SQ[
        R                  S95        [        R                  " US   [
        R                  " / SQ[
        R                  S95        g )	Nza  b
a		 "b"
"a"	 	 bT)delim_whitespacer&   r   )r:   r:   r:   r;   r=   )r>   r>   r>   r?   r4   s       r   test_delimit_whitespace&TestTextReader.test_delimit_whitespaceN   sr    ,HTNT$O
##1IrxxrzzB	
 	##1IrxxrzzB	
r   c                     Sn[        [        U5      S S9nUR                  5       n[        R                  " / SQ[        R
                  S9n[        R                  " US   U5        g )Nza
"hello
there"
thisr%   )r:   zhello
therethisr;   r   )r   r   r   rB   rC   rD   r@   rA   r   r   r    r5   expecteds        r   test_embedded_newline$TestTextReader.test_embedded_newline[   sK    (HTN48889L
##F1Ix8r   c                     Sn[        [        U5      SSS S9nUR                  5       n[        R                  " SS/5      n[
        R                  " US   U5        g )Nz12345,67
345,678:,)	delimiterdecimalr&   g)\@g+ٚu@r   )r   r   r   rB   rC   r@   assert_almost_equalrQ   s        r   test_euro_decimal TestTextReader.test_euro_decimald   sM    "HTNc3tT88Xw/0
vay(3r   c                     Sn[        [        U5      SSS S9nUR                  5       n[        R                  " SS/[        R
                  S9n[        R                  " US   U5        g )	Nz123,456
12,500rV   rW   rX   	thousandsr&   @ 0  r;   r   )r   r   r   rB   rC   int64r@   rZ   rQ   s        r   test_integer_thousands%TestTextReader.test_integer_thousandsm   sS     HTNcSQUV88VUO288<
vay(3r   c                     Sn[        [        U5      SSS S9nUR                  5       n[        SS/5      n[        R
                  " X45        g )Nz123.456
12.500rV   .r^   r`   ra   )r   r   r   r   r@   assert_frame_equalrQ   s        r   test_integer_thousands_alt)TestTextReader.test_integer_thousands_altv   sG     TNcS
 fe_-
f/r   c                    Sn[        [        U5      SS S9nSn[        R                  " [        R
                  US9   UR                  5         S S S 5        [        [        U5      SS SS9nUR                  5       n[        R                  " / SQ[        S	9[        R                  " / S
Q[        S	9[        R                  " / SQ[        S	9S.n[        XE5        [        R                  " [        SS9   [        [        U5      SS SS9nUR                  5         S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nz'a:b:c
d:e:f
g:h:i
j:k:l:m
l:m:n
o:p:q:rrV   rX   r&   zCError tokenizing data\. C error: Expected 3 fields in line 4, saw 4)matchr/   )rX   r&   on_bad_lines)r:   dglr;   )r>   ehm)cr   inr   r=   r/   zSkipping liner=   )r   r   pytestraisesparserParserErrorr   rB   rC   objectassert_array_dicts_equalr@   assert_produces_warningr   )r   r   r    msgr5   rR   s         r   test_skip_bad_lines"TestTextReader.test_skip_bad_lines   s    =HTNc$GT]]6--S9KKM : TNc$Q
 xx,F;xx,F;xx,F;

 	!2''_M#dF KKM	 NM :9 NMs   D/&D/
D,/
D=c                 t   Sn[        [        U5      SSS9nUR                  n/ SQ/nX4:X  d   eUR                  5       n[        R
                  " SS/[        R                  S9[        R
                  " SS	/[        R                  S9[        R
                  " S
S/[        R                  S9S.n[        XT5        g )Nz%skip this
skip this
a,b,c
1,2,3
4,5,6rW   r/   rk   r:   r>   rt   r=      r;            rw   )r   r   r&   r   rB   rC   rb   r}   )r   r   r    r&   rR   recss         r   test_header_not_enough_lines+TestTextReader.test_header_not_enough_lines   s    :HTNc!D#$!!!{{}xxAbhh/xxAbhh/xxAbhh/

 	!0r   c                     Sn[        [        U5      SS SS9nUR                  5       nS[        R                  " S/S-  [
        S90n[        X45        g )	Nz,\"hello world"
\"hello world"
\"hello world"rW   \)rX   r&   
escapecharr   z"hello world"r   r;   )r   r   r   rB   rC   r|   r}   rQ   s        r   test_escapecharTestTextReader.test_escapechar   sL    BHTNc$SWXrxx 1A 5VDE 2r   c                     g Nr   r   s    r   test_eof_has_eolTestTextReader.test_eof_has_eol   s    r   c                     g r   r   r   s    r   test_na_substitution#TestTextReader.test_na_substitution   s    r   c                   ^ SmU4S jnU" SS9nUR                  5       nUS   R                  S:X  d   e[        R                  " / SQSS9nUS   U:H  R	                  5       (       d   eUS   R                  S	:X  d   eU" S
S9nUR                  5       nUS   R                  S
:X  d   e[        R                  " / SQS
S9nUS   U:H  R	                  5       (       d   eUS   R                  S
:X  d   eg )Nza,1
aa,2
aaa,3
aaaa,4
aaaaa,5c                  b   > SU ;   a  [        U S   5      U S'   [        [        T5      4SS S.U D6$ )Nr<   rW   rk   r
   r   r   kwdsr   s    r   _make_reader<TestTextReader.test_numpy_string_dtype.<locals>._make_reader   s7    $ 1$w- @WhtnQDQDQQr   zS5,i4r;   r   S5)r:   aaaaaaaaaaaaaar=   i4S4)r:   r   r   r   r   )r   r<   rB   rC   all)r   r   r    r5   	ex_valuesr   s        @r   test_numpy_string_dtype&TestTextReader.test_numpy_string_dtype   s    	R
 G,ay$&&&HH@M	q	Y&++----ay$&&&D)ay$&&&HH?tL	q	Y&++----ay$&&&r   c                   ^ SmU4S jnU" SSS.S9nUR                  5       nUS   R                  S:X  d   eUS   R                  S:X  d   eU" [        R                  [        S.S9nUR                  5       nUS   R                  S:X  d   eUS   R                  S	:X  d   eU" [        R                  " S5      [        R                  " S	5      S.S9nUR                  5       nUS   R                  S:X  d   eUS   R                  S	:X  d   eg )
Nzone,two
1,a
2,b
3,c
4,dc                  `   > SU ;   a  [        U S   5      U S'   [        [        T5      4SS0U D6$ )Nr<   rX   rW   r   r   s    r   r   4TestTextReader.test_pass_dtype.<locals>._make_reader   s5    $ 1$w- @WhtnDDtDDr   u1S1)oner=   r;   r   r=   O)r   r<   rB   uint8r|   )r   r   r    r5   r   s       @r   test_pass_dtypeTestTextReader.test_pass_dtype   s    	E
 DT$:;ay$&&&ay$&&&BHH$@Aay$&&&ay#%%%BHHTNrxx}$MNay$&&&ay#%%%r   c                   ^ SmU4S jnU" SS9nUR                  5       nU" 5       R                  5       n[        U5      S:X  d   eUS   US   :H  R                  5       (       d   eUS   US   :H  R                  5       (       d   eg )Nz a,b,c
1,2,3
4,5,6
7,8,9
10,11,12c                  2   > [        [        T5      4SS0U D6$ )NrX   rW   )r   r   r   s    r   r   1TestTextReader.test_usecols.<locals>._make_reader   s    htnDDtDDr   )r=   r/   )usecolsr/   r=   )r   r0   r   )r   r   r    r5   expr   s        @r   test_usecolsTestTextReader.test_usecols   s    	E f-n!!#6{aq	SV#((****q	SV#((****r   ztext, kwargsz a,b,c1,2,34,5,67,8,910,11,12rX   rW   z*a  b  c1  2  34  5  67  8  910  11  12rL   Tz 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,0zA  B  C  2  34  5  6zA B C2 34 5 6c                     UR                  SS5      n[        [        U5      40 UD6R                  5       n[        [        U5      40 UD6R                  5       n[	        XE5        g )Nz
)replacer   r   r   r}   )r   r*   kwargs	nice_textr5   rR   s         r   test_cr_delimited TestTextReader.test_cr_delimited  sU    , LLv.	HTN5f5::<hy1<V<AAC 2r   c                    Sn[        [        U5      SS9R                  5       n[        R                  " SS/[        R
                  S9[        R                  " SS/[        S9[        R                  " S	S/[        S9S
.n[        X#5        g )Nza,b,c
1,2,3
4,,rW   )rX   r=   r   r;   2 3rw   )r   r   r   rB   rC   rb   r|   r}   )r   r   r5   rR   s       r   test_empty_field_eof#TestTextReader.test_empty_field_eof!  sm    "HTNc:??A xxAbhh/xxb	0xxb	0

 	!2r   repeat
   c           	      x   [        S/[        R                  //S/SS/S9n[        / SQ/ SQ/[        S5      SS/S9n[        / SQS	[        R                  [        R                  [        R                  // S
QSS[        R                  [        R                  //[        S5      / SQS9n[	        [        S5      SS/SS9n[        R                  " XR5        [	        [        S5      [        S5      SS9n[        R                  " XS5        [	        [        S5      [        S5      SS9n[        R                  " XT5        g )Nr>   r:   rt   )columnsindex)r=   r=   r=   r   abcdr=   )r=   r/   r   r   r   )   	   r            )r   r         za,b
c
r   )skiprowsnamesenginez1,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)r   rB   nanlistr	   r   r@   rg   )r   r   r:   r>   rt   dfs         r   #test_empty_field_eof_mem_access_bug2TestTextReader.test_empty_field_eof_mem_access_bug-  s    urvvh'#sCjI|\2DLQRTUPVWBFFBFFBFF+R(	 L	
 hz*QseCP
b$12$v,s
 	b$<=v,

 	b$r   c                     [        [        5       SS / SQS9 n[        U[        5      (       d   e S S S 5        g ! , (       d  f       g = f)N   r   )	chunksizer&   r   )r	   r   
isinstancer   )r   r   s     r   test_empty_csv_input#TestTextReader.test_empty_csv_inputL  s;    J"T
b.1111
 
 
s	   9
Ar   N)"__name__
__module____qualname____firstlineno__rx   fixturer   r!   r'   r,   r6   rE   rI   rM   rS   r[   rc   rh   r   r   r   r   r   r   r   r   markparametrizer   r   ranger   r   __static_attributes__r   r   r   r   r      s3   ^^: :
1
+
944	041 3':&8+& [[3k35GH@#T* 4k35GH7 c" (*<d)CD #5t"<=!	
*3+*3
3 [[XuRy1% 2%<2r   r   c                     U R                  5        HF  u  p#[        R                  " [        R                  " U5      [        R                  " X   5      5        MH     g r   )itemsr@   rA   rB   asarray)leftrightkvs       r   r}   r}   T  s7    


##BJJqM2::eh3GH r   )__doc__r   r   r   numpyrB   rx   pandas._libs.parsers_libsparsersrz   r   pandas.errorsr   pandasr   pandas._testing_testingr@   pandas.io.parsersr   r	   "pandas.io.parsers.c_parser_wrapperr
   r   r}   r   r   r   <module>r      sG   
   % % + '   Av2 v2r	Ir   