
    .i;/                         U d Z ddlmZmZ ddlZddlZddlmc m	Z
 ddlmZ ddlmZ ddlmZ ddlmZ ddlmZmZ ddlmZ  e        e       d	Zeeef   ed
<    G d d      Zd Zy)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_objs)	na_values
na_fvalues_na_value_kwargsc                      e Zd Zej                  d        Zd Zd Zd Zd Z	d Z
d Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zej4                  j7                  ddddifdddifdddifdddifdddifd ddifg      d!        Zd" Zej4                  j7                  d# ed$            d%        Zd& Z y')(TestTextReaderc                      |dddd      S )Niodatacsvz	test1.csv )selfdatapaths     d/var/www/app/trading-bot/venv/lib/python3.12/site-packages/pandas/tests/io/parser/test_textreader.pycsv_pathzTestTextReader.csv_path#   s    fe[99    c                     t        |d      5 }t        |fi t        }|j                          d d d        y # 1 sw Y   y xY w)Nrbopenr   r   readr   r   freaders       r   test_file_handlezTestTextReader.test_file_handle'   s<    (D! 	Q6%56FKKM	 	 	s	   !7A c                     t        |d      5 }t        |fdd it        }|j                          d d d        y # 1 sw Y   y xY wNr   headerr   r   s       r   test_file_handle_mmapz$TestTextReader.test_file_handle_mmap,   sA    (D! 	QC$C2BCFKKM	 	 	s	   #9Ac                     t        |d      5 }|j                         }d d d        t              }t        |fdd it        }|j                          y # 1 sw Y   7xY wr$   )r   r   r   r   r   )r   r   r    textsrcr!   s         r   test_StringIOzTestTextReader.test_StringIO2   sU    (D! 	Q668D	dmCAA0@A		 	s   AAc                     t        |d      5 }d}t        j                  t        |      5  t	        |d       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)NzUTF-8)encodingz%latin1 is different from the encodingmatchlatin1)r   pytestraises
ValueErrorr	   )r   r   r    msgs       r   test_encoding_mismatch_warningz-TestTextReader.test_encoding_mismatch_warning9   sZ    (W- 	/9Cz5 /X./	/ 	// /	/ 	/s!   AAAA	AA c           	          d}t        t        |      fdd it        }|j                         }t	        t        t        t        |d                     dk(  sJ y )Nz	a
b
a
b
ar%   r      )r   r   r   r   lensetmapidr   r   r!   results       r   test_string_factorizez$TestTextReader.test_string_factorize@   sN    HTNL4L;KL3s2vay)*+q000r   c                 X   d}t        t        |      fdd dt        }|j                         }t	        j
                  |d   t        j                  g dt        j                               t	        j
                  |d   t        j                  g dt        j                               y )	Nza,   b
a,   b
a,   b
a,   bT)skipinitialspacer%   r   )ar@   r@   r@   dtype   )brD   rD   rD   	r   r   r   r   tmassert_numpy_array_equalnparrayobject_r;   s       r   test_skipinitialspacez$TestTextReader.test_skipinitialspaceG   s    /TN
-1$
BR
 
##1Irxx 4BJJG	
 	##1Irxx 4BJJG	
r   c                     d}t        t        |      fdd it        }|j                         }|d   j                  t
        j                  k(  sJ y )NzTrue
False
True
Truer%   r   )r   r   r   r   rB   rH   bool_r;   s       r   test_parse_booleansz"TestTextReader.test_parse_booleansV   sE    (HTNL4L;KLay"((***r   c                 X   d}t        t        |      fdd dt        }|j                         }t	        j
                  |d   t        j                  g dt        j                               t	        j
                  |d   t        j                  g dt        j                               y )	Nza  b
a		 "b"
"a"	 	 bT)delim_whitespacer%   r   )r@   r@   r@   rA   rC   )rD   rD   rD   rE   r;   s       r   test_delimit_whitespacez&TestTextReader.test_delimit_whitespace^   s    ,TN
-1$
BR
 
##1IrxxrzzB	
 	##1IrxxrzzB	
r   c                     d}t        t        |      fdd it        }|j                         }t	        j
                  g dt        j                        }t        j                  |d   |       y )Nza
"hello
there"
thisr%   )r@   zhello
therethisrA   r   )	r   r   r   r   rH   rI   rJ   rF   rG   r   r   r!   r<   expecteds        r   test_embedded_newlinez$TestTextReader.test_embedded_newlinem   sT    (HTNL4L;KL889L
##F1Ix8r   c                     d}t        t        |      fddd dt        }|j                         }t	        j
                  ddg      }t        j                  |d   |       y )Nz12345,67
345,678:,)	delimiterdecimalr%   g)\@g+ٚu@r   )r   r   r   r   rH   rI   rF   assert_almost_equalrT   s        r   test_euro_decimalz TestTextReader.test_euro_decimalv   s`    "TN
&)3t
GW
 88Xw/0
vay(3r   c                     d}t        t        |      fddd dt        }|j                         }t	        j
                  ddgt        j                        }t        j                  |d   |       y )	Nz123,456
12,500rX   rY   rZ   	thousandsr%   @ 0  rA   r   )	r   r   r   r   rH   rI   int64rF   r\   rT   s        r   test_integer_thousandsz%TestTextReader.test_integer_thousands   si     TN
	

 
 88VUO288<
vay(3r   c                     d}t        t        |      ddd       }|j                         }t        ddg      }t	        j
                  ||       y )Nz123.456
12.500rX   .r_   ra   rb   )r   r   r   r   rF   assert_frame_equalrT   s        r   test_integer_thousands_altz)TestTextReader.test_integer_thousands_alt   sI     TNcS
 fe_-
fh/r   c                    d}t        t        |      fdd dt        }d}t        j                  t
        j                  |      5  |j                          d d d        t        t        |      fdd ddt        }|j                         }t        j                  g dt        	      t        j                  g d
t        	      t        j                  g dt        	      d}t        ||       t        j                  t        d      5  t        t        |      fdd ddt        }|j                          d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nz'a:b:c
d:e:f
g:h:i
j:k:l:m
l:m:n
o:p:q:rrX   rZ   r%   zCError tokenizing data\. C error: Expected 3 fields in line 4, saw 4r-   r6   )rZ   r%   on_bad_lines)r@   dglrA   )rD   ehm)cr    inr   rC   r6   zSkipping linerC   )r   r   r   r0   r1   parserParserErrorr   rH   rI   objectassert_array_dicts_equalrF   assert_produces_warningr   )r   r   r!   r3   r<   rU   s         r   test_skip_bad_linesz"TestTextReader.test_skip_bad_lines   s:   =TN
&)$
:J
 U]]6--S9 	KKM	 TN
	

 
 xx,F;xx,F;xx,F;

 	!2''_M 		
 #F KKM	 	%	 	$	 	s   E
.EE
Ec                    d}t        t        |      fdddt        }|j                  }g dg}||k(  sJ |j	                         }t        j                  ddgt
        j                        t        j                  dd	gt
        j                        t        j                  d
dgt
        j                        d}t        ||       y )Nz%skip this
skip this
a,b,c
1,2,3
4,5,6rY   r6   rj   r@   rD   rr   rC      rA            ru   )	r   r   r   r%   r   rH   rI   rc   ry   )r   r   r!   r%   rU   recss         r   test_header_not_enough_linesz+TestTextReader.test_header_not_enough_lines   s    :HTNXc!XGWX#$!!!{{}xxAbhh/xxAbhh/xxAbhh/

 	!x0r   c                     d}t        t        |      fdd ddt        }|j                         }dt	        j
                  dgdz  t              i}t        ||       y )	Nz,\"hello world"
\"hello world"
\"hello world"rY   \)rZ   r%   
escapecharr   z"hello world"r   rA   )r   r   r   r   rH   rI   rx   ry   rT   s        r   test_escapecharzTestTextReader.test_escapechar   sd    BTN
	

 
 rxx 1A 5VDE 2r   c                      y Nr   r   s    r   test_eof_has_eolzTestTextReader.test_eof_has_eol   s    r   c                      y r   r   r   s    r   test_na_substitutionz#TestTextReader.test_na_substitution   s    r   c                    dfd} |d      }|j                         }|d   j                  dk(  sJ t        j                  g dd      }|d   |k(  j	                         sJ |d   j                  d	k(  sJ  |d
      }|j                         }|d   j                  d
k(  sJ t        j                  g dd
      }|d   |k(  j	                         sJ |d   j                  d
k(  sJ y )Nza,1
aa,2
aaa,3
aaaa,4
aaaaa,5c                  j    d| v rt        | d         | d<   t        t              fdd d| t        S )NrB   rY   rj   r
   r   r   r   kwdsr   s    r   _make_readerz<TestTextReader.test_numpy_string_dtype.<locals>._make_reader   sJ    $ 1$w- @W*-d>BFV r   zS5,i4rA   r   S5)r@   aaaaaaaaaaaaaarC   i4S4)r@   r   r   r   r   )r   rB   rH   rI   all)r   r   r!   r<   	ex_valuesr   s        @r   test_numpy_string_dtypez&TestTextReader.test_numpy_string_dtype   s    	 G,ay$&&&HH@M	q	Y&++---ay$&&&D)ay$&&&HH?tL	q	Y&++---ay$&&&r   c                    dfd} |ddd      }|j                         }|d   j                  dk(  sJ |d   j                  dk(  sJ  |t        j                  t        d      }|j                         }|d   j                  dk(  sJ |d   j                  d	k(  sJ  |t        j                  d      t        j                  d	      d      }|j                         }|d   j                  dk(  sJ |d   j                  d	k(  sJ y )
Nzone,two
1,a
2,b
3,c
4,dc                  h    d| v rt        | d         | d<   t        t              fddi| t        S )NrB   rZ   rY   r   r   s    r   r   z4TestTextReader.test_pass_dtype.<locals>._make_reader  s;    $ 1$w- @WhtnXXtXGWXXr   u1S1)onerC   rA   r   rC   O)r   rB   rH   uint8rx   )r   r   r!   r<   r   s       @r   test_pass_dtypezTestTextReader.test_pass_dtype  s    	Y
 DT$:;ay$&&&ay$&&&BHH$@Aay$&&&ay#%%%BHHTNrxx}$MNay$&&&ay#%%%r   c                     dfd} |d      }|j                         } |       j                         }t        |      dk(  sJ |d   |d   k(  j                         sJ |d   |d   k(  j                         sJ y )Nz a,b,c
1,2,3
4,5,6
7,8,9
10,11,12c                  >    t        t              fddi| t        S )NrZ   rY   )r   r   r   r   s    r   r   z1TestTextReader.test_usecols.<locals>._make_reader'  s"    htnXXtXGWXXr   )rC   r6   )usecolsr6   rC   )r   r7   r   )r   r   r!   r<   expr   s        @r   test_usecolszTestTextReader.test_usecols  s    	Y 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,12rZ   rY   z*a  b  c1  2  34  5  67  8  910  11  12rP   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                     |j                  dd      }t        t        |      fi |t        j	                         }t        t        |      fi |t        j	                         }t        ||       y )Nz
)replacer   r   r   r   ry   )r   r(   kwargs	nice_textr<   rU   s         r   test_cr_delimitedz TestTextReader.test_cr_delimited2  sc    , LLv.	HTNIfI8HINNPhy1PVP?OPUUW 2r   c                 4   d}t        t        |      fddit        j                         }t	        j
                  ddgt        j                        t	        j
                  ddgt              t	        j
                  d	dgt              d
}t        ||       y )Nza,b,c
1,2,3
4,,rZ   rY   rC   r~   rA   2 3ru   )	r   r   r   r   rH   rI   rc   rx   ry   )r   r   r<   rU   s       r   test_empty_field_eofz#TestTextReader.test_empty_field_eofM  sx    "HTNNcN=MNSSU xxAbhh/xxb	0xxb	0

 	!2r   repeat
   c           	         t        dgt        j                  ggdgddg      }t        g dg dgt        d      ddg      }t        g dd	t        j                  t        j                  t        j                  gg d
ddt        j                  t        j                  ggt        d      g d      }t	        t        d      ddgd      }t        j                  ||       t	        t        d      t        d      d      }t        j                  ||       t	        t        d      t        d      d      }t        j                  ||       y )NrD   r@   rr   )columnsindex)rC   rC   rC   r   abcdrC   )rC   r6   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   rH   nanlistr	   r   rF   rg   )r   r   r@   rD   rr   dfs         r   #test_empty_field_eof_mem_access_bugz2TestTextReader.test_empty_field_eof_mem_access_bugY  s    urvvh'#sCjI|\2DLQRTUPVWBFFBFFBFF+R(	 L	
 hz*QseCP
b!$12$v,s
 	b!$<=v,

 	b!$r   c                     t        t               dd g d      5 }t        |t              sJ 	 d d d        y # 1 sw Y   y xY w)N   r}   )	chunksizer%   r   )r	   r   
isinstancer   )r   r   s     r   test_empty_csv_inputz#TestTextReader.test_empty_csv_inputx  s=    J"T
 	2b.111	2 	2 	2s	   7A N)!__name__
__module____qualname__r0   fixturer   r"   r&   r*   r4   r=   rK   rN   rQ   rV   r]   rd   rh   r{   r   r   r   r   r   r   r   markparametrizer   r   ranger   r   r   r   r   r   r   "   s9   ^^: :
/1
+
9	44	0"H1 3'>&8+& [[3k35GH@#T* 4k35GH7 c" (*<d)CD #5t"<=!	
*3+*3
3 [[XuRy1% 2%<2r   r   c                     | j                         D ]D  \  }}t        j                  t        j                  |      t        j                  ||                F y r   )itemsrF   rG   rH   asarray)leftrightkvs       r   ry   ry     sB    

 I1
##BJJqM2::eAh3GHIr   )__doc__r   r   r   numpyrH   r0   pandas._libs.parsers_libsparsersrv   r   pandas.errorsr   pandasr   pandas._testing_testingrF   pandas.io.parsersr   r	   "pandas.io.parsers.c_parser_wrapperr
   r8   r   dictstr__annotations__r   ry   r   r   r   <module>r      se   

   % % + '   A 25ce#L $sCx. L[2 [2|
Ir   