a
    j=ic                     @   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 x/home/droni/.local/share/virtualenvs/DPS-5Je3_V2c/lib/python3.9/site-packages/pandas/tests/reductions/test_reductions.py
<listcomp>,       zget_objs.<locals>.<listcomp>)tmZmakeBoolIndexZmakeIntIndexZmakeFloatIndexZmakeDateIndextz_localizeZmakePeriodIndexZmakeStringIndexnprandomrandn)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 urn|dd}|j|kszJ n||kszJ d S )N)Zordinalfreqr   M8[ns]int64)	getattr
isinstancer
   valuesr	   Zasi8r1   astypevalue)selfr-   r0   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 || s2J |t ||ddsJJ |g  d}|t || sjJ |t ||ddsJ  dkrd S |d |g d}t || |ksJ |t ||ddsJ |d |d g d}t || |ksJ |t ||dds
J d S )Nc                    s.    dkr| t u S  dv r"| tju S t| S d S )Nr@   )rD   rF   )r   pdNAr   )resdtyper   r    check_missingU   s
    
z4TestReductions.test_nanminmax.<locals>.check_missingrJ   Fskipnar=   )r4   )r9   r-   rK   valindex_or_seriesklassrL   r0   r   rJ   r    test_nanminmaxF   s     zTestReductions.test_nanminmaxc                 C   s   |}|t u rd| nd| }|ttdddg}t|| dksDJ t||dd}|tu rlt|sxJ n|dksxJ |ttdddtg}t|| dksJ t||dd}|tu rt|sJ n|dksJ d S )	Nargr   rA   rB   rC   FrM   )r   r   r   r4   r   r%   isnan)r9   r-   rP   rQ   arg_opr0   r:   r   r   r    test_nanargminmaxq   s    z TestReductions.test_nanargminmaxrK   r2   zdatetime64[ns, UTC]c                 C   s   |}|t u rd| nd| }|g |d}t|| tu s<J t||ddtu sTJ tjtdd t||  W d    n1 s0    Y  tjtdd  t||dd W d    n1 s0    Y  d S )NrS   r   rJ   FrM   zempty sequencematch)r   r4   r   pytestraises
ValueError)r9   r-   rP   rK   rQ   rV   r0   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"J | dks2J t tjdtjdg}| dksVJ | dksfJ |jd	d
dkszJ |jd	d
dksJ t tjg}| dksJ | dksJ |jd	d
dksJ |jd	d
dksJ t ttdddtdddtg}| dksJ | dks&J |jd	d
dks<J |jd	d
dksRJ t tg}| dksnJ | dksJ |jd	d
dksJ |jd	d
dksJ d S )N   r3   rJ   r      rC   rE      FrM   rT   rA   rB   )r   r%   arangeargminargmaxnanr   r   )r9   r0   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  secondsrf   rC   axis)	r   r   r   subtractr   r4   renamer#   assert_series_equal)r9   opZexpected_coldfr:   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)rG   to_datetimer$   r   r4   r%   r#   rp   )r9   Ztz_aware_fixturert   r   rS   r;   r:   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 )NrC   rE   timedelta64[ns]rJ   rD   ABr`   )	r   r   r   r%   rd   r   sumr#   rp   )r9   rr   r;   r:   r   r   r    test_nan_int_timedelta_sum   s    z)TestReductions.test_nan_int_timedelta_sumN)__name__
__module____qualname__rZ   markparametrizer*   r<   r   rR   rW   r]   re   rs   rx   r~   r   r   r   r    r,   5   s2   
 



r,   c                	   @   s   e Zd Zejdg ddd Zdd Zejddd	gd
d Zdd Z	dd Z
ejdg d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 )(TestIndexReductionszstart,stop,step))r   i  r`   )i  r   i)@B r_   )r   r   )r   r      c                 C   s   t |||}|j }| }||ks*J |jdd}||ksBJ |j }| }||ks`J |jdd}||ksxJ t ||| }t| sJ t| sJ d S NFrM   )r   Z_valuesr.   r/   r   )r9   startstopstepr   r;   r:   Zresult2r   r   r    test_max_min_range   s    

z&TestIndexReductions.test_max_min_rangec                 C   s   t g d}|jsJ t dtjddg}|jr2J ||fD ]L}| tdksRJ | tdksfJ | dksvJ | dks:J q:d S )N)1 days2 days3 daysr   r   r   r   rE   )	r   is_monotonic_increasingr%   rd   r/   r   r.   rb   rc   r9   idx1idx2r   r   r   r    test_minmax_timedelta64   s    

z+TestIndexReductions.test_minmax_timedelta64rq   r/   r.   c                 C   s`   t g }t|| tu sJ t tg}t|| tu s:J t tttg}t|| tu s\J d S N)r   r4   r   r9   rq   r0   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$J t|tdks:J d}tjt|d tj|dd W d    n1 sp0    Y  tjt|d tj|dd W d    n1 s0    Y  t|dksJ t	|d	ksJ d}tjt|d tj|dd W d    n1 s0    Y  tjt|d tj	|dd W d    n1 sP0    Y  d S )
Nz
16815 daysz
16820 daysDr1   $the 'out' parameter is not supportedrX   r   outr^   )
r   r%   r/   r   r.   rZ   r[   r\   rb   rc   )r9   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@J |  }|d |ks\J |d}tt	
dd	}||ksJ | }td
}||ksJ |  }|d |ksJ | }td}||ksJ |  }|d |ksJ | }tt | j }||ksJ |  }|d |ks<J t tdtdg}|  tddkslJ t tdtdtdg}|  tddksJ d S )Nc                 S   s"   g | ]}t d t|| d qS Z20130101rj   r   r   r   ir   r   r    r!   2  r"   z:TestIndexReductions.test_timedelta_ops.<locals>.<listcomp>r   	   rj   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   to_frameZquantiler   r%   Ztimedelta64medianr}   stddropnar6   r   )r9   sr   r:   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 d    n1 sv0    Y  tjt|d$ t| |dd W d    n1 s0    Y  d S )Nc                 S   s"   g | ]}t d t|| d qS r   r   r   r   r   r    r!   f  r"   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 ''rX   F)Znumeric_only)	r   r   r   joinrZ   r[   	TypeErrorr4   r   )r9   r-   r   r   msgr   r   r    test_invalid_td64_reductionsc  s    


*z0TestIndexReductions.test_invalid_td64_reductionsc                 C   s   |}t g d|d}|jsJ t dtddtg|d}|jr>J ||fD ]T}| td|dksbJ | td|dkszJ | dksJ | dksFJ qFd S )N)
2011-01-01
2011-01-02
2011-01-03r   r   r   r   r   rE   )r   r   r   r/   r   r.   rb   rc   )r9   Ztz_naive_fixturer   r   r   r   r   r   r    test_minmax_tzx  s    

z"TestIndexReductions.test_minmax_tzc                 C   s`   t g }tt|| sJ t tg}tt|| s:J t tttg}tt|| s\J d S r   )r   r   r4   r   r   r   r   r    test_minmax_nat_datetime64  s    
z.TestIndexReductions.test_minmax_nat_datetime64c                 C   s  t g d}|j }t|}||ks,J |j }t|}||ksLJ d}tjt|d tj|dd W d    n1 s0    Y  tjt|d tj|dd W d    n1 s0    Y  |j }t|}||ksJ |j	 }t	|}||ks
J d}tjt|d tj	|dd W d    n1 sB0    Y  tjt|d tj|dd W d    n1 s0    Y  d S )NrC   rE   r`   r   rX   r   r   )
r   r6   r.   r%   r/   rZ   r[   r\   rc   rb   )r9   r   r;   r:   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"J t|}|dks8J d}tjt|d tj|dd W d    n1 sn0    Y  tjt|d tj|dd W d    n1 s0    Y  d S )Nr   r   r`   r   r   rX   r   )r   r%   r.   r/   rZ   r[   r\   )r9   r   r:   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"J t|tdks8J d}tjt|d tj|dd	 W d    n1 sn0    Y  tjt|d tj|dd	 W d    n1 s0    Y  t|dksJ t	|d
ksJ d}tjt|d tj|dd	 W d    n1 s0    Y  tjt|d tj	|dd	 W d    n1 sN0    Y  d S )N
2016-01-15
2016-01-20r   endz2016-01-15 00:00:00z2016-01-20 00:00:00r   rX   r   r   r^   )
r   r%   r/   r   r.   rZ   r[   r\   rb   rc   )r9   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J |dd  js0J t dtddtgdd}|jrPJ ||fD ]4}| tdddkstJ | tdddksXJ qX| dksJ | dksJ | dksJ | d	ksJ d S )
Nr   r   r   r   r   rC   r   r`   rE   )r
   r   r   r/   r	   r.   rb   rc   r   r   r   r    test_minmax_period  s    

z&TestIndexReductions.test_minmax_perioddatac                 C   s(   t |dd}t|| }|tu s$J d S )NMr   )r
   r4   r   )r9   rq   r   r0   r:   r   r   r    test_minmax_period_empty_nat  s    z0TestIndexReductions.test_minmax_period_empty_natc                 C   sf  t jddd}t|tdddks(J t|tdddksBJ d}tjt|d tj|dd	 W d    n1 sx0    Y  tjt|d tj|dd	 W d    n1 s0    Y  t	|dksJ t
|d
ksJ d}tjt|d tj	|dd	 W d    n1 s0    Y  tjt|d tj
|dd	 W d    n1 sX0    Y  d S )Nr   r   r   r   r   r   rX   r   r   r^   )rG   Zperiod_ranger%   r/   r	   r.   rZ   r[   r\   rb   rc   )r9   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 d    n1 sH0    Y  d}tjt|d |  W d    n1 s0    Y  t jtdtddd}| d	ksJ | d
ksJ 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\nrX   zwCategorical is not ordered for operation max\nyou can use .as_ordered\(\) to change the Categorical to an ordered one\nTcrf   )rG   ZCategoricalIndexlistrZ   r[   r   r/   r.   )r9   cir   r   r   r    test_min_max_categorical  s    &&z,TestIndexReductions.test_min_max_categoricalN)r   r   r   rZ   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r      s0   


5

 r   c                   @   s  e Zd Zdd Zejdg d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g ddd Z	ejdg d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ejdd!ejd"ddgd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zejd/eegd0d1 Zd2d3 Zejd4d5d6gejd"ddgd7d8 Zejd4d5d6gejd9dd:gd:dgdejgejdggd;d< Zejdg d=ejd4d5d6gejd"ddgejd>g d?ddgddggfg d@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dAejdAgejdgddggfdBejdBgdejgddggfdBejdAgddgddggfgdCdD ZejdEd6g dFfd5g dGfgdHdI ZdJdK Z dLdM Z!dNdO Z"ejdPeg ddQe#feg dRe$fedSdTge$fedUdUdVdVd:ejdWge$fgdXdY Z%dZd[ Z&d:S )\TestSeriesReductionsc                 C   s   t tjd}| }tj|dd< tj|dd< t| sFJ tjdd	d}tj|d d df< t
dd$ t| |  W d    n1 s0    Y  tj|d	d
}t| sJ d S )Nr   r^      d   Zf4rE   mode.use_inf_as_naTrC   rl   )r   r%   r&   r'   copyinfrd   isinfr}   r7   rG   option_contextr#   assert_almost_equalr   nansumall)r9   r   s2r   rI   r   r   r    test_sum_inf,  s    2z!TestSeriesReductions.test_sum_infrK   )r?   ZFloat32rD   rF   r=   use_bottleneckTFzmethod, unit)r}           )r         ?c                 C   s\  t d|8 tg |d}t|| }||ks4J t||dd}||ksPJ t||dd}t|slJ t||dd}||k t||ddd}||ksJ t||ddd}t|sJ t||d	dd}||ksJ t||d	dd}t|sJ ttjg|d}t|| }||ks&J t||dd}||ksDJ t||dd}t|sbJ t||dd}||k t||ddd}||ksJ t||ddd}t|sJ ttjdg|d}t|| }|d
ksJ t||dd}|d
ksJ t||dd}|d
ks"J t||dd}|d
ks@J t||ddd}|d
ks`J ttd|d}t||d|k	 sJ tdg|d}t||dd}t|sJ t||d	dd}t|sJ ttjg|d}t||dd}t|sJ ttjdg|d}t||dd}t|s8J W d    n1 sN0    Y  d S )Nr   rJ   r   )	min_countrC   TrM   )rN   r   Fr   )r   r   rE   )
rG   r   r   r4   r   r%   rd   r   emptyr   )r9   methodunitr   rK   r   r:   rr   r   r   r    
test_empty>  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 d    n1 sV0    Y  t d|gddgd}t
|| tt" t	||ddd	}W d    n1 s0    Y  t d|gddgd}t
|| tt" t	||ddd	}W d    n1 s0    Y  t dtjgddgd}t
|| d S )
NrC   )r   rf   )r   rC   r   r   levelr   rf   )r   r   )r   r%   rd   rG   Z
MultiIndexZfrom_productr#   assert_produces_warningFutureWarningr4   rp   )r9   r   r   r   r:   r;   r   r   r    test_empty_multi  s     .02z%TestSeriesReductions.test_empty_multir   r   )Float64rD   rF   c                 C   sT   t g |d}t|| }|tju s&J t tjg|d}t|| }|tju sPJ d S NrJ   )r   r4   rG   rH   r%   rd   )r9   r   rK   Zeserr:   Znserr   r   r    &test_ops_consistency_on_empty_nullable  s    z;TestSeriesReductions.test_ops_consistency_on_empty_nullable)r   r   r   r   c                 C   s   t ttd| }t|sJ tg dd}|dkr|dg d}tjt|d t ||  W d    q1 sp0    Y  nt || }|tu sJ d S )NrJ   m8[ns]r   r   )zoperation 'var' not allowedz.cannot perform var with type timedelta64\[ns\]z does not support reduction 'var'rX   )	r4   r   floatr   r   rZ   r[   r   r   )r9   r   r:   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   rC   r   )r   r%   rd   r   r#   r   )r9   serr:   r   r   r    test_nansum_buglet  s    
z'TestSeriesReductions.test_nansum_bugletint32r3   c                 C   s   t d| tjd|d}t|}|jdd}t||jddksHJ |jdd}t|dksdJ |jdd}t||d ksJ W d    n1 s0    Y  d S )	Nr   @KL rJ   FrM   r3   r   rT   )	rG   r   r%   ra   r   r}   intr/   r.   r9   r   rK   vr   r:   r   r   r    test_sum_overflow_int  s    z*TestSeriesReductions.test_sum_overflow_intfloat32r?   c                 C   s   t d| tjd|d}t|}|jdd}||j|dksDJ |jdd}tt|dsdJ |j	dd}tt||d sJ W d    n1 s0    Y  d S )Nr   r   rJ   FrM   r   rT   )
rG   r   r%   ra   r   r}   r/   Zallcloser   r.   r   r   r   r    test_sum_overflow_float  s    z,TestSeriesReductions.test_sum_overflow_float)r   r   r2   zM8[ns, UTC]rN   c                 C   s<   t g |dj|dtu sJ t g |dj|dtu s8J d S )NrJ   rM   )r   r/   r   r.   )r9   rK   rN   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s8J | }||ksLJ d}tjt|d t j||d W d    n1 s0    Y  d S NrC   rB   r   r   rX   r   )r%   ra   r   rb   rZ   r[   r\   r9   r   r   r:   r;   r   r   r   r    test_numpy_argmin  s    

z&TestSeriesReductions.test_numpy_argminc                 C   s   t dd}t||d}t |}t |}||ks8J | }||ksLJ d}tjt|d t j||d W d    n1 s0    Y  d S r   )r%   ra   r   rc   rZ   r[   r\   r  r   r   r    test_numpy_argmax#  s    

z&TestSeriesReductions.test_numpy_argmaxc                 C   s   t  d}tj|dd< ||  | ks4J t|jddsHJ | }||  | kshJ |j	j
 	| |j
 ksJ |tj }t| sJ ttddd}| }|d	ksJ tj|d	< | }|d
ksJ d S )Nr)   r^      FrM   20130102r   rh   r   rC   )r#   makeStringSeriesro   r%   NaNidxminr/   r   r   r   r6   tolistrb   rd   r   r   )r9   string_seriesnonaallnar   r:   r   r   r    test_idxmin4  s    $

z TestSeriesReductions.test_idxminc                 C   sp  t  d}tj|dd< ||  | ks4J t|jddsHJ | }||  | kshJ |j	j
 	| |j
 ksJ |tj }t| sJ ddlm} t|dd	d
}| }|dksJ tj|d< | }|dksJ tg dg d}| }|dksJ | }|dks2J t|j	|j	}| }|dksVJ | }|dkslJ d S )Nr)   r^   r  FrM   r   )r   r  r   r  r_   r   )皙?g @@r  r  )r#   r  ro   r%   r  idxmaxr.   r   r   r   r6   r
  rc   rd   pandasr   r   r	  )r9   r  r  r  r   r   r:   r   r   r    test_idxmaxR  s4    $

z TestSeriesReductions.test_idxmaxc                 C   sD   t  }|dk}| rJ | s(J tddg}| s@J d S )Nr   abcT)r#   ZmakeTimeSeriesr   anyr   )r9   tsZbool_seriesr   r   r   r    test_all_any  s    z!TestSeriesReductions.test_all_anyrQ   c                 C   sF   |g d}t |rJ t |s(J tg d}t |sBJ d S )N)r   rC   rE   r   )r%   r   r  r   )r9   rQ   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,J |jdds<J |jddsLJ |jddr\J t g dg dd}tt, t|jddt g d	 W d    n1 s0    Y  tt, t|jddt g d
 W d    n1 s0    Y  d}t	j
t|dJ tt |jddd W d    n1 s@0    Y  W d    n1 s`0    Y  t	j
t|dJ tt |jddd W d    n1 s0    Y  W d    n1 s0    Y  |jddsJ |jddrJ d S )NTFrM   FFTTFTr   r   rC   rC   rE   rE   r   r   r   FTFFTTz5Option bool_only is not implemented with option levelrX   )	bool_onlyr   )r  )r   r%   rd   r   r  r#   r   r   rp   rZ   r[   NotImplementedError)r9   s1r   r   r   r   r   r    test_all_any_params  s(    ::NNz(TestSeriesReductions.test_all_any_paramsbool_agg_funcr  r   c                 C   s4   t g dtd}t|||d}d}||ks0J d S )N)r   rf   r   derJ   rM   T)r   r=   r4   )r9   r!  rN   r   r:   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 |v}||ks4J d S )NFrM   r  )r   r4   )r9   r   r!  r   r:   r;   r   r   r    !test_any_all_object_dtype_missing  s    z6TestSeriesReductions.test_any_all_object_dtype_missing)rF   rD   ZUInt64r   zdata,expected_data)r   r   r   )rC   rC   rC   r   rC   c           	      C   sP   t ||d}|| |dk }t|||d}|tju r@|tju sL||ksLJ d S )NrJ   r   rM   )r   r4   rG   rH   )	r9   r!  rN   r   rK   Zexpected_datar   r;   r:   r   r   r    "test_any_all_nullable_kleene_logic  s    z7TestSeriesReductions.test_any_all_nullable_kleene_logiczbool_agg_func,expectedr  r  c                 C   sl   t g dg ddd}tt  t||dd}W d    n1 sF0    Y  t |dd}t|| d S )Nr  r  rF   )r   rK   r   r   rJ   )r   r#   r   r   r4   rp   )r9   r!  r;   r   r:   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 )NTFrC   rE   rz   )rm   r  )r   r  r   r#   rp   )r9   rr   r:   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*J | s6J | sBJ | sNJ |  s^J |  snJ |d}t|}t|}| sJ | sJ | sJ | sJ |  sJ |  sJ ||d  }t|}t|}| sJ | rJ | sJ | r,J |  s>J |  rPJ d S )Nz
1995-01-02r`   r  rg   r   )r   _datar   r   r   r  r$   )r9   Zdtar   rr   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s2J | }|dksFJ tj|d< | }|dksdJ | }|dksxJ tt ddd	}tt d
dd	}t|| }t|| }t	|| ||  }t	|| |
 }td}||ksJ | }td}||ksJ d S )Nz2012-1-1r`   r   rh   r1   Z20120101r   rE   rC   r  Z20120102r   r   )r   r   r   r	  r  r%   rd   absr#   rp   r.   r   r/   )r9   Zdtir   r:   r  r   r;   r   r   r    test_timedelta64_analytics   s0    
z/TestSeriesReductions.test_timedelta64_analyticsztest_input,error_typerJ   )foobarbaz)rC   )rE   r.  r/  r0  c                 C   s   d}t j||d |  W d   n1 s00    Y  t j||d |jdd W d   n1 sj0    Y  d}t j||d |  W d   n1 s0    Y  t j||d |jdd W d   n1 s0    Y  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 sequencerX   NFrM   zbreduction operation 'argmax' not allowed for this dtype|attempt to get argmax of an empty sequence)rZ   r[   r	  r  )r9   Z
test_inputZ
error_typer   r   r   r    test_assert_idxminmax_raisesJ  s    &*&z1TestSeriesReductions.test_assert_idxminmax_raisesc                 C   s   t dtj tjtjg}| dks(J t|jdds>J | dksNJ t|jddsdJ tddX | dksJ t|jddsJ | dksJ t|jdd W d    n1 s0    Y  d S )Nr   rC   FrM   rE   r   T)	r   r%   r   rd   r	  rU   r  rG   r   )r9   r   r   r   r    test_idxminmax_with_infj  s    z,TestSeriesReductions.test_idxminmax_with_inf)'r   r   r   r   rZ   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r   r   r  r   r$  r%   rd   r%  rG   rH   r&  r'  r(  r*  r-  r\   r   r1  r2  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u sJ | tu s J |j ddtu s4J |jddtu sHJ d S r   r/   r   r.   )r9   r4  r   r   r    test_minmax_nat_series  s    
z5TestDatetime64SeriesReductions.test_minmax_nat_seriesnat_dfc                 C   s\   |  d tu sJ | d tu s(J |j ddd tu s@J |jddd tu sXJ d S )Nr   FrM   r5  )r9   r7  r   r   r    test_minmax_nat_dataframe  s    
z8TestDatetime64SeriesReductions.test_minmax_nat_dataframec                 C   s   t dd}|tjt|}| }| }t|t	s>J t|t	sLJ ||d ks\J ||d kslJ | |d ksJ | |d ksJ d S )N1/1/2000z
12/31/2000r   rT   )
r   taker%   r&   Zpermutationlenr/   r.   r5   r   )r9   rngZrng2Zthe_minZthe_maxr   r   r    test_min_max  s    
z+TestDatetime64SeriesReductions.test_min_maxc                 C   s   t dddd}g d}t|tjt||d}|j }t|jj	d }t
|tsZJ ||ksfJ |j }t|jj	d }t
|tsJ ||ksJ d S )	Nr9  r   Z4hr+  )
r{   r{   r{   r|   r|   r|   Cr>  r>  r>  )TSVLrT   r   )r   r   r%   r&   r'   r;  r?  r.   r   Ziatr5   r/   )r9   r<  Zlvlsrr   r:   expr   r   r    test_min_max_series  s    

z2TestDatetime64SeriesReductions.test_min_max_seriesN)r   r   r   rZ   r   r   r   r   r   r6  r   r8  r=  rC  r   r   r   r    r3  }  s$   



r3  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g d	g d
fdddej	gg d
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   s\   t tg ddd}d| }tjt|d t||  W d    n1 sN0    Y  d S )N)r   rf   r   r"  F)r   z)Categorical is not ordered for operation rX   )r   r   rZ   r[   r   r4   )r9   rE  catr   r   r   r    test_min_max_unordered_raises  s    
z=TestCategoricalSeriesReductions.test_min_max_unordered_raiseszvalues, categoriesr  Zcbar   r`   rE   rC   rC   rE   r`   c                 C   sJ   t t||dd}t||dd}|dkr2|d n|d }||ksFJ d S )NTr   rM   r/   r   rE   )r   r   r4   )r9   r6   r   rE  rF  r:   r;   r   r   r    test_min_max_ordered  s    z4TestCategoricalSeriesReductions.test_min_max_orderedrN   TFc                 C   s<   t ttjgddgdd}t|||d}|tju s8J d S )NrC   rE   Tr   rM   r   r   r%   rd   r4   )r9   rE  rN   rF  r:   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u rV|dkrDdnd}||ksdJ n|tju sdJ d S )Nr   rf   Tr   rM   r/   rJ  )r9   rE  rN   rF  r:   r;   r   r   r    test_min_max_skipna  s    z3TestCategoricalSeriesReductions.test_min_max_skipnaN)r   r   r   rZ   r   r   rG  r   r%   rd   rI  rK  rL  r   r   r   r    rD    s&   

rD  c                   @   sB  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g dd	gfdg d
d	dgfdg dd	gfdg d
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g ddd gfdejgejdd gfgd!d" Zejddg d#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g d+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g d+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d0d1 Zd2d3 Zd4d5 Zejd6g d7ed	gejdejfg d7ed	gejdejfg d8ed9gejdejfgd:d; Zejd6g d<eg d=ejdejfg d>ed?d9gejdejfgd@dA ZdBS )CTestSeriesModezdropna, expectedTrJ   Fc                 C   s(   t g tjd}||}t|| d S r   )r   r%   r?   moder#   rp   r9   r   r;   r   r:   r   r   r    test_mode_empty  s    
zTestSeriesMode.test_mode_emptyzdropna, data, expected)rC   rC   rC   rE   rC   )rC   rC   rC   rE   r`   r`   r`   r`   dtZ
AllIntegerFloatc                 C   s2   t ||d}||}t ||d}t|| d S r   r   rN  r#   rp   )r9   r   r   r;   rQ  r   r:   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 )NrC   rE   )r   r%   rd   rN  r#   rp   rO  r   r   r    test_mode_numerical_nan  s    
z&TestSeriesMode.test_mode_numerical_nanz'dropna, expected1, expected2, expected3rf   r/  rd   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   rE   rf   r`   r   rJ   r.  r/  )	r   rN  r#   rp   r%   rd   r=   r7   str)r9   r   	expected1	expected2	expected3r   r   r:   r   r   r    test_mode_str_obj  s    


z TestSeriesMode.test_mode_str_objzdropna, expected1, expected2r.  c                 C   sj   t g d}||}t |}t|| t dddtjtjtjg}||}t |td}t|| d S )N)rC   r.  r.  rC   r.  rJ   )r   rN  r#   rp   r%   rd   r=   )r9   r   rW  rX  r   r:   r;   r   r   r    test_mode_mixeddtype6  s    

z#TestSeriesMode.test_mode_mixeddtype)
1900-05-03r   
2013-01-02r   r]  c                 C   sh   t g ddd}||}t |dd}t|| t g ddd}||}t |dd}t|| d S )N)r   r]  r\  rd   rd   r2   rJ   )r   r]  r\  r   r]  rd   rd   rS  r9   r   rW  rX  r   r:   r   r   r    test_mode_datetimeE  s    
	
z!TestSeriesMode.test_mode_datetime)-1 days0 daysr   2 min1 dayc                 C   sh   t g ddd}||}t |dd}t|| t g ddd}||}t |dd}t|| d S )N)r   r`  ra  rd   rd   ry   rJ   )rc  rc  z-1 dayz-1 day 2 minrb  rb  rd   rd   rS  r^  r   r   r    test_mode_timedeltah  s    



z"TestSeriesMode.test_mode_timedeltarE   )r   r   rH  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g ddd	}||}t |dd}t|| d S )
NrC   rE   categoryrJ   r   r`   rH  Tr   )r   r   r%   rd   rN  r#   rp   )r9   r   rW  rX  rY  r   r:   r   r   r    test_mode_category  s     


z!TestSeriesMode.test_mode_category            c                 C   sp   t g dtjd}||}t |tjd}t|| t ddgtjd}||}t |tjd}t|| d S )N)rC   rg  rg  rJ   rC   rg  )r   r%   Zuint64rN  r#   rp   r^  r   r   r    test_mode_intoverflow  s    

z$TestSeriesMode.test_mode_intoverflowc                 C   sz   t dtjg}t dddtjtjg}tt, |jdd}| jdd}W d    n1 s`0    Y  t	|| d S )Nr.  rC   F)r   T)Zdrop)
r   r%   rd   r#   r   UserWarningrN  Zsort_valuesZreset_indexrp   )r9   r;   r   r:   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 )NTFrF   rJ   r   )r   rG   rH   rN  r#   rp   )r9   r   r:   r;   r   r   r    test_mode_boolean_with_na  s    z(TestSeriesMode.test_mode_boolean_with_nazarray,expected,dtype)r                 ?rC   rC         ?      ?      ?       @)rm                 @rm  rm  c                 C   s    t ||d }t|| d S r   rS  r9   arrayr;   rK   r:   r   r   r    test_single_mode_value_complex  s    z-TestSeriesMode.test_single_mode_value_complex)r   rl  rC   rm  rn  )y                rl  y      ?        rm  rn  )rm  ro  rm  ro  r`   ro  c                 C   s    t ||d }t|| d S r   rS  rp  r   r   r    test_multimode_complex  s    z%TestSeriesMode.test_multimode_complexN)r   r   r   rZ   r   r   r   r%   r?   rP  r   	typecodesrT  rd   rU  rZ  r[  r_  rd  r   rf  rh  rj  rk  Z
complex128Z	complex64rr  rs  r   r   r   r    rM    s   "
	 
$






rM  )$r   r   numpyr%   rZ   r  rG   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   r3  rD  rM  r   r   r   r    <module>   s*   H "  S    ZA6