a
    é´«j°)  ã                   @   sœ   d Z ddlmZmZ ddlZddlZddlm  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 G d	d
„ d
ƒZdd„ ZdS )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                   @   s.  e Zd Zejdd„ ƒZdd„ Zdd„ Zdd„ Zd	d
„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zej d)d*d+d,ifd-d.d/ifd0d+d,ifd1d+d,ifd2d.d/ifd3d.d/ifg¡d4d5„ ƒZd6d7„ Zej d8ed9ƒ¡d:d;„ ƒZd<d=„ Zd>S )?ÚTestTextReaderc                 C   s   |ddddƒS )NÚioÚdataÚcsvz	test1.csv© )ÚselfÚdatapathr   r   úe/var/www/html/laksyashrimp/venv/lib/python3.9/site-packages/pandas/tests/io/parser/test_textreader.pyÚcsv_path   s    zTestTextReader.csv_pathc                 C   s>   t |dƒ� }t|ƒ}| ¡  W d   ƒ n1 s00    Y  d S )NÚrb©Úopenr   Úread©r   r   ÚfÚreaderr   r   r   Útest_file_handle    s    zTestTextReader.test_file_handlec                 C   sB   t |dƒ�$}t|d d�}| ¡  W d   ƒ n1 s40    Y  d S ©Nr   ©Úheaderr   r   r   r   r   Útest_file_handle_mmap%   s    z$TestTextReader.test_file_handle_mmapc                 C   sR   t |dƒ�}| ¡ }W d   ƒ n1 s(0    Y  t|ƒ}t|d d�}| ¡  d S r   )r   r   r   r   )r   r   r   ÚtextÚsrcr   r   r   r   Útest_StringIO+   s
    &zTestTextReader.test_StringIOc                 C   s>   d}t t|ƒd d�}| ¡ }tttt|d ƒƒƒdks:J ‚d S )Nz	a
b
a
b
ar   r   é   )r   r   r   ÚlenÚsetÚmapÚid©r   r   r   Úresultr   r   r   Útest_string_factorize2   s    z$TestTextReader.test_string_factorizec                 C   sb   d}t t|ƒdd d�}| ¡ }t |d tjg d¢tjd�¡ t |d tjg d¢tjd�¡ d S )	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_r'   r   r   r   Útest_skipinitialspace9   s    ÿÿz$TestTextReader.test_skipinitialspacec                 C   s4   d}t t|ƒd d�}| ¡ }|d jtjks0J ‚d S )NzTrue
False
True
Truer   r   )r   r   r   r-   r3   Zbool_r'   r   r   r   Útest_parse_booleansF   s    z"TestTextReader.test_parse_booleansc                 C   sb   d}t t|ƒdd d�}| ¡ }t |d tjg d¢tjd�¡ t |d tjg d¢tjd�¡ d S )	Nza  b
a		 "b"
"a"	 	 bT)Údelim_whitespacer   r   )r+   r+   r+   r,   r.   )r/   r/   r/   r0   r'   r   r   r   Útest_delimit_whitespaceN   s    ÿÿz&TestTextReader.test_delimit_whitespacec                 C   sD   d}t t|ƒd d�}| ¡ }tjg d¢tjd�}t |d |¡ d S )Nza
"hello
there"
thisr   )r+   zhello
thereÚthisr,   r   )r   r   r   r3   r4   r5   r1   r2   ©r   r   r   r(   Úexpectedr   r   r   Útest_embedded_newline[   s
    z$TestTextReader.test_embedded_newlinec                 C   sB   d}t t|ƒddd d�}| ¡ }t ddg¡}t |d |¡ d S )Nz12345,67
345,678ú:ú,)Ú	delimiterÚdecimalr   g)\�ÂÕÈ@g+‡Ùšu@r   )r   r   r   r3   r4   r1   Úassert_almost_equalr;   r   r   r   Útest_euro_decimald   s
    z TestTextReader.test_euro_decimalc                 C   sH   d}t t|ƒddd d�}| ¡ }tjddgtjd�}t |d |¡ d S )	Nz123,456
12,500r>   r?   ©r@   Z	thousandsr   é@â éÔ0  r,   r   )r   r   r   r3   r4   Úint64r1   rB   r;   r   r   r   Útest_integer_thousandsm   s
    z%TestTextReader.test_integer_thousandsc                 C   s<   d}t t|ƒddd d�}| ¡ }tddgƒ}t ||¡ d S )Nz123.456
12.500r>   Ú.rD   rE   rF   )r   r   r   r   r1   Úassert_frame_equalr;   r   r   r   Útest_integer_thousands_altv   s    ÿz)TestTextReader.test_integer_thousands_altc                 C   sü   d}t t|ƒdd d�}d}tjtj|d�� | ¡  W d   ƒ n1 sH0    Y  t t|ƒdd dd�}| ¡ }tjg d¢t	d	�tjg d
¢t	d	�tjg d¢t	d	�dœ}t
||ƒ tjtdd��, t t|ƒdd dd�}| ¡  W d   ƒ n1 sî0    Y  d S )Nz'a:b:c
d:e:f
g:h:i
j:k:l:m
l:m:n
o:p:q:rr>   ©r@   r   zCError tokenizing data\. C error: Expected 3 fields in line 4, saw 4)Úmatchr"   )r@   r   Zon_bad_lines)r+   ÚdÚgÚlr,   )r/   ÚeÚhÚm)Úcr   ÚiÚn©r   r.   r"   zSkipping liner.   )r   r   ÚpytestZraisesÚparserZParserErrorr   r3   r4   ÚobjectÚassert_array_dicts_equalr1   Zassert_produces_warningr   )r   r   r   Úmsgr(   r<   r   r   r   Útest_skip_bad_lines�   s&    &ÿý
ÿz"TestTextReader.test_skip_bad_linesc                 C   s„   d}t t|ƒddd�}|j}g d¢g}||ks2J ‚| ¡ }tjddgtjd�tjdd	gtjd�tjd
dgtjd�dœ}t||ƒ d S )Nz%skip this
skip this
a,b,c
1,2,3
4,5,6r?   r"   rL   ©r+   r/   rT   r.   é   r,   é   é   é   rW   )r   r   r   r   r3   r4   rG   r[   )r   r   r   r   r<   Zrecsr   r   r   Útest_header_not_enough_lines›   s    
ýz+TestTextReader.test_header_not_enough_linesc                 C   sF   d}t t|ƒdd dd�}| ¡ }dtjdgd td�i}t||ƒ d S )	Nz,\"hello world"
\"hello world"
\"hello world"r?   ú\)r@   r   Ú
escapecharr   z"hello world"ra   r,   )r   r   r   r3   r4   rZ   r[   r;   r   r   r   Útest_escapechar«   s
    zTestTextReader.test_escapecharc                 C   s   d S ©Nr   ©r   r   r   r   Útest_eof_has_eol³   s    zTestTextReader.test_eof_has_eolc                 C   s   d S rg   r   rh   r   r   r   Útest_na_substitution·   s    z#TestTextReader.test_na_substitutionc                    sÌ   d‰ ‡ fdd„}|dd�}|  ¡ }|d jdks4J ‚tjg d¢dd�}|d |k ¡ sZJ ‚|d	 jd
kslJ ‚|dd�}|  ¡ }|d jdks�J ‚tjg d¢dd�}|d |k ¡ s¶J ‚|d	 jdksÈJ ‚d S )Nza,1
aa,2
aaa,3
aaaa,4
aaaaa,5c                     s2   d| v rt | d ƒ| d< ttˆ ƒfdd dœ| ¤ŽS )Nr-   r?   rL   ©r	   r   r   ©Úkwds©r   r   r   Ú_make_readerÂ   s    z<TestTextReader.test_numpy_string_dtype.<locals>._make_readerzS5,i4r,   r   ZS5)r+   ÚaaÚaaaÚaaaaZaaaaar.   Úi4ZS4)r+   rp   rq   rr   rr   )r   r-   r3   r4   Úall)r   ro   r   r(   Z	ex_valuesr   rn   r   Útest_numpy_string_dtypeº   s    

z&TestTextReader.test_numpy_string_dtypec                    sÖ   d‰ ‡ fdd„}|dddœd�}|  ¡ }|d jdks:J ‚|d	 jdksLJ ‚|tjtdœd�}|  ¡ }|d jdksxJ ‚|d	 jd
ksŠJ ‚|t d¡t d
¡dœd�}|  ¡ }|d jdksÀJ ‚|d	 jd
ksÒJ ‚d S )Nzone,two
1,a
2,b
3,c
4,dc                     s0   d| v rt | d ƒ| d< ttˆ ƒfddi| ¤ŽS )Nr-   r@   r?   rk   rl   rn   r   r   ro   ß   s    z4TestTextReader.test_pass_dtype.<locals>._make_readerÚu1ZS1)Úoner.   r,   r   r.   ÚO)r   r-   r3   Zuint8rZ   )r   ro   r   r(   r   rn   r   Útest_pass_dtype×   s    zTestTextReader.test_pass_dtypec                    sp   d‰ ‡ fdd„}|dd�}|  ¡ }|ƒ   ¡ }t|ƒdks<J ‚|d |d k ¡ sTJ ‚|d |d k ¡ slJ ‚d S )Nz a,b,c
1,2,3
4,5,6
7,8,9
10,11,12c                     s   t tˆ ƒfddi| ¤ŽS )Nr@   r?   )r   r   rl   rn   r   r   ro   û   s    z1TestTextReader.test_usecols.<locals>._make_reader)r.   r"   )Zusecolsr"   r.   )r   r#   rt   )r   ro   r   r(   Úexpr   rn   r   Útest_usecolsó   s    

zTestTextReader.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  12r8   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                 C   sJ   |  dd¡}tt|ƒfi |¤Ž ¡ }tt|ƒfi |¤Ž ¡ }t||ƒ d S )Núz
)Úreplacer   r   r   r[   )r   r   ÚkwargsZ	nice_textr(   r<   r   r   r   Útest_cr_delimited  s    z TestTextReader.test_cr_delimitedc                 C   s^   d}t t|ƒdd� ¡ }tjddgtjd�tjddgtd�tjd	dgtd�d
œ}t||ƒ d S )Nza,b,c
1,2,3
4,,r?   )r@   r.   r_   r,   Ú2Ú Ú3rW   )r   r   r   r3   r4   rG   rZ   r[   )r   r   r(   r<   r   r   r   Útest_empty_field_eof!  s    ýz#TestTextReader.test_empty_field_eofÚrepeaté
   c                 C   sê   t dgtjggdgddgd�}t g d¢g d¢gtdƒddgd�}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¢d�}ttdƒddgdd�}t ||¡ ttdƒtdƒdd�}t ||¡ ttdƒtdƒdd�}t ||¡ d S )Nr/   r+   rT   )ÚcolumnsÚindex)r.   r.   r.   r   Úabcdr.   )r.   r"   ra   r_   rb   )é   é	   r…   é   é   é   )r   r`   é   é   za,b
c
r   )Z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   r3   ÚnanÚlistr   r   r1   rJ   )r   r„   r+   r/   rT   Údfr   r   r   Ú#test_empty_field_eof_mem_access_bug-  s.    "üøÿýz2TestTextReader.test_empty_field_eof_mem_access_bugc                 C   sH   t tƒ dd g d¢d��}t|tƒs&J ‚W d   ƒ n1 s:0    Y  d S )Né   r^   )Ú	chunksizer   r�   )r   r   Ú
isinstancer   )r   r”   r   r   r   Útest_empty_csv_inputL  s
    ÿz#TestTextReader.test_empty_csv_inputN) Ú__name__Ú
__module__Ú__qualname__rX   Zfixturer   r   r   r!   r)   r6   r7   r9   r=   rC   rH   rK   r]   rc   rf   ri   rj   ru   ry   r{   ÚmarkZparametrizer   rƒ   Úranger•   r™   r   r   r   r   r
      sP   
			
þ
ú

ðþ

r
   c                 C   s2   |   ¡ D ]$\}}t t |¡t || ¡¡ qd S rg   )Úitemsr1   r2   r3   Zasarray)ÚleftÚrightÚkÚvr   r   r   r[   T  s    r[   )Ú__doc__r   r   r   Únumpyr3   rX   Zpandas._libs.parsersZ_libsÚparsersrY   r   Zpandas.errorsr   Zpandasr   Zpandas._testingZ_testingr1   Zpandas.io.parsersr   r   Z"pandas.io.parsers.c_parser_wrapperr	   r
   r[   r   r   r   r   Ú<module>   s     ;