o
    �¨Êhí,  ã                   @   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   úW/var/www/html/env/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 )Néd   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¦    ÿ


þþþþþþþþäþ'	

ûþ

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



