
    Eg,                        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                            d          Zej                            d          Zej                            d          Zej                            dd	d
g          d             Zd Zd Zed             Zee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	j        g gdz  ddg          dfddgdg e	j        g gdz  ddg          dfddgdg e	j        g gdz  ddg          dfddgdg e	j        g gdz  ddg          dfg
          d                         Zed             Ze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                            d,e&d-fd.g          d/             Z'ed0             Z(dS )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                    | }d}d}|rw||z   }|                     t          |          d          }|                     t          |          d                              d          }t          j        ||           d S |}d}t          j        t          |          5  |                     t          |          d           d d d            d S # 1 swxY w Y   d S )	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	            Z/var/www/sysmax/venv/lib/python3.11/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L
fh///// ]:S111 	< 	<OOHTNNdO;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<s   %CCCc                     | }d}t          g dg dg dg ddt          g dd	          
          }g d}|                    t          |          |dg          }t	          j        ||           d S )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   s    FD iijjjzzz


KK---I>>>  H ,++E__Xd^^5YK_PPF&(+++++    c                     d}| }d}t          j        t          |          5  |                    t	          |          d           d d d            d S # 1 swxY w Y   d S )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   s    DF
5C	z	-	-	- 8 8$7778 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8s   %AAAc                     d}| }|                     t          |                    }t          g dg dg dgg dg d          }t          j        ||           d S )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   s|    D
 F__Xd^^,,F	IIIyyy)###  H
 &(+++++r=   zindex_col,kwargsrG   xyzrM   rN   rL   r7   rG   r:   r#   r&   r;   c                     d}| }|                     t          |          |          }t          di |}t          j        ||           d S )Nzx,y,zr    rH   )r   r   kwargsr   r   r   r   s          r    test_index_col_empty_datarT   b   sV    R DF__Xd^^y_AAF""6""H&(+++++r=   c                     d}| }|                     t          |          d          }t          ddg          }t          j        ||           d S )Nzx,yFr   rL   rM   rG   rH   rI   s        r    test_empty_with_index_col_falserW      sV     DF__Xd^^u_==F#s,,,H&(+++++r=   index_names r5   rA   NotReallyUnnamedz
Unnamed: 0c                    | }|j         dk    r9d|v r5t          j                            d          }|                    |           d                    |dgz             }|                    t          |          ddg	          }t          d
g dit          j
        ddgddgg                    }d |D             |j        _        t          j        ||           d S )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   c                     g | ]}|r|nd 	S )NrR   ).0r8   s     r    
<listcomp>z+test_multi_index_naming.<locals>.<listcomp>   s!    KKKtD2DDdKKKr=   )enginer   markxfailapplymarkerjoinr   r   r   r   from_productr:   r;   r   r   )r   rX   requestr   rf   r   r   r   s           r    test_multi_index_namingrl      s     F}	!!bK&7&7{  (K LLD!!! 88K#D"EEFFD__Xd^^1v_>>F	Z%<sCj3PS*=U%V%V  H LK{KKKHN&(+++++r=   c           	          | }d}|                     t          |          ddg          }t          dg dit          ddgg d	gg d
g dg                    }t	          j        ||           d S )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_beginningrp      s    F5D__Xd^^1v_>>F	+++,#J-lllLLL5Q
 
 
  H &(+++++r=   c                    | }t          j        g d          }t          t          j                            d                              d          |g d          }t          j                    5 }|	                    |           |
                    |g d          }d d d            n# 1 swxY w Y   t          j        ||           d S )N)rC   r#   r&   rr   )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_emptyr|      s    F!"I"I"IJJD
	a  0088  H
 
		 <d;;< < < < < < < < < < < < < < < &(+++++s   0/B++B/2B/c                    | }d}t          j        ddgddg          }t          dg          }t          dd	gg||
          }|                    t          |          dddg          }t          j        ||           t          ddg          }t          ddgd          }t          ddgddgg||
          }|                    t          |          dd          }t          j        ||           d S )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   rs   r   r   r   r   r   r   )r   r   r   rz   idxr   r   col_idxs           r    test_header_with_index_colr      s	    FD
 !:|"<UENSSSD
--C1a&d;;;H__Xd^^q!Q_HHF&(+++S%L!!G
E
*
*
*C3*sCj1gNNNH__Xd^^uQ_GGF&(+++++r=   c                 @   | }d}t          t          |dz             t          j                            d                              |dz             d          }t          j                    5 }|                    |d           |	                                5 }|
                    d|           |                    |dg	          }d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          j        ||                    d
                     d S )Nd   r#   r&   r/   r0   Fr9   z,pandas.core.algorithms._MINIMUM_COMP_ARR_LENr   r   r/   )r   rangert   ru   rv   rw   r   rx   ry   contextsetattrr   r   r   )r   monkeypatchr   ARR_LENdfr{   mr   s           r    test_index_col_large_csvr      s    FG	w{##&&q))99'A+FF	
 	

 
B 
		 :d
		$e	$$$  "" 	:aIIDgNNN__TaS_99F	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	:: : : : : : : : : : : : : : : &",,s"3"344444s6   -,C+/CC+C	C+C	C++C/2C/c           	          | }|                     t          d          ddgd          }t          g t          g           t	          j        ddgddggd	d
g                    }t          j        ||           d S )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     s     F__'((!Q1   F 
Bii&D\D$<(t
 
 
  H &(+++++r=   c                     | }|                     t          d          dgd          }t          g ddgt          g d                    }t	          j        ||           d S )	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     ss     F__Xl33QC1_MMF
tBT"""  H
 &(+++++r=   c                     | }|                     t          d          ddg          }t          g t          j        g dg dg                    }t          j        ||           d S )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   %  s}     F__X&<==q!f_MMF
J*,>,>,>@R@R@R+STT  H &(+++++r=   c                     | }|                     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        ||           d S )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61vQR   F 
&	&D\D$<(t
 
 
 VHoo  H &(+++++r=   c                     | }|                     t          d          ddgdgddi          }t          dgdgd	                              d          }t	          j        ||d
           d S )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  s     F__Cj%Gn	   F   	
 
   inn  &(UCCCCCCr=   z
dtype, val01)int64r#   c                 `   d}| }|t           k    r>|j        dk    r3|                    t          j                            d                     |                    t          |          dd|i          }t          ddgit          |gd	          
          }t          j        ||           d S )Nza,b
01,2r\   z0Cannot disable type-inference for pyarrow enginer]   r/   )r   r   r0   r&   r7   r9   )objectre   rh   r   rf   rg   r   r   r   r   r   r   )r   r   valrk   r   r   r   r   s           r     test_specify_dtype_for_index_colr   Y  s     DF6=I55K%WXX	
 	
 	
 __Xd^^s3,_OOF#s5#S+A+A+ABBBH&(+++++r=   c                     | }d}|                     t          |          ddgd          }t          j        g dddg          }t	          g d	g|d
g          }t          j        ||           d S )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   rs   r   r   r   )r   r   r   r   colsr   s         r    -test_multiindex_columns_not_leading_index_colr   g  s     FD __1v   F
 !,,,S#J  D +++SEBBBH&(+++++r=   ))__doc__ior   numpyrt   r   pandasr   r   r   pandas._testing_testingr   rf   filterwarnings
pytestmarkusefixturesxfail_pyarrowskip_pyarrowparametrizer!   r<   r?   rJ   r   rT   rW   rl   rp   r|   r   slowr   r   r   r   r   r   r   r   r   rR   r=   r    <module>r      s   
                    
      [''C 
 ''88{&&~66 u66< < 76<2, , ,$8 8 8 , , ," 		???+,	OOO,-	
c
UU2C-@-@-@AAB	
c
UU2C-@-@-@AAB	3*uuRc/B/B/BCCD	3*uuRc/B/B/BCCDF5//qc
KKK 	
 #J5//qc
KKK 	
 F5//qc
KKK 	
 #J5//qc
KKK 	
9#& &N, ,O& & P, , , , 	R		U		\*	 	, ,	 	,$ , , , , , , , , ,. 5 5 5* , , ,  	, 	, 	, , , , , , ,  D D D. 'EFF
, 
, GF
, , , , , ,r=   