o
    Eh                     @   s  d dl m Z mZ d dlmZ d dlZd dlZd dlZd dlm	Z	m
Z
mZmZmZmZ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lm Z  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&G dd dZ'dS )    )datetime	timedelta)DecimalN)Categorical	DataFrameDatetimeIndexIndexNaTPeriodPeriodIndex
RangeIndexSeries	TimedeltaTimedeltaIndex	Timestamp
date_rangeisnaperiod_rangetimedelta_rangeto_timedelta)nanops)ArrowStringArrayNumpySemanticsc                     s   t ddgd ddt tdtjddt tdtjddttddd	ddttddd	ddjd
dtt	ddddddt dd t
dD ddg} tjdd  fdd| D }| | }|S )NTF   a)name
   dtyper   
2020-01-01periodsz
US/EasterntzDr    freqc                 S   s   g | ]}t |qS  )str.0ir&   r&   Glib/python3.10/site-packages/pandas/tests/reductions/test_reductions.py
<listcomp>-   s    zget_objs.<locals>.<listcomp>   c                    s   g | ]	}t  |d dqS )r   indexr   )r   )r)   idxarrr&   r+   r,   1   s    )r   nparangeint64float64r   r   tz_localizer   r   rangerandomdefault_rngstandard_normal)ZindexesseriesZobjsr&   r1   r+   get_objs#   s   r=   c                   @   s  e Zd Zejd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 ))TestReductionsz8ignore:Period with BDay freq is deprecated:FutureWarningopnamemaxminobjc                 C   s   t || }t|ts$t|jtrt t|j| }nt |j| }ntt |j| |j	d}t |dd d urI|
d
d}|j|ksGJ d S ||ksOJ d S )N)Zordinalr%   r"   M8[ns]r5   )getattr
isinstancer   valuesr   r3   arrayr
   Zasi8r%   astypeZ_value)selfr?   rB   resultexpectedr&   r&   r+   test_ops8   s   
zTestReductions.test_opsz
dtype, val)object       @)r6   rN   datetime64[ns]        )Int64r-   )booleanTc                    s  |} fdd}|d g d}|t || sJ |t ||dds%J |g  d}|t || s5J |t ||ddsAJ  dkrGd S |d |g d}t || |ksYJ |t ||ddseJ |d |d g d}t || |ksxJ |t ||ddsJ d S )Nc                    s*    dkr| t u S  dv r| tju S t| S )NrO   )rS   rT   )r	   pdNAr   )resr   r&   r+   check_missing^   s
   
z4TestReductions.test_nanminmax.<locals>.check_missingrX   FskipnarM   )rD   )rI   r?   r   valindex_or_seriesklassrY   rB   r&   rX   r+   test_nanminmaxO   s    zTestReductions.test_nanminmaxc                 C   sH  |}|t u r
d| nd| }|ttdddg}t|| dks"J d}|tu r*d}tjt|d t||d	d
}W d    n1 sDw   Y  |tu rUt	|sTJ n|dks[J |ttdddtg}t|| dkspJ tjt|d t||d	d
}W d    n1 sw   Y  |tu rt	|sJ d S |dksJ d S )Nargr0   rP   rQ   rR   zNThe behavior of (DatetimeIndex|Series).argmax/argmin with skipna=False and NAsz2The behavior of Series.(idxmax|idxmin) with all-NAmatchFrZ   )
r   r	   r   rD   r   tmassert_produces_warningFutureWarningr3   isnan)rI   r?   r]   r^   arg_oprB   msgrJ   r&   r&   r+   test_nanargminmaxz   s,   z TestReductions.test_nanargminmaxr   rC   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 s*J tjtdd t||  W d    n1 sBw   Y  tjtdd t||dd W d    d S 1 sbw   Y  d S )Nr`   r0   rX   FrZ   zempty sequencera   )r   rD   r	   pytestraises
ValueError)rI   r?   r]   r   r^   rh   rB   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sJ t tjdtjdg}| dks+J | dks3J d	}tjt|d
 |jdddksGJ W d    n1 sQw   Y  tjt|d
 |jdddkshJ W d    n1 srw   Y  t tjg}tjt|d
 | dksJ W d    n1 sw   Y  tjt|d
 | dksJ W d    n1 sw   Y  tjt|d
 |jdddksJ W d    n1 sw   Y  tjt|d
 |jdddksJ W d    n1 sw   Y  d}t t	t
dddt
dddt	g}| dksJ | dks!J tjt|d
 |jdddks4J W d    n	1 s?w   Y  tjt|d
 |jdddksWJ W d    n	1 sbw   Y  t t	g}tjt|d
 | dks}J W d    n	1 sw   Y  tjt|d
 | dksJ W d    n	1 sw   Y  tjt|d
 |jdddksJ W d    n	1 sw   Y  tjt|d
 |jdddksJ W d    d S 1 sw   Y  d S )Nr   r5   rX   r      rR   r-      z=The behavior of Index.argmax/argmin with skipna=False and NAsra   FrZ   rc   zEThe behavior of DatetimeIndex.argmax/argmin with skipna=False and NAsrP   rQ   )r   r3   r4   argminargmaxnanrd   re   rf   r	   r   )rI   rB   ri   r&   r&   r+   test_argminmax   sb    
$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:00rp   UTC)r    r"   r   )columnsi  Zsecondsru   rR   axis)	r   r   r   subtractr   rD   renamerd   assert_series_equal)rI   opZexpected_coldfrJ   rK   r&   r&   r+   test_same_tz_min_max_axis_1   s   z*TestReductions.test_same_tz_min_max_axis_1funcZmaximumZminimumc                 C   s>   |}t dg|}t|}tt|||}t|| d S )NZ2019)rU   Zto_datetimer7   r   rD   r3   rd   r}   )rI   Ztz_aware_fixturer   r"   r`   rK   rJ   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 )NrR   r-   timedelta64[ns]rX   rS   ABrp   )	r   r   r	   r3   rs   r   sumrd   r}   )rI   r   rK   rJ   r&   r&   r+   test_nan_int_timedelta_sum   s   z)TestReductions.test_nan_int_timedelta_sumN)__name__
__module____qualname__rk   markfilterwarningsparametrizer=   rL   r   r_   rj   rn   rt   r   r   r   r&   r&   r&   r+   r>   7   s:    
 
+


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  rp   )i  r   i)@B ro   )r   r   )r   r      c                 C   s   t |||}|j }| }||ksJ |jdd}||ks!J |j }| }||ks0J |jdd}||ks<J t ||| }t| sKJ t| sSJ d S NFrZ   )r   Z_valuesr@   rA   r   )rI   startstopstepr0   rK   rJ   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rJ ||fD ]&}| tdks)J | tdks3J | dks;J | dksCJ qd S )N)1 days2 days3 daysr   r   r	   r   r-   )	r   is_monotonic_increasingr3   rs   rA   r   r@   rq   rr   rI   idx1idx2r0   r&   r&   r+   test_minmax_timedelta64  s   

z+TestIndexReductions.test_minmax_timedelta64r~   rA   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   rD   r	   rI   r~   rB   r&   r&   r+   !test_minmax_timedelta_empty_or_na,     
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 s8w   Y  tjt|d tj|dd W d    n1 sVw   Y  t|dksdJ t	|d	ksmJ d}tjt|d tj|dd W d    n1 sw   Y  tjt|d tj	|dd W d    d S 1 sw   Y  d S )
Nz
16815 daysz
16820 daysr#   r%   $the 'out' parameter is not supportedra   r   outr   )
r   r3   rA   r   r@   rk   rl   rm   rq   rr   )rI   tderrmsgr&   r&   r+   test_numpy_minmax_timedelta648  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sAJ | }td
}||ksOJ |  }|d |ks]J | }td}||kskJ |  }|d |ksyJ | }tt | j }||ksJ |  }|d |ksJ t tdtdg}|  tddksJ t tdtdtdg}|  tddksJ d S )Nc                 S   "   g | ]}t d t|| d qS Z20130101rx   r   r   r(   r&   r&   r+   r,   Q     " z:TestIndexReductions.test_timedelta_ops.<locals>.<listcomp>r   	   rx   r   g?i(
  msz00:00:09z00:01:21z
2015-02-03z
2015-02-07ro   )Zdaysz
2015-02-15   )r   r8   diffmeanr   r   to_frameZquantiler   r3   Ztimedelta64medianr   stddropnarF   r   )rI   sr   rJ   rK   r&   r&   r+   test_timedelta_opsM  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 s;w   Y  tjt|d t| |dd W d    d S 1 s]w   Y  d S )Nc                 S   r   r   r   r(   r&   r&   r+   r,     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 ''ra   F)Znumeric_only)	r   r8   r   joinrk   rl   	TypeErrorrD   r   )rI   r?   r   r   ri   r&   r&   r+   test_invalid_td64_reductions  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d|dks1J | td|dks=J | dksEJ | dksMJ q#d S )N)
2011-01-01
2011-01-02
2011-01-03r!   r   r   r   r   r-   )r   r   r	   rA   r   r@   rq   rr   )rI   Ztz_naive_fixturer"   r   r   r0   r&   r&   r+   test_minmax_tz  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   rD   r	   r   r&   r&   r+   test_minmax_nat_datetime64  r   z.TestIndexReductions.test_minmax_nat_datetime64c                 C   s  t g d}|j }t|}||ksJ |j }t|}||ks&J d}tjt|d tj|dd W d    n1 sAw   Y  tjt|d tj|dd W d    n1 s_w   Y  |j }t|}||kstJ |j	 }t	|}||ksJ d}tjt|d tj	|dd W d    n1 sw   Y  tjt|d tj|dd W d    d S 1 sw   Y  d S )NrR   r-   rp   r   ra   r   r   )
r   rF   r@   r3   rA   rk   rl   rm   rr   rq   )rI   r0   rK   rJ   r   r&   r&   r+   test_numpy_minmax_integer  s6   







"z-TestIndexReductions.test_numpy_minmax_integerc                 C   s   t ddd}t|}|dksJ t|}|dksJ d}tjt|d tj|dd W d    n1 s7w   Y  tjt|d tj|dd W d    d S 1 sVw   Y  d S )Nr   r   rp   r   r   ra   r   )r   r3   r@   rA   rk   rl   rm   )rI   r0   rJ   r   r&   r&   r+   test_numpy_minmax_range  s   

"z+TestIndexReductions.test_numpy_minmax_rangec                 C   sZ  t 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 s7w   Y  tjt|d tj|dd	 W d    n1 sUw   Y  t|dkscJ t	|d
kslJ d}tjt|d tj|dd	 W d    n1 sw   Y  tjt|d tj	|dd	 W d    d S 1 sw   Y  d S )N
2016-01-15
2016-01-20r   endz2016-01-15 00:00:00z2016-01-20 00:00:00r   ra   r   r   r   )
r   r3   rA   r   r@   rk   rl   rm   rq   rr   )rI   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sJ t dtddtgdd}|jr(J ||fD ]}| tdddks:J | tdddksFJ q,| dksOJ | dksWJ | dks_J | d	ksgJ d S )
Nr   r   r   r#   r   rR   r   rp   r-   )r   r	   r   rA   r
   r@   rq   rr   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   rD   r	   )rI   r~   r   rB   rJ   r&   r&   r+   test_minmax_period_empty_nat  s   z0TestIndexReductions.test_minmax_period_empty_natc                 C   sb  t ddd}t|tdddksJ t|tdddks J d}tjt|d tj|dd	 W d    n1 s;w   Y  tjt|d tj|dd	 W d    n1 sYw   Y  t|dksgJ t	|d
kspJ d}tjt|d tj|dd	 W d    n1 sw   Y  tjt|d tj	|dd	 W d    d S 1 sw   Y  d S )Nr   r   r   r#   r   r   ra   r   r   r   )
r   r3   rA   r
   r@   rk   rl   rm   rq   rr   )rI   Z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 s$w   Y  d}tjt|d |  W d    n1 sAw   Y  t jtdtddd}| d	ksZJ | d
ksbJ 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\nra   zwCategorical is not ordered for operation max\nyou can use .as_ordered\(\) to change the Categorical to an ordered one\nTcru   )rU   ZCategoricalIndexlistrk   rl   r   rA   r@   )rI   Zciri   r&   r&   r+   test_min_max_categorical0  s   

z,TestIndexReductions.test_min_max_categoricalN)r   r   r   rk   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r	   r   r   r   r&   r&   r&   r+   r      s2    


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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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+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 Zd5d6 Zd7d8 Zd9d: Zd;d< Zejd=d>d?gejd(ddgd@dA Zejd=d>d?gejdBddCgdCdgdejgejdggdDdE Zejdg dFejd=d>d?gejd(ddgejdGg dHddgddggfg dI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"dTdU Z#ejdVe$g ddWe%fe$g dXe&fe$dYdZge&fe$d[d[d\d\dCejd]ge&fgd^d_ Z'd`da Z(dbdc Z)ddde Z*dfdg Z+dhdi Z,djdk Z-dldm Z.dCS )nTestSeriesReductionsc              	   C   s  t tjdd}| }tj|dd< tj|dd< t|	 s&J tjdd
d}tj|d d df< d}tjt|d( td	d
 t|	 |	  W d    n1 s`w   Y  W d    n1 sow   Y  tj|dd}t| sJ d S )Nr-   r   r      )d   r   Zf4"use_inf_as_na option is deprecatedra   mode.use_inf_as_naTrR   ry   )r   r3   r9   r:   r;   copyinfrs   Zisinfr   rH   rd   re   rf   rU   option_contextassert_almost_equalr   nansumall)rI   r   s2r2   ri   rW   r&   r&   r+   test_sum_infI  s    z!TestSeriesReductions.test_sum_infr   )r6   ZFloat32rS   rT   rM   use_bottleneckTFzmethod, unit)r           )r         ?c                 C   sP  t d| tg |d}t|| }||ksJ t||dd}||ks(J t||dd}t|s6J t||dd}||k t||ddd}||ksQJ t||ddd}t|s`J t||d	dd}||ksoJ t||d	dd}t|s~J ttjg|d}t|| }||ksJ t||dd}||ksJ t||dd}t|sJ 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sJ 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	 s@J tdg|d}t||dd}t|sVJ t||d	dd}t|sfJ ttjg|d}t||dd}t|s}J ttjdg|d}t||dd}t|sJ W d    d S 1 sw   Y  d S )Nr   rX   r   )	min_countrR   TrZ   )r[   r   Fr   )r   r   r-   )
rU   r   r   rD   r   r3   rs   r   emptyr   )rI   methodunitr   r   r   rJ   r   r&   r&   r+   
test_empty]  sp   $zTestSeriesReductions.test_emptyr   r   r   )Float64rS   rT   c                 C   sT   t g |d}t|| }|tju sJ t tjg|d}t|| }|tju s(J d S NrX   )r   rD   rU   rV   r3   rs   )rI   r   r   ZeserrJ   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    d S 1 s9w   Y  d S t || }|tu sLJ d S )NrX   m8[ns]r   r   )zoperation 'var' not allowedz.cannot perform var with type timedelta64\[ns\]z does not support reduction 'var'ra   )	rD   r   floatr   r   rk   rl   r   r	   )rI   r   rJ   Ztdserri   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   rR   r/   )r   r3   rs   r   rd   r   )rI   serrJ   r&   r&   r+   test_nansum_buglet  s   
z'TestSeriesReductions.test_nansum_bugletZint32r5   c                 C   s   t d|D tjd|d}t|}|jdd}t||jddks$J |jdd}t|dks2J |jdd}t||d ksBJ W d    d S 1 sMw   Y  d S )	Nr   @KL rX   FrZ   r5   r   rc   )	rU   r   r3   r4   r   r   intrA   r@   rI   r   r   vr   rJ   r&   r&   r+   test_sum_overflow_int  s   "z*TestSeriesReductions.test_sum_overflow_intZfloat32r6   c                 C   s   t d|F tjd|d}t|}|jdd}||j|dks"J |jdd}tt|ds2J |j	dd}tt||d sDJ W d    d S 1 sOw   Y  d S )Nr   r   rX   FrZ   r   rc   )
rU   r   r3   r4   r   r   rA   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s&J |dks,J d S )Nl     ;r   rS   rX   r   g ؅W4vC)r3   rG   r   r   )rI   r\   Z
n_elementsZnar   Zresult_numpyZresult_maskedr&   r&   r+   test_mean_masked_overflow  s   
z.TestSeriesReductions.test_mean_masked_overflowz	ddof, exp)rR         @)r   rN   c                 C   sT   t g ddd}t g ddd}|j|d}|j|d}||ks"J ||ks(J d S )N)rR   r-   rp   ro   r   rS   rX   r5   )ddof)r   r   )rI   r   expr   Zser_numpy_dtyperJ   Zresult_numpy_dtyper&   r&   r+   test_var_masked_array  s   z*TestSeriesReductions.test_var_masked_array)r   r   rC   zM8[ns, UTC]r[   c                 C   s<   t g |dj|dtu sJ t g |dj|dtu sJ d S )NrX   rZ   )r   rA   r	   r@   )rI   r   r[   r&   r&   r+   +test_empty_timeseries_reductions_return_nat$  s    z@TestSeriesReductions.test_empty_timeseries_reductions_return_natc                 C      t dd}t||d}t |}t |}||ksJ | }||ks&J d}tjt|d t j||d W d    d S 1 sBw   Y  d S NrR   rQ   r   r   ra   r   )r3   r4   r   rq   rk   rl   rm   )rI   r   r   rJ   rK   ri   r&   r&   r+   test_numpy_argmin+  s   

"z&TestSeriesReductions.test_numpy_argminc                 C   r  r  )r3   r4   r   rr   rk   rl   rm   )rI   r   r   rJ   rK   ri   r&   r&   r+   test_numpy_argmax=  s   

"z&TestSeriesReductions.test_numpy_argmaxc                 C   s  t g d|}tddtjg|d}d}tjt|d |jdd}W d    n1 s-w   Y  |t	u s8J d	}tjt|d |j
dd}W d    n1 sRw   Y  |t	u s]J | }d
}tjt|d |jdd}W d    n1 s{w   Y  |jd| dksJ |  sJ d}tjt|d |j
dd}W d    n1 sw   Y  |jd| dksJ |  sJ d S )N)r	   z
2015-02-08r	   r   rN   r   0The behavior of Series.idxmin with all-NA valuesra   FrZ   0The behavior of Series.idxmax with all-NA valuesz3The behavior of DataFrame.idxmin with all-NA valueszM8[]z3The behavior of DataFrame.idxmax with all-NA values)r   Zas_unitr   r3   rs   rd   re   rf   idxminr	   idxmaxr   r   r   r   )rI   r   dtir   ri   rW   r   r&   r&   r+   test_idxmin_dt64indexN  s2   z*TestSeriesReductions.test_idxmin_dt64indexc                 C   sR  t tdtjdd}tj|dd< ||  | ksJ d}tjt	|d t
|jdd	s1J W d    n1 s;w   Y  | }||  | ksPJ |jj | |j ksbJ |tj }tjt	|d t
| swJ W d    n1 sw   Y  t td
dd}| }|dksJ tj|d< | }|dksJ d S )Nr   r<   r   r      zThe behavior of Series.idxminra   FrZ   20130102r   r   r   rR   )r   r8   r3   r6   rs   r  rA   rd   re   rf   r   r   r/   rF   tolistrq   r   rI   Zstring_seriesri   ZnonaZallnar   rJ   r&   r&   r+   test_idxming  s(   $

z TestSeriesReductions.test_idxminc                 C   s  t tdtjdd}tj|dd< ||  | ksJ d}tjt	|d t
|jdd	s1J W d    n1 s;w   Y  | }||  | ksPJ |jj | |j ksbJ |tj }d}tjt	|d t
| syJ W d    n1 sw   Y  t td
dd}| }|dksJ tj|d< | }|dksJ t g dg d}| }|dksJ | }|dksJ t |j|j}| }|dksJ | }|dksJ d S )Nr   r<   r   r   r  r	  ra   FrZ   r  r   r   ro   r   )皙?g @@r  r  )r   r8   r3   r6   rs   r  r@   rd   re   rf   r   r   r/   rF   r  rr   r   r  r  r&   r&   r+   test_idxmax  s>   $

z TestSeriesReductions.test_idxmaxc                 C   s^   t tjdtjdtddddd}|dk}| rJ | s!J t dd	g}| s-J d S )
Nr   rX   r   r   tsr.   r   abcT)r   r3   r4   r6   r   r   any)rI   r  Zbool_seriesr   r&   r&   r+   test_all_any  s   
z!TestSeriesReductions.test_all_anyc                 C   sF   |g d}t |rJ t |sJ tg d}t |s!J d S )N)r   rR   r-   r   )r3   r   r  r   )rI   r]   r0   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s&J |jddr.J d S )NTFrZ   )r   r3   rs   r   r  )rI   s1r   r&   r&   r+   test_all_any_skipna  s   z(TestSeriesReductions.test_all_any_skipnac                 C   s8   t g dg dd}|jddsJ |jddrJ d S )N)FFTTFT)r   r   rR   rR   r-   r-   r   T)	bool_only)r   r  r   )rI   r   r&   r&   r+   test_all_any_bool_only  s   z+TestSeriesReductions.test_all_any_bool_onlybool_agg_funcr  r   c                 C   s4   t g dtd}t|||d}d}||ksJ d S )N)r   ru   r   derX   rZ   T)r   rM   rD   )rI   r   r[   r   rJ   rK   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sJ d S )NFrZ   r  )r   rD   )rI   r   r   r   rJ   rK   r&   r&   r+   !test_any_all_object_dtype_missing  s   z6TestSeriesReductions.test_any_all_object_dtype_missing)rT   rS   ZUInt64r   zdata,expected_data)r   r   r   )rR   rR   rR   r   rR   c           	      C   sT   t ||d}|| |dk }t|||d}|tju r |tju s(||ks&J d S d S )NrX   r   rZ   )r   rD   rU   rV   )	rI   r   r[   r   r   Zexpected_datar   rK   rJ   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 )NTFrR   r-   r   )rz   r  )r   r  r   rd   r}   )rI   r   rJ   rK   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0 | sJ | s%J | s+J | s1J |  s9J |  sAJ W d    n1 sKw   Y  |	d}t|}t|}tjt|d0 | skJ | sqJ | swJ | s}J |  sJ |  sJ W d    n1 sw   Y  ||d  }t|}t|}| sJ | rJ | sJ | rJ |  sJ |  rJ d S )Nz
1995-01-02rp   r   z0'(any|all)' with datetime64 dtypes is deprecatedra   rv   r   )
r   _datar   r   rd   re   rf   r   r  r7   )rI   Zdtar   r   ri   Ztdar&   r&   r+   test_any_all_datetimelike  s@   
z.TestSeriesReductions.test_any_all_datetimelikec                 C   s  t |tjrI|jtju rItddg|d}tt |	  W d    n1 s(w   Y  tt |
  W d    d S 1 sBw   Y  d S tddg|d}|	 sWJ |
 r]J |j	ddseJ |j
ddrmJ ttjdg|d}|	 s|J |
 sJ |j	ddsJ |j
ddsJ ttjdg|d}|	 rJ |
 rJ |j	ddsJ |j
ddrJ tddg|d}|	 sJ |
 sJ |j	ddsJ |j
ddsJ tg |d}|	 rJ |
 sJ |j	ddrJ |j
ddsJ tdg|d}|	 rJ |
 rJ |j	ddrJ |j
ddr$J ttjg|d}|	 r3J |
 s:J |j	ddsCJ |j
ddsLJ d S )Nr   ru   rX    FrZ   )rE   rU   ZStringDtypeZna_valuerV   r   rk   rl   r   r  r   r3   rs   )rI   any_string_dtyper   r&   r&   r+   test_any_all_string_dtypeD  s`   



z.TestSeriesReductions.test_any_all_string_dtypec                 C   s  t dddd}t|td }| }|dksJ | }|dks#J tj|d< | }|dks2J | }|dks<J tt ddd	}tt d
dd	}t|| }t|| }t	|| ||  }t	|| |
 }td}||ksyJ | }td}||ksJ d S )Nz2012-1-1rp   r#   r$   Z20120101r   r-   rR   r   Z20120102r   r   )r   r   r   r  r  r3   rs   absrd   r}   r@   r   rA   )rI   r  r   rJ   r  r   rK   r&   r&   r+   test_timedelta64_analytics}  s0   
z/TestSeriesReductions.test_timedelta64_analyticsztest_input,error_typerX   foobarbazrR   r-   r/  r0  r1  c                 C   s   t g dd}d}tjt|d |  W d   n1 sw   Y  tjt|d |jdd W d   n1 s;w   Y  d}tjt|d |  W d   n1 sXw   Y  tjt|d |jdd W d   dS 1 svw   Y  dS )	zU
        Cases where ``Series.argmax`` and related should raise an exception
        r6   rX   z*attempt to get argmin of an empty sequencera   NFrZ   z*attempt to get argmax of an empty sequence)r   rk   rl   rm   r  r  )rI   Z
test_inputZ
error_typeri   r&   r&   r+   "test_assert_idxminmax_empty_raises  s   

"z7TestSeriesReductions.test_assert_idxminmax_empty_raisesc                 C   s  t g d}| dksJ |jdddksJ | dks J |jdddks*J t ddg}| dks8J |jdddksBJ | dksJJ |jdddksTJ |st ddd	d	d tjd
g}d}tjt|d |  W d    n1 szw   Y  tjt|d |jdd W d    n1 sw   Y  d}tjt|d |  W d    n1 sw   Y  tjt|d |jdd W d    d S 1 sw   Y  d S d S )Nr.  r   FrZ   rR   r2  r3  r/  r0  r1  z8'>' not supported between instances of 'float' and 'str'ra   z8'<' not supported between instances of 'float' and 'str')r   r  r  r3   rs   rk   rl   r   )rI   Zusing_infer_stringr   Zser2Zser3ri   r&   r&   r+   test_idxminmax_object_dtype  s6   

"z0TestSeriesReductions.test_idxminmax_object_dtypec                 C   s>   t ddgddgddgg}| }tddg}t|| d S )	NZzimmr   Zbiffr   Zbidg      (@r   r-   )r   r  r   rd   r}   )rI   r   rW   r  r&   r&   r+   test_idxminmax_object_frame  s   z0TestSeriesReductions.test_idxminmax_object_framec                 C   sX   t g d}| dksJ | dksJ |jdddks J |jdddks*J d S )N))rR   rp   )r-   r-   )rp   rR   r-   r   FrZ   )r   r  r  rI   r   r&   r&   r+   test_idxminmax_object_tuples  s
   z1TestSeriesReductions.test_idxminmax_object_tuplesc                 C   sp   t ddgtdtdgtdtdgd}| }tdddd}t|| | }|d }t|| d S )Nr   rR   z8.68z42.23z7.11z79.61)r0   xy)r   r   r  r   rd   r}   r  )rI   r   rW   r  Zres2Zexp2r&   r&   r+   test_idxminmax_object_decimals  s   z3TestSeriesReductions.test_idxminmax_object_decimalsc                 C   s\   t ddgdd}| dksJ | dksJ |jdddks"J |jdddks,J d S )Nr   rR   rM   rX   FrZ   )r   rr   rq   r7  r&   r&   r+   test_argminmax_object_ints  s
   z/TestSeriesReductions.test_argminmax_object_intsc              	   C   s  t dtj tjtjg}| dksJ d}tjt|d t|jdds)J W d    n1 s3w   Y  |	 dks@J d}tjt|d t|j	ddsUJ W d    n1 s_w   Y  d	}tjt|dK t
d
d, | dks}J t|jddsJ |	 dksJ t|j	dd W d    n1 sw   Y  W d    d S W d    d S 1 sw   Y  d S )Nr   rR   r  ra   FrZ   r-   r	  r   r   T)r   r3   r   rs   r  rd   re   rf   rg   r  rU   r   )rI   r   ri   r&   r&   r+   test_idxminmax_with_inf  s,   "z,TestSeriesReductions.test_idxminmax_with_infc                 C   s0   t dgdd}| }td}t|| d S )Nl     9V uint64rX   )r   r   r3   r>  rd   r   )rI   r   rJ   rK   r&   r&   r+   test_sum_uint64  s   
z$TestSeriesReductions.test_sum_uint64)/r   r   r   r   rk   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r  r  r  r#  r3   rs   r$  rU   rV   r%  r&  r(  r+  r-  r   rm   r   r4  r5  r6  r8  r;  r<  r=  r?  r&   r&   r&   r+   r   D  s    `

	!/	 	"
/9)
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 sJ |jddtu s$J d S r   rA   r	   r@   )rI   rA  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 s,J d S )Nr   FrZ   rB  )rI   rD  r&   r&   r+   test_minmax_nat_dataframe9  s   
z8TestDatetime64SeriesReductions.test_minmax_nat_dataframec                 C   s   t dd}|tjdt|}| }| }t	|t
s"J t	|t
s)J ||d ks1J ||d ks9J | |d ksCJ | |d ksMJ d S )N1/1/2000z
12/31/2000r-   r   rc   )r   Ztaker3   r9   r:   ZpermutationlenrA   r@   rE   r   )rI   rngZrng2Zthe_minZthe_maxr&   r&   r+   test_min_maxH  s   
z+TestDatetime64SeriesReductions.test_min_maxc                 C   s   t dddd}g d}t|tjdt||d}|j }t	|jj
d }t|t	s0J ||ks6J |j }t	|jj
d	 }t|t	sJJ ||ksPJ d S )
NrF  r   Z4hr$   )
r   r   r   r   r   r   CrJ  rJ  rJ  r-   )TSVLrc   r   )r   r   r3   r9   r:   r;   rG  rK  r@   r   ZiatrE   rA   )rI   rH  Zlvlsr   rJ   r  r&   r&   r+   test_min_max_seriesV  s    

z2TestDatetime64SeriesReductions.test_min_max_seriesN)r   r   r   rk   r   r   r   r	   r   rC  r   rE  rI  rN  r&   r&   r&   r+   r@  %  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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functionrA   r@   c                 C   s^   t tg ddd}d| }tjt|d t||  W d    d S 1 s(w   Y  d S )N)r   ru   r   r!  F)r   z)Categorical is not ordered for operation ra   )r   r   rk   rl   r   rD   )rI   rP  catri   r&   r&   r+   test_min_max_unordered_raisesq  s
   
"z=TestCategoricalSeriesReductions.test_min_max_unordered_raiseszvalues, categoriesr  Zcbar   rp   r-   rR   rR   r-   rp   c                 C   sJ   t t||dd}t||dd}|dkr|d n|d }||ks#J d S )NTr   rZ   rA   r   r-   )r   r   rD   )rI   rF   r   rP  rQ  rJ   rK   r&   r&   r+   test_min_max_orderedy  s   z4TestCategoricalSeriesReductions.test_min_max_orderedr[   TFc                 C   s<   t ttjgddgdd}t|||d}|tju sJ d S )NrR   r-   Tr   rZ   r   r   r3   rs   rD   )rI   rP  r[   rQ  rJ   r&   r&   r+   "test_min_max_ordered_with_nan_only  s   zBTestCategoricalSeriesReductions.test_min_max_ordered_with_nan_onlyc                 C   sj   t tddtjdgddgdd}t|||d}|du r,|dkr"dnd}||ks*J d S |tju s3J d S )Nr   ru   Tr   rZ   rA   rU  )rI   rP  r[   rQ  rJ   rK   r&   r&   r+   test_min_max_skipna  s   z3TestCategoricalSeriesReductions.test_min_max_skipnaN)r   r   r   rk   r   r   rR  r   r3   rs   rT  rV  rW  r&   r&   r&   r+   rO  l  s(    

rO  c                   @   sj  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fddgej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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d0gd	d0gfdd0gd	d0gfgd1d2 Zd3d4 Zd5d6 Zejd7g d8ed	gejdejfg d8ed	gejdejfg d9ed:gejdejfgd;d< Zejd7g d=eg d>ejdejfg d?ed@d:gejdejfgdAdB ZdCS )DTestSeriesModezdropna, expectedTrX   Fc                 C   s(   t g tjd}||}t|| d S r   )r   r3   r6   moderd   r}   rI   r   rK   r   rJ   r&   r&   r+   test_mode_empty  s   
zTestSeriesMode.test_mode_emptyzdropna, data, expected)rR   rR   rR   r-   rR   )rR   rR   rR   r-   rp   rp   rp   rp   dtZ
AllIntegerZFloatc                 C   s2   t ||d}||}t ||d}t|| d S r   r   rY  rd   r}   )rI   r   r   rK   r\  r   rJ   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 )NrR   r-   )r   r3   rs   rY  rd   r}   rZ  r&   r&   r+   test_mode_numerical_nan  s   
z&TestSeriesMode.test_mode_numerical_nanzdropna, expected1, expected2ru   r0  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 S )	Nr   r-   ru   rp   r   rX   r/  r0  )r   rY  rd   r}   r3   rs   rM   )rI   r   	expected1	expected2r   r   rJ   r&   r&   r+   test_mode_object     	

zTestSeriesMode.test_mode_objectc                 C   s   dgd dgd  }t ||d}||}t ||d}t|| dddtjtjtjg}t ||d}||}t ||d}t|| d S )Nr   r-   ru   rp   rX   r/  r0  )r   rY  rd   r}   r3   rs   )rI   r   r`  ra  r*  r   r   rJ   r&   r&   r+   test_mode_string  rc  zTestSeriesMode.test_mode_stringr/  c                 C   sn   t g d}||}t |td}t|| t dddtjtjtjg}||}t |td}t|| d S )N)rR   r/  r/  rX   rR   r/  )r   rY  rM   rd   r}   r3   rs   )rI   r   r`  ra  r   rJ   rK   r&   r&   r+   test_mode_mixeddtype  s   

z#TestSeriesMode.test_mode_mixeddtype)
1900-05-03r   
2013-01-02r   rg  c                 C   h   t g ddd}||}t |dd}t|| t g ddd}||}t |dd}t|| d S )N)r   rg  rf  rs   rs   rC   rX   )r   rg  rf  r   rg  rs   rs   r]  rI   r   r`  ra  r   rJ   r&   r&   r+   test_mode_datetime  s   
	
z!TestSeriesMode.test_mode_datetime)-1 days0 daysr   2 min1 dayc                 C   rh  )N)r   rk  rl  rs   rs   r   rX   )rn  rn  z-1 dayz-1 day 2 minrm  rm  rs   rs   r]  ri  r&   r&   r+   test_mode_timedelta)  s   



z"TestSeriesMode.test_mode_timedeltaz'dropna, expected1, expected2, expected3r-   )r   r   rS  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 )
NrR   r-   categoryrX   r   rp   rS  Tr   )r   r   r3   rs   rY  rd   r}   )rI   r   r`  ra  Z	expected3r   rJ   r&   r&   r+   test_mode_categoryK  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)rR   rr  rr  rX   rR   rr  )r   r3   r>  rY  rd   r}   ri  r&   r&   r+   test_mode_intoverflowp  s   

z$TestSeriesMode.test_mode_intoverflowc                 C   sD   t dddtjtjg}t dtjgtd}|jdd}t|| d S )NrR   r/  rX   F)r   )r   r3   rs   rM   rY  rd   r}   )rI   r   rK   rJ   r&   r&   r+   test_mode_sort_with_na  s   z%TestSeriesMode.test_mode_sort_with_nac                 C   s>   t dddtjgdd}| }t ddidd}t|| d S )NTFrT   rX   r   )r   rU   rV   rY  rd   r}   )rI   r   rJ   rK   r&   r&   r+   test_mode_boolean_with_na  s   z(TestSeriesMode.test_mode_boolean_with_nazarray,expected,dtype)r                 ?rR   rR         ?      ?      ?       @)rw                 @rw  rw  c                 C       t ||d }t|| d S r   r]  rI   rG   rK   r   rJ   r&   r&   r+   test_single_mode_value_complex  s   z-TestSeriesMode.test_single_mode_value_complex)r   rv  rR   rw  rx  )y                rv  y      ?        rw  rx  )rw  ry  rw  ry  rp   ry  c                 C   rz  r   r]  r{  r&   r&   r+   test_multimode_complex  s   z%TestSeriesMode.test_multimode_complexN)r   r   r   rk   r   r   r   r3   r6   r[  r   Z	typecodesr^  rs   r_  rb  rd  re  rj  ro  r   rq  rs  rt  ru  Z
complex128Z	complex64r|  r}  r&   r&   r&   r+   rX    s    "
	 








rX  )(r   r   Zdecimalr   Znumpyr3   rk   ZpandasrU   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   Zpandas._testingZ_testingrd   Zpandas.corer   Zpandas.core.arrays.string_arrowr   r=   r>   r   r   r@  rO  rX  r&   r&   r&   r+   <module>   s0    L @  P     fG6