
    d                     f   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
             Zd Zd Zej                            ddddgi e
g dg dgg d          fdddgd e
g dgg d          fddddgd e
ddggddg          fg          d              Z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          d,             Zej                            d-g d.          d/             Zd0 Zej                            d1i  e
d2dd3gi          fdd4gd5 e
d4dd3gi          fg          d6             Zd7 Zd8 Zd9 Z d: Z!dS );zj
Tests that skipped rows are properly handled during
parsing for all of the parsers defined in parsers.py
    )datetime)StringION)EmptyDataError)	DataFrameIndexpyarrow_skipskiprows   c           	      |   | }d}|                     t          |          |d dd          }t          t          ddd          t          ddd          t          ddd          gd	          }t	          t          j        d
d                              d          g d|          }t          j	        ||           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   expecteds          `/var/www/html/t/fyr/venv311/lib/python3.11/site-packages/pandas/tests/io/parser/test_skiprows.pytest_skip_rows_bugr*      s     F	D __$!QU   F 	$1		xa33XdAq5I5IJQR  E 
	#t$$V,,iiiu  H &(+++++    c                 f   | }dd                     d t          d          D                       z   }dd                     d dD                       z   }|                    t          |          ddg	          }|                    t          |                    }t	          j        ||           d S )
Nza,b,c

c           
          g | ]G}d                      t          |          t          |dz             t          |dz             g          HS ,r   r   joinstr.0is     r)   
<listcomp>z'test_deep_skip_rows.<locals>.<listcomp>7   sE    GGG3q663q1u::s1q5zz2	3	3GGGr+   
   c           
          g | ]G}d                      t          |          t          |dz             t          |dz             g          HS r/   r1   r4   s     r)   r7   z'test_deep_skip_rows.<locals>.<listcomp>:   sE    VVV3q663q1u::s1q5zz2	3	3VVVr+   )r   r   r   r      r
      	   r
   r;   r	   )r2   ranger   r   r"   r#   )r$   r%   datacondensed_datar'   condensed_results         r)   test_deep_skip_rowsrB   3   s    FtyyGGU2YYGGG  D VV=UVVV" " N __Xd^^q!f_==Fx'?'?@@&"233333r+   c           	      |   | }d}|                     t          |          dd dd          }t          t          ddd          t          ddd          t          ddd	          gd
          }t	          t          j        dd                              d          g d|          }t          j	        ||           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(   s         r)   test_skip_rows_blankrD   B   s    F	D ??41$   D 	$1		xa33XdAq5I5IJQR  E 
	#t$$V,,iiiu  H $)))))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                 j    | } |j         t          |          fi |}t          j        ||           d S )Nr   r   r"   r#   )r$   r?   kwargsr(   r%   r'   s         r)   test_skip_row_with_newlinerT   \   sB    F FV_Xd^^66v66F&(+++++r+   c                     | }d}g dg dg}t          |g d          }|                    t          |          dg          }t          j        ||           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   rE   rH   r   r=   r   r   r   r"   r#   )r$   r%   r?   exp_datar(   r'   s         r)   test_skip_row_with_quoterX      sv    FD
 ,++-H-H-HIH+F+F+FGGGH__Xd^^qc_::F&(+++++r+   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                     | }|                     t          |          dg          }t          |g d          }t          j        ||           d S )Nr   r=   rE   rH   r   r   r   r"   r#   )r$   r?   rW   r%   r'   r(   s         r)   $test_skip_row_with_newline_and_quoter[      sX    8 F__Xd^^qc_::F+F+F+FGGGH&(+++++r+   lineterminator)r-   z
c                    | }d                     g d          }t          g dg dg dgg d          }|j        dk    r@|d	k    r:t          j                            d
          }|j                            |           |                    d|          }|	                    t          |          ddg d          }t          j        ||           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)r_   z02:00gk	g?ra   O)r_   z04:00gBfj?Dra   )datetimevarflagoflagrH   pythonr]   z+'CR' not respect with the Python parser yet)reasonr   T)r	   delim_whitespacenames)r2   r   enginepytestmarkxfailnode
add_markerreplacer   r   r"   r#   )r$   r\   requestr%   r?   r(   ro   r'   s           r)   test_skiprows_lineterminatorru      s   
 F99	
 	
 	
 D 555555555	

 988  H }  ^t%;%;{  (U VV%%%<<n--D__666	   F &(+++++r+   c                     | }d}t          ddgi          }|                    t          |          d          }t          j        ||           d S )Nz	a"
b"
a
1rK   r   r   r=   rV   r$   r%   r?   r(   r'   s        r)   test_skiprows_infield_quoterx      sS    FD#s$$H__Xd^^a_88F&(+++++r+   zkwargs,expected1   foo)r   rl   c                 t    | }d} |j         t          |          fdd i|}t          j        ||           d S )Na
1
2
3
4
5r	   c                     | dz  dk    S )Nr   r    xs    r)   <lambda>z)test_skip_rows_callable.<locals>.<lambda>   s    A
 r+   rR   )r$   rS   r(   r%   r?   r'   s         r)   test_skip_rows_callabler      sO     FDV_Xd^^UU6J6JUfUUF&(+++++r+   c                     | }d}t          ddgddgg          }|                    t          |          d d           }t          j        ||           d S )Nz0,a
1,b
2,c
3,d
4,er   rL   r   dc                 
    | dvS )N)r   r   r   r   s    r)   r   z0test_skip_rows_callable_not_in.<locals>.<lambda>   s
     r+   )r   r	   rV   rw   s        r)   test_skip_rows_callable_not_inr      sj    F$D1c(QH-..H__t.G.G   F &(+++++r+   c                     | }d}d}t          j        t          |          5  |                    t	          |          d            d d d            d S # 1 swxY w Y   d S )Nr}   zNo columns to parse from filematchc                     dS )NTr   r   s    r)   r   z)test_skip_rows_skip_all.<locals>.<lambda>  s    4 r+   r=   )rn   raisesr   r   r   )r$   r%   r?   msgs       r)   test_skip_rows_skip_allr      s    FD
)C	~S	1	1	1 A A@@@A A A A A A A A A A A A A A A A A A   &AAAc                     d}| }d}t          j        t          |          5  |                    t	          |          d            d d d            d S # 1 swxY w Y   d S )Nzby zeror}   r   c                     ddz  S )Nr   r   r   r   s    r)   r   z-test_skip_rows_bad_callable.<locals>.<lambda>  s
    1q5 r+   r=   )rn   r   ZeroDivisionErrorr   r   )r$   r   r%   r?   s       r)   test_skip_rows_bad_callabler     s    
CFD	(	4	4	4 B BAAAB B B B B B B B B B B B B B B B B Br   c                     d}| }|                     t          |          dg d          }t          g dg dd          }t          j        ||           d S )Nz$a,b
1,a
2,b
3,c
4,d
5,e
6,f
7,g
8,h
rz   )r   r:   r
   )nrowsr	   )r   r   rz      r;   )rK   rM   egh)rK   rL   rZ   )r$   r?   r%   r'   r(   s        r)   test_skip_rows_and_n_rowsr     sj    	D F__Xd^^1yyy_IIF5N5N5NOOPPH&(+++++r+   )"__doc__r   ior   numpyr   rn   pandas.errorsr   pandasr   r   pandas._testing_testingr"   ro   usefixtures
pytestmarkparametrizelistr>   r*   rB   rD   rT   rX   r[   ru   rx   r   r   r   r   r   r   r+   r)   <module>r      s   
                  ( ( ( ( ( (              [$$^44
 dd5588nna%899, , :9,44 4 4* * *4  !I+++->->->?333  	
 AA3//I2223___MMM	
3
 Aq622I2F;<vuoVVV		
'   B, ,C   B,, , ,  +**,I,I,IJ	
 +**,I,I,IJ	
! /..0Q0Q0QR	
 4, ,5 4, *** , , ,D, , , 	YYaV}%%&	(	())UQFO*D*DE , , ,, , ,A A AB B B, , , , ,r+   