U
    >vfD                     @   s   d dl m Z 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mZmZmZmZmZmZmZmZmZmZ d dlmZ d dlmZ dd Ze ZG dd dZG d	d
 d
ZG dd dZ G dd dZ!G dd dZ"G dd dZ#dS )    )datetime	timedeltaN)Categorical	DataFrameDatetimeIndexIndexNaTPeriodPeriodIndex
RangeIndexSeries	TimedeltaTimedeltaIndex	Timestamp
date_rangeisnatimedelta_rangeto_timedelta)nanopsc               
      s   t jdddt jdddt jdddt jdddt jdddjddt jdddt jdddg} tj	
d  fdd| D }| | }|S )N
   a)namez
US/Easterntzc                    s   g | ]}t  |d dqS )r   )indexr   )r   ).0idxarr K/tmp/pip-unpacked-wheel-vdrwu74i/pandas/tests/reductions/test_reductions.py
<listcomp>,   s     zget_objs.<locals>.<listcomp>)tmZmakeBoolIndexZmakeIntIndexZmakeFloatIndexZmakeDateIndextz_localizeZmakePeriodIndexZmakeStringIndexnprandomrandn)Zindexesseriesobjsr   r   r    get_objs    s    
r)   c                   @   s  e Zd Zejdddgejdedd Zejdddgejddd	d
edddfddgdd Z	ejdddgdd Z
ejdddgejdddgdd Zdd Zejdddgddggdd Zejd d!d"gd#d$ Zd%d& Zd'S )(TestReductionsopnamemaxminobjc                 C   s~   t || }t|ts&t |j| }ntt |j| |jd}t |dd d k	rn|dd}|j|kszt	n||kszt	d S )N)Zordinalfreqr   M8[ns]int64)
getattr
isinstancer
   valuesr	   Zasi8r/   astype_valueAssertionError)selfr+   r.   resultexpectedr   r   r    test_ops6   s    
zTestReductions.test_opsz
dtype, val)object       @)float64r=   datetime64[ns]        )Int64   )booleanTc                    s  |} fdd}|d g d}|t || s2t|t ||ddsJt|g  d}|t || sjt|t ||ddst dkrd S |d |g d}t || |kst|t ||ddst|d |d g d}t || |kst|t ||dds
td S )Nc                    s.    dkr| t kS  dkr"| tjkS t| S d S )Nr?   )rC   rE   )r   pdNAr   )resdtyper   r    check_missingU   s
    
z4TestReductions.test_nanminmax.<locals>.check_missingrI   Fskipnar<   )r2   r7   )r8   r+   rJ   valindex_or_seriesklassrK   r.   r   rI   r    test_nanminmaxF   s     zTestReductions.test_nanminmaxc                 C   s   |}|t krd| nd| }|ttdddg}t|| dksDtt||dd}|tkrlt|sxtn|dksxt|ttdddtg}t|| dkstt||dd}|tkrt|stn|dkstd S )	Nargr   r@   rA   rB   FrL   )r   r   r   r2   r7   r   r$   isnan)r8   r+   rO   rP   arg_opr.   r9   r   r   r    test_nanargminmaxq   s    z TestReductions.test_nanargminmaxrJ   r0   zdatetime64[ns, UTC]c              	   C   s   |}|t krd| nd| }|g |d}t|| tks<tt||ddtksTttjtdd t||  W 5 Q R X tjtdd t||dd W 5 Q R X d S )NrR   r   rI   FrL   zempty sequencematch)r   r2   r   r7   pytestraises
ValueError)r8   r+   rO   rJ   rP   rU   r.   r   r   r    test_nanops_empty_object   s    z'TestReductions.test_nanops_empty_objectc                 C   s  t tjddd}| dks"t| dks2tt tjdtjdg}| dksVt| dksft|jd	d
dkszt|jd	d
dkstt tjg}| dkst| dkst|jd	d
dkst|jd	d
dkstt ttdddtdddtg}| dkst| dks&t|jd	d
dks<t|jd	d
dksRtt tg}| dksnt| dkst|jd	d
dkst|jd	d
dkstd S )N   r1   rI   r      rB   rD      FrL   rS   r@   rA   )	r   r$   arangeargminr7   argmaxnanr   r   )r8   r.   r   r   r    test_argminmax   s.     
zTestReductions.test_argminmaxzop, expected_colr   bc                 C   s\   t tdddddgd}|jtdd|d	< t||d
d}|| d }t|| d S )Nz2016-01-01 00:00:00r_   UTC)periodsr   r   )columnsi  secondsre   rB   axis)	r   r   r   subtractr   r2   renamer"   assert_series_equal)r8   opZexpected_coldfr9   r:   r   r   r    test_same_tz_min_max_axis_1   s     z*TestReductions.test_same_tz_min_max_axis_1funcmaximumZminimumc                 C   s>   |}t dg|}t|}tt|||}t|| d S )NZ2019)rF   Zto_datetimer#   r   r2   r$   r"   ro   )r8   Ztz_aware_fixturers   r   rR   r:   r9   r   r   r    (test_numpy_reduction_with_tz_aware_dtype   s
    z7TestReductions.test_numpy_reduction_with_tz_aware_dtypec                 C   sV   t tddtgddtddtjgddd}ttddd}| }t|| d S )NrB   rD   timedelta64[ns]rI   rC   ABr_   )	r   r   r   r$   rc   r   sumr"   ro   )r8   rq   r:   r9   r   r   r    test_nan_int_timedelta_sum   s    z)TestReductions.test_nan_int_timedelta_sumN)__name__
__module____qualname__rY   markparametrizer(   r;   r   rQ   rV   r\   rd   rr   ru   r{   r   r   r   r    r*   5   s2   
 



r*   c                	   @   s  e Zd Zejddddddgdd Zd	d
 Zejdddgdd Zdd Z	dd Z
ejddddddgdd Zdd Zejdddgdd Zd d! Zd"d# Zd$d% Zd&d' Zejdddgejd(g egeeeggd)d* Zd+d, Zd-d. Zd/S )0TestIndexReductionszstart,stop,step)r   i  r_   )i  r   i)@B r^   )r   r   )r   r      c                 C   s   t |||}|j }| }||ks*t|jdd}||ksBt|j }| }||ks`t|jdd}||ksxtt ||| }t| stt| std S NFrL   )r   Z_valuesr,   r7   r-   r   )r8   startstopstepr   r:   r9   Zresult2r   r   r    test_max_min_range   s    

z&TestIndexReductions.test_max_min_rangec                 C   s   t dddg}|jstt dtjddg}|jr4t||fD ]L}| tdksTt| tdksht| dksxt|	 dks<tq<d S )N1 days2 daysz3 daysr   r   rD   )
r   is_monotonic_increasingr7   r$   rc   r-   r   r,   ra   rb   r8   idx1idx2r   r   r   r    test_minmax_timedelta64   s    

z+TestIndexReductions.test_minmax_timedelta64rp   r-   r,   c                 C   s`   t g }t|| tkstt tg}t|| tks:tt tttg}t|| tks\td S N)r   r2   r   r7   r8   rp   r.   r   r   r    !test_minmax_timedelta_empty_or_na  s    
z5TestIndexReductions.test_minmax_timedelta_empty_or_nac              	   C   s
  t dddd}t|tdks$tt|tdks:td}tjt|d tj|dd W 5 Q R X tjt|d tj|dd W 5 Q R X t	|dkstt
|d	kstd}tjt|d tj	|dd W 5 Q R X tjt|d tj
|dd W 5 Q R X d S )
Nz
16815 daysz
16820 daysDr/   $the 'out' parameter is not supportedrW   r   outr]   )r   r$   r-   r   r7   r,   rY   rZ   r[   ra   rb   )r8   tderrmsgr   r   r    test_numpy_minmax_timedelta64  s    z1TestIndexReductions.test_numpy_minmax_timedelta64c                 C   s  t dd tdD }| }| }ttdd}||ks@t|  }|d |ks\t|d}t	t
dd	}||kst| }td
}||kst|  }|d |kst| }td}||kst|  }|d |kst| }tt | j }||kst|  }|d |ks<tt tdtdg}|  tddksltt tdtdtdg}|  tddkstd S )Nc                 S   s"   g | ]}t d t|| d qS Z20130101ri   r   r   r   ir   r   r    r!   1  s     z:TestIndexReductions.test_timedelta_ops.<locals>.<listcomp>r   	   ri   r   g?i(
  msz00:00:09z00:01:21z
2015-02-03z
2015-02-07r^   )daysz
2015-02-15   )r   rangediffmeanr   r   r7   to_frameZquantiler   r$   Ztimedelta64medianrz   stddropnar4   r   )r8   sr   r9   r:   r   r   r    test_timedelta_ops-  sB    
z&TestIndexReductions.test_timedelta_opsr+   ZskewZkurtZsemprodvarc              	   C   s   t dd tdD }| }dd| dd| dd	| d
g}tjt|d t||  W 5 Q R X tjt|d t| |dd W 5 Q R X d S )Nc                 S   s"   g | ]}t d t|| d qS r   r   r   r   r   r    r!   e  s     zDTestIndexReductions.test_invalid_td64_reductions.<locals>.<listcomp>r   |zreduction operation 'z' not allowed for this dtypezcannot perform z with type timedelta64\[ns\]zdoes not support reduction ''rW   F)Znumeric_only)	r   r   r   joinrY   rZ   	TypeErrorr2   r   )r8   r+   r   r   msgr   r   r    test_invalid_td64_reductionsb  s    


z0TestIndexReductions.test_invalid_td64_reductionsc                 C   s   |}t dddg|d}|js tt dtddtg|d}|jr@t||fD ]T}| td|dksdt| td|dks|t| dkst| dksHtqHd S )N
2011-01-01
2011-01-02
2011-01-03r   r   rD   )	r   r   r7   r   r-   r   r,   ra   rb   )r8   Ztz_naive_fixturer   r   r   r   r   r   r    test_minmax_tzw  s    
 
z"TestIndexReductions.test_minmax_tzc                 C   s`   t g }tt|| stt tg}tt|| s:tt tttg}tt|| s\td S r   )r   r   r2   r7   r   r   r   r   r    test_minmax_nat_datetime64  s    
z.TestIndexReductions.test_minmax_nat_datetime64c              	   C   s:  t dddg}|j }t|}||ks.t|j }t|}||ksNtd}tjt|d tj|dd W 5 Q R X tjt|d tj|dd W 5 Q R X |j	 }t	|}||kst|j
 }t
|}||kstd}tjt|d tj
|dd W 5 Q R X tjt|d tj	|dd W 5 Q R X d S )NrB   rD   r_   r   rW   r   r   )r   r4   r,   r$   r7   r-   rY   rZ   r[   rb   ra   )r8   r   r:   r9   r   r   r   r    test_numpy_minmax_integer  s.    







z-TestIndexReductions.test_numpy_minmax_integerc              	   C   s   t ddd}t|}|dks"tt|}|dks8td}tjt|d tj|dd W 5 Q R X tjt|d tj|dd W 5 Q R X d S )Nr   r   r_   r   r   rW   r   )r   r$   r,   r7   r-   rY   rZ   r[   )r8   r   r9   r   r   r   r    test_numpy_minmax_range  s    

z+TestIndexReductions.test_numpy_minmax_rangec              	   C   s  t ddd}t|tdks"tt|tdks8td}tjt|d tj|dd	 W 5 Q R X tjt|d tj|dd	 W 5 Q R X t	|dkstt
|d
kstd}tjt|d tj	|dd	 W 5 Q R X tjt|d tj
|dd	 W 5 Q R X d S )N
2016-01-15
2016-01-20r   endz2016-01-15 00:00:00z2016-01-20 00:00:00r   rW   r   r   r]   )r   r$   r-   r   r7   r,   rY   rZ   r[   ra   rb   )r8   Zdrr   r   r   r    test_numpy_minmax_datetime64  s    z0TestIndexReductions.test_numpy_minmax_datetime64c                 C   s   t tdddgdd}|jrt|dd  js0tt dtddtgdd}|jrPt||fD ]4}| tdddkstt| tdddksXtqX| dkst| dkst| dkst| d	kstd S )
Nr   r   r   r   r   rB   r   r_   rD   )	r
   r   r   r7   r-   r	   r,   ra   rb   r   r   r   r    test_minmax_period  s    
 
z&TestIndexReductions.test_minmax_perioddatac                 C   s(   t |dd}t|| }|tks$td S )NMr   )r
   r2   r   r7   )r8   rp   r   r.   r9   r   r   r    test_minmax_period_empty_nat  s    z0TestIndexReductions.test_minmax_period_empty_natc              	   C   s  t jddd}t|tdddks(tt|tdddksBtd}tjt	|d tj|dd	 W 5 Q R X tjt	|d tj|dd	 W 5 Q R X t
|dkstt|d
kstd}tjt	|d tj
|dd	 W 5 Q R X tjt	|d tj|dd	 W 5 Q R X d S )Nr   r   r   r   r   r   rW   r   r   r]   )rF   Zperiod_ranger$   r-   r	   r7   r,   rY   rZ   r[   ra   rb   )r8   prr   r   r   r    test_numpy_minmax_period  s    z,TestIndexReductions.test_numpy_minmax_periodc              	   C   s   t jtdtddd}d}tjt|d |  W 5 Q R X d}tjt|d |  W 5 Q R X t jtdtddd}| d	kst| d
kstd S )NZaabbcaZcabF
categoriesorderedzwCategorical is not ordered for operation min\nyou can use .as_ordered\(\) to change the Categorical to an ordered one\nrW   zwCategorical is not ordered for operation max\nyou can use .as_ordered\(\) to change the Categorical to an ordered one\nTcre   )	rF   ZCategoricalIndexlistrY   rZ   r   r-   r,   r7   )r8   cir   r   r   r    test_min_max_categorical  s    z,TestIndexReductions.test_min_max_categoricalN)r|   r}   r~   rY   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r      s:   


5

 r   c                   @   sn  e Zd Zdd Zejddddddgejd	d
dgejdddgdd Zejdddgejddddgdd Zejdddddgdd Z	dd Z
ejd	d
dgejdddgdd  Zejd	d
dgejdd!dgd"d# Zd$d% Zejd&d'd(gd)d* Zejdd+ejd,d
dgd-d. Zd/d0 Zd1d2 Zd3d4 Zd5d6 Zd7d8 Zd9d: Zd;d< Zd=d> Zejd?d@dAgejd,d
dgdBdC Zejd?d@dAgejdDddEgdEdgdejgejdggdFdG ZejddddHdgejd?d@dAgejd,d
dgejdIdJdJdJgddgddggfdKdKdKgd
d
gd
d
ggfejejejgejejgdd
ggfdJejdJgejdgddggfdKejdKgd
ejgd
d
ggfdKejdJgd
dgd
dggfgdLdM ZdNdO ZdPdQ Z dRdS Z!ejdTe"g ddUe#fe"dVdWdXge$fe"dYdZge$fe"dVdVdWdWdEejdXge$fgd[d\ Z%d]d^ Z&dES )_TestSeriesReductionsc              	   C   s   t tjd}| }tj|dd< tj|dd< t| sFt	tjdd
d}tj|d d df< tdd t| |  W 5 Q R X tj|d	d
}t| st	d S )Nr   r]      d   Zf4rD   mode.use_inf_as_naTrB   rk   )r   r$   r%   r&   copyinfrc   isinfrz   r7   r5   rF   option_contextr"   assert_almost_equalr   nansumall)r8   r   s2r   rH   r   r   r    test_sum_inf)  s    z!TestSeriesReductions.test_sum_infrJ   r>   ZFloat32rC   rE   r<   use_bottleneckTFzmethod, unit)rz           )r         ?c              	   C   sF  t d|. tg |d}t|| }||ks4tt||dd}||ksPtt||dd}t|sltt||dd}||k t||ddd}||kstt||ddd}t|stt||d	dd}||kstt||d	dd}t|stttjg|d}t|| }||ks&tt||dd}||ksDtt||dd}t|sbtt||dd}||k t||ddd}||kstt||ddd}t|stttjdg|d}t|| }|d
kstt||dd}|d
kstt||dd}|d
ks"tt||dd}|d
ks@tt||ddd}|d
ks`ttt	d|d}t||d|k
 sttdg|d}t||dd}t|stt||d	dd}t|stttjg|d}t||dd}t|stttjdg|d}t||dd}t|s8tW 5 Q R X d S )Nr   rI   r   )	min_countrB   TrL   )rM   r   Fr   )r   r   rD   )rF   r   r   r2   r7   r   r$   rc   r   emptyr   )r8   methodunitr   rJ   r   r9   rq   r   r   r    
test_empty;  sn    zTestSeriesReductions.test_emptyr   r   r   ZFloat64c                 C   sT   t g |d}t|| }|tjks&tt tjg|d}t|| }|tjksPtd S NrI   )r   r2   rF   rG   r7   r$   rc   )r8   r   rJ   Zeserr9   Znserr   r   r    &test_ops_consistency_on_empty_nullable  s    z;TestSeriesReductions.test_ops_consistency_on_empty_nullabler   r   c              	   C   s   t ttd| }t|sttg dd}|dkrjddddg}tjt|d t ||  W 5 Q R X nt || }|t	kstd S )	NrI   m8[ns]r   r   zoperation 'var' not allowedz.cannot perform var with type timedelta64\[ns\]z does not support reduction 'var'rW   )
r2   r   floatr   r7   r   rY   rZ   r   r   )r8   r   r9   Ztdserr   r   r   r    test_ops_consistency_on_empty  s    z2TestSeriesReductions.test_ops_consistency_on_emptyc                 C   s0   t dtjgddgd}t|}t|d d S )Nr   r   rB   r   )r   r$   rc   r   r"   r   )r8   serr9   r   r   r    test_nansum_buglet  s    
z'TestSeriesReductions.test_nansum_bugletZint32r1   c              	   C   s   t d|| tjd|d}t|}|jdd}t||jddksHt|jdd}t|dksdt|j	dd}t||d kstW 5 Q R X d S )	Nr   @KL rI   FrL   r1   r   rS   )
rF   r   r$   r`   r   rz   intr7   r-   r,   r8   r   rJ   vr   r9   r   r   r    test_sum_overflow_int  s    z*TestSeriesReductions.test_sum_overflow_intZfloat32c              	   C   s   t d| tjd|d}t|}|jdd}||j|dksDt|jdd}tt	|dsdt|j
dd}tt	||d stW 5 Q R X d S )Nr   r   rI   FrL   r   rS   )rF   r   r$   r`   r   rz   r7   r-   Zallcloser   r,   r   r   r   r    test_sum_overflow_float  s    z,TestSeriesReductions.test_sum_overflow_floatc                 C   s\   d}d}t |g| }t|g| dd}t |}| }|| dksLt|dksXtd S )Nl     ;r   rC   rI   r   g ؅W4vC)r$   arrayr   r   r7   )r8   rN   Z
n_elementsnar   Zresult_numpyZresult_maskedr   r   r    test_mean_masked_overflow  s    
z.TestSeriesReductions.test_mean_masked_overflowz	ddof, exp)rB   g      @)r   r=   c                 C   s`   t dddddgdd}t dddddgdd}|j|d	}|j|d	}||ksPt||ks\td S )
NrB   rD   r_   r^   r]   rC   rI   r1   )ddof)r   r   r7   )r8   r   expr   Zser_numpy_dtyper9   Zresult_numpy_dtyper   r   r    test_var_masked_array  s    z*TestSeriesReductions.test_var_masked_array)r   r   r0   zM8[ns, UTC]rM   c                 C   s<   t g |dj|dtkstt g |dj|dtks8td S )NrI   rL   )r   r-   r   r7   r,   )r8   rJ   rM   r   r   r    +test_empty_timeseries_reductions_return_nat  s    z@TestSeriesReductions.test_empty_timeseries_reductions_return_natc              	   C   s|   t dd}t||d}t |}t |}||ks8t| }||ksLtd}tjt|d t j||d W 5 Q R X d S NrB   rA   r   r   rW   r   )r$   r`   r   ra   r7   rY   rZ   r[   r8   r   r   r9   r:   r   r   r   r    test_numpy_argmin	  s    

z&TestSeriesReductions.test_numpy_argminc              	   C   s|   t dd}t||d}t |}t |}||ks8t| }||ksLtd}tjt|d t j||d W 5 Q R X d S r   )r$   r`   r   rb   r7   rY   rZ   r[   r   r   r   r    test_numpy_argmax  s    

z&TestSeriesReductions.test_numpy_argmaxc                 C   s   t  d}tj|dd< ||  | ks4tt|jddsHt|	 }||  | ksht|j
j 
| |j kst|tj }t| stttddd}| }|d	ksttj|d	< | }|d
kstd S )Nr'   r]      FrL   20130102r   rg   r   rB   )r"   makeStringSeriesrn   r$   NaNidxminr-   r7   r   r   r   r4   tolistra   rc   r   r   r8   Zstring_seriesZnonaZallnar   r9   r   r   r    test_idxmin,  s    $

z TestSeriesReductions.test_idxminc                 C   sh  t  d}tj|dd< ||  | ks4tt|jddsHt|	 }||  | ksht|j
j 
| |j kst|tj }t| stttddd}| }|dksttj|d< | }|d	ksttd
ddgdddg}| }|dkst| }|dks*tt|j
|j
}| }|dksNt| }|dksdtd S )Nr'   r]   r   FrL   r   r   r   r^   rB   rD   r_   g?g @g@)r"   r   rn   r$   r  idxmaxr,   r7   r   r   r   r4   r  rb   rc   r   r   r  r  r   r   r    test_idxmaxJ  s2    $

z TestSeriesReductions.test_idxmaxc                 C   sD   t  }|dk}| rt| s(ttddg}| s@td S )Nr   abcT)r"   ZmakeTimeSeriesr   r7   anyr   )r8   tsZbool_seriesr   r   r   r    test_all_anyu  s    z!TestSeriesReductions.test_all_anyc                 C   sJ   |dddg}t |rtt |s*ttdddg}t |sFtd S )Nr   rB   rD   r_   )r$   r   r7   r	  r   )r8   rO   r   r   r   r    test_numpy_all_any  s
    z'TestSeriesReductions.test_numpy_all_anyc                 C   s`   t tjdg}t tjdg}|jdds,t|jdds<t|jddsLt|jddr\td S )NTFrL   )r   r$   rc   r   r7   r	  )r8   s1r   r   r   r    test_all_any_skipna  s    z(TestSeriesReductions.test_all_any_skipnac                 C   sH   t ddddddgddddddgd}|jdds4t|jddrDtd S )NFTr   rB   rD   r   )	bool_only)r   r	  r7   r   r8   r   r   r   r    test_all_any_bool_only  s    $z+TestSeriesReductions.test_all_any_bool_onlybool_agg_funcr	  r   c                 C   s:   t dddddgtd}t|||d}d}||ks6td S )	Nr   re   r   derI   rL   T)r   r<   r2   r7   )r8   r  rM   r   r9   r:   r   r   r    test_any_all_object_dtype  s    z.TestSeriesReductions.test_any_all_object_dtyper   Nc                 C   s8   t |}t||dd}|dko&d |k}||ks4td S )NFrL   r	  )r   r2   r7   )r8   r   r  r   r9   r:   r   r   r    !test_any_all_object_dtype_missing  s    z6TestSeriesReductions.test_any_all_object_dtype_missingZUInt64zdata,expected_datar   rB   c           	      C   sP   t ||d}|| |dk }t|||d}|tjkr@|tjksL||ksLtd S )NrI   r   rL   )r   r2   rF   rG   r7   )	r8   r  rM   r   rJ   Zexpected_datar   r:   r9   r   r   r    "test_any_all_nullable_kleene_logic  s    z7TestSeriesReductions.test_any_all_nullable_kleene_logicc                 C   s@   t ddgddgd}|jddd}tddg}t|| d S )NTFrB   rD   rw   )rl   r  )r   r	  r   r"   ro   )r8   rq   r9   r:   r   r   r    test_any_axis1_bool_only  s    z-TestSeriesReductions.test_any_axis1_bool_onlyc              	   C   s  t dddj}t|}t|}d}tjt|dV | s>t|	 sJt| sVt|	 sbt|	  srt|  stW 5 Q R X |
d}t|}t|}tjt|dX | st|	 st| st|	 st|	  st|  stW 5 Q R X ||d  }t|}t|}|	 s<t| rJt|	 sXt| rft|	  sxt| 	 rtd S )Nz
1995-01-02r_   r   z0'(any|all)' with datetime64 dtypes is deprecatedrW   rf   r   )r   _datar   r   r"   assert_produces_warningFutureWarningr   r7   r	  r#   )r8   Zdtar   rq   r   Ztdar   r   r    test_any_all_datetimelike  s<    
z.TestSeriesReductions.test_any_all_datetimelikec                 C   s  t dddd}t|td }| }|dks2t| }|dksFttj|d< | }|dksdt| }|dksxttt ddd	}tt d
dd	}t|| }t|| }t	
|| ||  }t	
|| | }td}||kst| }td}||kstd S )Nz2012-1-1r_   r   rg   r/   Z20120101r   rD   rB   r   Z20120102r   r   )r   r   r   r  r7   r  r$   rc   absr"   ro   r,   r   r-   )r8   Zdtir   r9   r  r   r:   r   r   r    test_timedelta64_analytics  s0    
z/TestSeriesReductions.test_timedelta64_analyticsztest_input,error_typerI   foobarZbaz)rB   )rD   c              	   C   s   d}t j||d |  W 5 Q R X t j||d |jdd W 5 Q R X d}t j||d |  W 5 Q R X t j||d |jdd W 5 Q R X dS )zU
        Cases where ``Series.argmax`` and related should raise an exception
        zbreduction operation 'argmin' not allowed for this dtype|attempt to get argmin of an empty sequencerW   FrL   zbreduction operation 'argmax' not allowed for this dtype|attempt to get argmax of an empty sequenceN)rY   rZ   r  r  )r8   Z
test_inputZ
error_typer   r   r   r    test_assert_idxminmax_raises'  s    z1TestSeriesReductions.test_assert_idxminmax_raisesc              	   C   s   t dtj tjtjg}| dks(tt|jdds>t| dksNtt|jddsdtt	ddN | dkstt|jddst| dkstt|jdd W 5 Q R X d S )Nr   rB   FrL   rD   r   T)
r   r$   r   rc   r  r7   rT   r  rF   r   r  r   r   r    test_idxminmax_with_infG  s    z,TestSeriesReductions.test_idxminmax_with_inf)'r|   r}   r~   r   rY   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r$   rc   r  rF   rG   r  r  r  r  r   r[   r   r"  r#  r   r   r   r    r   $  s    `

	+
	 	"
/)
r   c                	   @   s   e Zd Zejdeeegeeedgeededggdd Z	ejde
eege
eedge
ededggdd Zdd	 Zd
d ZdS )TestDatetime64SeriesReductionsnat_serZnatc                 C   sL   |  tkst| tks t|j ddtks4t|jddtksHtd S r   r-   r   r7   r,   )r8   r%  r   r   r    test_minmax_nat_series_  s    
z5TestDatetime64SeriesReductions.test_minmax_nat_seriesnat_dfc                 C   s\   |  d tkst| d tks(t|j ddd tks@t|jddd tksXtd S )Nr   FrL   r&  )r8   r(  r   r   r    test_minmax_nat_dataframen  s    
z8TestDatetime64SeriesReductions.test_minmax_nat_dataframec                 C   s   t dd}|tjt|}| }| }t|t	s>t
t|t	sLt
||d ks\t
||d kslt
| |d kst
| |d kst
d S )N1/1/2000z
12/31/2000r   rS   )r   Ztaker$   r%   Zpermutationlenr-   r,   r3   r   r7   )r8   rngZrng2Zthe_minZthe_maxr   r   r    test_min_max}  s    
z+TestDatetime64SeriesReductions.test_min_maxc              
   C   s   t dddd}ddddddddddg
}t|tjt||d}|j }t|jj	d	 }t
|tsjt||ksvt|j }t|jj	d
 }t
|tst||kstd S )Nr*  r   Z4hr  rx   ry   C)TSVLrS   r   )r   r   r$   r%   r&   r+  r/  r,   r   Ziatr3   r7   r-   )r8   r,  Zlvlsrq   r9   r   r   r   r    test_min_max_series  s    

z2TestDatetime64SeriesReductions.test_min_max_seriesN)r|   r}   r~   rY   r   r   r   r   r   r'  r   r)  r-  r2  r   r   r   r    r$  Z  s$   



r$  c                   @   s   e Zd Zejdddgdd Zejdededfededfedej	g edfd	d
dgdd
d	gfd	d
dej	gdd
d	gfgejdddgdd Z
ejdddgejdddgdd Zejdddgejdddgdd ZdS )TestCategoricalSeriesReductionsfunctionr-   r,   c              	   C   sL   t tddddgdd}d| }tjt|d t||  W 5 Q R X d S )	Nr   re   r   r  F)r   z)Categorical is not ordered for operation rW   )r   r   rY   rZ   r   r2   )r8   r4  catr   r   r   r    test_min_max_unordered_raises  s    
z=TestCategoricalSeriesReductions.test_min_max_unordered_raiseszvalues, categoriesr  ZcbarB   rD   r_   c                 C   sJ   t t||dd}t||dd}|dkr2|d n|d }||ksFtd S )NTr   rL   r-   r   rD   )r   r   r2   r7   )r8   r4   r   r4  r5  r9   r:   r   r   r    test_min_max_ordered  s    z4TestCategoricalSeriesReductions.test_min_max_orderedrM   TFc                 C   s<   t ttjgddgdd}t|||d}|tjks8td S )NrB   rD   Tr   rL   r   r   r$   rc   r2   r7   )r8   r4  rM   r5  r9   r   r   r    "test_min_max_ordered_with_nan_only  s    zBTestCategoricalSeriesReductions.test_min_max_ordered_with_nan_onlyc                 C   sh   t tddtjdgddgdd}t|||d}|dkrV|dkrDdnd}||ksdtn|tjksdtd S )Nr   re   Tr   rL   r-   r8  )r8   r4  rM   r5  r9   r:   r   r   r    test_min_max_skipna  s    z3TestCategoricalSeriesReductions.test_min_max_skipnaN)r|   r}   r~   rY   r   r   r6  r   r$   rc   r7  r9  r:  r   r   r   r    r3    s&   

r3  c                   @   s  e Zd Zejddeg ejdfdeg ejdfgdd Z	ejdddddd	gdgfddddd	d
d
d
gdd
gfddddd	gdgfddddd	d
d
d
gdd
gfgejde
ejd ejd  dd Zejdddgfddejgfgdd Zejdddgdgdgfddgejgdgfgdd Zejdddgdgfddgejgfgdd Zejdddddgddgfdejgejddgfgd d! Zejddd"d#d$gd%d&gfdejgejd%d&gfgd'd( Zejddedd	gdd	gd)ed*gdd*gd)ed
dgd
d	dgdd+fdeejgdd	gd)eejd*gdd*gd)eejd
dgd
d	dgdd+fgd,d- Zejddd.gdd.gfdd.gdd.gfgd/d0 Zd1d2 Zd3d4 Zejd5d6d7ddd8d9gedgejdejfd6d7ddd8d9gedgejdejfd8d:d8ged8gejdejfgd;d< Zejd5d6d7dd8d9ged=d7d>d8d9gejdejfd8d:d8d:d
ged:d8gejdejfgd?d@ ZdAS )BTestSeriesModezdropna, expectedTrI   Fc                 C   s(   t g tjd}||}t|| d S r   )r   r$   r>   moder"   ro   r8   r   r:   r   r9   r   r   r    test_mode_empty  s    
zTestSeriesMode.test_mode_emptyzdropna, data, expectedrB   rD   r_   dtZ
AllIntegerZFloatc                 C   s2   t ||d}||}t ||d}t|| d S r   r   r<  r"   ro   )r8   r   r   r:   r?  r   r9   r   r   r    test_mode_numerical  s    
z"TestSeriesMode.test_mode_numericalr   c                 C   s8   t dddtjtjg}||}t |}t|| d S )NrB   rD   )r   r$   rc   r<  r"   ro   r=  r   r   r    test_mode_numerical_nan  s    
z&TestSeriesMode.test_mode_numerical_nanz'dropna, expected1, expected2, expected3re   r!  rc   c                 C   s   dgd dgd  }t |dd}||}t |dd}t|| dddtjtjtjg}t |td}||}t |td}t|| dddtjtjtjg}t |tdt}||}t |td}t|| d S )	Nr   rD   re   r_   r   rI   r   r!  )	r   r<  r"   ro   r$   rc   r<   r5   str)r8   r   	expected1	expected2	expected3r   r   r9   r   r   r    test_mode_str_obj  s    


z TestSeriesMode.test_mode_str_objzdropna, expected1, expected2r   c                 C   sl   t dddg}||}t |}t|| t dddtjtjtjg}||}t |td}t|| d S )NrB   r   rI   )r   r<  r"   ro   r$   rc   r<   )r8   r   rD  rE  r   r9   r:   r   r   r    test_mode_mixeddtype  s    

z#TestSeriesMode.test_mode_mixeddtype
1900-05-03r   
2013-01-02c                 C   sx   t dddddgdd}||}t |dd}t|| t dddddddgdd}||}t |dd}t|| d S )Nr   rJ  rI  rc   r0   rI   r@  r8   r   rD  rE  r   r9   r   r   r    test_mode_datetime"  s*     
	
z!TestSeriesMode.test_mode_datetime-1 days0 daysr   2 min1 dayc              	   C   sz   t dddddgdd}||}t |dd}t|| t dddd	d
d
ddgdd}||}t |dd}t|| d S )Nr   rM  rN  rc   rv   rI   rP  z-1 dayz-1 day 2 minrO  r@  rK  r   r   r    test_mode_timedeltaE  s,    
 


z"TestSeriesMode.test_mode_timedelta)r   r   r   c              	   C   s   t tddtjtjg}||}t |dd}t|| t tdddtjtjg}||}t |dd}t|| t tdddddtjtjgdddgdd}||}t |dd}t|| d S )	NrB   rD   categoryrI   r   r_   Tr   )r   r   r$   rc   r<  r"   ro   )r8   r   rD  rE  rF  r   r9   r   r   r    test_mode_categoryg  s$    

  
z!TestSeriesMode.test_mode_category            c                 C   sr   t dddgtjd}||}t |tjd}t|| t ddgtjd}||}t |tjd}t|| d S )NrB   rT  rI   )r   r$   Zuint64r<  r"   ro   rK  r   r   r    test_mode_intoverflow  s    

z$TestSeriesMode.test_mode_intoverflowc              	   C   sf   t dtjg}t dddtjtjg}tt" |jdd}| jdd}W 5 Q R X t	|| d S )Nr   rB   F)r   T)Zdrop)
r   r$   rc   r"   r  UserWarningr<  Zsort_valuesZreset_indexro   )r8   r:   r   r9   r   r   r    test_mode_sortwarning  s    z$TestSeriesMode.test_mode_sortwarningc                 C   s>   t dddtjgdd}| }t ddidd}t|| d S )NTFrE   rI   r   )r   rF   rG   r<  r"   ro   )r8   r   r9   r:   r   r   r    test_mode_boolean_with_na  s    z(TestSeriesMode.test_mode_boolean_with_nazarray,expected,dtyper   y              ?y      ?      ?y      ?       @y               @c                 C   s    t ||d }t|| d S r   r@  r8   r   r:   rJ   r9   r   r   r    test_single_mode_value_complex  s    z-TestSeriesMode.test_single_mode_value_complexy                y      ?        c                 C   s    t ||d }t|| d S r   r@  rY  r   r   r    test_multimode_complex  s    z%TestSeriesMode.test_multimode_complexN)r|   r}   r~   rY   r   r   r   r$   r>   r>  r   Z	typecodesrA  rc   rB  rG  rH  rL  rQ  r   rS  rU  rW  rX  Z
complex128Z	complex64rZ  r[  r   r   r   r    r;    s   "
	  
$






r;  )$r   r   Znumpyr$   rY   ZpandasrF   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   Zpandas._testingZ_testingr"   Zpandas.corer   r)   r(   r*   r   r   r$  r3  r;  r   r   r   r    <module>   s*   H "  P    :A6