
    Owg,                        d Z ddlmZ ddlZddlZddlmZmZm	Z	 ddl
mZ ej                  j                  d      Zej                  j!                  d      Zej                  j!                  d      Zej                  j'                  dd	d
g      d        Zd Zd Zed        Zeej                  j'                  dddg difd
dg difdddg eg d      dfdddg eg d      dfdddg eg d      dfdddg eg d      dfddgdg e	j0                  g gdz  ddg      dfddgdg e	j0                  g gdz  ddg      dfddgdg e	j0                  g gdz  ddg      dfddgdg e	j0                  g gdz  ddg      dfg
      d               Zed        Zej                  j'                  dddgddgddgddgd d!gg      d"        Zed#        Zed$        Zed%        Zej                  j>                  d&        Z ed'        Z!ed(        Z"ed)        Z#ed*        Z$ed+        Z%ej                  j'                  d,e&d-fd.g      d/        Z'ed0        Z(y)1z
Tests that the specified index column (a.k.a "index_col")
is properly handled or inferred during parsing for all of
the parsers defined in parsers.py
    )StringION)	DataFrameIndex
MultiIndexz=ignore:Passing a BlockManager to DataFrame:DeprecationWarningpyarrow_xfailpyarrow_skipwith_headerTFc                 z   | }d}d}|rc||z   }|j                  t        |      d      }|j                  t        |      d      j                  d      }t        j                  ||       y |}d}t        j                  t        |      5  |j                  t        |      d       d d d        y # 1 sw Y   y xY w)	Na  KORD1,19990127, 19:00:00, 18:56:00, 0.8100, 2.8100, 7.2000, 0.0000, 280.0000
KORD2,19990127, 20:00:00, 19:56:00, 0.0100, 2.2100, 7.2000, 0.0000, 260.0000
KORD3,19990127, 21:00:00, 20:56:00, -0.5900, 2.2100, 5.7000, 0.0000, 280.0000
KORD4,19990127, 21:00:00, 21:18:00, -0.9900, 2.0100, 3.6000, 0.0000, 270.0000
KORD5,19990127, 22:00:00, 21:56:00, -0.5900, 1.7100, 5.1000, 0.0000, 290.0000
KORD6,19990127, 23:00:00, 22:56:00, -0.5900, 1.7100, 4.6000, 0.0000, 280.0000zBID,date,NominalTime,ActualTime,TDew,TAir,Windspeed,Precip,WindDir
ID	index_colr   headerzIndex ID invalidmatch)read_csvr   	set_indextmassert_frame_equalpytestraises
ValueError)	all_parsersr	   parser	no_headerr   dataresultexpectedmsgs	            \/var/www/horilla/myenv/lib/python3.12/site-packages/pandas/tests/io/parser/test_index_col.pytest_index_col_namedr!      s    FQI SF	!$4@??8D>!?<FFtL
fh/ ]]:S1 	<OOHTNdO;	< 	< 	<s   B11B:c                     | }d}t        g dg dg dg ddt        g dd	      
      }g d}|j                  t        |      |dg      }t	        j
                  ||       y )Nz+1,2,3,4,hello
5,6,7,8,world
9,10,11,12,foo
)      	   )      
   )         )         )abcd)helloworldfoomessagenameindex)r/   r0   r1   r2   r6   )namesr   )r   r   r   r   r   r   )r   r   r   r   r;   r   s         r    test_index_col_named2r<   4   sb    FD jz
K-I>H ,E__Xd^5YK_PF&(+    c                     d}| }d}t        j                  t        |      5  |j                  t	        |      d       d d d        y # 1 sw Y   y xY w)Nza,b
1,2z)The value of index_col couldn't be 'True'r   Tr   )r   r   r   r   r   )r   r   r   r   s       r    test_index_col_is_truer?   F   sH    DF
5C	z	- 8$78 8 8s   AAc                     d}| }|j                  t        |            }t        g dg dg dgg dg d      }t        j                  ||       y )Nz$A,B,C
foo,1,2,3
bar,4,5,6
baz,7,8,9
)r#   r&   r)   )r,   r$   r'   )r*   r-   r%   )r5   barbaz)ABCr:   columnsr   r   r   r   r   r   r   r   r   r   s        r    test_infer_index_colrJ   P   sN    D
 F__Xd^,F	Iy)#H
 &(+r=   zindex_col,kwargsrG   xyzrM   rN   rL   r7   rG   r:   r#   r&   r;   c                     d}| }|j                  t        |      |      }t        di |}t        j                  ||       y )Nzx,y,zr    rH   )r   r   kwargsr   r   r   r   s          r    test_index_col_empty_datarT   b   sB    R DF__Xd^y_AF"6"H&(+r=   c                     d}| }|j                  t        |      d      }t        ddg      }t        j                  ||       y )Nzx,yFr   rL   rM   rG   rH   rI   s        r    test_empty_with_index_col_falserW      sB     DF__Xd^u_=F#s,H&(+r=   index_names r5   rA   NotReallyUnnamedz
Unnamed: 0c                    | }|j                   dk(  r5d|v r1t        j                  j                  d      }|j	                  |       dj                  |dgz         }|j                  t        |      ddg	      }t        d
g dit        j                  ddgddgg            }|D cg c]  }|r|nd 
 c}|j                  _        t        j                  ||       y c c}w )NpyarrowrY   z!One case raises, others are wrongreason,zcol
a,c,1
a,d,2
b,c,3
b,d,4r   r#   r   colr#   r&   r)   r,   r/   r0   r1   r2   r9   )enginer   markxfailapplymarkerjoinr   r   r   r   from_productr:   r;   r   r   )	r   rX   requestr   rc   r   r   r   r8   s	            r    test_multi_index_namingri      s     F}}	!bK&7{{  (K LD! 88K#D"EEFD__Xd^1v_>F	Z%<%<sCj3PS*=U%VH @KKtDDd2KHNN&(+ Ls   (Cc           	          | }d}|j                  t        |      ddg      }t        dg dit        ddgg d	gg d
g dg            }t	        j
                  ||       y )Nz$,Unnamed: 2,
a,c,1
a,d,2
b,c,3
b,d,4r   r&   r   z
Unnamed: 2)r1   r2   r1   r2   r/   r0   ra   )r   r   r#   r#   )r   r#   r&   r)   )levelscodesr9   )r   r   r   r   r   r   )r   r   r   r   r   s        r    ,test_multi_index_naming_not_all_at_beginningrm      sf    F5D__Xd^1v_>F	+,#J-lL5Q
H &(+r=   c                 x   | }t        j                  g d      }t        t        j                  j                  d      j                  d      |g d      }t        j                         5 }|j                  |       |j                  |g d      }d d d        t        j                  |       y # 1 sw Y    xY w)N)rC   r#   r&   ro   )rD   r#   r&   r&   )r)   r)   rK   rF   )r   r#   r&   r   )r   from_tuplesr   nprandomdefault_rngstandard_normalr   ensure_cleanto_csvr   r   )r   r   midxr   pathr   s         r    %test_no_multi_index_level_names_emptyry      s     F!!"IJD
		a 008H
 
	 <d;< &(+< <s   *'B00B9c                    | }d}t        j                  ddgddg      }t        dg      }t        dd	gg||
      }|j	                  t        |      dddg      }t        j                  ||       t        ddg      }t        ddgd      }t        ddgddgg||
      }|j	                  t        |      dd      }t        j                  ||       y )Nz
I11,A,A
I12,B,B
I2,1,3
)rC   rD   )rC   zB.1I11I12rP   I2r#   r)   rF   r   )r   r   rC   zA.1r7   rD   13)r   rp   r   r   r   r   r   r   )r   r   r   rw   idxr   r   col_idxs           r    test_header_with_index_colr      s     FD
 !!:|"<UENSD
-C1a&d;H__Xd^q!Q_HF&(+S%L!G
E
*C3*sCj1gNH__Xd^uQ_GF&(+r=   c                    | }d}t        t        |dz         t        j                  j	                  d      j                  |dz         d      }t        j                         5 }|j                  |d       |j                         5 }|j                  d|       |j                  |dg	      }d d d        d d d        t        j                  |j                  d
             y # 1 sw Y   7xY w# 1 sw Y   ;xY w)Nd   r#   r&   r/   r0   Fr9   z,pandas.core.algorithms._MINIMUM_COMP_ARR_LENr   r   r/   )r   rangerq   rr   rs   rt   r   ru   rv   contextsetattrr   r   r   )r   monkeypatchr   ARR_LENdfrx   mr   s           r    test_index_col_large_csvr      s     FG	w{#&&q)99'A+F	

B 
	 :d
		$e	$  " 	:aIIDgN__TaS_9F	:: &",,s"34		: 	:: :s$   "$C/'C#-C/#C,	(C//C8c           	          | }|j                  t        d      ddgd      }t        g t        g       t	        j
                  ddgddggd	d
g            }t        j                  ||       y )Na0,a1,a2
b0,b1,b2
r   r#   r   r   a1a2b1b2a0b0rP   rF   )r   r   r   r   r   from_arraysr   r   r   r   r   r   s       r    )test_index_col_multiindex_columns_no_datar     sy     F__'(!Q1  F 
Bi&&D\D$<(t
H &(+r=   c                     | }|j                  t        d      dgd      }t        g ddgt        g d            }t	        j
                  ||       y )	Nz	a0,a1,a2
r   r   r   r   r   r7   rO   )r   r   r   r   r   r   r   s       r    test_index_col_header_no_datar     sT     F__Xl3QC1_MF
tBT"H
 &(+r=   c                     | }|j                  t        d      ddg      }t        g t        j                  g dg dg            }t        j                  ||       y )Nr   r   r#   r   )r   r   r   )r   r   r   rV   )r   r   r   r   r   r   r   r   s       r    test_multiindex_columns_no_datar   %  sX     F__X&<=q!f_MF
J**,>@R+STH &(+r=   c                     | }|j                  t        d      ddgd      }t        ddggt        j                  ddgdd	ggd
dg      t        dg            }t        j                  ||       y )Nz a0,a1,a2
b0,b1,b2
data,data,datar   r#   r   r   r   r   r   r   r   r   rP   rO   )r   r   r   r   r   r   r   r   r   s       r    +test_multiindex_columns_index_col_with_datar   0  s     F__561vQR  F 
&	&&D\D$<(t
 VHoH &(+r=   c                     | }|j                  t        d      ddgdgddi      }t        dgdgd	      j                  d      }t	        j
                  ||d
       y )Nz0,1r/   r0   UInt8)r;   r   dtyper   r#   r   )r   F)check_index_type)r   r   r   r   r   r   r   s       r    test_infer_types_boolean_sumr   A  sz     F__Cj%Gn	  F   	
 in  &(UCr=   z
dtype, val01)int64r#   c                 <   d}| }|t         k(  r>|j                  dk(  r/|j                  t        j                  j                  d             |j                  t        |      dd|i      }t        ddgit        |gd	      
      }t        j                  ||       y )Nza,b
01,2r\   z0Cannot disable type-inference for pyarrow enginer]   r/   )r   r   r0   r&   r7   r9   )objectrb   re   r   rc   rd   r   r   r   r   r   r   )r   r   valrh   r   r   r   r   s           r     test_specify_dtype_for_index_colr   Y  s     DF6==I5KK%WX	
 __Xd^s3,_OF#s5#S+ABH&(+r=   c                     | }d}|j                  t        |      ddgd      }t        j                  g dddg      }t	        g d	g|d
g      }t        j                  ||       y )Nza,b,c,d
e,f,g,h
x,y,1,2
r   r#   r   ))r/   e)r1   g)r2   hr0   frP   )rL   r#   r&   rM   rO   )r   r   r   rp   r   r   r   )r   r   r   r   colsr   s         r    -test_multiindex_columns_not_leading_index_colr   g  su     FD __1v  F
 !!,S#JD +SEBH&(+r=   ))__doc__ior   numpyrq   r   pandasr   r   r   pandas._testing_testingr   rc   filterwarnings
pytestmarkusefixturesxfail_pyarrowskip_pyarrowparametrizer!   r<   r?   rJ   r   rT   rW   ri   rm   ry   r   slowr   r   r   r   r   r   r   r   r   rR   r=   r    <module>r      s  
    
 [[''C
 ''8{{&&~6 u6< 7<2,$8 , ," 		?+,	O,-	
c
U2C-@AB	
c
U2C-@AB	3*uRc/BCD	3*uRc/BCDF5///qc
K	
 #J5///qc
K	
 F5///qc
K	
 #J5///qc
K	
9#&N,O& P, , , 	R		U		\*	,	,$ , , , , , ,. 5 5* , ,  	, 	, , , , ,  D D. 'EF
, G
, , ,r=   