
    bMh$                        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                         Zed             Ze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          ed!                         Ze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          ed-                         Zeej                            d.g d/          d0                         Zed1             Zeej                            d2i  e
d3dd4gi          fdd5gd6 e
d5dd4gi          fg          d7                         Zed8             Z ed9             Z!ed:             Z"ed;             Z#e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_xfailz=ignore:Passing a BlockManager to DataFrame:DeprecationWarning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          d/var/www/html/test/jupyter/venv/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>;   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   6   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   F   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   a   sB    H 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      sx     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    : 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    r5t          j                            d
          }|                    |           |                    d|          }d}t          j	        t          |d          5  |                    t          |          ddg d          }d d d            n# 1 swxY w Y   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)reasonz;The 'delim_whitespace' keyword in pd.read_csv is deprecatedF)matchcheck_stacklevelr   T)r	   delim_whitespacenames)r2   r   enginepytestmarkxfailapplymarkerreplacer"   assert_produces_warningFutureWarningr   r   r#   )	r$   r\   requestr%   r?   r(   rq   depr_msgr'   s	            r)   test_skiprows_lineterminatorry      s    F99	
 	
 	
 D 555555555	

 988  H }  ^t%;%;{  (U VVD!!!<<n--DLH		#X
 
 
 
 
 TNN!:::	 ! 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 &(+++++s   0)C%%C),C)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_quoter|      sU     FD#s$$H__Xd^^a_88F&(+++++r+   zkwargs,expected1   foo)r   rn   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   r{   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rk   c                     dS )NTr   r   s    r)   r   z)test_skip_rows_skip_all.<locals>.<lambda>  s    4 r+   r=   )rp   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=   )rp   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
r~   )r   r:   r
   )nrowsr	   )r   r   r~      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+   c                 8   d}| }|                     t          |          |d d          }t          |          }t          |          }t          j        |t          dg di                     t          j        |t          dg dig d	                     d S )
Nz%col_a
10
20
30
40
50
60
70
80
90
100
c                 
    | dv S )N)r   r:   r~   r   r   s    r)   r   z,test_skip_rows_with_chunks.<locals>.<lambda>H  s
    !y. r+   r:   )ro   r	   	chunksizecol_a)      <   F   )P   Z   d   )r:   r~   r
   )r   )r   r   nextr"   r#   r   )r$   r?   r%   readerdf1df2s         r)   test_skip_rows_with_chunksr   7  s    D F__v0H0HTU   F v,,C
v,,C#y'3C3C3C)DEEFFF#y'===)ASSSTTTTTr+   )%__doc__r   ior   numpyr   rp   pandas.errorsr   pandasr   r   pandas._testing_testingr"   rq   usefixturesxfail_pyarrowfilterwarnings
pytestmarkparametrizelistr>   r*   rB   rD   rT   rX   r[   ry   r|   r   r   r   r   r   r   r   r+   r)   <module>r      s   
                  ( ( ( ( ( (             ''88[''C 

 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   D, , , ,  +**,I,I,IJ	
 +**,I,I,IJ	
! /..0Q0Q0QR	
 4 , , 5 6, *** $, $,  $,N , , , 	YYaV}%%&	(	())UQFO*D*DE , ,  , , , , A A A B B B , , ,$ U U U U Ur+   