o
    ŀg,                     @   s  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d Zdd Zdd Zed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dfdddgeg dddfdddgeg dddfdddgeg dddfddgdge	jg gd ddgddfddgdge	jg gd ddgddfddgdge	jg gd ddgddfddgdge	jg gd ddgddfg
dd Zed d! Zejd"d#d#gd$d#gd#d%gd$d%gd&d'ggd(d) Zed*d+ Zed,d- Zed.d/ Zejjd0d1 Z ed2d3 Z!ed4d5 Z"ed6d7 Z#ed8d9 Z$ed:d; Z%ejd<e&d=fd>gd?d@ Z'edAdB Z(dS )Cz
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           	      C   s   | }d}d}|r)|| }|j t|dd}|j t|ddd}t|| d S |}d}tjt|d |j t|dd W d    d S 1 sIw   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msg r   Y/var/www/html/myenv/lib/python3.10/site-packages/pandas/tests/io/parser/test_index_col.pytest_index_col_named   s   "r    c                 C   sh   | }d}t g dg dg dg ddtg ddd	d
}g d}|jt||dgd}t|| 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-   r.   r/   r0   r4   )namesr   )r   r   r   r   r   r   )r   r   r   r   r9   r   r   r   r   test_index_col_named24   s   r:   c                 C   sR   d}| }d}t jt|d |jt|dd W d    d S 1 s"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   r   r   r   test_index_col_is_trueF   s   "r;   c                 C   sN   d}| }| t|}tg dg dg dgg dg dd}t|| 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#   )r3   barbaz)ABCr8   columnsr   r   r   r   r   r   r   r   r   r   r   r   r   test_infer_index_colP   s   rE   zindex_col,kwargsrB   xyzrH   rI   rG   r5   rB   r8   r!   r$   r9   c                 C   s8   d}| }|j t||d}tdi |}t|| d S )Nzx,y,zr
   r   rC   )r   r   kwargsr   r   r   r   r   r   r   test_index_col_empty_datab   s
   )rM   c                 C   s8   d}| }|j t|dd}tddgd}t|| d S )Nzx,yFr
   rG   rH   rB   rC   rD   r   r   r   test_empty_with_index_col_false   s
   rO   index_names r3   r<   NotReallyUnnamedz
Unnamed: 0c                 C   s   | }|j dkrd|v rtjjdd}|| d|dg }|jt|ddgd	}td
g dit	
ddgddggd}dd |D |j_t|| d S )NpyarrowrQ   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-   r.   r/   r0   r7   c                 S   s   g | ]}|r|nd qS )Nr   ).0r6   r   r   r   
<listcomp>   s    z+test_multi_index_naming.<locals>.<listcomp>)enginer   markxfailapplymarkerjoinr   r   r   r   from_productr8   r9   r   r   )r   rP   requestr   r\   r   r   r   r   r   r   test_multi_index_naming   s   
rb   c                 C   sb   | }d}|j t|ddgd}tdg ditddgg d	gg d
g dgdd}t|| d S )Nz$,Unnamed: 2,
a,c,1
a,d,2
b,c,3
b,d,4r   r$   r
   z
Unnamed: 2)r/   r0   r/   r0   r-   r.   rX   )r   r   r!   r!   )r   r!   r$   r'   )levelscodesr7   )r   r   r   r   r   r   )r   r   r   r   r   r   r   r   ,test_multi_index_naming_not_all_at_beginning   s   
re   c                 C   s   | }t g d}ttjdd|g dd}t }|	| |j
|g dd}W d    n1 s6w   Y  t|| d S )N)r>   r!   r$   rf   )r?   r!   r$   r$   )r'   r'   rF   rA   )r   r!   r$   r
   )r   from_tuplesr   nprandomdefault_rngstandard_normalr   ensure_cleanto_csvr   r   )r   r   midxr   pathr   r   r   r   %test_no_multi_index_level_names_empty   s   

rp   c                 C   s   | }d}t jddgddgd}tdg}tdd	gg||d
}|jt|dddgd}t|| tddg}tddgdd}tddgddgg||d
}|jt|ddd}t|| d S )Nz
I11,A,A
I12,B,B
I2,1,3
)r>   r?   )r>   zB.1I11I12rK   I2r!   r'   rA   r   )r   r   r>   zA.1r5   r?   13)r   rg   r   r   r   r   r   r   )r   r   r   rn   idxr   r   col_idxr   r   r   test_header_with_index_col   s   
rx   c              	   C   s   | }d}t t|d tjd|d d}t 1}|j|dd |	 }|
d| |j|dgd	}W d    n1 sAw   Y  W d    n1 sPw   Y  t||d
 d S )Nd   r!   r$   r-   r.   Fr7   z,pandas.core.algorithms._MINIMUM_COMP_ARR_LENr   r
   r-   )r   rangerh   ri   rj   rk   r   rl   rm   contextsetattrr   r   r   )r   monkeypatchr   ARR_LENdfro   mr   r   r   r   test_index_col_large_csv   s    


r   c                 C   sX   | }|j tdddgdd}tg tg tjddgddggd	d
gdd}t|| d S )Na0,a1,a2
b0,b1,b2
r   r!   r   r   a1a2b1b2a0b0rK   rA   )r   r   r   r   r   from_arraysr   r   r   r   r   r   r   r   r   )test_index_col_multiindex_columns_no_data  s   r   c                 C   sD   | }|j tddgdd}tg ddgtg ddd}t|| d S )	Nz	a0,a1,a2
r   r   r   r   r   r5   rJ   )r   r   r   r   r   r   r   r   r   r   test_index_col_header_no_data  s   
r   c                 C   sH   | }|j tdddgd}tg tg dg dgd}t|| d S )Nr   r   r!   r   )r   r   r   )r   r   r   rN   )r   r   r   r   r   r   r   r   r   r   r   test_multiindex_columns_no_data%  s   r   c                 C   s`   | }|j tdddgdd}tddggtjddgdd	ggd
dgdtdgd}t|| d S )Nz a0,a1,a2
b0,b1,b2
data,data,datar   r!   r   r   r   r   r   r   r   r   rK   rJ   )r   r   r   r   r   r   r   r   r   r   r   r   +test_multiindex_columns_index_col_with_data0  s   r   c                 C   sR   | }|j tdddgdgddid}tdgdgdd	d}tj||d
d d S )Nz0,1r-   r.   UInt8)r9   r   dtyper   r!   rz   )r   F)check_index_type)r   r   r   r   r   r   r   r   r   r   test_infer_types_boolean_sumA  s    r   z
dtype, val01)int64r!   c                 C   sr   d}| }|t kr|jdkr|tjjdd |jt|dd|id}tddgit	|gdd	d
}t
|| d S )Nza,b
01,2rS   z0Cannot disable type-inference for pyarrow enginerT   r-   )r   r   r.   r$   r5   r7   )objectr[   r^   r   r\   r]   r   r   r   r   r   r   )r   r   valra   r   r   r   r   r   r   r    test_specify_dtype_for_index_colY  s   r   c                 C   s\   | }d}|j t|ddgdd}tjg dddgd}tg d	g|d
gd}t|| d S )Nza,b,c,d
e,f,g,h
x,y,1,2
r   r!   r   ))r-   e)r/   g)r0   hr.   frK   )rG   r!   r$   rH   rJ   )r   r   r   rg   r   r   r   )r   r   r   r   colsr   r   r   r   -test_multiindex_columns_not_leading_index_colg  s   r   ))__doc__ior   numpyrh   r   pandasr   r   r   pandas._testing_testingr   r\   filterwarnings
pytestmarkusefixturesxfail_pyarrowskip_pyarrowparametrizer    r:   r;   rE   r   rM   rO   rb   re   rp   rx   slowr   r   r   r   r   r   r   r   r   r   r   r   r   <module>   s    


'	














