
    Owg$                        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                  j!                  d      Zej                  j%                  d      Zeej                  j)                  d	 e ed
            d
g      d               Zed        Zed        Zej                  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                  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                  j)                  d.g d/      d0               Zed1        Zeej                  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$y)=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}|j                  t        |      |d dd      }t        t        ddd      t        ddd      t        ddd      gd	      }t	        t        j                  d
d      j                  d      g d|      }t        j                  ||       y )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/horilla/myenv/lib/python3.12/site-packages/pandas/tests/io/parser/test_skiprows.pytest_skip_rows_bugr*      s     F	D __$!QU  F 	$1	xa3XdAq5IJQRE 
		#t$$V,iuH &(+    c                    | }ddj                  t        d      D cg c]7  }dj                  t        |      t        |dz         t        |dz         g      9 c}      z   }ddj                  dD cg c]7  }dj                  t        |      t        |dz         t        |dz         g      9 c}      z   }|j                  t	        |      dd	g
      }|j                  t	        |            }t        j                  ||       y c c}w c c}w )Nza,b,c


   ,r   r   )r   r   r   r      r
      	   r
   r1   r	   )joinrangestrr   r   r"   r#   )r$   r%   idatacondensed_datar'   condensed_results          r)   test_deep_skip_rowsr;   6   s     Ftyy=B2YG3q63q1u:s1q5z2	3G D =UV3q63q1u:s1q5z2	3V" N __Xd^q!f_=Fx'?@&"23 	H 	Ws   <D
1<D

c           	      >   | }d}|j                  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      j                  d      g d|      }t        j                  ||       y )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&   r8   r   r(   s         r)   test_skip_rows_blankr=   F   s     F	D ??41$  D 	$1	xa3XdAq5IJQRE 
		#t$$V,iu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                 l    | } |j                   t        |      fi |}t        j                  ||       y )Nr   r   r"   r#   )r$   r8   kwargsr(   r%   r'   s         r)   test_skip_row_with_newlinerM   a   s3    H FV__Xd^6v6F&(+r+   c                     | }d}g dg dg}t        |g d      }|j                  t        |      dg      }t        j                  ||       y )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>   rA   r   r3   r   r   r   r"   r#   )r$   r%   r8   exp_datar(   r'   s         r)   test_skip_row_with_quoterQ      sR     FD
 ,-HIH+F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                     | }|j                  t        |      dg      }t        |g d      }t        j                  ||       y )Nr   r3   r>   rA   r   r   r   r"   r#   )r$   r8   rP   r%   r'   r(   s         r)   $test_skip_row_with_newline_and_quoterT      s>    : F__Xd^qc_:F+FGH&(+r+   lineterminator)r-   z
c                    | }dj                  g d      }t        g dg dg dgg d      }|j                  dk(  r6|d	k(  r1t        j                  j                  d
      }|j                  |       |j                  d|      }d}t        j                  t        |d      5  |j                  t        |      ddg d      }d d d        t        j                  |       y # 1 sw Y    xY w)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)rX   z02:00gk	g?rZ   O)rX   z04:00gBfj?DrZ   )datetimevarflagoflagrA   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)r4   r   enginepytestmarkxfailapplymarkerreplacer"   assert_produces_warningFutureWarningr   r   r#   )	r$   rU   requestr%   r8   r(   rj   depr_msgr'   s	            r)   test_skiprows_lineterminatorrr      s     F99	
D 555	

 9H }} ^t%;{{  (U VD!<<n-DLH		#	#X
 
 TN!:	 ! 

 &(+
 
s   #!C##C,c                     | }d}t        ddgi      }|j                  t        |      d      }t        j                  ||       y )Nz	a"
b"
a
1rD   r   r   r3   rO   r$   r%   r8   r(   r'   s        r)   test_skiprows_infield_quoteru      sD     FD#s$H__Xd^a_8F&(+r+   zkwargs,expected1   foo)r   rg   c                 v    | }d} |j                   t        |      fdd i|}t        j                  ||       y )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+   rK   )r$   rL   r(   r%   r8   r'   s         r)   test_skip_rows_callabler      s=     FDV__Xd^U6JUfUF&(+r+   c                     | }d}t        ddgddgg      }|j                  t        |      d d       }t        j                  ||       y )Nz0,a
1,b
2,c
3,d
4,er   rE   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	   rO   rt   s        r)   test_skip_rows_callable_not_inr     sT    F$D1c(QH-.H__t.G  F &(+r+   c                     | }d}d}t        j                  t        |      5  |j                  t	        |      d        d d d        y # 1 sw Y   y xY w)Nrz   zNo columns to parse from filerd   c                      y)NTr|   r}   s    r)   r   z)test_skip_rows_skip_all.<locals>.<lambda>  s    r+   r3   )ri   raisesr   r   r   )r$   r%   r8   msgs       r)   test_skip_rows_skip_allr     sL    FD
)C	~S	1 A@A A A   A		Ac                     d}| }d}t        j                  t        |      5  |j                  t	        |      d        d d d        y # 1 sw Y   y xY w)Nzby zerorz   r   c                     ddz  S )Nr   r   r|   r}   s    r)   r   z-test_skip_rows_bad_callable.<locals>.<lambda>!  s
    1q5 r+   r3   )ri   r   ZeroDivisionErrorr   r   )r$   r   r%   r8   s       r)   test_skip_rows_bad_callabler     sM    
CFD	(	4 BAB B Br   c                     d}| }|j                  t        |      dg d      }t        g dg dd      }t        j                  ||       y )Nz$a,b
1,a
2,b
3,c
4,d
5,e
6,f
7,g
8,h
rw   )r   r0   r
   )nrowsr	   )r   r   rw      r1   )rD   rF   egh)rD   rE   rS   )r$   r8   r%   r'   r(   s        r)   test_skip_rows_and_n_rowsr   $  sH    	D F__Xd^1y_IF5NOPH&(+r+   c                 
   d}| }|j                  t        |      |d d      }t        |      }t        |      }t        j                  |t        dg di             t        j                  |t        dg dig d	             y )
Nz%col_a
10
20
30
40
50
60
70
80
90
100
c                 
    | dv S )N)r   r0   rw   r|   r}   s    r)   r   z,test_skip_rows_with_chunks.<locals>.<lambda>H  s
    !y. r+   r0   )rh   r	   	chunksizecol_a)      <   F   )P   Z   d   )r0   rw   r
   )r   )r   r   nextr"   r#   r   )r$   r8   r%   readerdf1df2s         r)   test_skip_rows_with_chunksr   7  s}    D F__v0HTU  F v,C
v,C#y'3C)DEF#y'=)ASTr+   )%__doc__r   ior   numpyr   ri   pandas.errorsr   pandasr   r   pandas._testing_testingr"   rj   usefixturesxfail_pyarrowfilterwarnings
pytestmarkparametrizelistr5   r*   r;   r=   rM   rQ   rT   rr   ru   r   r   r   r   r   r   r|   r+   r)   <module>r      s  
     ( ''8[[''C

 d58na%89, : ,4 4 4 * *4  !+->?3	
 AA3/23_M	
3
 Aq622F;<vuoV		
' B , C D, , ,  +,IJ	
 +,IJ	
! /0QR	
4 , 56, *$, $,N , , 	YaV}%&	()UQFO*DE, , , , A A B B , ,$ U Ur+   