U
    *ifQ                     @   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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 Z/home/mars/bis/venv/lib/python3.8/site-packages/pandas/tests/reductions/test_reductions.py
<listcomp>-   s     zget_objs.<locals>.<listcomp>)tmZmakeBoolIndexZmakeIntIndexZmakeFloatIndexZmakeDateIndextz_localizeZmakePeriodIndexZmakeStringIndexZmakeUnicodeIndex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%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_ops7   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_missingV   s
    
z4TestReductions.test_nanminmax.<locals>.check_missingrI   Fskipnar<   )r2   r7   )r8   r+   rJ   valindex_or_seriesklassrK   r.   r   rI   r    test_nanminmaxG   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_nanargminmaxr   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maximumminimumc                 C   s>   |}t dg|}t|}tt|||}t|| d S )NZ2019)rF   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_dtypeN)__name__
__module____qualname__rY   markparametrizer(   r;   r   rQ   rV   r\   rd   rr   rw   r   r   r   r    r*   6   s0   
 


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d(d) Zd*d+ Zd,S )-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_monotonicr7   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!   '  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mediansum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!   [  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_reductionsX  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_tzm  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   sR  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
D ]z}t g dd}t	|| }|tkstt tgdd}t	|| }|tks"tt tttgdd}t	|| }|tkstqd S )Nr   r   r   r   r   rB   r   r_   rD   )r-   r,   M)
r
   r   r   r7   r-   r	   r,   ra   rb   r2   )r8   r   r   r   rp   r.   r9   r   r   r    test_minmax_period  s2    
 
z&TestIndexReductions.test_minmax_periodc              	   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)rx   ry   rz   rY   r{   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r}      s4   


5

 #r}   c                   @   s>  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dd Zej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dd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zejd-eegd.d/ Zd0d1 Zejd2d3d4gejd5d
dgd6d7 Zejd2d3d4gejd8dd9gd9dgdejgejdggd:d; Zejdddd<dgejd2d3d4gejd5d
dgejd=d>d>d>gddgddggfd?d?d?g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d>ejd>gejdgddggfd?ejd?gd
ejgd
d
ggfd?ejd>gd
dgd
dggfgd@dA ZejdBd4dd
dgfd3dd
d
gfgdCdD ZdEdF ZdGdH Z dIdJ Z!ejdKeg ddLe"fedMdNdOge#fedPdQge#fedMdMdNdNd9ejdOge#fgdRdS Z$dTdU Z%d9S )V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   isinfr   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)r           )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_empty9  sn    zTestSeriesReductions.test_emptyc              	   C   s  t dtjtjtjgtjddgd}tt t	||dd}W 5 Q R X t d|gddgd}t
|| tt t	||ddd	}W 5 Q R X t d|gddgd}t
|| tt t	||ddd	}W 5 Q R X t dtjgddgd}t
|| d S )
NrB   )r   re   )r   rB   r   r   levelr   re   )r   r   )r   r$   rc   rF   Z
MultiIndexZfrom_productr"   assert_produces_warningFutureWarningr2   ro   )r8   r   r   r   r9   r:   r   r   r    test_empty_multi  s     z%TestSeriesReductions.test_empty_multir   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   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_bugletc              	   C   s"  t d|
 dD ]z}tjd|d}t|}|jdd}t||jddksRt|jdd}t|dksnt|j	dd}t||d	 kstqd
D ]~}tjd|d}t|}|jdd}||j|dkst|jdd}t
t|dst|j	dd}t
t||d	 stqW 5 Q R X d S )Nr   )Zint32r1   i@KL rI   FrL   r1   r   rS   )Zfloat32r>   r   )rF   r   r$   r`   r   r   intr7   r-   r,   Zallcloser   )r8   r   rJ   vr   r9   r   r   r    test_sum_overflow  s&    z&TestSeriesReductions.test_sum_overflowc                 C   sv   dD ]l}t g |d tks tt g |d tks8tt g |djddtksTtt g |djddtkstqd S )N)r   r   r0   zM8[ns, UTC]rI   FrL   )r   r-   r   r7   r,   )r8   rJ   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   datar   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   string_seriesnonaallnar   r9   r   r   r    test_idxmin-  s    $

z TestSeriesReductions.test_idxminc                 C   st  t  d}tj|dd< ||  | ks4tt|jddsHt|	 }||  | ksht|j
j 
| |j kst|tj }t| stddlm} 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s6tt|j
|j
}| }|dksZt| }|dksptd S )Nr'   r]   r   FrL   r   )r   r   r   r   r^   rB   rD   r_   g?g @g@)r"   r   rn   r$   r   idxmaxr,   r7   r   r   r   r4   r   rb   rc   pandasr   r   r   )r8   r   r   r   r   r   r9   r   r   r    test_idxmaxK  s4    $

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_anyx  s    z!TestSeriesReductions.test_all_anyrP   c                 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   rP   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t ddddddgddddddgd}tt$ t	|jddt dddg W 5 Q R X tt$ t	|jddt dddg W 5 Q R X d	}t
jt|d
* tt |jddd W 5 Q R X W 5 Q R X t
jt|d
* tt |jddd W 5 Q R X W 5 Q R X d}t
jt|d
 |jdd W 5 Q R X d}t
jt|d
 |jdd W 5 Q R X d S )NTFrL   r   rB   rD   r   r   z5Option bool_only is not implemented with option levelrW   )	bool_onlyr   z'Series.any does not implement bool_only)r  z(Series.all does not implement bool_only.)r   r$   rc   r   r7   r  r"   r   r   ro   rY   rZ   NotImplementedError)r8   s1r   r   r   r   r   r    test_all_any_params  s0    $((""z(TestSeriesReductions.test_all_any_paramsbool_agg_funcr  r   rM   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_logiczbool_agg_func,expectedc              	   C   sh   t ddddddgddddddgdd}tt t||dd}W 5 Q R X t |dd	}t|| d S )
NFTr   rB   rD   rE   )r   rJ   r   rI   )r   r"   r   r   r2   ro   )r8   r  r:   r   r9   r   r   r    test_any_all_boolean_level  s    z/TestSeriesReductions.test_any_all_boolean_levelc                 C   s@   t ddgddgd}|jddd}tddg}t|| d S )NTFrB   rD   )AB)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   sT  t dddj}t|}t|}| s*t| s6t| sBt| sNt|  s^t|  snt|d}t|}t|}| st| st| st| st|  st|  st||d  }t|}t|}| st| rt| st| r,t|  s>t|  rPtd S )Nz
1995-01-02r_   r   rf   r   )r   _datar   r   r   r7   r  r#   )r8   Zdtar   rq   Ztdar   r   r    test_any_all_datetimelike  s6    
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_raisesG  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   )r8   r   r   r   r    test_idxminmax_with_infg  s    z,TestSeriesReductions.test_idxminmax_with_inf)&rx   ry   rz   r   rY   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_dataframe  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  r  r  C)TSVLrS   r   )r   r   r$   r%   r&   r%  r)  r,   r   Ziatr3   r7   r-   )r8   r&  Zlvlsrq   r9   expr   r   r    test_min_max_series  s    

z2TestDatetime64SeriesReductions.test_min_max_seriesN)rx   ry   rz   rY   r{   r|   r   r   r   r!  r   r#  r'  r-  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   r/  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   r/  r0  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   r/  rM   r0  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-   r3  )r8   r/  rM   r0  r9   r:   r   r   r    test_min_max_skipna  s    z3TestCategoricalSeriesReductions.test_min_max_skipnaN)rx   ry   rz   rY   r{   r|   r1  r   r$   rc   r2  r4  r5  r   r   r   r    r.    s&   

r.  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
AllIntegerFloatc                 C   s2   t ||d}||}t ||d}t|| d S r   r   r7  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   r7  r"   ro   r8  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   r7  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   r7  r"   ro   r$   rc   r<   )r8   r   r@  rA  r   r9   r:   r   r   r    test_mode_mixeddtype3  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   rF  rE  rc   r0   rI   r<  r8   r   r@  rA  r   r9   r   r   r    test_mode_datetimeB  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   rI  rJ  rc   ztimedelta64[ns]rI   rL  z-1 dayz-1 day 2 minrK  r<  rG  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   r7  r"   ro   )r8   r   r@  rA  rB  r   r9   r   r   r    test_mode_category  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   rP  rI   )r   r$   Zuint64r7  r"   ro   rG  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   UserWarningr7  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   r7  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   arrayr:   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<  rU  r   r   r    test_multimode_complex  s    z%TestSeriesMode.test_multimode_complexN)rx   ry   rz   rY   r{   r|   r   r$   r>   r9  r   	typecodesr=  rc   r>  rC  rD  rH  rM  r   rO  rQ  rS  rT  Z
complex128Z	complex64rW  rX  r   r   r   r    r6    s   "
	  
$






r6  )$r   r   numpyr$   rY   r   rF   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  r.  r6  r   r   r   r    <module>   s*   H   Y    \A6