o
    թZhf                     @   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&   ^/var/www/html/lang_env/lib/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%   astype_value)selfr?   rB   resultexpectedr&   r&   r+   test_ops8   s   
zTestReductions.test_opsz
dtype, val)object       @)r6   rO   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 )NrP   )rT   rU   )r	   pdNAr   )resr   r&   r+   check_missing^   s
   
z4TestReductions.test_nanminmax.<locals>.check_missingrY   FskipnarN   )rD   )rJ   r?   r   valindex_or_seriesklassrZ   rB   r&   rY   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   rQ   rR   rS   zNThe behavior of (DatetimeIndex|Series).argmax/argmin with skipna=False and NAsz2The behavior of Series.(idxmax|idxmin) with all-NAmatchFr[   )
r   r	   r   rD   r   tmassert_produces_warningFutureWarningr3   isnan)rJ   r?   r^   r_   arg_oprB   msgrK   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 )Nra   r0   rY   Fr[   zempty sequencerb   )r   rD   r	   pytestraises
ValueError)rJ   r?   r^   r   r_   ri   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   rY   r      rS   r-      z=The behavior of Index.argmax/argmin with skipna=False and NAsrb   Fr[   rd   zEThe behavior of DatetimeIndex.argmax/argmin with skipna=False and NAsrQ   rR   )r   r3   r4   argminargmaxnanre   rf   rg   r	   r   )rJ   rB   rj   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:00rq   UTC)r    r"   r   )columnsi  secondsrv   rS   axis)	r   r   r   subtractr   rD   renamere   assert_series_equal)rJ   opZexpected_coldfrK   rL   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)rV   to_datetimer7   r   rD   r3   re   r   )rJ   Ztz_aware_fixturer   r"   ra   rL   rK   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 )NrS   r-   timedelta64[ns]rY   rT   ABrq   )	r   r   r	   r3   rt   r   sumre   r   )rJ   r   rL   rK   r&   r&   r+   test_nan_int_timedelta_sum   s   z)TestReductions.test_nan_int_timedelta_sumN)__name__
__module____qualname__rl   markfilterwarningsparametrizer=   rM   r   r`   rk   ro   ru   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  rq   )i  r   i)@B rp   )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 NFr[   )r   Z_valuesr@   rA   r   )rJ   startstopstepr0   rL   rK   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   rt   rA   r   r@   rr   rs   rJ   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	   rJ   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 supportedrb   r   outr   )
r   r3   rA   r   r@   rl   rm   rn   rr   rs   )rJ   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20130101ry   r   r   r(   r&   r&   r+   r,   Q     " z:TestIndexReductions.test_timedelta_ops.<locals>.<listcomp>r   	   ry   r   g?i(
  msz00:00:09z00:01:21z
2015-02-03z
2015-02-07rp   )daysz
2015-02-15   )r   r8   diffmeanr   r   to_frameZquantiler   r3   Ztimedelta64medianr   stddropnarF   r   )rJ   sr   rK   rL   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 ''rb   F)Znumeric_only)	r   r8   r   joinrl   rm   	TypeErrorrD   r   )rJ   r?   r   r   rj   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@   rr   rs   )rJ   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rS   r-   rq   r   rb   r   r   )
r   rF   r@   r3   rA   rl   rm   rn   rs   rr   )rJ   r0   rL   rK   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   rq   r   r   rb   r   )r   r3   r@   rA   rl   rm   rn   )rJ   r0   rK   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   rb   r   r   r   )
r   r3   rA   r   r@   rl   rm   rn   rr   rs   )rJ   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   rS   r   rq   r-   )r   r	   r   rA   r
   r@   rr   rs   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	   )rJ   r   r   rB   rK   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   rb   r   r   r   )
r   r3   rA   r
   r@   rl   rm   rn   rr   rs   )rJ   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\nrb   zwCategorical is not ordered for operation max\nyou can use .as_ordered\(\) to change the Categorical to an ordered one\nTcrv   )rV   ZCategoricalIndexlistrl   rm   r   rA   r@   )rJ   cirj   r&   r&   r+   test_min_max_categorical0  s   

z,TestIndexReductions.test_min_max_categoricalN)r   r   r   rl   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 deprecatedrb   mode.use_inf_as_naTrS   r{   )r   r3   r9   r:   r;   copyinfrt   isinfr   rH   re   rf   rg   rV   option_contextassert_almost_equalr   nansumall)rJ   r   s2r2   rj   rX   r&   r&   r+   test_sum_infI  s    z!TestSeriesReductions.test_sum_infr   )r6   ZFloat32rT   rU   rN   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   rY   r   )	min_countrS   Tr[   )r\   r   Fr   )r   r   r-   )
rV   r   r   rD   r   r3   rt   r   emptyr   )rJ   methodunitr   r   r   rK   r   r&   r&   r+   
test_empty]  sp   $zTestSeriesReductions.test_emptyr   r   r   )Float64rT   rU   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 NrY   )r   rD   rV   rW   r3   rt   )rJ   r   r   ZeserrK   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 )NrY   m8[ns]r   r   )zoperation 'var' not allowedz.cannot perform var with type timedelta64\[ns\]z does not support reduction 'var'rb   )	rD   r   floatr   r   rl   rm   r   r	   )rJ   r   rK   Ztdserrj   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   rS   r/   )r   r3   rt   r   re   r   )rJ   serrK   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 rY   Fr[   r5   r   rd   )	rV   r   r3   r4   r   r   intrA   r@   rJ   r   r   vr   rK   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  rY   Fr[   r   rd   )
rV   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   rT   rY   r   g ؅W4vC)r3   rG   r   r   )rJ   r]   Z
n_elementsnar   Zresult_numpyZresult_maskedr&   r&   r+   test_mean_masked_overflow  s   
z.TestSeriesReductions.test_mean_masked_overflowz	ddof, exp)rS         @)r   rO   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)rS   r-   rq   rp   r   rT   rY   r5   )ddof)r   r   )rJ   r
  expr   Zser_numpy_dtyperK   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 )NrY   r[   )r   rA   r	   r@   )rJ   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 NrS   rR   r   r   rb   r   )r3   r4   r   rr   rl   rm   rn   )rJ   r   r   rK   rL   rj   r&   r&   r+   test_numpy_argmin+  s   

"z&TestSeriesReductions.test_numpy_argminc                 C   r  r  )r3   r4   r   rs   rl   rm   rn   )rJ   r   r   rK   rL   rj   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   rO   r   0The behavior of Series.idxmin with all-NA valuesrb   Fr[   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   rt   re   rf   rg   idxminr	   idxmaxr   r   r   r   )rJ   r   dtir   rj   rX   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.idxminrb   Fr[   20130102r   r   r   rS   )r   r8   r3   r6   rt   r  rA   re   rf   rg   r   r   r/   rF   tolistrr   r   rJ   Zstring_seriesrj   ZnonaZallnar   rK   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  rb   Fr[   r  r   r   rp   r   )皙?g @@r  r  )r   r8   r3   r6   rt   r  r@   re   rf   rg   r   r   r/   rF   r  rs   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   rY   r   r   tsr.   r   abcT)r   r3   r4   r6   r   r   any)rJ   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   rS   r-   r   )r3   r   r#  r   )rJ   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 )NTFr[   )r   r3   rt   r   r#  )rJ   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   rS   rS   r-   r-   r   T)	bool_only)r   r#  r   )rJ   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   rv   r   derY   r[   T)r   rN   rD   )rJ   r*  r\   r   rK   rL   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 )NFr[   r#  )r   rD   )rJ   r   r*  r   rK   rL   r&   r&   r+   !test_any_all_object_dtype_missing  s   z6TestSeriesReductions.test_any_all_object_dtype_missing)rU   rT   ZUInt64r   zdata,expected_data)r   r   r   )rS   rS   rS   r   rS   c           	      C   sT   t ||d}|| |dk }t|||d}|tju r |tju s(||ks&J d S d S )NrY   r   r[   )r   rD   rV   rW   )	rJ   r*  r\   r   r   Zexpected_datar   rL   rK   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 )NTFrS   r-   r   )r|   r(  )r   r#  r   re   r   )rJ   r   rK   rL   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-02rq   r   z0'(any|all)' with datetime64 dtypes is deprecatedrb   rw   r   )
r   _datar   r   re   rf   rg   r   r#  r7   )rJ   Zdtar   r   rj   Ztdar&   r&   r+   test_any_all_datetimelike  s@   
z.TestSeriesReductions.test_any_all_datetimelikec                 C   s   t d tddgdd}| sJ | rJ td dgdd}| s'J | s-J |jddr5J td dgdd}| rCJ | rIJ tddgdd}| sWJ | s]J d S )	NZpyarrow r   zstring[pyarrow_numpy]rY   Fr[   rv   )rl   Zimportorskipr   r#  r   rJ   r   r&   r&   r+   test_any_all_pyarrow_stringD  s   
z0TestSeriesReductions.test_any_all_pyarrow_stringc                 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-1rq   r#   r$   Z20120101r   r-   rS   r   Z20120102r   r   )r   r   r   r  r  r3   rt   absre   r   r@   r   rA   )rJ   r  r   rK   r&  r   rL   r&   r&   r+   test_timedelta64_analyticsX  s0   
z/TestSeriesReductions.test_timedelta64_analyticsztest_input,error_typerY   foobarbazrS   r-   r9  r:  r;  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   rY   z*attempt to get argmin of an empty sequencerb   NFr[   z*attempt to get argmax of an empty sequence)r   rl   rm   rn   r  r  )rJ   Z
test_inputZ
error_typerj   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 )Nr8  r   Fr[   rS   r<  r=  r9  r:  r;  z8'>' not supported between instances of 'float' and 'str'rb   z8'<' not supported between instances of 'float' and 'str')r   r  r  r3   rt   rl   rm   r   )rJ   Zusing_infer_stringr   Zser2Zser3rj   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   bidg      (@r   r-   )r   r  r   re   r   )rJ   r   rX   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))rS   rq   )r-   r-   )rq   rS   r-   r   Fr[   )r   r  r  r4  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   rS   z8.68z42.23z7.11z79.61)r0   xy)r   r   r  r   re   r   r  )rJ   r   rX   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   rS   rN   rY   Fr[   )r   rs   rr   r4  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   rS   r  rb   Fr[   r-   r  r   r   T)r   r3   r   rt   r  re   rf   rg   rh   r  rV   r   )rJ   r   rj   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 uint64rY   )r   r   r3   rH  re   r   )rJ   r   rK   rL   r&   r&   r+   test_sum_uint64  s   
z$TestSeriesReductions.test_sum_uint64)/r   r   r   r   rl   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r  r   r$  r%  r'  r)  r-  r3   rt   r.  rV   rW   r/  r0  r2  r5  r7  r   rn   r   r>  r?  rA  rB  rE  rF  rG  rI  r&   r&   r&   r+   r   D  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 sJ |jddtu s$J d S r   rA   r	   r@   )rJ   rK  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   Fr[   rL  )rJ   rN  r&   r&   r+   test_minmax_nat_dataframe  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   rd   )r   Ztaker3   r9   r:   ZpermutationlenrA   r@   rE   r   )rJ   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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 )
NrP  r   Z4hr$   )
r   r   r   r   r   r   CrT  rT  rT  r-   )TSVLrd   r   )r   r   r3   r9   r:   r;   rQ  rU  r@   r   ZiatrE   rA   )rJ   rR  Zlvlsr   rK   r  r&   r&   r+   test_min_max_series1  s    

z2TestDatetime64SeriesReductions.test_min_max_seriesN)r   r   r   rl   r   r   r   r	   r   rM  r   rO  rS  rX  r&   r&   r&   r+   rJ     s&    



rJ  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   rv   r   r+  F)r   z)Categorical is not ordered for operation rb   )r   r   rl   rm   r   rD   )rJ   rZ  catrj   r&   r&   r+   test_min_max_unordered_raisesL  s
   
"z=TestCategoricalSeriesReductions.test_min_max_unordered_raiseszvalues, categoriesr"  Zcbar   rq   r-   rS   rS   r-   rq   c                 C   sJ   t t||dd}t||dd}|dkr|d n|d }||ks#J d S )NTr   r[   rA   r   r-   )r   r   rD   )rJ   rF   r   rZ  r[  rK   rL   r&   r&   r+   test_min_max_orderedT  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 )NrS   r-   Tr   r[   r   r   r3   rt   rD   )rJ   rZ  r\   r[  rK   r&   r&   r+   "test_min_max_ordered_with_nan_onlyf  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   rv   Tr   r[   rA   r_  )rJ   rZ  r\   r[  rK   rL   r&   r&   r+   test_min_max_skipnan  s   z3TestCategoricalSeriesReductions.test_min_max_skipnaN)r   r   r   rl   r   r   r\  r   r3   rt   r^  r`  ra  r&   r&   r&   r+   rY  G  s(    

rY  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, expectedTrY   Fc                 C   s(   t g tjd}||}t|| d S r   )r   r3   r6   modere   r   rJ   r   rL   r   rK   r&   r&   r+   test_mode_empty  s   
zTestSeriesMode.test_mode_emptyzdropna, data, expected)rS   rS   rS   r-   rS   )rS   rS   rS   r-   rq   rq   rq   rq   dtZ
AllIntegerFloatc                 C   s2   t ||d}||}t ||d}t|| d S r   r   rc  re   r   )rJ   r   r   rL   rf  r   rK   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 )NrS   r-   )r   r3   rt   rc  re   r   rd  r&   r&   r+   test_mode_numerical_nan  s   
z&TestSeriesMode.test_mode_numerical_nanz'dropna, expected1, expected2, expected3rv   r:  rt   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 ||dgkr@d ntd}t|| dddtjtjtjg}t |tdt}||}t |}t|| d S )	Nr   r-   rv   rq   r   rY   r9  r:  )	r   rc  re   r   r3   rt   rN   rH   r'   )rJ   r   	expected1	expected2	expected3r   r   rK   r&   r&   r+   test_mode_str_obj  s   


z TestSeriesMode.test_mode_str_objzdropna, expected1, expected2r9  c                 C   sx   t g d}||}t |}t|| t dddtjtjtjg}||}t ||dgkr0d ntd}t|| d S )N)rS   r9  r9  rS   r9  rY   )r   rc  re   r   r3   rt   rN   )rJ   r   rk  rl  r   rK   rL   r&   r&   r+   test_mode_mixeddtype  s   

z#TestSeriesMode.test_mode_mixeddtype)
1900-05-03r   
2013-01-02r   rq  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   rq  rp  rt   rt   rC   rY   )r   rq  rp  r   rq  rt   rt   rh  rJ   r   rk  rl  r   rK   r&   r&   r+   test_mode_datetime  s   
	
z!TestSeriesMode.test_mode_datetime)-1 days0 daysr   2 min1 dayc                 C   rr  )N)r   ru  rv  rt   rt   r   rY   )rx  rx  z-1 dayz-1 day 2 minrw  rw  rt   rt   rh  rs  r&   r&   r+   test_mode_timedelta  s   



z"TestSeriesMode.test_mode_timedeltar-   )r   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g ddd	}||}t |dd}t|| d S )
NrS   r-   categoryrY   r   rq   r]  Tr   )r   r   r3   rt   rc  re   r   )rJ   r   rk  rl  rm  r   rK   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)rS   r|  r|  rY   rS   r|  )r   r3   rH  rc  re   r   rs  r&   r&   r+   test_mode_intoverflow8  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 s0w   Y  t	|| d S )Nr9  rS   F)r   T)Zdrop)
r   r3   rt   re   rf   UserWarningrc  Zsort_valuesZreset_indexr   )rJ   rL   r   rK   r&   r&   r+   test_mode_sortwarningH  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 )NTFrU   rY   r   )r   rV   rW   rc  re   r   )rJ   r   rK   rL   r&   r&   r+   test_mode_boolean_with_naU  s   z(TestSeriesMode.test_mode_boolean_with_nazarray,expected,dtype)r                 ?rS   rS         ?      ?      ?       @)r                 @r  r  c                 C       t ||d }t|| d S r   rh  rJ   rG   rL   r   rK   r&   r&   r+   test_single_mode_value_complex\  s   z-TestSeriesMode.test_single_mode_value_complex)r   r  rS   r  r  )y                r  y      ?        r  r  )r  r  r  r  rq   r  c                 C   r  r   rh  r  r&   r&   r+   test_multimode_complext  s   z%TestSeriesMode.test_multimode_complexN)r   r   r   rl   r   r   r   r3   r6   re  r   	typecodesri  rt   rj  rn  ro  rt  ry  r   r{  r}  r  r  Z
complex128Z	complex64r  r  r&   r&   r&   r+   rb  }  s    "
	 
$






rb  )(r   r   decimalr   numpyr3   rl   ZpandasrV   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   Zpandas._testingZ_testingre   Zpandas.corer   Zpandas.core.arrays.string_arrowr   r=   r>   r   r   rJ  rY  rb  r&   r&   r&   r+   <module>   s0    L @  P     AG6