U
    *if                  	   @   s   d dl m Z  d dlZd dlZd dlZd dlmZmZmZm	Z	m
Z
mZ d dlmZ G dd dZejdddgefejd	d
ddejddfgdd ZdS )    )datetimeN)	DataFrameIndex
MultiIndex
RangeIndexSeries
date_rangec                   @   sT   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd ZdS )TestResetIndexc                 C   s   t ddddd }tdtjt|i|d}| }|jd t	dksPt
|d	}tj||d
d tddd}t|dggddgd}|d}|jd |kst
| d d |kst
d S )Nz1/1/2001z6/1/2001D)startendfreqvindexr   zM8[ns]r   F)Zcheck_namesi        g333333(@DateValuecolumns)r   Z
_with_freqr   nprandomZrandlenreset_indexdtypesdtypeAssertionError	set_indextmassert_frame_equalr   r   )selfZdtiZd1Zd2Zd3Zstampdf r#   _/home/mars/bis/venv/lib/python3.8/site-packages/pandas/tests/series/methods/test_reset_index.pytest_reset_index_dti_round_trip   s    

z.TestResetIndex.test_reset_index_dti_round_tripc              
   C   sF  t  d d }| }ddg|j_d|_| }d|ks>t|jdd}d|ksVt|jdd}|}|jddd	}|d kstt || t	d
gdddgddggddddddgddddddgddddddggd}t
tjd|d}|jdd}t|jdkst|jddgdd}t |jt|d t|t
sBtd S )N   hashcategoryvalueZvalue2nameTdrop)r-   inplacebaronetwothreer         )levelscodes   r   levelr9   r-   )r   ZmakeDataFramestackr   namesr+   r   r   assert_series_equalr   r   r   r   Zrandnr   r   Zassert_index_equalr   Zget_level_values
isinstance)r!   r"   serss2Zreturn_valuer   rsr#   r#   r$   test_reset_index#   s.    ,zTestResetIndex.test_reset_indexc                 C   sN   t dddgttdddd}| jjd ks2t|jddjjd ksJtd S )	Nr3   r4      xr*   r   Tr,   )r   r   ranger   r   r+   r   r!   r@   r#   r#   r$   test_reset_index_nameC   s    z$TestResetIndex.test_reset_index_namec              
   C   s  t dddgdddggddd	gd
}ddgddgfD ]r}|ddgd	 }|j|d d}t||d |j|d d d}t||d |j|d}t|| |ddgj|dd}t||d	g  tjtdd |jddgd W 5 Q R X |dd }|j|d d}t||ddg  |j|d d d}t||ddg  |j|d dd}t||d  tjt	dd |jdddgd W 5 Q R X q2t
tdjg dd}t
td}t|| d S )Nr3   r4   rD      r&   r7   ABCr   r   r8   Tr:   zLevel E matchEzToo many levelsr,   )r   r   r   r   r    pytestraisesKeyErrorr=   
IndexErrorr   rF   )r!   r"   r5   r@   resultexpectedr#   r#   r$   test_reset_index_levelH   s2    "z%TestResetIndex.test_reset_index_levelc                 C   s^   t tdddd}| }t|jts*ttddgddggddgtddd	}t	|| d S )
Nr4   rJ   int64)r+   r   r   r3   r   )stop)r   r   )
r   rF   r   r>   r   r   r   r   r   r    )r!   r@   Zseries_resultZseries_expectedr#   r#   r$   test_reset_index_ranger   s      z%TestResetIndex.test_reset_index_rangec              	   C   s   t td}tjtdd |jddd W 5 Q R X tjtdd |d W 5 Q R X t tdtddggd d	}tjtd
d |jddd W 5 Q R X d S )NrI   zdoes not match index namerM   ZwrongTr,   r3   r4   r   z	not found)r   rF   rP   rQ   rR   r   r   from_productrG   r#   r#   r$   test_reset_index_drop_errors|   s     z+TestResetIndex.test_reset_index_drop_errorsc                 C   s~   |}|  }t|tstt|jt|jjd ks8t|jj|jjksLt|j dd}t|t	sft|jj|jjksztd S )Nr3   Tr,   )
r   r>   r   r   r   r   r   r5   r+   r   )r!   Zseries_with_multilevel_indexr?   Z	deleveledr#   r#   r$   test_reset_index_with_drop   s    z)TestResetIndex.test_reset_index_with_dropc              	   C   st   t dddgtdddgddd}d}tjt|d |dd	}W 5 Q R X tdddgdddgd
}t|| d S )Nr3   r4   rD   ar*   r   zwIn a future version of pandas all arguments of Series\.reset_index except for the argument 'level' will be keyword-onlyrM   F)r]   r   )r   r   r   Zassert_produces_warningFutureWarningr   r   r    )r!   r?   msgrT   rU   r#   r#   r$   test_drop_pos_args_deprecation   s     z-TestResetIndex.test_drop_pos_args_deprecationc                 C   s@   t tddd}|jdddd t tddd}t|| d S )Nr4   oldr*   newT)r+   r-   r.   )r   rF   r   r   r=   )r!   r?   rU   r#   r#   r$   -test_reset_index_inplace_and_drop_ignore_name   s    z<TestResetIndex.test_reset_index_inplace_and_drop_ignore_nameN)__name__
__module____qualname__r%   rC   rH   rV   rY   r[   r\   r`   rc   r#   r#   r#   r$   r	      s    *
r	   zarray, dtyper]   bz	12-1-2000r4   zQ-DEC)Zperiodsr   )r   c                 C   sX   t ddgddg| g}tt|dd d  j}ttjtj|td}t	
|| d S )Nr   r3   g      ?g      ?)r   r   )Zlevel_0Zlevel_1Zlevel_2r   )r   rZ   r   objectr   r   r   rW   Zfloat64r   r=   )arrayr   idxrT   rU   r#   r#   r$   7test_reset_index_dtypes_on_empty_series_with_multiindex   s    rk   )r   numpyr   rP   Zpandaspdr   r   r   r   r   r   Zpandas._testingZ_testingr   r	   markZparametrizerh   Zperiod_rangeZPeriodDtyperk   r#   r#   r#   r$   <module>   s      


