o
    dC                     @   s  d dl Z d dlmZ d dlZd dlZd dlmZ d dlm	Z	 d dl
Zd dl
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lmZ ejejejejej d	d
gg dddd Z!dd Z"ej#$de%e&e'gej#$ddddggdd Z(G dd dZ)G dd dZ*dd Z+dd Z,dd  Z-ej#$d!g d"ej#$d#d$d%d&d&d'd(d)d'gifd*d%d&d(d'd(d+d'gifd,d%d&d&d'd(d)d'gifd-d%d&d(d'd(d+d'gifd.d&d(d'd(d(d'gd/d0fgd1d2 Z.ej#$d3ed4ed5fd6gd7d8 Z/ej#$d9d:d d(gd&d)gd&d(gd;fd<d&d)gd d(gd d)gd;fgej#$d=d>d?gd@dA Z0dBdC Z1ej#$d=g dDdEdF Z2dGdH Z3dIdJ Z4dKdL Z5dMdN Z6ej#$dOdPej7fdQej8fdRej9fdSej:fdTej'fdUej;fd,ej&fd-ej%fd$dVdW fd*dXdW fd.ej<fej=dYe6ej>dZgd[d\ Z?d]d^ Z@d_d` ZAdadb ZBdcdd ZCej#$deg dfg dgfd gd gfgej#$d!dgejDej#$dhdidjgdkdl ZEej#$dmdndogdpdq ZFdrds ZGej#$dhdtdugej#$d!g dvdwdx ZHdydz ZId{d| ZJej#$dhdtdugej#$d!g d}ej#$d~g dg dfg dg dfg dg dfgdd ZKej#$dhdtdugdd ZLejMej#$dhdtdugej#$ddeNdj%fdgdd ZOej#$dg dg dfd&dejPd)d(ejPejP ddd&ejP gg dfd&d(ejQd)d(ejQejQdejP d&ejQgg dfgdd ZRej#$dg dg dfejPd&ejP ejPd(dejP ddejP ejP gg dfd&d(ejQd)d(ejQejQdejP d&ejQgg dfgdd ZSdd ZTdd ZUdd ZVej#$ddddggdd ZWdd ZXdd ZYdd ZZdd Z[ej#\dej#$dd>d?gej#$ddgddggdd Z]dd Z^dd Z_ej#$dg dd&ej`d(d&ej`d(d&ej`d(g	d'g dg dd'gej#$dg ddd Zadd ZbddĄ ZcddƄ Zdej#$dg dȢej#$d=d>d?ejegej#$ddgddggddʄ Zfej#$d!egeheiejgdd̄ Zkej#$d!eheiejgej#$dg d΢dddМg d΢ddgdМg d΢dgddМgddӄ ZlddՄ Zmddׄ Znddل ZodS )    N)StringIO)lib)UnsupportedFunctionCall)	DataFrameIndex
MultiIndexSeries	Timestamp
date_range)nanops)get_groupby_method_args)_test_decoratorsInt64Float64)znp.int32znp.int64z
np.float32z
np.float64r   r   )paramsZidsc                 C   s   | j }|}|dkrtj}n|dkrtj}t|jdkr"t|jnt|j}t|jdkr6t|j	nt|j	}|||fS )zZ
    Fixture of dtypes with min and max values used for testing
    cummin and cummax
    r   r   i)
paramnpint64float64dtypekindiinfominZfinfomax)requestr   Znp_typemin_valmax_val r   V/app/.heroku/python/lib/python3.10/site-packages/pandas/tests/groupby/test_function.pydtypes_for_minmax   s   	


r    c                  C   s\   t ddtjdg} | g d}|tj}|tj}| }t	|| t	|| d S )N      ?       @      @)r         r%   )
r   r   nangroupbyaggbuiltinssumapplytmassert_series_equal)sgroupedresultZresult2expectedr   r   r   test_intercept_builtin_sum8   s   r2   fkeysjimjoec           	         sH  t tjdddddgd}tjd|d< || }|j ||}t|j	| d	}d
|j
 d| d}|j
|dfks@J | fdd|}t|| td  |fdd}W d    n1 sjw   Y  t|| |tkr|  }|j| ddd tj||dd tt| ddt| dd d S )Nr$   2   )  r%   r5   r6   columnsr8   Zjolie)Zsubsetzinvalid frame shape: z (expected (z, 3))   c                    s   t t | ddS )Nr   axis)getattrr   x)fnamer   r   <lambda>S   s    z%test_builtins_apply.<locals>.<lambda>c                    s    | S Nr   r?   )npfuncr   r   rB   X       TF)inplacedrop)Zcheck_dtyper   r<   )r   r   randomrandintrandnr'   __name__r+   lenZdrop_duplicatesshaper,   assert_frame_equalassert_produces_warningr*   r(   reset_index	set_indexr-   r>   )	r4   r3   dfgbr0   ZngroupsZ
assert_msgr1   Z	expected2r   )rA   rD   r   test_builtins_applyC   s(   


(rT   c                   @   s   e Zd Zejdd Zejdddgdd Zejddd	gd
d Z	ejdddgdd Z
ejdddgdd Zejdddgdd Zejdddgdd Zdd ZdS )TestNumericOnlyc                 C   sh   t g dg dg dtdttddg dtddd	tddd
dtjddddd	g dd}|S )Nr$   r$   r%   r$   r%   r;   )      @      @      @abccategory)      	   Z20130101r;   periods
US/Eastern)ra   tzz1 sr.   )ra   freq)	groupintfloatstringcategory_stringcategory_intdatetime
datetimetz	timedeltar9   )r   listr   astyper
   pdZtimedelta_rangeselfrR   r   r   r   rR   f   s   
zTestNumericOnly.dfmethodmeanmedianc                 C   s   t g d}|d}tddgddgtdtdgd	d
gtdtdgtdddtdddgdt ddgddg dd}t||dd}t|	|| |j
}| |||| d S )Nrf   rg   rj   re   g      @r_         @rZ   z1.5sZ3s      ?r;   z2013-01-01 12:00:00z2013-01-03 00:00:00rb   rc   )rj   rg   rm   rf   rk   rl   r$   r%   nameindexr:   Tnumeric_only)r   r'   r   rp   	Timedeltar	   r>   r,   rN   Zreindex_liker:   _check)rr   rR   rs   expected_columns_numericrS   r1   r0   expected_columnsr   r   r   test_averages   s*   


zTestNumericOnly.test_averagesr   r   c                 C   $   t g d}|}| |||| d S )N)rf   rg   rh   rj   rk   rl   rm   r   r   rr   rR   rs   r   r   r   r   r   test_extrema   s
   zTestNumericOnly.test_extremafirstlastc                 C   r   )N)rf   rg   rh   ri   rj   rk   rl   rm   r   r   r   r   r   test_first_last   s
   zTestNumericOnly.test_first_lastr*   cumsumc                 C   s@   t g d}t g d}|dkrt g d}| |||| d S )Nrv   )rf   rg   rh   rj   rm   r   )rf   rg   rj   rm   r   )rr   rR   rs   r   r   r   r   r   test_sum_cumsum   s   zTestNumericOnly.test_sum_cumsumprodcumprodc                 C   r   )Nrv   r   r   r   r   r   test_prod_cumprod   s   z!TestNumericOnly.test_prod_cumprodcummincummaxc                 C   r   )N)rf   rg   rj   rk   rl   rm   r   r   r   r   r   test_cummin_cummax   s
   z"TestNumericOnly.test_cummin_cummaxc           	   
   C   sp  | d}|drtnt}|dv r<dddd| dg}tj||d	 t||  W d    n1 s6w   Y  n6|d
v redg d}tj||d	 t||  W d    n1 s_w   Y  nt|| }t	|j
| |dvrddddddd| dg}tj||d	 t||dd W d    d S 1 sw   Y  d S t||dd}t	|j
| d S )Nre   cum)r   r   r   r   r   r   |zCategorical is not ordered*function is not implemented for this dtypezCannot perform z with non-ordered Categoricalmatch)r*   rt   ru   r   )z-category type does not support sum operations[Cc]ould not convertz0can't multiply sequence by non-int of type 'str'r   r   r   zcategory type does not supportzcan't multiply sequenceFr~   )r'   
startswithNotImplementedError	TypeErrorjoinpytestraisesr>   r,   assert_index_equalr:   )	rr   rR   rs   r   r   rS   	exceptionmsgr0   r   r   r   r      sL   



"zTestNumericOnly._checkN)rK   
__module____qualname__r   fixturerR   markparametrizer   r   r   r   r   r   r   r   r   r   r   rU   c   s     

#




rU   c                   @   s>   e Zd Zejdd Zejdd Zejdd Zdd Zd	S )
TestGroupByNonCythonPathsc                 C   s.   t g ddtjdgdtjdggg dd}|S )N)r$   r%   foor$   barr;   ZbazABCr9   r   r   r&   rq   r   r   r   rR   #  s
   zTestGroupByNonCythonPaths.dfc                 C   s   | d}|S )Nr   r'   )rr   rR   rS   r   r   r   rS   +  s   
zTestGroupByNonCythonPaths.gbc                 C   s   |j ddd}|S )Nr   Fas_indexr   )rr   rR   gnir   r   r   r   0  s   zTestGroupByNonCythonPaths.gnic              
   C   s   t ddgdd}tdgg dgdgd ttdgd	}td
dtjdddddgdtjtjtjtjtjtjtjgg||d}| }t	|| |
 }| }t	|| d S )Nr$   r;   r   rz   r   countrt   stdr   25%50%75%r   r   r^   levelscodesr!   r"           r|   )r   r   rn   ranger   r   r&   describer,   rN   rP   )rr   rR   rS   r   Zexpected_indexZexpected_colr1   r0   r   r   r   test_describe5  s"    z'TestGroupByNonCythonPaths.test_describeN)	rK   r   r   r   r   rR   rS   r   r   r   r   r   r   r     s    


r   c                  C   s   t ddtjgdtjdgg dgg dd} t dtjgtjdgddggdd	gd}| d
 }t|| | jd
dd }t|| | d
jdd}| jdd}t|| | d
jdd}| jdd}t|| d S )Nr$   r%   r_   )r;      r_   r   r9   r   r   r   r   Fr   r<   )r   r   r&   r'   r   r,   rN   r   )rR   r1   r0   r   r   r   test_cython_api2L  s   *&r   c                  C   s   t jd} t j| d d d< t| }t jjddddt}t j|d d d< ||	 }||
tj}t|| tt jdd}||
t j	}||	 }t|| d S )Nr8   r%   r   r7   size      )r   rH   rJ   r&   r   rI   ro   rg   r'   ru   r(   r   Z	nanmedianr,   rN   )arrrR   labelsr0   exprsZxpr   r   r   test_cython_medianb  s   r   c                 C   sj   t tjddd}tddd}t|d |}|j|| d }|j|| d	dd }t
|| d S )	Nr   ,     7   r   )observedc                 S      |   S rC   )ru   r?   r   r   r   rB   {  rE   z(test_median_empty_bins.<locals>.<lambda>)r   r   rH   rI   r   rp   cutr'   ru   r(   r,   rN   )r   rR   ZgrpsZbinsr0   r1   r   r   r   test_median_empty_binst  s   r   r   )Zint8Zint16int32r   float32r   uint64zmethod,datar   rR   r$   abr%   r;   r   r   r   r   r   r   )rR   out_typec           	      C   s   t ddddddddddddg}|j| |d< d|vr$g |d< d|v r-|d }n| }|d	 }t |}|j||d< |jd
dd |d
}t|||d  }t|| d S )Nr$   r   r%   r;   r   r   argsr   rR   r   T)rF   )r   r   ro   rQ   r'   r>   r,   rN   )	r   rs   datarR   r   r   Zdf_outZgrpdtr   r   r   %test_groupby_non_arithmetic_agg_types  s    "

r   r   z2011-01-15 12:50:28.502376z2011-01-20 12:50:28.593448)l    m;-Ll    m;-Lc                 C   s   t d| d dd| d dg}d| d id| d id| d id| d i| d dgdddid}| D ]&\}}d|vrAg |d< |d	}t|||d  }|jd j|d ks[J q5d S )
Nr$   r   r   r1   )r1   r   r%   )r   r   r   r   nthr   r   r   )r   itemsr'   r>   ilocr   )r   rR   Zgrp_exprs   r   r/   resr   r   r   2test_groupby_non_arithmetic_agg_int_like_precision  s    



	
r   zfunc, valuesidxmin)c_intc_floatc_dateidxmaxr   TFc                 C   s(  t g dg dg dg dd}t|d |d< |d jd|d< |d |d jd	  |d
< |d jd|d< |d d|d< |d d|d< t|	d| |d}t |t
ddgddd}|rn|jdgd}n|d |d< |d |d
< |d |d< |d |d< |d |d< t|| d S )N)r   r   r   r   )r$   r%   r;   r   )gGz@g=
ףp=@gRQ @g?)Z2019Z2018Z2016Z2017)r{   r   r   r   r   z
US/PacificZ	c_date_tzr   Zc_timedeltaWZc_periodr   r   Z	c_Integerr   r   Z
c_Floatingr{   r~   r   r   rz   r}   r9   )r   rp   to_datetimedtZtz_localizer   Z	to_periodro   r>   r'   r   rG   r,   rN   )funcvaluesr   rR   r0   r1   r   r   r   $test_idxmin_idxmax_returns_int_types  s.   
r   c                  C   s   t tjddg dd} g d| d< | d}|jdd}| jd d dd f jdd}|jd}t	
|| |d td	dd
| d< | d}d}tjt|d |jdd W d    d S 1 sfw   Y  d S )N
   r   r   r   r   Dr9   
r$   r%   r;   r$   r%   r;   r$   r%   r;   r   r   r$   r<   z
2016-01-01r`   Ez7reduction operation 'argmax' not allowed for this dtyper   )r   r   rH   rJ   r'   r   r   r}   Zget_level_valuesr,   r-   Z	droplevelr
   r   r   r   )rR   rS   r   ZaltZindexerZgb2r   r   r   r   test_idxmin_idxmax_axis1  s   

"r   )TFNc                 C   s  |dv r	t d |dv rd}| jt jj|d ttj	ddg dd	}d
|d< g d}|
|}t||}t||}ddi}	|d urJ||	d< d}
d}|d ury||
v ryd}t jt|d ||i |	 W d    d S 1 srw   Y  d S ||vrd}t jt|d ||i |	 W d    d S 1 sw   Y  d S |d u s|s|dvrd}t jtdd| dd ||i |	 W d    d S 1 sw   Y  d S ||i |	}|r|jdd	jn|j}t||| j}|dkr|s|t}t|| d S )Nr   r   z5idxmax and idx_min tested in test_idxmin_idxmax_axis1)corrwithskewzDGH#47723 groupby.corrwith and skew do not correctly implement axis=1reasonr   r   r   r9   r@   r   r   r=   r$   r   )r   r   difffillna
pct_changerankshift)r   r   r   r   r   r   r   r   r   r   r   1got an unexpected keyword argument 'numeric_only'r   z)got an unexpected keyword argument 'axis')r   r   )"not supported between instances ofz2can't multiply sequence by non-int of type 'float'unsupported operand type(r   )r   )r   skipnode
add_markerr   xfailr   r   rH   rJ   r'   r>   r   r   r   r   rG   Tro   rg   r,   assert_equal)r   groupby_funcr   r   rR   groupsrS   rs   r   kwargsZno_argsZhas_axisZmsgsr0   Zdf_expectedr1   r   r   r   test_axis1_numeric_only  sJ   



"""
r  c                  C   s   t dgd dd} | dd  }| jdddd d	d
 }d|_t|| t dgd dd} | d t| d< | dd  }| jdddd dd
 }d|_t|| d S )Nr   r   r%   keyvaluer  r  FZ
group_keysc                 S   r   rC   r   r?   r   r   r   rB   Q  rE   z&test_groupby_cumprod.<locals>.<lambda>d   c                 S   r   rC   r  r?   r   r   r   rB   X  rE   )	r   r'   r   r+   r{   r,   r-   ro   rg   )rR   actualr1   r   r   r   test_groupby_cumprodL  s   r  c                  C   st   t dgd dd} | dd  }tg ddd}t|| | jdd	d
d dd }d|_t|| d S )Nr   r   順 r  r  r  )r  l    d(	 l     I5 l      Fx:^ rz   Fr  c                 S   r   rC   r  r?   r   r   r   rB   h  rE   z/test_groupby_cumprod_overflow.<locals>.<lambda>)r   r'   r   r   r,   r-   r+   r{   )rR   r  r1   Znumpy_resultr   r   r   test_groupby_cumprod_overflow]  s   r  c                  C   s\   t ddtjdgg dd} | djddd}t dtjtjgg d	d
}t|| d S )Nr$   r%   )r$   r%   r#   r   r   cr   TF)r   skipna)r$   r%   rZ   r   r  )r   r   r&   r'   r   r,   rN   rR   r0   r1   r   r   r   1test_groupby_cumprod_nan_influences_other_columnsn  s   
r  c                  O   s   ddl m} || ddi|S )Nr   )semZddofr$   )Zscipy.statsr  )r   r  r  r   r   r   	scipy_sem|  s   r   z	op,targoprt   ru   r   varr*   r   c                 C   
   | j d S )Nr   r   r?   r   r   r   rB        
 rB   c                 C   r"  )Nr#  r?   r   r   r   rB     r$  r  )Zmarksc                 C   sZ   t tjd}tjjddddt}t|||  }||	|}t
|| d S )Nr8   r   r7   r   )r   r   rH   rJ   rI   ro   rg   r>   r'   r(   r,   rN   )opZtargoprR   r   r0   r1   r   r   r   test_ops_general  s
   r'  c                  C   s   d} t jtdd tjt| dgd}W d    n1 sw   Y  |d}|dg  }|d   }t 	|| |d 
  rGJ d S )Nz,Date,app,File
-04-23,2013-04-23 00:00:00,,log080001.log
-05-06,2013-05-06 00:00:00,,log.log
-05-07,2013-05-07 00:00:00,OE,xlsxzCould not infer formatr   r   )Zparse_datesDateFile)r,   rO   UserWarningrp   Zread_csvr   r'   r   to_framerN   Zisnaany)rawrR   rS   rer   r   r   test_max_nan_bug  s   
r0  c                  C      t g d} t td}| |}|d}t g dttdg dgd}t|| t g d} | |}t g d	ttdg d
gd}t|jddd| d S )N
r$   r;   r   r]   r%   r_   r   r      r   
aaaaabbbbbr;   )r]   r   r;   r   r_   r3  aaabbb)r;   r%   r$   r_   r   r^   r   
r$   r$   r;   r%   r   r;   r;   r%   r$   r   )r;   r%   r$   r;   r;   r%   )r%   r;   r$   r3  r   r]   r   Zkeep)r   rn   r'   nlargestr   from_arraysr,   r-   r   r   rS   r.  r/  r   r   r   test_nlargest      


r;  c            	      C   s4  t jd} tddd}|ddgg}tj|ddgd	}t| d
|d}|d	d}tj
|d |d df|d |d df|d |d df|d |d df|d |d df|d |d df|d |d df|d |d df|d |d df|d |d dfg
g dd	}g d}t||d}tj||ddd d S )Ni[Z20180101r   r`   onetwor   second)names   r   r$   r   r%   r;   r   r   r3  r]   r^   r_   )r   r   r?  )
g-r@g-`w?g@f|?gp?g=J-?g],l;?g]f$?gM8r g4Y?g
F;FgMbP?)check_exactZrtol)r   rH   ZRandomStater
   r   Zfrom_productr   rJ   r'   r8  from_tuplesr,   r-   )	Znprdts	iterablesidxr.   r0   Zexp_idxZ
exp_valuesr1   r   r   r   test_nlargest_mi_grouper  s.   rG  c                  C   r1  )Nr2  r4  r;   )r$   r%   r;   r   r   r3  r5  )r   r   r$   r3  r]   r^   r   r6  )r   r$   r$   r   r$   r%   )r   r$   r   r_   r^   r]   r   r7  )r   rn   r'   	nsmallestr   r9  r,   r-   r:  r   r   r   test_nsmallest  r<  rI  zdata, groupsr   r$   r%   r;   r   r   r$   r$   rs   r8  rH  c                 C   s   |d urt j| |d} |dkrtt| } t| dd}t|||dd}t|tr3t j|t jdn|}t| t	
||jgdd}t|| d S )Nr   r8  r   rz   r%   )nr}   r{   )r   arrayrn   reversedr   r>   r'   
isinstanceint_r   r9  r}   r,   r-   )r   r  r   rs   serr0   Zexpidxr1   r   r   r   test_nlargest_and_smallest_noop   s   
rT  r   r   r   c                 C   s   t g dg dd}|d}d}tjt|d t|| ddd	 W d    n1 s-w   Y  tjt|d t|| dd
 W d    d S 1 sMw   Y  d S )Nr$   r%   r$   rW   r   r   r   z+numpy operations are not valid with groupbyr   r$   r%   r;   )r   )r   r'   r   r   r   r>   )r   rR   gr   r   r   r   test_numpy_compat  s   
"rX  c              
   C   sF  | d }| d }t g dg dd}g d}||}t d|i|}|d }t|| |jdd	d
jdd  }t|| ||j	ddgdf< |d |j	ddgdf< ||j	g ddf< |d |j	ddgdf< |d }tj||dd |jdd	d
jdd  }tj||dd |ddi}t
j|j	g ddf< t dt
jdt
jdt
jdt
jdgi}|d }t|| |jdd	d
jdd  }t|| t dgtdgd}ttddgdd}|dd  }t|| t g dg dd}|dj }tg ddd }t|| d S )!Nr   r$   r$   r$   r$   r$   r%   r%   r%   r%   r;   r   r;   r%   r%   r;   r%   r$   rV  )r;   r;   r;   r%   r%   r%   r%   r$   r   r   Fr  c                 S   r   rC   r   r?   r   r   r   rB   0  rE   ztest_cummin.<locals>.<lambda>r%   r3  r   r%   r;   r3  r]   T)rB  c                 S   r   rC   r[  r?   r   r   r   rB   ;  rE   rg   r   r%   r   r3  r   r;   c                 S   r   rC   r[  r?   r   r   r   rB   G  rE   2001r   r   rN  r   rU  )r$   r%   r%   rz   )r   ro   r'   r   r,   rN   r   r+   r+  locr   r&   rp   r   r   r-   r   )r    r   r   base_dfZexpected_minsrR   r1   r0   r   r   r   test_cummin#  sF   
$ra  r   r   )UInt64r   r   rg   booleanc                 C   s   t g dtjgd d}|d ||d< |d}t dtjgd i|d}t||  }t|| t|d |   }t|| d S )NrY  r^   rV  r   r   rL  )	r   r   r&   ro   r'   r>   r,   rN   r+  )rs   r   r`  r/   r1   r0   r   r   r   test_cummin_max_all_nan_columnY  s   
rd  c              
   C   s  | d }| d }t g dg dd}g d}||}t d|i|}|d }t|| |jdd	d
jdd  }t|| ||j	ddgdf< ||j	g ddf< |d }t|| |jdd	d
jdd  }t|| |ddi}t
j|j	g ddf< t dt
jdt
jdt
jdt
jdgi}|d }t|| |jdd	d
jdd  }t|| t dgtdgd}ttddgdd}|dd  }t|| t g dg dd}|dj }tg ddd}t|| d S )Nr   r%   rY  rZ  rV  )r;   r   r   r   r%   r;   r;   r;   r   r   Fr  c                 S   r   rC   r   r?   r   r   r   rB   u  rE   ztest_cummax.<locals>.<lambda>r3  r\  c                 S   r   rC   re  r?   r   r   r   rB   ~  rE   rg   r]  r   r;   c                 S   r   rC   re  r?   r   r   r   rB     rE   r$   r^  r   r   rN  r   rU  )r%   r$   r$   )r%   r$   r%   rz   )r   ro   r'   r   r,   rN   r   r+   r+  r_  r   r&   rp   r   r   r-   r   )r    r   r   r`  Zexpected_maxsrR   r1   r0   r   r   r   test_cummaxh  sB   
$rf  c                  C   sZ   t dd tdD } td| | dd}|d}| }|dd	g }t|| d S )
Nc                 S   s   g | ]}t jj| qS r   )rp   NaT_value).0rM  r   r   r   
<listcomp>  s    z:test_cummax_i8_at_implementation_bound.<locals>.<listcomp>r   r$   zM8[ns]r   r   r   r   )r   r   r   viewr'   r   r,   rN   )rS  rR   rS   r   r   r   r   r   &test_cummax_i8_at_implementation_bound  s   
rl  )rg   r   r   zgroups,expected_datar$   r$   r$   )r$   NNrW   r$   Nr%   )r$   r;   r;   c           	      C   sh   t dtg d|di}| }||d }t|| dd}t||dd}t|| t|| d S )Nr   rn  rL  Fr  )r   r{   )r   r   copyr'   r>   r,   rN   r-   )	rs   r   r  Zexpected_datarR   origrS   r0   r1   r   r   r   test_cummin_max_skipna  s   rr  c                 C   sn   t tjddgg dd}|g dddg }t|| dd}t tjtjtjgg dd}t|| d S )	Nr"   )r"   r"   r"   r   rm  r   r   Fro  )r   r   r&   r'   r>   r,   rN   )rs   rR   rS   r0   r1   r   r   r   $test_cummin_max_skipna_multiple_cols  s
   rs  z	dtype,valrb  r   )r   l         c                 C   sT   |t jg}tddg|d|d}|d}|| }td|i|d}t|| d S )Nr$   )grpr   rL  rt  r   )rp   NAr   r'   Z	transformr,   rN   )rs   r   valr   rR   r/   r0   r1   r   r   r   #test_nullable_int_not_cast_as_float  s   


rw  zin_vals, out_vals)r$   r%   r   r;   r%   r   r   r   ir$   r$   )TFFTg @r      )TFTF)FFFFc                 C   s|   g dg d| d}t |}|djj}ttddd}t||dd}t|| |dgj	d	d
 }t|| d S )N12345678910Z11r   r   r   r   r   r   r  r  r  dr  r   r   abcdrz   r   r}   r   r{   c                 S      | j S rC   )is_monotonic_increasingr?   r   r   r   rB         z.test_is_monotonic_increasing.<locals>.<lambda>)
r   r'   r   r  r   rn   r   r,   r-   r+   Zin_valsZout_valsZsource_dictrR   r0   r}   r1   r   r   r   test_is_monotonic_increasing  s   r  )r   r_   r]   r;   r   r   r%   r   r$   r$   r  )TTFTc                 C   sX   g dg d| d}t |}|djj}ttddd}t||dd}t|| d S )	Nry  r  r   r   r  rz   r   r  )	r   r'   r   Zis_monotonic_decreasingr   rn   r   r,   r-   r  r   r   r   test_is_monotonic_decreasing  s   r  c                 C   s   | j dd}|  d S )Nr   )level)r'   r   )Zmframer/   r   r   r   test_apply_describe_bug&  s   r  c                  C   sr   t  } | dd dd g}| }t j|d | dd t j|d | dd t j|d | dd d S )	Nc                 S   r  rC   yearr?   r   r   r   rB   -  r  z/test_series_describe_multikey.<locals>.<lambda>c                 S   r  rC   monthr?   r   r   r   rB   -  r  rt   F)Zcheck_namesr   r   )r,   makeTimeSeriesr'   r   r-   rt   r   r   )tsr/   r0   r   r   r   test_series_describe_multikey+  s   r  c                  C   s@   t  } | dd }|dd }|  }t || d S )Nc                 S   r  rC   r  r?   r   r   r   rB   6  r  z-test_series_describe_single.<locals>.<lambda>c                 S   r   rC   )r   r?   r   r   r   rB   7  rE   )r,   r  r'   r+   r   stackr-   )r  r/   r0   r1   r   r   r   test_series_describe_single4  s
   r  key1key2c                 C   s   t g dg dg dd}|j|| dd }| }t g dg dg dtjtjd	gg d
g dg dg dg dd	}t|dkrM|dd|d  | rT||}t	|| d S )N)r=  r>  r>  threer>  )r$   r%   r   r   r3  )r  r  foo2r   r  )r=  r  r>  )r!   r!   r#   )r!   rX   rX   r"   )r!   rX   r"   )r!   rX   r#   )r!   rX   rY   )r!   rX   rZ   )	r  r   rt   r   r   r   r   r   r   r%   r$   r  r  )
r   r'   r   r   r&   rL   insertrQ   r,   rN   )r   r4   rR   rS   r0   r1   r   r   r   test_series_describe_as_index<  s2   
r  c                 C   s@   | j d d dgf | d }|dd }|jjdksJ d S )Nr   r   c                 S   r   rC   )rt   r?   r   r   r   rB   ^  rE   z(test_series_index_name.<locals>.<lambda>)r_  r'   r(   r}   r{   )rR   r/   r0   r   r   r   test_series_index_name\  s   r  c           	      C   s   |  dd dd g}| }g }| D ]-}||  }t|g|jgdgt|j tt|jgd}t|j||jd}|	| qt
j|dd}t|| | j ddddd	dd}| }|  j}tddg|jgg d
tt|jgd|_t|| d S )Nc                 S   r  rC   r  r?   r   r   r   rB   c  r  z.test_frame_describe_multikey.<locals>.<lambda>c                 S   r  rC   r  r?   r   r   r   rB   c  r  r   r   )r:   r}   r$   r<   r   rK  )r'   r   r   r:   rL   r   r   r   r}   appendrp   concatr,   rN   r	  )	Ztsframer/   r0   Zdesc_groupscolre   Z	group_colr1   ZgroupedTr   r   r   test_frame_describe_multikeyb  s*   

r  c                  C   s   t g dd g dd g dd d} g dd | d< | jdd	id
}d}tjt|d | d  W d    n1 s?w   Y  tjt|d |d	  W d    d S 1 s^w   Y  d S )N)r$   r%   r;   r   r   r;   )r   rA     (   r7   )r     i,  i  r   )r@   yz)r   r   r$   )r   r$   r   r$   r   r   r   kr  r9   z*Names should be list-like for a MultiIndexr   )r   renamer   r   
ValueErrorr'   r   )Zdf1Zdf2r   r   r   r   test_frame_describe_tupleindex}  s   


"r  c                  C   s   t dd ddt dd ddt dd ddi} t dd ddt dd ddt dd dd	i}t| |d
}|dj }||jdk j j ||jdk j j g}t|tddgddg dd}t	
|| d S )Nz2011-01-06 10:59:05ry   ia  z2011-01-06 12:43:33ic  z2011-01-06 12:54:09i /hYl    rT i )PRICEVOLUMEr  rz   r   r|   )r	   r   r'   r  r   r  r   tolistr   r,   rN   )ZpricesZvolumesrR   r0   r   r1   r   r   r   $test_frame_describe_unstacked_format  s&   r  zZignore:indexing past lexsort depth may impact performance:pandas.errors.PerformanceWarningr   a1a2c                 C   s   t g dg dg dg ddg ddd}|dgkr!|jd	d
}t g dddgj}d d g|j_t|dkrQtddgddggddgddggdd	gd|_	n	t
ddgdd|_	| s`| }|j|| d }t|| d S )N)c   r  r  X   r  r  )r$   r%   r;   r   r   r3  )r   rA  r  r  r7   <   )r  r  r   r  )r  r  r   r   F)r:   rp  r  r  r9   )r   r   r#   r#   r   rt   rY   r"   r   r   r!   r!   r   r   rX   r!   r   r   rw   rx   r   r   rY   r"   r   r   g      @g      @r   r   rZ   r#   r  r  r  r  r  r  r  r  r   r$   r%   r  r  )r   r   r@  rz   r   )r   rG   Zfrom_recordsrQ   r	  r:   r@  rL   r   r}   r   rP   r'   r   r,   rN   )r   r4   rR   r1   r0   r   r   r   0test_describe_with_duplicate_output_column_names  s6   	


"
r  c                     s   t g dg} g d| _| | d }|jg d}g d  fdddD }tj|dd	}td
dg gdd
g ddg  dd
g  dttd gd|_dg|j	_
t|| d S )NrJ  )r   r$   r%   r   r$   )percentiles)r   rt   r   r   r   r   c              	      s,   g | ]}t d |tj|||ggdg dqS )r!   r$   r|   r   )ri  rv  r9   r   r   rj    s    z3test_describe_duplicate_columns.<locals>.<listcomp>)r   r"   r#   r<   r   r%   r3  r;   r   )r   r:   r'   r   rp   r  r   rn   r   r}   r@  r,   rN   )rR   rS   r0   framesr1   r   r9   r   test_describe_duplicate_columns  s   


,
r  c                  C   s8   t g dg dd} | dd  d dksJ d S )N)r   r   r   r   r   )ij  i  io  i`  l    @~ )userconnectionsr  r  r   l    ,fL )r   r'   rt   )rR   r   r   r   test_groupby_mean_no_overflow  s   "r  r   )	r$   r$   r$   r%   r%   r%   r;   r;   r;   )r$   r$   r%   r%   r;   r;   )r$   r%   r$   r%   r$   r%   function)rt   ru   r!  c                 C   s   |dkrdnd}t j|gd td}tg dddd	}td
|i|dd}t| ddd}t|| }t	|| |
|}t	|| |
|g}td
|fg|_t	|| d S )Nr!  g      ?rx   r;   rL  rW   r   r   r{   r   r   r   r   )r   rO  rg   r   r   ro   r'   r>   r,   rN   r(   r   rC  r:   )r   r  outputr   rF  r1   r  r0   r   r   r   ,test_apply_to_nullable_integer_returns_float  s   
r  c                  C   s   t g dg dg dddd} | d}tg dddd}|d jdd	}ttjgd
 d|dd}t|| |jdd	}t tjgd
 tjgd
 dd|d}t	|| d S )N)r   r$   r%   r  r   rL  r   r  r   r%   Z	min_countr;   )r   r}   r{   r  )r   r}   )
r   r'   r   r*   r   rp   ru  r,   r-   rN   )rR   r/   rF  r0   r1   r   r   r   0test_groupby_sum_below_mincount_nullable_integer&  s    
$r  c                  C   sf   t ttdddgd d} | dd  }ttddgdtddgdd	d
}t	|| d S )Nr   r   r   r   )timecatr  r  r   rz   )r{   r}   )
r   rp   Zto_timedeltar   r'   rt   r   r   r,   r-   r  r   r   r   test_mean_on_timedelta5  s    r  c                  C   s   t g dtdtdtdtjgd} tjdd}| d}| }t d	||gitd
dgddd}t|| |d	  }t	||d	  |d	 jdd}t
|tjgdd	|jd}t	|| d S )N)r$   r$   r%   r%   Z1dZ2dZ3dr   r;   )daysr   r   r$   r%   rz   r   r  zm8[ns])r   r{   r}   )r   rp   r   rg  r'   r*   r   r,   rN   r-   r   r}   )rR   Ztd3rS   r   r1   r   r   r   #test_groupby_sum_timedelta_with_nat?  s   
 r  zkernel, has_arg))allF)r,  F)bfillF)corrT)r   T)covT)r   T)r   T)r   T)r   T)r   F)ffillF)r   F)r   T)r   T)r   T)r   T)r   T)rt   T)ru   T)r   T)r   F)nuniqueF)r   F)r   T)quantileT)r  T)r   T)r   T)r*   T)r!  Tc                 C   s  t ddgddgddgdtg d}t| |}|tju ri nd|i}||}t|| }|rB|du rB||i |}	d|	jvs@J d S | d	v sO| d
v r_|tju r_||i |}	d|	jv s]J d S |se| dv r|duskJ | drrt	nt
}
dg d}tj|
|d ||i | W d    d S 1 sw   Y  d S |s|tjurtjt
dd ||i | W d    d S 1 sw   Y  d S | dv sJ |tju sJ tjt
dd ||i | W d    d S 1 sw   Y  d S )Nr$   r%   r   r3  )r  r  a3r   r   Tr   r   )r,  r  r  r  r   r   r  r   r   r   )not allowed for this dtypezmust be a string or a number+cannot be performed against 'object' dtypesz!must be a string or a real numberr  r  r   r   r   )r   r   r  )r   objectr   r   
no_defaultr'   r>   r:   r   r   r   r   r   r   )ZkernelZhas_argr   r4   rR   r   r  rS   rs   r0   r   r   r   r   r   test_numeric_onlyW  sH   $*


	"""r  c                 C   s  |dkrd}|j tjj|d g d}tg d| d}||}t||}tg d}||}	t|	|}
t||}d}d}||v rt| t	u rt|d	v rOd
}n	|dkrVd}nd}tj
t|d ||  W d    n1 snw   Y  n| t	u r|| }|
| }||v r|t	}t|| d}||vrd}tj
t|d ||ddi W d    d S 1 sw   Y  d S | t	u rdg d}tj
t|d ||ddi W d    d S 1 sw   Y  d S ||ddi}||ddi}t|| d S )Nr   z,corrwith is not implemented on SeriesGroupByr   r  r  rL  )	r  r  r   r   r   r   r   r   r  )r   r   r   r  r  r   r*   r   r   r!  rt   ru   r   r   r   r   r  r  r  z!is not supported for object dtyper   )r   r   r   rt   ru   r   r   r  r  r   r   r*   r!  r   r   r   r   r   r   Tr   )z@SeriesGroupBy.sem called with numeric_only=True and dtype objectz=Series.skew does not allow numeric_only=True with non-numericz7cum(sum|prod|min|max) is not supported for object dtypezCCannot use numeric_only=True with SeriesGroupBy\..* and non-numericF)r  r  r   r   r  r   r'   r>   r   r  r   r   ro   r,   r-   r   )r   r  r   r   ZgrouperrS  rS   rs   Zexpected_serexpected_gbZexpected_methodr   Zfails_on_numeric_objectZ
obj_resultr0   r1   Zhas_numeric_onlyr   r   r   "test_deprecate_numeric_only_series  sZ   






""r  r  )g?g?g333333?r  )r  includeexcluderf   c                 C   s   t g dgg d| d}|d t|d< |d t|d< |jd d djd
i |}|djd
i |jdd	jd d }t	|| |jd d dj
jd
i |}|dj
jd
i |jdd	jd d }tg |_t	|| d S )NrW   r   )r:   r   r   r   r   r   T)rG   r   )r   ro   rf   rg   r   r'   r   rP   r,   rN   r   r   r}   )r   r  rR   r0   r1   r   r   r   test_groupby_empty_dataset$  s    ("*
r  c                  C   s^   t g dg dd} | dj| dd}tg ddd	}ttjgd
 |d}t|| d S )NrV   )r;   r]   r   r   r   r$   r<   ))r$   r   )r$   r$   )r$   r%   )r%   r%   )r%   r   )r%   r$   )r   N)r   r{   r3  r   )	r   r'   r   r   r   r   r&   r,   r-   )rR   r0   r}   r1   r   r   r   test_corrwith_with_1_axis=  s   r  c                 C   s`   t g g g dg d}|jg ddd}t|| }t| |}|| j}|j}t|| d S )Nr  Fr  )r   rQ   r'   r>   r   r}   r,   r   )r  rR   rS   rs   r   r0   r1   r   r   r   ,test_multiindex_group_all_columns_when_emptyI  s   


r  c                 C   s   |dkrd}| j tjj|d tg dg dg dgtdd}t||}|jd	|d
}t	||| }|j
g ddd}t||}	|jd	|d
}
t	|
||	 }|dvr]|jddid}t|| d S )Nr   z:GH#50845 - corrwith fails when there are duplicate columnsr   )r$   r;   r3  )r$   r   r]   )r%   r   r^   Zabbr9   r   r   r  r$   r<   )r   ZngroupZcumcountr  r   )r  r  r   r   r  r   rn   r   r'   r>   Zset_axisr  r,   r
  )r   r  r   r   rR   r   rS   r0   Zexpected_dfZexpected_argsr  r1   r   r   r   test_duplicate_columnsU  s   "

r  )pr)   ior   numpyr   r   Zpandas._libsr   Zpandas.errorsr   Zpandasrp   r   r   r   r   r	   r
   Zpandas._testingZ_testingr,   Zpandas.corer   Zpandas.tests.groupbyr   Zpandas.utilr   tdr   r   r   r   r   r    r2   r   r   r   r   r*   rT   rU   r   r   r   r   r   r   r   r   r  r  r  r  r   rt   ru   r   r!  r   r   r   Zskip_if_no_scipyr'  r0  r;  rG  rI  ZALL_INT_NUMPY_DTYPESrT  rX  ra  rd  rf  rl  rr  rs  Zskip_if_32bitr   rw  infr&   r  r  r  r  r  r  r  r  r  r  filterwarningsr  r  r  ru  r  r  r  r  r  r  boolrf   rg   r  r  r  r  r  r  r   r   r   r   <module>   s    
 =-


 
F


	-
64
$$
,$
	
7

$<
j