U
    f/e                  	   @   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                   @   sL   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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dtid1Zd2Zd3Zstampdf r$   P/tmp/pip-unpacked-wheel-tiezk1ph/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.   ZinplacebarZoneZtwoZthreer         )levelscodes   r   levelr6   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 )	Nr0   r1      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 )Nr0   r1   rA      r'   r4   ABCr   r   r5   Tr7   zLevel E matchEzToo many levelsr-   )r   r   r   r   r    pytestraisesKeyErrorr:   
IndexErrorr   rC   )r!   r#   r2   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 )
Nr1   rG   int64)r,   r   r   r0   r   )stop)r   r   )
r   rC   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 )NrF   zdoes not match index namerJ   ZwrongTr-   r0   r1   r   z	not found)r   rC   rM   rN   rO   r   r   from_productrD   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 )Nr0   Tr-   )
r   r;   r   r   r   r   r   r2   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 )Nr0   r1   rA   ar+   r   zwIn a future version of pandas all arguments of Series\.reset_index except for the argument 'level' will be keyword-onlyrJ   F)rZ   r   )r   r   r   Zassert_produces_warningFutureWarningr   r   r    )r!   r<   msgrQ   rR   r$   r$   r%   test_drop_pos_args_deprecation   s     z-TestResetIndex.test_drop_pos_args_deprecationN)__name__
__module____qualname__r&   r@   rE   rS   rV   rX   rY   r]   r$   r$   r$   r%   r	      s    *
r	   zarray, dtyperZ   bz	12-1-2000r1   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   r0   g      ?g      ?)r   r   )Zlevel_0Zlevel_1Zlevel_2r   )r   rW   r   objectr   r   r   rT   Zfloat64r   r:   )arrayr   idxrQ   rR   r$   r$   r%   7test_reset_index_dtypes_on_empty_series_with_multiindex   s    re   )r   Znumpyr   rM   Zpandaspdr   r   r   r   r   r   Zpandas._testingZ_testingr   r	   markZparametrizerb   Zperiod_rangeZPeriodDtypere   r$   r$   r$   r%   <module>   s      


