o
    gl                     @   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eeddgd	d
 Zdd Z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d"d# Zd$d% Zejd&d'g d(g d)gfd*g d+g d,gfd-g d.g d/gfgd0d1 Zejd2g d3d4d5 Zd6d7 Zejd8i e
d9dd:gifdd;gd<e
d;dd:gifgd=d> Zd?d@ ZdAdB ZdS )Czj
Tests that skipped rows are properly handled during
parsing for all of the parsers defined in parsers.py
    )datetime)StringION)EmptyDataError)	DataFrameIndex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&   b/home/ubuntu/cloudmapper/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   4    | ]}d  t|t|d t|d gV  qdS ,r   r   Njoinstr.0ir&   r&   r'   	<genexpr>3       $
z&test_deep_skip_rows.<locals>.<genexpr>
   c                 s   r*   r+   r-   r0   r&   r&   r'   r3   6   r4   )r   r   r   r      r      	   r   r7   r   )r.   ranger   r   r   r    )r!   r"   datacondensed_datar$   condensed_resultr&   r&   r'   test_deep_skip_rows0   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_blank?   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_newlineY   s   #rN   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   r@   rC   r   r9   r   r   r   r   r    )r!   r"   r;   exp_datar%   r$   r&   r&   r'   test_skip_row_with_quote   s   rQ   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   r9   r@   rC   )r   r   r   r   r    )r!   r;   rP   r"   r$   r%   r&   r&   r'   $test_skip_row_with_newline_and_quote   s   rR   line_terminator)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d
 |d|}|jt|ddg d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 )
2007/01/01z01:00g1Zd?UM)rU   z02:00gk	g?rW   O)rU   z04:00gBfj?DrW   )datetimevarflagoflagrC   pythonrT   z+'CR' not respect with the Python parser yetr   T)r   delim_whitespacenames)
r.   r   enginepytestskipreplacer   r   r   r    )r!   rS   r"   r;   r%   r$   r&   r&   r'   test_skiprows_lineterminator   s*   	
rf   c                 C   s8   | }d}t ddgi}|jt|dd}t|| d S )Nz	a"
b"
a
1rF   r   r   r9   rO   )r!   r"   r;   r%   r$   r&   r&   r'   test_skiprows_infield_quote   s
   rg   zkwargs,expected1   foo)r
   ra   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>rL   )r!   rM   r%   r"   r;   r$   r&   r&   r'   test_skip_rows_callable   s   ro   c                 C   sV   | }d}d}t jt|d |jt|dd d W d    d S 1 s$w   Y  d S )Nrk   zNo columns to parse from filematchc                 S   s   dS )NTr&   rl   r&   r&   r'   rn      s    z)test_skip_rows_skip_all.<locals>.<lambda>r9   )rc   raisesr   r   r   )r!   r"   r;   msgr&   r&   r'   test_skip_rows_skip_all      "rt   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 zerork   rp   c                 S   s   dd S )Nr   r   r&   rl   r&   r&   r'   rn      s    z-test_skip_rows_bad_callable.<locals>.<lambda>r9   )rc   rr   ZeroDivisionErrorr   r   )r!   rs   r"   r;   r&   r&   r'   test_skip_rows_bad_callable   ru   rw   )__doc__r   ior   numpyr   rc   pandas.errorsr   pandasr   r   pandas._testing_testingr   markparametrizelistr:   r(   r>   r?   rN   rQ   rR   rf   rg   ro   rt   rw   r&   r&   r&   r'   <module>   sz    


!
	
!

	