U
    ¾mœd¥  ã                   @   s  d Z ddlmZ ddlmZ ddlZddlZddlmZ ddl	m
Z
mZ ddlmZ ej d¡Zej deed	ƒƒd	g¡d
d„ ƒZdd„ Zdd„ Zej ddddgie
dddgdddggdddgd�fdddgdœe
ddd ggd!d"d#gd�fd$dddgdœe
d%d&ggd'd(gd�fg¡d)d*„ ƒZd+d,„ Zej d-d.dd/dgdd0dggfd1dd2dgdd3dggfd4dd5dgdd6dggfg¡d7d8„ ƒZej d9d:d;d<g¡d=d>„ ƒZd?d@„ Zej dAi e
dBddCgiƒfddDgdEœe
dDddCgiƒfg¡dFdG„ ƒZdHdI„ ZdJdK„ ZdLdM„ Z dNdO„ Z!dS )Pzj
Tests that skipped rows are properly handled during
parsing for all of the parsers defined in parsers.py
é    )Údatetime)ÚStringION)ÚEmptyDataError)Ú	DataFrameÚIndexZpyarrow_skipÚskiprowsé   c                 C   s|   | }d}|j t|ƒ|d ddd�}ttdddƒtdddƒtdddƒgdd	�}tt d
d¡ d¡dddg|d�}t 	||¡ d S )Nzr#foo,a,b,c
#foo,a,b,c
#foo,a,b,c
#foo,a,b,c
#foo,a,b,c
#foo,a,b,c
1/1/2000,1.,2.,3.
1/2/2000,4,5,6
1/3/2000,7,8,9
r   T©r   ÚheaderZ	index_colZparse_dateséÐ  é   é   é   ©Únameç      ð?ç      $@©r   r   ©ÚcolumnsÚindex©
Úread_csvr   r   r   r   ÚnpZarangeZreshapeÚtmÚassert_frame_equal)Úall_parsersr   ÚparserÚtextÚresultr   Úexpected© r!   ú]/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/pandas/tests/io/parser/test_skiprows.pyÚtest_skip_rows_bug   s&    
    ÿ  ÿ  ÿr#   c                 C   sl   | }dd  dd„ tdƒD ƒ¡ }dd  dd„ dD ƒ¡ }|jt|ƒdd	gd
�}| t|ƒ¡}t ||¡ d S )Nza,b,c
Ú
c              	   S   s0   g | ](}d   t|ƒt|d ƒt|d ƒg¡‘qS ©ú,r   r   ©ÚjoinÚstr©Ú.0Úir!   r!   r"   Ú
<listcomp>7   s     z'test_deep_skip_rows.<locals>.<listcomp>é
   c              	   S   s0   g | ](}d   t|ƒt|d ƒt|d ƒg¡‘qS r%   r'   r*   r!   r!   r"   r-   :   s     )r   r   r   r   é   r   é   é	   r   r0   ©r   )r(   Úranger   r   r   r   )r   r   ÚdataZcondensed_datar   Zcondensed_resultr!   r!   r"   Útest_deep_skip_rows3   s    ÿÿr5   c                 C   s|   | }d}|j t|ƒdd ddd�}ttdddƒtdddƒtddd	ƒgdd
�}tt dd¡ d¡ddd	g|d�}t 	||¡ d S )Nz^#foo,a,b,c
#foo,a,b,c

#foo,a,b,c
#foo,a,b,c

1/1/2000,1.,2.,3.
1/2/2000,4,5,6
1/3/2000,7,8,9
r   r   Tr	   r   r   r   r   r   r   r   r   r   r   )r   r   r   r4   r   r    r!   r!   r"   Útest_skip_rows_blankB   s&    
    ÿ  ÿ  ÿr6   zdata,kwargs,expectedzKid,text,num_lines
1,"line 11
line 12",2
2,"line 21
line 22",2
3,"line 31",1r   r   zline 21
line 22r   zline 31Úidr   Ú	num_lines©r   z+a,b,c
~a
 b~,~e
 d~,~f
 f~
1,2,~12
 13
 14~ú~)Ú	quotecharr   za
 bze
 dzf
 fÚaÚbÚczdText,url
~example
 sentence
 one~,url1
~example
 sentence
 two~,url2
~example
 sentence
 three~,url3zexample
 sentence
 twoÚurl2ÚTextÚurlc                 C   s&   | }|j t|ƒf|Ž}t ||¡ d S )N©r   r   r   r   )r   r4   Úkwargsr    r   r   r!   r!   r"   Útest_skip_row_with_newline\   s    #rD   c                 C   sR   | }d}dddgdddgg}t |ddd	gd
�}|jt|ƒdgd�}t ||¡ d S )NzYid,text,num_lines
1,"line '11' line 12",2
2,"line '21' line 22",2
3,"line '31' line 32",1r   zline '21' line 22r   zline '31' line 32r   r7   r   r8   r9   r2   ©r   r   r   r   r   )r   r   r4   Úexp_datar    r   r!   r!   r"   Útest_skip_row_with_quote„   s    rG   zdata,exp_dataz\id,text,num_lines
1,"line 
'11' line 12",2
2,"line 
'21' line 22",2
3,"line 
'31' line 32",1zline 
'21' line 22zline 
'31' line 32z\id,text,num_lines
1,"line '11
' line 12",2
2,"line '21
' line 22",2
3,"line '31
' line 32",1zline '21
' line 22zline '31
' line 32zbid,text,num_lines
1,"line '11
' 	line 12",2
2,"line '21
' 	line 22",2
3,"line '31
' 	line 32",1zline '21
' 	line 22zline '31
' 	line 32c                 C   s:   | }|j t|ƒdgd�}t|dddgd�}t ||¡ d S )Nr   r2   r7   r   r8   r9   ©r   r   r   r   r   )r   r4   rF   r   r   r    r!   r!   r"   Ú$test_skip_row_with_newline_and_quote“   s    rI   Úlineterminatorr$   z
úc              	   C   s¸   | }d  ddddg¡}tdddd	d
gdddd
dgddddd
ggdddddgd�}|jdkr||dkr|tjjdd�}|j |¡ | d|¡}|j	t
|ƒdddddddgd�}t ||¡ d S )Nr$   zSMOSMANIA ThetaProbe-ML2X z2007/01/01 01:00   0.2140 U M z2007/01/01 02:00   0.2141 M O z2007/01/01 04:00   0.2142 D M z
2007/01/01z01:00g1¬ZdË?ÚUÚMz02:00gºk	ù gË?ÚOz04:00gBÏfÕçjË?ÚDÚdateÚtimeÚvarÚflagZoflagr9   ÚpythonrK   z+'CR' not respect with the Python parser yet)Úreasonr   T)r   Zdelim_whitespaceÚnames)r(   r   ZengineÚpytestÚmarkZxfailÚnodeZ
add_markerÚreplacer   r   r   r   )r   rJ   Úrequestr   r4   r    rX   r   r!   r!   r"   Útest_skiprows_lineterminator¶   s4    üÿýú	ür\   c                 C   s8   | }d}t ddgiƒ}|jt|ƒdd�}t ||¡ d S )Nz	a"
b"
a
1r<   r   r   r2   rE   ©r   r   r4   r    r   r!   r!   r"   Útest_skiprows_infield_quoteÛ   s
    r^   zkwargs,expectedÚ1é   Zfoo)r
   rV   c                 C   s6   | }d}|j t|ƒfddd„ i|—Ž}t ||¡ d S )Núa
1
2
3
4
5r   c                 S   s   | d dkS )Nr   r   r!   ©Úxr!   r!   r"   Ú<lambda>ð   ó    z)test_skip_rows_callable.<locals>.<lambda>rB   )r   rC   r    r   r4   r   r!   r!   r"   Útest_skip_rows_callableå   s    rf   c                 C   sD   | }d}t ddgddggƒ}|jt|ƒd dd„ d�}t ||¡ d S )	Nz0,a
1,b
2,c
3,d
4,er   r=   r   Údc                 S   s   | dkS )N)r   r   r!   rb   r!   r!   r"   rd   ú   re   z0test_skip_rows_callable_not_in.<locals>.<lambda>)r
   r   rE   r]   r!   r!   r"   Útest_skip_rows_callable_not_inô   s      ÿrh   c              	   C   s@   | }d}d}t jt|d�� |jt|ƒdd„ d� W 5 Q R X d S )Nra   zNo columns to parse from file©Úmatchc                 S   s   dS )NTr!   rb   r!   r!   r"   rd     re   z)test_skip_rows_skip_all.<locals>.<lambda>r2   )rW   Úraisesr   r   r   )r   r   r4   Úmsgr!   r!   r"   Útest_skip_rows_skip_allÿ   s
    rm   c              	   C   s@   d}| }d}t jt|d�� |jt|ƒdd„ d� W 5 Q R X d S )Nzby zerora   ri   c                 S   s   dd S )Nr   r   r!   rb   r!   r!   r"   rd     re   z-test_skip_rows_bad_callable.<locals>.<lambda>r2   )rW   rk   ÚZeroDivisionErrorr   r   )r   rl   r   r4   r!   r!   r"   Útest_skip_rows_bad_callable  s
    ro   c                 C   sT   d}| }|j t|ƒddddgd�}tdddd	d
gdddddgdœƒ}t ||¡ d S )Nz$a,b
1,a
2,b
3,c
4,d
5,e
6,f
7,g
8,h
r`   r   r/   r   )Znrowsr   r   r   é   r0   r<   r>   ÚeÚgÚh)r<   r=   rH   )r   r4   r   r   r    r!   r!   r"   Útest_skip_rows_and_n_rows  s
    
"rt   )"Ú__doc__r   Úior   Únumpyr   rW   Zpandas.errorsr   Zpandasr   r   Zpandas._testingZ_testingr   rX   ZusefixturesZ
pytestmarkZparametrizeÚlistr3   r#   r5   r6   rD   rG   rI   r\   r^   rf   rh   rm   ro   rt   r!   r!   r!   r"   Ú<module>   s€   
þø
ýøíþ!
ûûûñþ
	 ÿ
"
þþ
		