a
    oÝEb<*  ã                   @   s˜   d Z ddlmZmZ ddl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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)Ú	DataFrame)ÚTextFileReaderÚread_csv)Úensure_dtype_objsc                   @   sÐ   e Zd Zejdd�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d+d,„ Zd-d.„ Zd/d0„ Zd1S )2ÚTestTextReaderT)Zautousec                 C   sR   |dddƒ| _ |dddƒ}tj |d¡| _tj | j d¡| _tj | j d¡| _d S )NÚioÚparserÚdataÚcsvz	test1.csvz	test2.csvztest.xls)ÚdirpathÚosÚpathÚjoinÚcsv1Zcsv2Zxls1)ÚselfÚdatapathZcsv1_dirpath© r   úf/home/ja/django-apps/lartica_env/lib/python3.9/site-packages/pandas/tests/io/parser/test_textreader.pyÚsetup_method   s
    zTestTextReader.setup_methodc                 C   s@   t | jdƒ� }t|ƒ}| ¡  W d   ƒ n1 s20    Y  d S )NÚrb©Úopenr   r   Úread©r   ÚfÚreaderr   r   r   Útest_file_handle$   s    zTestTextReader.test_file_handlec                 C   sD   t | jdƒ�$}t|d d�}| ¡  W d   ƒ n1 s60    Y  d S ©Nr   ©Úheaderr   r   r   r   r   Útest_file_handle_mmap)   s    z$TestTextReader.test_file_handle_mmapc                 C   sT   t | j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_factorize6   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   )Úar0   r0   r0   ©Údtypeé   )Úbr4   r4   r4   ©r   r   r   ÚtmÚassert_numpy_array_equalÚnpÚarrayÚobject_r,   r   r   r   Útest_skipinitialspace=   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   r2   r8   Zbool_r,   r   r   r   Útest_parse_booleansJ   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   )r0   r0   r0   r1   r3   )r4   r4   r4   r5   r,   r   r   r   Útest_delimit_whitespaceR   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!   )r0   zhello
thereÚthisr1   r   )r   r   r   r8   r9   r:   r6   r7   ©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   r8   r9   r6   Úassert_almost_equalr@   r   r   r   Útest_euro_decimalh   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,500rC   rD   ©rE   Z	thousandsr"   é@â éÔ0  r1   r   )r   r   r   r8   r9   Úint64r6   rG   r@   r   r   r   Útest_integer_thousandsq   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.500rC   Ú.rI   rJ   rK   )r   r   r   r   r6   Úassert_frame_equalr@   r   r   r   Útest_integer_thousands_altz   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 t|ƒdd dd�}| ¡  | ¡ }d|jv sàJ ‚d|jv sîJ ‚d S )Nz'a:b:c
d:e:f
g:h:i
j:k:l:m
l:m:n
o:p:q:rrC   ©rE   r"   zCError tokenizing data\. C error: Expected 3 fields in line 4, saw 4)Úmatchr'   )rE   r"   Zon_bad_lines)r0   ÚdÚgÚlr1   )r4   ÚeÚhÚm)Úcr   ÚiÚn©r   r3   r'   r3   zSkipping line 4zSkipping line 6)r   r   ÚpytestZraisesr   ZParserErrorr   r8   r9   ÚobjectÚassert_array_dicts_equalZ
readouterrÚerr)r   Zcapsysr   r   Úmsgr-   rA   Zcapturedr   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,6rD   r'   rQ   ©r0   r4   rY   r3   é   r1   é   é   é   r\   )r   r   r"   r   r8   r9   rL   r_   )r   r   r   r"   rA   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"rD   ú\)rE   r"   Ú
escapecharr   z"hello world"rf   r1   )r   r   r   r8   r9   r^   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 rl   r   rm   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 )Nr2   rD   rQ   ©r   r   r   ©Úkwds©r   r   r   Ú_make_readerÉ   s    z<TestTextReader.test_numpy_string_dtype.<locals>._make_readerzS5,i4r1   r   ZS5)r0   ÚaaÚaaaÚaaaaZaaaaar3   Úi4ZS4)r0   ru   rv   rw   rw   )r   r2   r8   r9   Úall)r   rt   r   r-   Z	ex_valuesr   rs   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 )Nr2   rE   rD   rp   rq   rs   r   r   rt   æ   s    z4TestTextReader.test_pass_dtype.<locals>._make_readerÚu1ZS1)Úoner3   r1   r   r3   ÚO)r   r2   r8   Zuint8r^   )r   rt   r   r-   r   rs   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 )NrE   rD   )r   r   rq   rs   r   r   rt     s    z1TestTextReader.test_usecols.<locals>._make_reader)r3   r'   )Zusecolsr'   r3   )r   r(   ry   )r   rt   r   r-   Úexpr   rs   r   Útest_usecolsú   s    

zTestTextReader.test_usecolsc                 C   sl   dd„ }d}||dd� d}||dd� d	}||dd� d
}||dd� d}||dd� d}||dd� d S )Nc                 [   sJ   |   dd¡}tt| ƒfi |¤Ž ¡ }tt|ƒfi |¤Ž ¡ }t||ƒ d S )Núz
)Úreplacer   r   r   r_   )r$   ÚkwargsZ	nice_textr-   rA   r   r   r   Ú_test  s    z/TestTextReader.test_cr_delimited.<locals>._testz a,b,c1,2,34,5,67,8,910,11,12rD   ©rE   z*a  b  c1  2  34  5  67  8  910  11  12T)r=   z 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 6r   )r   r„   r   Úsampler   r   r   Útest_cr_delimited  s    ÿz TestTextReader.test_cr_delimitedc           	      C   sR  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||ƒ 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dƒD ]j}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 ||¡ qâd S )Nza,b,c
1,2,3
4,,rD   r…   r3   rd   r1   Ú2Ú Ú3r\   r4   r0   rY   )ÚcolumnsÚindex)r3   r3   r3   r   Úabcd)r3   r'   rf   rd   rg   )é   é	   é
   é   é   é   )r   re   é   é   éd   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   r   r   r8   r9   rL   r^   r_   r   ÚnanÚlistÚranger   r6   rO   )	r   r   r-   rA   r0   r4   rY   Ú_Údfr   r   r   Útest_empty_field_eof*  s>    ý
"üøÿýz#TestTextReader.test_empty_field_eofc                 C   sH   t tƒ dd g d¢d��}t|tƒs&J ‚W d   ƒ n1 s:0    Y  d S )Né   rc   )Ú	chunksizer"   r—   )r   r   Ú
isinstancer   )r   r�   r   r   r   Útest_empty_csv_inputT  s
    ÿz#TestTextReader.test_empty_csv_inputN)Ú__name__Ú
__module__Ú__qualname__r]   Zfixturer   r   r#   r&   r.   r;   r<   r>   rB   rH   rM   rP   rb   rh   rk   rn   ro   rz   r~   r€   r‡   rž   r¢   r   r   r   r   r	      s0   

			*r	   c                 C   s2   |   ¡ D ]$\}}t t |¡t || ¡¡ qd S rl   )Úitemsr6   r7   r8   Zasarray)ÚleftÚrightÚkÚvr   r   r   r_   \  s    r_   )Ú__doc__r
   r   r   r   Únumpyr8   r]   Zpandas._libs.parsersZ_libsÚparsersr   r   Zpandasr   Zpandas._testingZ_testingr6   Zpandas.io.parsersr   r   Z"pandas.io.parsers.c_parser_wrapperr   r	   r_   r   r   r   r   Ú<module>   s     C