o
    Û­jñ$  ã                   @   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¡Zeej d	eed
ƒƒd
g¡dd„ ƒƒZedd„ ƒZedd„ ƒZej ddd	dgie
g d¢g d¢gg d¢d�fdddgdœe
g d¢gg d¢d�fddddgdœe
d d!ggd"d#gd�fg¡ed$d%„ ƒƒZed&d'„ ƒZej d(d)g d*¢g d+¢gfd,g d-¢g d.¢gfd/g d0¢g d1¢gfg¡ed2d3„ ƒƒZeej d4g d5¢¡d6d7„ ƒƒZed8d9„ ƒZeej d:i e
d;dd<giƒfdd=gd>œe
d=dd<giƒfg¡d?d@„ ƒƒZedAdB„ ƒZ edCdD„ ƒZ!edEdF„ ƒZ"edGdH„ ƒZ#edIdJ„ ƒZ$dS )Kzj
Tests that skipped rows are properly handled during
parsing for all of the parsers defined in parsers.py
é    )Údatetime)ÚStringION)ÚEmptyDataError)Ú	DataFrameÚIndexÚpyarrow_xfailz=ignore:Passing a BlockManager to DataFrame:DeprecationWarningÚskiprowsé   c                 C   sz   | }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¡g d¢|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   ÚheaderÚ	index_colÚparse_dateséÐ  é   é   é   ©Únameç      ð?ç      $@©r   r   ©r   r   r   ©ÚcolumnsÚindex©
Úread_csvr   r   r   r   ÚnpÚarangeÚreshapeÚtmÚassert_frame_equal)Úall_parsersr   ÚparserÚtextÚresultr   Úexpected© r'   úa/var/www/html/CropPilot/venv/lib/python3.10/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   ó0   g | ]}d   t|ƒt|d ƒt|d ƒg¡‘qS ©ú,r   r   ©ÚjoinÚstr©Ú.0Úir'   r'   r(   Ú
<listcomp>;   ó   0 z'test_deep_skip_rows.<locals>.<listcomp>é
   c              	   S   r+   r,   r.   r1   r'   r'   r(   r4   >   r5   )r   r   r   r   é   r	   é   é	   r	   r8   ©r   )r/   Úranger   r   r    r!   )r"   r#   ÚdataÚcondensed_datar%   Úcondensed_resultr'   r'   r(   Útest_deep_skip_rows6   s   ÿÿr?   c                 C   sz   | }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¡g d¢|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#   r$   r<   r   r&   r'   r'   r(   Útest_skip_rows_blankF   s   
ÿ"ÿÿr@   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   )r   zline 31r   ©Úidr$   Ú	num_lines©r   z+a,b,c
~a
 b~,~e
 d~,~f
 f~
1,2,~12
 13
 14~ú~r   )Ú	quotecharr   )za
 bze
 dzf
 f)ÚaÚbÚczdText,url
~example
 sentence
 one~,url1
~example
 sentence
 two~,url2
~example
 sentence
 three~,url3r   zexample
 sentence
 twoÚurl2ÚTextÚurlc                 C   s*   | }|j t|ƒfi |¤Ž}t ||¡ d S )N©r   r   r    r!   )r"   r<   Úkwargsr&   r#   r%   r'   r'   r(   Útest_skip_row_with_newlinea   s   $rO   c                 C   sL   | }d}g d¢g d¢g}t |g d¢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",1)r   zline '21' line 22r   )r   zline '31' line 32r   rA   rD   r   r:   ©r   r   r   r    r!   )r"   r#   r<   Úexp_datar&   r%   r'   r'   r(   Útest_skip_row_with_quoteŠ   s   rR   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",1)r   zline 
'21' line 22r   )r   zline 
'31' line 32r   z\id,text,num_lines
1,"line '11
' line 12",2
2,"line '21
' line 22",2
3,"line '31
' line 32",1)r   zline '21
' line 22r   )r   zline '31
' line 32r   zbid,text,num_lines
1,"line '11
' 	line 12",2
2,"line '21
' 	line 22",2
3,"line '31
' 	line 32",1)r   zline '21
' 	line 22r   )r   zline '31
' 	line 32r   c                 C   s8   | }|j t|ƒdgd�}t|g d¢d�}t ||¡ d S )Nr   r:   rA   rD   ©r   r   r   r    r!   )r"   r<   rQ   r#   r%   r&   r'   r'   r(   Ú$test_skip_row_with_newline_and_quoteš   s   rT   Úlineterminator)r*   z
úc           	      C   sÈ   | }d  g d¢¡}tg d¢g d¢g d¢gg d¢d�}|jdkr/|d	kr/tjjd
d�}| |¡ | d|¡}d}tj	t
|dd�� |jt|ƒddg d¢d�}W d   ƒ n1 sWw   Y  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 )ú
2007/01/01z01:00g1¬ZdË?ÚUÚM)rW   z02:00gºk	ù gË?rY   ÚO)rW   z04:00gBÏfÕçjË?ÚDrY   )ÚdateÚtimeÚvarÚflagÚoflagrD   ÚpythonrV   z+'CR' not respect with the Python parser yet)Úreasonz;The 'delim_whitespace' keyword in pd.read_csv is deprecatedF)ÚmatchÚcheck_stacklevelr   T)r   Údelim_whitespaceÚnames)r/   r   ÚengineÚpytestÚmarkÚxfailÚapplymarkerÚreplacer    Úassert_produces_warningÚFutureWarningr   r   r!   )	r"   rU   Úrequestr#   r<   r&   ri   Údepr_msgr%   r'   r'   r(   Útest_skiprows_lineterminator¾   s6   ÿýú	
ÿüý	rq   c                 C   s8   | }d}t ddgiƒ}|jt|ƒdd�}t ||¡ d S )Nz	a"
b"
a
1rG   r   r   r:   rP   ©r"   r#   r<   r&   r%   r'   r'   r(   Útest_skiprows_infield_quoteé   s
   rs   zkwargs,expectedÚ1é   Úfoo)r   rf   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>   s    z)test_skip_rows_callable.<locals>.<lambda>rM   )r"   rN   r&   r#   r<   r%   r'   r'   r(   Útest_skip_rows_callableô   s   	r{   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   rH   r   Údc                 S   s   | dvS )N)r   r   r'   rx   r'   r'   r(   rz     ó    z0test_skip_rows_callable_not_in.<locals>.<lambda>)r   r   rP   rr   r'   r'   r(   Útest_skip_rows_callable_not_in  s   ÿr~   c                 C   sV   | }d}d}t jt|d�� |jt|ƒdd„ d� W d   ƒ d S 1 s$w   Y  d S )Nrw   zNo columns to parse from file©rc   c                 S   s   dS )NTr'   rx   r'   r'   r(   rz     s    z)test_skip_rows_skip_all.<locals>.<lambda>r:   )rh   Úraisesr   r   r   )r"   r#   r<   Úmsgr'   r'   r(   Útest_skip_rows_skip_all  ó   "ÿr‚   c                 C   sV   d}| }d}t jt|d�� |jt|ƒdd„ d� W d   ƒ d S 1 s$w   Y  d S )Nzby zerorw   r   c                 S   s   dd S )Nr   r   r'   rx   r'   r'   r(   rz   !  r}   z-test_skip_rows_bad_callable.<locals>.<lambda>r:   )rh   r€   ÚZeroDivisionErrorr   r   )r"   r�   r#   r<   r'   r'   r(   Útest_skip_rows_bad_callable  rƒ   r…   c                 C   sF   d}| }|j t|ƒdg d¢d�}tg d¢g d¢dœƒ}t ||¡ d S )Nz$a,b
1,a
2,b
3,c
4,d
5,e
6,f
7,g
8,h
ru   )r   r7   r	   )Únrowsr   )r   r   ru   é   r8   )rG   rI   ÚeÚgÚh)rG   rH   rS   )r"   r<   r#   r%   r&   r'   r'   r(   Útest_skip_rows_and_n_rows$  s
   
r‹   c                 C   sn   d}| }|j t|ƒ|dd„ dd�}t|ƒ}t|ƒ}t |tdg d¢iƒ¡ t |tdg d¢ig d	¢d
�¡ d S )Nz%col_a
10
20
30
40
50
60
70
80
90
100
c                 S   s   | dv S )N)r   r7   ru   r'   rx   r'   r'   r(   rz   H  r}   z,test_skip_rows_with_chunks.<locals>.<lambda>r7   )rg   r   Ú	chunksizeÚcol_a)é   é   é<   éF   )éP   éZ   éd   )r7   ru   r	   )r   )r   r   Únextr    r!   r   )r"   r<   r#   ÚreaderÚdf1Údf2r'   r'   r(   Útest_skip_rows_with_chunks7  s   ÿ$r™   )%Ú__doc__r   Úior   Únumpyr   rh   Úpandas.errorsr   Úpandasr   r   Úpandas._testingÚ_testingr    ri   ÚusefixturesÚxfail_pyarrowÚfilterwarningsÚ
pytestmarkÚparametrizeÚlistr;   r)   r?   r@   rO   rR   rT   rq   rs   r{   r~   r‚   r…   r‹   r™   r'   r'   r'   r(   Ú<module>   s¤    ÿ

þø
ýøíþ!
ûûûñþ	ÿ'

þþ

	
	
