o
    Û­jþØ  ã                   @   sŠ  d Z ddlZddlZddlmZ ddl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	„ Zd
d„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Z dd„ Z!ej" #ddd„ dd„ dd„ gg¡dd„ ƒZ$d d!„ Z%d"d#„ Z&ej" #d$d%g d&¢d'i fd(d)gd* e'e(e(e(d+œfd,d-gd* e'e(e(e(d+œfd%g d&¢d.d/d'ifd(d)gd* d.e(e(e(d+œfd,d-gd* d.d0d0d0d+œfg¡d1d2„ ƒZ)ej" #d3d%d4d5gd6d7gd8d9ggd'd'd:œfd(d;gd4 gd* d0fd,d4gd4 gd* d0d0d:œfg¡d<d=„ ƒZ*d>d?„ Z+d@dA„ Z,dBdC„ Z-dDdE„ Z.dFdG„ Z/dHdI„ Z0dJdK„ Z1dLdM„ Z2dNdO„ Z3dPdQ„ Z4dRdS„ Z5dTdU„ Z6ej" #dVdWd„ dXd„ dYd„ dZd„ d[d„ d\d„ g¡d]d^„ ƒZ7ej" #d_d`gedagd`db�fd`dcgedagd4ggdgdggd`dcgdd�fg¡ej" #deg df¢¡ej" #dgg df¢¡ej" #dhg di¢¡djdk„ ƒƒƒƒZ8ej" #d_d`gedagd`db�fd`dcgedagd4ggdgdggd`dcgdd�fg¡ej" #dlg dm¢¡ej" #dne9e'e(g¡ej" #dhg di¢¡dodp„ ƒƒƒƒZ:dqdr„ Z;dsdt„ Z<ej" #dnej=ej>g¡ej" #dug dv¢¡dwdx„ ƒƒZ?dydz„ Z@ej" #d{e AeBd|ƒ¡e Cdd*¡ejDd}d*d~d�e Eg d€¢¡g¡d�d‚„ ƒZFdƒd„„ ZGd…d†„ ZHG d‡dˆ„ dˆƒZIG d‰dŠ„ dŠƒZJej" #d‹dŒd�ejKfdŽdad*gd�d�gd‘d’gfd�d“d„ fd�d”d„ fd•ejKfdad*gdadagd‘d’gfe Ld�d–¡e Ld•ejK¡e Ld�d—d„ ¡dad*gd‘d’gdadagfg¡d˜d™„ ƒZMdšd›„ ZNdœd�„ ZOej" #dždŸd gig d gd¡œg¡d¢d£„ ƒZPd¤d¥„ ZQd¦d§„ ZRd¨d©„ ZSdªd«„ ZTej" #d¬d­d„ d®d„ d¯d„ g¡d°d±„ ƒZUd²d³„ ZVej" #d¬d´d„ eVg¡dµd¶„ ƒZWd·d¸„ ZXej"jYd¹dº�d»d¼„ ƒZZG d½d¾„ d¾ƒZ[d¿dÀ„ Z\ej" #dÁd d dÂœdadÃgd`dŸgdÂœfdÄd idÄd`dŸgifdÅd idÅdadÃgifg¡dÆdÇ„ ƒZ]ej" #dÁd d–gd dÂœdÈdÉgfd d d–gdÂœdÊdËgfdÄd d–gidÌdÍgfg¡dÎdÏ„ ƒZ^dÐdÑ„ Z_dÒdÓ„ Z`dÔdÕ„ ZadÖd×„ ZbdØdÙ„ ZcdÚdÛ„ ZddÜdÝ„ Zeej" #dÞg dß¢dàgfg dá¢dâgfg¡dãdä„ ƒZfej" #dådædçdègfd%dédêgfg¡dëdì„ ƒZgej" #d¬g dí¢¡dîdï„ ƒZhej" #d¬d gdæd–gdcd%idðdñd¡œg¡dòdó„ ƒZiej" #dôd9dõgd9dögd6d÷ggd6d9gd÷dõdöggdøœfd9dõgd9dögdùd÷ggd9dùgdõdögd÷gdøœfd`dagd`dagdcd4gdcd*ggd`dcgdad4d*ggdøœfejjd`dagd`d4gdcd*gdcd*ggd`dcgdad4gd*gdøœej"jYdú�g¡dûdü„ ƒZkdýdþ„ Zldÿ�d „ Zm�d�d„ Zn�d�d„ Zo�d�d„ Zp�d�d„ Zq�d	�d
„ ZrdS (  zN
test .agg behavior / note that .apply is tested generally in test_groupby.py
é    N)Úpartial)ÚSpecificationError)Úis_integer_dtype)Ú	DataFrameÚIndexÚ
MultiIndexÚSeriesÚconcatÚto_datetime)ÚGroupingc                  C   s:   t g d¢g d¢dœƒ} |  d¡d }dd„ }| |¡ d S )N©ÚaÚbÚcr   ©é   é   é   é   )ÚkeyÚvaluer   r   c                 S   s   t | ƒdksJ ‚|  ¡ S ©Nr   )ÚlenÚsum©Úx© r   új/var/www/html/CropPilot/venv/lib/python3.10/site-packages/pandas/tests/groupby/aggregate/test_aggregate.pyÚ
dummy_func"   s   z3test_groupby_agg_no_extra_calls.<locals>.dummy_func)r   ÚgroupbyÚagg)ÚdfÚgbr   r   r   r   Útest_groupby_agg_no_extra_calls   s   r#   c                 C   s8   |   dd„ dd„ g¡}| d¡}| ¡ }t ||¡ d S )Nc                 S   ó   | j S ©N©Úyearr   r   r   r   Ú<lambda>*   ó    z&test_agg_regression1.<locals>.<lambda>c                 S   r$   r%   ©Úmonthr   r   r   r   r(   *   r)   Úmean©r   r    r,   ÚtmÚassert_frame_equal)ÚtsframeÚgroupedÚresultÚexpectedr   r   r   Útest_agg_regression1)   s   
r4   c                 C   s�   |   d¡d }d}tjt|d�� | dd„ ¡ W d   ƒ n1 s"w   Y  tjt|d�� | dd„ ¡ W d   ƒ d S 1 sAw   Y  d S )NÚAÚCzMust produce aggregated value©Úmatchc                 S   ó   |   ¡ S r%   )Údescriber   r   r   r   r(   5   ó    z#test_agg_must_agg.<locals>.<lambda>c                 S   s   | j d d… S ©Nr   ©Úindexr   r   r   r   r(   7   ó    )r   ÚpytestÚraisesÚ	Exceptionr    )r!   r1   Úmsgr   r   r   Útest_agg_must_agg0   s   ÿ"ÿrD   c                 C   sH   dd„ }| j  | j| jg¡ |¡}|  ddg¡ ¡ d }t ||¡ d S )Nc                 S   r9   r%   ©r   r   r   r   r   r(   ;   r;   z(test_agg_ser_multi_key.<locals>.<lambda>r5   ÚBr6   )r6   r   r5   rF   Ú	aggregater   r.   Úassert_series_equal)r!   ÚfÚresultsr3   r   r   r   Útest_agg_ser_multi_key:   s   rK   c                  C   sö   t dddtjddddgdddtjddd	d
gdœtjg d¢ddgd�d�} t dddddddtjddddgd
ddddddtjd	dddgddddtjdddddtjdgddddtjdddddtjtjgdœƒ}| ddg¡}|dd g  ¡ }t || ¡ d S )!Né   é   r   r   r   é7   éM   é!   é,   é   )Úv1Úv2))r   é_   )r   éc   )r   rU   )r   rV   )ÚbigÚdamp)ÚblueÚdry)Úredr[   )r[   ÚwetÚby1Úby2©Únamesr=   é   é	   éX   rV   r[   rY   r   rW   é   r\   rZ   rU   rX   )rS   rT   r]   r^   rS   rT   )	r   ÚnpÚnanr   Úfrom_tuplesr   r,   r.   r/   )r3   r!   Úgr2   r   r   r   Ú$test_groupby_aggregation_mixed_dtypeA   s>   þ
õûôüÿri   c                  C   s¶   g d¢ddt jdgddt jdgddt jdgg} t| t g d¢¡d�}d}tjt|d�� |jddd	�}W d   ƒ n1 s=w   Y  |j	dd
�}tg d¢g d¢dœƒ}t 
||¡ d S )N)TTTFTF))r5   r   )r5   r   )rF   r   )rF   r   ©ÚdataÚcolumnsú+DataFrame.groupby with axis=1 is deprecatedr7   r   ©ÚlevelÚaxis)Únumeric_only)ç       @TTT)r   r   r   r   ©r   r   )re   rf   r   r   rg   r.   Úassert_produces_warningÚFutureWarningr   r   r/   )Úlstr!   rC   r"   r2   r3   r   r   r   Ú+test_groupby_aggregation_multi_level_columnr   s    üþÿrw   c                 C   s  | j | tj dd�}| jtjksJ ‚tg tjtg tjd�d�}t | 	¡ |¡ t | 
d¡|¡ tj| d¡|dd� |j |d tj dd�}t|jttg dtjd�d	�}t | 	¡ |¡ t | 
d¡|¡ d
}tjt|dd�� | tj	¡}W d   ƒ n1 s�w   Y  t ||¡ d S )NF©Ú
group_keys©Údtype©r{   r>   r   )Úcheck_index_typer5   )Únamer{   )rl   r{   r>   z:The behavior of DataFrame.sum with axis=None is deprecated)r8   Úcheck_stacklevel)r   re   rf   r{   Úfloat64r   r   r.   rH   r   r    Úapplyr   rl   Úfloatr/   rt   ru   )Útsr0   r1   ÚexpÚexp_dfrC   Úresr   r   r   Útest_agg_apply_cornerˆ   s&   ýÿr‡   c                 C   sÀ   t tj d¡ d¡ttdƒtd�tj	dddd�d	�}| 
d
d„ ¡}|jjd j}t| jt|ƒƒ|jjd< | d¡}| ¡ }t ||¡ t| jt|ƒƒ|jjd< | d¡}| ¡ }t ||¡ d S )Nr   )é   r   ÚABCDrz   z
2000-01-01rˆ   rF   ©ÚperiodsÚfreq©rl   r>   c                 S   r$   r%   r&   r   r   r   r   r(   ª   r)   z1test_agg_grouping_is_list_tuple.<locals>.<lambda>r   r,   )r   re   ÚrandomÚdefault_rngÚstandard_normalr   ÚlistÚobjectÚpdÚ
date_ranger   Ú_grouperÚ	groupingsÚgrouping_vectorr   r>   r    r,   r.   r/   Útuple)rƒ   r!   r1   Úgrouperr2   r3   r   r   r   Útest_agg_grouping_is_list_tuple£   s   ý

rš   c                 C   s0   |   ddg¡}| d¡}| ¡ }t ||¡ d S )Nr5   rF   r,   r-   )Ú multiindex_dataframe_random_datar1   r2   r3   r   r   r   Útest_agg_python_multiindex¹   s   
rœ   Úgroupbyfuncc                 C   r9   r%   )Úweekdayr   r   r   r   r(   Â   r;   r(   c                 C   r$   r%   r*   r   r   r   r   r(   Â   r)   c                 C   s¤   |   |¡}|d  d¡}|d  ¡ }t ||¡ | d¡}| ¡ }t ||¡ | dddddœ¡}t|d  ¡ |d  ¡ |d  	¡ |d	  
¡ dœƒ}t ||¡ d S )
Nr5   ÚstdÚvarr,   Úsem)r5   rF   r6   ÚDrF   r6   r¢   )r   r    rŸ   r.   rH   rG   r    r/   r   r,   r¡   )r0   r�   r1   r2   r3   r   r   r   Útest_aggregate_str_funcÁ   s    





üÿr£   c              
   C   sj   t g d¢ttjddddddgdd�dœƒ}| d¡ ¡ }t dd	d
gitddgdd�dd�}t ||¡ d S )N)r   r   r   r   r   r   r   r   r   ÚFloat64rz   ©r   r   r   r   g(µ¦yâ?r   ©r~   ©r>   r{   )	r   r   r“   ÚNAr   rŸ   r   r.   r/   )Úany_numeric_ea_dtyper!   r2   r3   r   r   r   Útest_std_masked_dtypeÞ   s   þÿÿrª   c              	   C   sÂ   | j dd�}d|› d�}|dv rt}d}t}n
t}d|› d�}d }tj||d	��/ tj||d	�� |j|d
d� W d   ƒ n1 sBw   Y  W d   ƒ d S W d   ƒ d S 1 sZw   Y  d S )Nr   ©ro   zDataFrameGroupBy.z with axis=1 is deprecated)ÚidxmaxÚidxminz;'[<>]' not supported between instances of 'float' and 'str'z
Operation z does not support axis=1r7   r   ©rp   )	r   Ú	TypeErrorru   Ú
ValueErrorr@   rA   r.   rt   r    )r!   Úreduction_funcr"   Úwarn_msgÚerrorrC   Úwarnr   r   r   Ú%test_agg_str_with_kwarg_axis_1_raisesí   s    ÿÿ"ÿrµ   z(func, expected, dtype, result_dtype_dictr   )rL   rM   rb   Úint64rŸ   gÙlßÌvø @r   ©ÚiÚjÚkr    g      @ÚInt64r¹   r€   c                 C   sª   t g d¢gd t ddgg d¢g¡d� ||dœ¡}d}tjt|d	�� |jd
d
d�}W d   ƒ n1 s5w   Y  | | ¡}t |gd g d¢d� |¡}t 	||¡ d S )N)r   r   r   r   rL   é   r   r   r   r·   ©rl   ))r   r¹   )r   r¹   rm   r7   r   rn   )
r   r   Úfrom_productÚastyper.   rt   ru   r   r    r/   )Úfuncr3   r{   Úresult_dtype_dictr!   rC   r"   r2   r   r   r   Ú(test_multiindex_groupby_mixed_cols_axis1ý   s   þýÿ
ÿrÂ   z&func, expected_data, result_dtype_dictr   r   é
   rd   é   é   )rÃ   rÅ   gÍ;fž ö?c                 C   sÆ   t t d¡ dd¡tg d¢dd�tg d¢dd�d	d
� ddi¡}d}tjt|d�� |j	ddd�}W d   ƒ n1 s;w   Y  | 
| ¡}t |tg d¢dd�tddgdd�d� |¡}t ||¡ d S )Nrd   r   r   ©r   r   r   Úyr¦   )rÃ   rÅ   rÃ   rÅ   r   r¶   )r>   rl   r{   rÃ   r»   rm   r7   r   r®   rÅ   )rk   r>   rl   )r   re   ÚarangeÚreshaper   r¿   r.   rt   ru   r   r    r/   )rÀ   Úexpected_datarÁ   r!   rC   r"   r2   r3   r   r   r   Útest_groupby_mixed_cols_axis1  s*   ü
ûÿ
ýürË   c           	      C   sà   |   d¡}dd„ }| |¡}| jdk ¡ }| jdk ¡ }t|jƒ}tt |g| ¡t	dƒdd�}t
 | d¡|¡ tt |g| ¡t	dƒdd�}t
 | d¡|¡ dd	„ }tƒ   | j¡ |¡}t|tƒsfJ ‚t|ƒd
ksnJ ‚d S )Nr5   c                 S   r$   r%   ©Úsize©Úserr   r   r   r(   ;  r)   z-test_aggregate_item_by_item.<locals>.<lambda>ÚfooÚbarÚBCD©r>   r~   c                 S   r$   r%   rÌ   rÎ   r   r   r   Úaggfun_1H  s   z-test_aggregate_item_by_item.<locals>.aggfun_1r   )r   r    r5   r   r   rl   r   re   Úarrayr‘   r.   rH   ÚxsÚassert_almost_equalr   Ú
isinstance)	r!   r1   Úaggfun_0r2   ÚfoosumÚbarsumÚKr„   rÔ   r   r   r   Útest_aggregate_item_by_item8  s   


rÝ   c                 C   sš   |   ddg¡}dd„ }tjtdd�� | |¡ W d   ƒ n1 s"w   Y  |g d¢  |¡}| jd d …g d¢f }|  ddg¡ |¡}t ||¡ d S )	Nr5   rF   c                 S   s   | j tdfv rtdƒ‚|  ¡ S )NÚstringúTest error message)r{   r’   r¯   r   rÎ   r   r   r   rÀ   S  s   ztest_wrap_agg_out.<locals>.funcrß   r7   )r¢   ÚEÚF)r5   rF   r¢   rà   rá   )r   r@   rA   r¯   rG   Úlocr.   r/   )Úthree_groupr1   rÀ   r2   Úexp_groupedr3   r   r   r   Útest_wrap_agg_outP  s   ÿrå   c                 C   s€   dt jfdt jfdt jfg}d}tjt|d�� |  d¡d  |¡}W d   ƒ n1 s,w   Y  t	g d¢ƒ}t 
|j|¡ d S )	Nr,   ÚmaxÚminú%is currently using SeriesGroupBy.meanr7   r5   r6   )r,   ræ   rç   )re   r,   ræ   rç   r.   rt   ru   r   r    r   Úassert_index_equalrl   )r!   ÚfuncsrC   r2   Úexp_colsr   r   r   Ú*test_agg_multiple_functions_maintain_order`  s   ÿrì   c                 C   s@   | j d d …dgf  | d ¡}| dd„ ¡}|jjdksJ ‚d S )Nr6   r5   c                 S   r9   r%   ©r,   r   r   r   r   r(   m  r;   z(test_series_index_name.<locals>.<lambda>)râ   r   r    r>   r~   )r!   r1   r2   r   r   r   Útest_series_index_namek  s   rî   c                     s®   t tj d¡ d¡tjdddd�g d¢d�‰ ˆ  d	¡ d
t	tj
dd�t	tj
dd�gi¡} tjdd	dd�}t ddg¡}t ‡ fdd„dD ƒ¡j}t |||d�}t | |¡ d S )Nr   ©éè  r   ú1/1/2012Úsrð   )rŒ   r‹   ©r5   rF   r6   ©r>   rl   Ú3minr5   ç§èH.ÿï?©Úqçâé•²q¼?r¼   )r5   Úquantilec                    ó"   g | ]}ˆ   d ¡jj|d�j‘qS ©rõ   r÷   ©Úresampler5   rú   Úvalues©Ú.0rø   ©r!   r   r   Ú
<listcomp>~  ó   " z9test_agg_multiple_functions_same_name.<locals>.<listcomp>©rö   rù   r�   )r   re   rŽ   r�   r�   r“   r”   rþ   r    r   rú   r   rg   rÕ   ÚTr.   r/   )r2   Úexpected_indexÚexpected_columnsÚexpected_valuesr3   r   r  r   Ú%test_agg_multiple_functions_same_nameq  s&   ý
ÿÿþÿr
  c               	      sÞ   t tj d¡ d¡tjddddd�tg d¢d	d
�d�‰ ˆ  d¡ 	ddt
tjdd�t
tjdd�gi¡} tjddddd�}tjg d¢g d¢d�}t ‡ fdd„dD ƒ¡j}t ˆ  d¡j ¡ |g¡}t |||d�}t | |¡ d S )Nr   rï   rñ   rò   rð   Údti)rŒ   r‹   r~   ró   Úalphar¦   rô   rõ   r5   Úohlcrö   r÷   rù   r¼   ))r5   r  Úopen)r5   r  Úhigh)r5   r  Úlow)r5   r  Úclose©r5   rú   r5   r  )r  NNr_   c                    rû   rü   rý   r   r  r   r   r  ž  r  zKtest_agg_multiple_functions_same_name_with_ohlc_present.<locals>.<listcomp>r  r�   )r   re   rŽ   r�   r�   r“   r”   r   rþ   r    r   rú   r   rg   rÕ   r  Úhstackr5   r  r.   r/   )r2   r  r  Únon_ohlc_expected_valuesr	  r3   r   r  r   Ú7test_agg_multiple_functions_same_name_with_ohlc_present†  s2   ý
 ÿ÷ÿþÿÿr  c                 C   s„   | j ddgd�} ddg}ddg}|  d¡d  |¡}|  d¡d  |¡}t ||¡ |  d¡ |¡}|  d¡ |¡}t ||¡ d S )	NrF   r6   r½   )rÐ   r,   rŸ   )rŸ   rŸ   r5   r¢   )Údropr   r    r.   r/   )r!   rê   Úex_funcsr2   r3   r   r   r   Ú-test_multiple_functions_tuples_and_non_tuples©  s   r  c           
      C   s0  |   d¡}| dddœ¡}| dddœ¡}t||gddgdd�}|jdddd�jddd	�}ddgddgdœ}| |¡}t ||¡ | dddgdœ¡}| dddgdœ¡}t ||¡ d
d„ }dd„ }d}	tj	t
|	d�� ddddœdœ}| |¡ W d   ƒ n1 s„w   Y  dg||gdœ}| |¡ d S )Nr5   r,   ©r6   r¢   rŸ   r   )Úkeysrp   r   r®   rn   c                 S   ó
   t  | ¡S r%   ©re   r,   r   r   r   r   Ú	numpymeanÍ  s   
z:test_more_flexible_frame_multi_function.<locals>.numpymeanc                 S   ó   t j| dd�S )Nr   )Úddof)re   rŸ   r   r   r   r   ÚnumpystdÐ  ó   z9test_more_flexible_frame_multi_function.<locals>.numpystdúnested renamer is not supportedr7   ©rÐ   rÑ   )r   r    r	   Ú	swaplevelÚ
sort_indexrG   r.   r/   r@   rA   r   )
r!   r1   ÚexmeanÚexstdr3   Údr2   r  r   rC   r   r   r   Ú'test_more_flexible_frame_multi_functionº  s(   

þr)  c                 C   sð   |   d¡}dddœddidœ}d}tjt|d�� | |¡ W d   ƒ n1 s(w   Y  dddœddœ}tjt|d�� | |¡ W d   ƒ n1 sLw   Y  dddœddœ}tjt|d�� | |¡ W d   ƒ d S 1 sqw   Y  d S )	Nr5   r,   rŸ   r#  r   r  r"  r7   )r   r@   rA   r   rG   )r!   r1   r(  rC   r   r   r   Ú test_multi_function_flexible_mixÞ  s   
ÿÿ"ÿr*  c                  C   sš   t g d¢g d¢g d¢dœƒ} |  d¡}tddgdd�}|d	  d
d„ ¡}tddg|d	d�}t ||¡ |d  dd„ ¡}tddg|dd�}t ||¡ d S )N©r   r   r   r   ©r   r   r   r   )NNr   r   ©r   r   r   r   r   r   r¦   r   c                 S   s   | dk  ¡ S r   ©Úallr   r   r   r   r(   ý  ó    z1test_groupby_agg_coercing_bools.<locals>.<lambda>FTrÓ   r   c                 S   s   |   ¡  ¡ S r%   )Úisnullr/  r   r   r   r   r(     r0  )r   r   r   rG   r   r.   rH   )ÚdatÚgpr>   r2   r3   r   r   r   Útest_groupby_agg_coercing_boolsö  s   
r4  c                  C   sb   t g d¢g d¢dœƒ} |  d¡dg  ddi¡}t dddgiddgd	�jdd
d�}t ||¡ d S )N)r5   r5   rF   rF   rF   )r   r   r   r   r   ©r5   rF   r5   rF   r   r   r   r=   r   r®   )r   r   r    Úrename_axisr.   r/   )r2  r2   r3   r   r   r   Ú"test_groupby_agg_dict_with_getitem  s   "r7  c                  C   sj   t g d¢g d¢g d¢gg d¢d�} |  d¡}| ddi¡}t dd	d
gitddgdd�d�}t ||¡ d S )Nr   )r   r   r   rL   )r   r   rL   r¼   r   r½   r   r   r   rL   r   r   r   r¦   r=   ©r   r   r    r   r.   r/   ©r!   r"   r2   r3   r   r   r   Ú!test_groupby_agg_dict_dup_columns  s   þ
 r:  Úopc                 C   r9   r%   rE   r   r   r   r   r(     r;   c                 C   r9   r%   )Úcumsumr   r   r   r   r(      r;   c                 C   ó
   |   d¡S ©Nr   ©Ú	transformr   r   r   r   r(   !  ó   
 c                 C   r=  ©Nr<  r?  r   r   r   r   r(   "  rA  c                 C   r=  r>  ©r    r   r   r   r   r(   #  rA  c                 C   r=  rB  rC  r   r   r   r   r(   $  rA  c                 C   sd   t ddgddgdœƒ}| d¡d }| | d¡ƒd j}t|ƒs"J ‚| | d¡ƒj}t|ƒs0J ‚d S )Nr   FTr¥   r   r   )r   Ú	set_indexr   r{   r   )r;  r!   rò   r2   r   r   r   Útest_bool_agg_dtype  s   rE  zkeys, agg_indexr   r   r¦   r   r_   Úinput_dtype)ÚboolÚint32r¶   Úfloat32r€   Úresult_dtypeÚmethod)r�   rG   r@  c           
         sª   t dgdgdgdœƒ}|d  |¡|d< t| | ¡dg |ƒ}|‡ fdd„ƒ}|dkr1t d	d¡n|}t d|d jd	 gi|d
� ˆ ¡}	|dkrMd	g|	j_t	 
||	¡ d S )Nr   r   Tr-  r   c                    ó   |   ˆ ¡jd S r   ©r¿   Úilocr   ©rJ  r   r   r(   I  ó    z2test_callable_result_dtype_frame.<locals>.<lambda>r@  r   r=   r�   )r   r¿   Úgetattrr   r“   Ú
RangeIndexrN  rl   r`   r.   r/   )
r  Ú	agg_indexrF  rJ  rK  r!   r;  r2   r  r3   r   rO  r   Ú test_callable_result_dtype_frame4  s   ÿ
rT  Úinput)Tr   ç      ð?r{   c           
         s‚   t dgdg|gdœƒ}t| | ¡d |ƒ}|‡ fdd„ƒ}|dkr't dd¡n|}t|d jd g|dd	� ˆ ¡}	t 	||	¡ d S )
Nr   r   r-  r   c                    rL  r   rM  r   rz   r   r   r(   a  rP  z3test_callable_result_dtype_series.<locals>.<lambda>r@  r   rÓ   )
r   rQ  r   r“   rR  r   rN  r¿   r.   rH   )
r  rS  rU  r{   rK  r!   r;  r2   r  r3   r   rz   r   Ú!test_callable_result_dtype_seriesS  s    rW  c                  C   sR   t g d¢g d¢dœƒ} |  d¡ g d¢¡}|jjd }tg d¢ƒ}t ||¡ d S )Nr+  r   r5  r5   )r   ræ   r,   r  rç   r   )r   r   r    rl   Úlevelsr   r.   ré   )r!   r†   r2   r3   r   r   r   Ú#test_order_aggregate_multiple_funcsg  s
   rY  c                 C   sÀ   t g d¢ddtjddtjgdœ| d�}| d¡}| ¡ }t g d	¢tjgd
 dgd
 dgd
 gt dgg d¢g¡tg d¢| dd�| d�}t 	||¡ |jddd�}| ¡ }| 
¡ }t 	||¡ d S )N)r   r   r   r   r   r   é   rR   rÃ   rÅ   r¥   rz   r   )rZ  rZ  rR   rR   r   r   )r  r  r  r  r   ©r{   r~   )rl   r>   r{   F©Úas_index)r   r“   r¨   r   r  r   r¾   r   r.   r/   Úreset_index)r©   r!   r"   r2   r3   Úgb2Úresult2Ú	expected2r   r   r   Útest_ohlc_ea_dtypess  s"   þ
"ürb  Úhow)ÚfirstÚlastrç   ræ   r,   Úmedianc                 C   st   t dddgdœƒ}| d¡ d|i¡}|j | ¡|_| d¡ d|i¡}|dvr0|j tj¡|_tj||dd	� d S )
Nl   &tLWHd~ r   r   ©r   rÇ   rÇ   r   )r,   rf  T)Úcheck_exact)	r   r   r    r   r¿   re   r¶   r.   r/   )r{   rc  r!   r3   r2   r   r   r   Útest_uint64_type_handling‰  s   ri  c                  C   sb   d} t g d¢g d¢dœƒ}tjt| d�� | d¡ ddg¡ W d   ƒ d S 1 s*w   Y  d S )NzFunction names©r   r   r   r   r   r5  r7   r5   rç   )r   r@   rA   r   r   r    )rC   r!   r   r   r   Útest_func_duplicates_raises—  s
   "ÿrk  r>   ÚabcÚ2020r¢   rŠ   ))r   r   )r   r   )r   r   c                 C   s\   t g d¢g d¢dœ| d�}| d¡ dtji¡}t ddgddgdœƒ d¡}t ||¡ d S )	N©r   r   r   rÆ   )Úgroupr   r=   ro  r   r   r   )r   r   r    r   ÚnuniquerD  r.   r/   )r>   r!   r2   r3   r   r   r   Ú$test_agg_index_has_complex_internalsŸ  s   rq  c                  C   s`   t g d¢g d¢g d¢dœƒ} |  d¡ ¡ }t ddgddgdœtd	d
gdd�d�}t ||¡ d S )N)r   r   r   r   r   )ÚoneÚtworr  rs  rr  )Úthreert  rt  Úsixru  ©Úkey1Úkey2Úkey3rw  rr  ru  )rx  ry  r   r   r¦   r=   )r   r   rç   r   r.   r/   ©r!   r2   r3   r   r   r   Útest_agg_split_block°  s   ýÿþr{  c               	   C   sž   t tjddd�g d¢g d¢g d¢tjddd�g d¢dœƒ t¡} |  g d¢¡ ¡ }t t d¡gd	gd
gdgt d¡gd
gdœt 	dg¡td�}t
 ||¡ d S )NÚ2000r   )r‹   )r   r   r   r(  r   )r   r   r(  Úe)r5   rF   r6   r¢   rà   rá   )r   r   r   r   r   r   r   r   r§   )r   r“   r”   r¿   r’   r   rç   Ú	Timestampre   rÕ   r.   r/   rz  r   r   r   Ú#test_agg_split_object_part_datetimeÁ  s0   úÿ	÷


ú
ör  c                   @   sV   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zej 	d	e
jd
dd�dd
dgg¡dd„ ƒZdS )ÚTestNamedAggregationSeriesc                 C   sˆ   t g d¢ƒ}| g d¢¡}|jddd�}tddgddgdœd	d
gt ddg¡d�}t ||¡ |jddd�}|d
d	g }t ||¡ d S )Nr   rj  r   rç   r¥   r   rM   r   r   r   r   r�   )r   r   ©r   r   r    r   re   rÕ   r.   r/   )Úselfr!   Úgrr2   r3   r   r   r   Útest_series_named_aggÞ  s   "ÿz0TestNamedAggregationSeries.test_series_named_aggc                 C   sp   t ddgƒ ddg¡}tjtdd�� | ¡  W d   ƒ n1 s!w   Y  | g ¡}tg d�}t ||¡ d S )Nr   r   r   úMust provider7   r½   )	r   r   r@   rA   r¯   r    r   r.   r/   ©r‚  rƒ  r2   r3   r   r   r   Útest_no_args_raisesë  s   
ÿ

z.TestNamedAggregationSeries.test_no_args_raisesc                 C   sX   t g d¢ƒ g d¢¡}|jddd�}tddgddgdœt ddg¡d�}t ||¡ d S )	N©r   r   r   ©r   r   r   r   r¥   r   r   r   r=   r�  )r‚  rƒ  r1   r3   r   r   r   Ú*test_series_named_agg_duplicates_no_raisesõ  s   $zETestNamedAggregationSeries.test_series_named_agg_duplicates_no_raisesc                 C   s`   t g d¢ƒ g d¢¡}|jdd„ dd„ d�}tddgddgdœt ddg¡d	�}t ||¡ d S )
Nrˆ  r‰  c                 S   ó   dS r   r   r   r   r   r   r(   þ  ó    z9TestNamedAggregationSeries.test_mangled.<locals>.<lambda>c                 S   r‹  ©Nr   r   r   r   r   r   r(   þ  rŒ  r¥   r   r   r=   r�  r†  r   r   r   Útest_mangledü  s   $z'TestNamedAggregationSeries.test_mangledÚinpÚanythingrç   ©ÚcolumnÚaggfunc)r�  rç   c                 C   sd   t g d¢ƒ}dt|ƒj› �}tjt|d�� | |j¡j|d� W d   ƒ d S 1 s+w   Y  d S )N)r   r   r   r   r   r   r   rL   zfunc is expected but received r7   ©r   )	r   ÚtypeÚ__name__r@   rA   r¯   r   rÿ   r    )r‚  r�  rò   rC   r   r   r   Útest_named_agg_nametuple  s
   
"ÿz3TestNamedAggregationSeries.test_named_agg_nametupleN)r–  Ú
__module__Ú__qualname__r„  r‡  rŠ  rŽ  r@   ÚmarkÚparametrizer“   ÚNamedAggr—  r   r   r   r   r€  Ý  s    
ýþr€  c                   @   sL   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dS )ÚTestNamedAggregationDataFramec                 C   sì   t g d¢g d¢g d¢dœƒ}| d¡jddd�}t d	d
gddgdœtddgdd�ddgd�}t ||¡ tjtj	dd�}| d¡jdddddd|fd�}t ddgddgddgd	d
gddgd d!gdœtddgdd�g d¢d�}t ||¡ d S )"N©r   r   r   r   r,  ©rL   r¼   rM   ra   ©ro  r5   rF   ro  ©r5   ræ   ©rF   ræ   )Úa_maxÚb_maxr   r   r¼   ra   r   r   r¦   r£  r¤  rô   éb   r÷   ©rF   rç   ©r5   rç   )r5   r,   r5   )Úb_minÚa_minÚa_meanr£  r¤  Úa_98rL   rM   r   r   ç      à?ç      @g\�Âõ(\ï?g×£p=
×@)
r   r   r    r   r.   r/   Ú	functoolsr   re   Ú
percentile)r‚  r!   r2   r3   Úp98r   r   r   Útest_agg_relabel  s>   ÿý
úúöz.TestNamedAggregationDataFrame.test_agg_relabelc                 C   sf   t g d¢g d¢g d¢dœƒ}| d¡jdi ddi¤Ž}t ddd	gitd
dgdd�d�}t ||¡ d S )Nrž  r,  rŸ  r   ro  zmy colr¡  r   r   r   r   r¦   r=   r   r8  ©r‚  r!   r2   r3   r   r   r   Útest_agg_relabel_non_identifier7  s   ÿ z=TestNamedAggregationDataFrame.test_agg_relabel_non_identifierc                 C   sð   t g d¢g d¢dœƒ}| d¡jddd�}t ddgddgdœtd	dgdd
�d�}t ||¡ tjtj	dd�}tjtj	dd�}d|_
d|_
t g d¢g d¢dœƒ}| d¡jd|fd|fd�}t ddgddgdœtddgdd
�d�}t ||¡ d S )Nrj  r   r5  r5   r¦  r¥   r   r   r   r¦   r=   é2   r÷   éF   Úquant50Úquant70)r   r   r   r   r   )r   r   r   r   rL   )Úcol1Úcol2r¸  r¹  )Úquantile_50Úquantile_70ç      ø?ç      @g333333û?gš™™™™™@r   r   )r   r   r    r   r.   r/   r®  r   re   r¯  r–  )r‚  r!   r1   r3   r¶  r·  Útestr   r   r   Útest_duplicate_no_raises@  s"   &
ÿþz6TestNamedAggregationDataFrame.test_duplicate_no_raisesc                 C   sx   t g d¢g d¢dœt ddgddgg¡d�}|jd	d
�jdddd�}t d	dgd	dgddgdœddgd�}t ||¡ d S )Nrj  r   r5  r5   rF   r   r   r=   r   r«   r¡  r§  )rF   r,   )ÚaaÚbbÚccr   r¼  ç      @)r   r   r¾   r   r    r.   r/   r²  r   r   r   Útest_agg_relabel_with_levelY  s   þÿÿz9TestNamedAggregationDataFrame.test_agg_relabel_with_levelc                 C   sÖ   t g d¢g d¢dœƒ}| d¡}d}tjt|d�� |jdd� W d   ƒ n1 s*w   Y  tjt|d�� | ¡  W d   ƒ n1 sEw   Y  tjt|d�� |jd	dd
� W d   ƒ d S 1 sdw   Y  d S )Nr‰  rˆ  r5  r5   r…  r7   r   )rÐ   r¢  r¥   )r   r   r@   rA   r¯   r    )r‚  r!   r1   r8   r   r   r   Útest_agg_relabel_other_raisesf  s   
ÿ
ÿ"ÿz;TestNamedAggregationDataFrame.test_agg_relabel_other_raisesc                 C   sf   t ddgddgdœƒ}t d¡}tjt|d�� | d¡jdd	� W d   ƒ d S 1 s,w   Y  d S )
Nr   r   r   r5  zColumn(s) ['C'] do not existr7   r5   )r6   r   ©r   )r   ÚreÚescaper@   rA   ÚKeyErrorr   r    )r‚  r!   r8   r   r   r   Útest_missing_raisess  s
   
"ÿz1TestNamedAggregationDataFrame.test_missing_raisesc                 C   s`   t ddgddgdœƒ}| d¡jt dd¡tjddd	�d
�}| d¡jddd
�}t ||¡ d S )Nr   r   r   r5  r5   rF   r   Úcountr‘  ©r   r   )rF   r   )rF   rË  ©r   r   r    r“   rœ  r.   r/   r²  r   r   r   Útest_agg_namedtupley  s   
ÿz1TestNamedAggregationDataFrame.test_agg_namedtuplec                 C   sv   t ddgddgddgdœƒ}| d¡jdd	d
„ fddd
„ fd�}t ddgddgdœtddgdd�d�}t ||¡ d S )Nr   r   r   r   r   ró   r5   rF   c                 S   r‹  r   r   r   r   r   r   r(   ƒ  rŒ  z<TestNamedAggregationDataFrame.test_mangled.<locals>.<lambda>r6   c                 S   r‹  r�  r   r   r   r   r   r(   ƒ  rŒ  rÌ  r¦   r=   r8  r²  r   r   r   rŽ  �  s   $&z*TestNamedAggregationDataFrame.test_mangledN)r–  r˜  r™  r±  r³  r¿  rÄ  rÅ  rÊ  rÎ  rŽ  r   r   r   r   r�    s    $	r�  zCagg_col1, agg_col2, agg_col3, agg_result1, agg_result2, agg_result3©©rÇ   r5   ræ   rÐ  )©rÇ   rF   r,   r¬  r­  g      @ç      @c                 C   s   t | ƒS r%   )ræ   r   r   r   r   r(   ”  r;   c                 C   r‹  r�  r   r   r   r   r   r(   •  rŒ  rÑ  ræ   c                 C   r‹  r�  r   r   r   r   r   r(   ž  rŒ  c                 C   sÚ   t g d¢g d¢g d¢dœƒ}t g d¢¡|_tddgdd	�}| d¡jd
d�}t dddgi|d�}	t ||	¡ d}
tj	t
|
d�� | d¡j| ||d�}W d   ƒ n1 sVw   Y  t |||dœ|d�}	t ||	¡ d S )Nrž  r,  rŸ  r   ©©r   ro  rÐ  rÑ  r   r   rÔ  r¦   rÏ  )r£  r£  r   r   r=   rè   r7   )Úcol_1Úcol_2Úcol_3)r   r   rg   rl   r   r   r    r.   r/   rt   ru   )Úagg_col1Úagg_col2Úagg_col3Úagg_result1Úagg_result2Úagg_result3r!   Úidxr2   r3   rC   r   r   r   Ú"test_agg_relabel_multiindex_columnˆ  s$   !ÿ
ÿÿÿrß  c                  C   sr   t g d¢g d¢g d¢dœƒ} t g d¢¡| _tjtdd�� |  d¡jd	d
� W d   ƒ d S 1 s2w   Y  d S )Nrž  r,  rŸ  r   rÓ  zdo not existr7   rÔ  ))ÚYr   ræ   r”  )	r   r   rg   rl   r@   rA   rÉ  r   r    r  r   r   r   Ú,test_agg_relabel_multiindex_raises_not_exist¾  s   ÿ"ÿrá  c                  C   sz   t g d¢g d¢g d¢dœƒ} t g d¢¡| _|  d¡jddd�}td	d
gdd�}t ddgddgdœ|d�}t ||¡ d S )Nrž  r,  rŸ  r   rÓ  rÔ  )rÐ  rç   r¥   r   r   r¦   r   r   r=   )	r   r   rg   rl   r   r    r   r.   r/   )r!   r2   rÞ  r3   r   r   r   Ú&test_agg_relabel_multiindex_duplicatesÉ  s   ÿ
ÿrâ  Úkwargsr   rç   rÌ  c                 C   sh   t g d¢g d¢g d¢dœƒ}| d¡ | ¡}t ddgtddgd	dd
�t ddgg¡d�}t ||¡ d S )Nrn  rˆ  ©r   r   r   r-  r   r   r   r   r¶   r[  r   rç   rô   )r   r   r    r   r   rg   r.   r/   )rã  r!   r2   r3   r   r   r   Ú test_groupby_aggregate_empty_keyÚ  s   ýrå  c                  C   s\   t g d¢g d¢g d¢dœƒ} |  d¡ dg i¡}t tdgg gg g gd�d�}t ||¡ d S )	Nrn  rˆ  rä  r-  r   r   )rX  Úcodesr½   ©r   r   r    r   r.   r/   rz  r   r   r   Ú-test_groupby_aggregate_empty_key_empty_returnç  s   rè  c                  C   s`   t g d¢d�} | jddgdd�jdtfd�}t d	gtg g gg g gddgd
�d�}t ||¡ d S )Nr-  r½   r   r   Frx   r   )r(  r(  r_   r�   )r   r   r    r‘   r   r.   r/   rz  r   r   r   Ú2test_groupby_aggregate_empty_with_multiindex_frameï  s   ÿré  c                  C   s`   t g d¢g d¢dœƒ} | jddd�}|jtjddd	�d
�}t g d¢g d¢dœƒ}t ||¡ d S )N)r   rÇ   Úzr   rÇ   rê  ©rV  çš™™™™™é?rr   g      @gÍÌÌÌÌÌ@ç      è?)r   Úvalr   Fr\  rî  rç   r‘  ©Úmin_val)r   rÇ   rê  )rV  rì  rí  )r   rð  rÍ  ©r!   r1   r2   r3   r   r   r   Ú9test_grouby_agg_loses_results_with_as_index_false_relabelù  s   ÿrò  c                  C   sp   t g d¢g d¢g d¢dœƒ} | jddgdd�}|jtjd	d
d�d�}t g d¢g d¢g d¢dœƒ}t ||¡ d S )N)r   rÇ   r   rÇ   r   r   )r   r   r   r   r   r   rë  )r   rw  rî  r   rw  Fr\  rî  rç   r‘  rï  ©r   r   rÇ   )r   r   r   )rV  rí  rì  )r   rw  rð  rÍ  rñ  r   r   r   ÚDtest_grouby_agg_loses_results_with_as_index_false_relabel_multiindex  s   ýÿÿrô  rÀ   c                 C   r9   r%   rí   ©rò   r   r   r   r(     r;   c                 C   r  r%   r  rõ  r   r   r   r(     rA  c                 C   r  r%   )re   Únanmeanrõ  r   r   r   r(     rA  c                 C   s˜   g d¢g d¢g}t |tjg d¢g d¢gddgd�d�}| t d	d
g¡¡ | ¡}dddœdddœdddœdœ}t |t d	d
g¡|jd�}t 	||¡ d S )N)r   r   r   )rL   rM   r   rn  )r   r   r   ÚSiskoÚJanewayr_   r½   r   r   rV  ç      @rs   r½  g      @rr   ))r   r   )r   r   )r   r   rô   )
r   r   Úfrom_arraysr   re   rÕ   r    rl   r.   r/   )rÀ   rk   r!   r2   Úexpected_dictr3   r   r   r   Útest_multiindex_custom_func  s   ÿþýrü  c                 C   r  ©NgÍÌÌÌÌÌì?r÷   ©re   r¯  rõ  r   r   r   Úmyfunc2  r!  rÿ  c                 C   r  rý  rþ  rõ  r   r   r   r(   6  r?   c                 C   sn   t g d¢g d¢g d¢dœƒ}| d¡jdd| fd�}t d	d
gddggddgtddgdd�d�}t ||¡ d S )N©ÚcatÚdogr  r  ©g333333"@g      @ç      #@ç      A@©çš™™™™™@rÒ  çÍÌÌÌÌÌ#@ç     Àh@©ÚkindÚheightÚweightr  )r  r,   r  )Úmean_heightÚperc90gš™™™™™"@g0»'5"@g      4@g5^ºI@r  r  r  r  r¦   r�   r8  )rÀ   Úanimalsr2   r3   r   r   r   Útest_lambda_named_agg6  s   ýÿ
ÿýr  c                  C   s¤   t t dgd ¡ dd¡tdƒtdƒd�} g d¢| d< |  d¡ d	d
„ ¡}dgdgdggddgddgddggg}t |tddgddd�tg d¢ƒd�}t 	||¡ d S )Nr   rb   r   ÚXYZrl  ©rk   rl   r>   )úgroup 1r  r   Úgroupingc                 S   r9   r%   )Útolistr   r   r   r   r(   S  r;   z,test_aggregate_mixed_types.<locals>.<lambda>r   r  r’   r[  )ÚXrà  ÚZrô   )
r   re   rÕ   rÉ   r‘   r   rG   r   r.   r/   )r!   r2   rÊ   r3   r   r   r   Útest_aggregate_mixed_typesM  s   "ÿ&
ýr  zNot implemented;see GH 31256©Úreasonc                  C   sf   dd„ } t dt g d¢¡iƒ}| g d¢¡ | ¡}t dtjdtjgdd�idd	gd
�}t ||¡ d S )Nc                 S   s   t | dkƒrdS tjS )Nr   r   )r/  r“   r¨   r   r   r   r   r“  f  s   z5test_aggregate_udf_na_extension_type.<locals>.aggfuncr5   rˆ  rn  r   r»   rz   r   r=   )r   r“   rÕ   r   r    r¨   r.   r/   )r“  r!   r2   r3   r   r   r   Ú$test_aggregate_udf_na_extension_type]  s
   	$r  c                   @   sB   e Zd Zdd„ Zdd„ Zejjdd�dd„ ƒZd	d
„ Z	dd„ Z
dS )ÚTestLambdaManglingc                 C   sl   t g d¢g d¢dœƒ}| d¡ ddd„ dd„ gi¡}t d	d	gd
d
gdœtd	d
gdd�d�}t ||¡ d S )Nrj  r   r5  r5   rF   c                 S   r‹  r   r   r   r   r   r   r(   u  rŒ  z/TestLambdaMangling.test_basic.<locals>.<lambda>c                 S   r‹  r�  r   r   r   r   r   r(   u  rŒ  r   r   ))rF   ú
<lambda_0>)rF   ú
<lambda_1>r¦   r=   r8  r²  r   r   r   Ú
test_basics  s    þzTestLambdaMangling.test_basicc                 C   sd   t g d¢ƒ g d¢¡}| dd„ dd„ g¡}ddgddgdœ}t|t ddg¡d	�}t ||¡ d S )
Nr   rj  c                 S   r‹  r   r   r   r   r   r   r(     rŒ  z?TestLambdaMangling.test_mangle_series_groupby.<locals>.<lambda>c                 S   r‹  r�  r   r   r   r   r   r(     rŒ  r   r   ©r  r  r=   r�  )r‚  rƒ  r2   Úexp_datar3   r   r   r   Útest_mangle_series_groupby}  s
   z-TestLambdaMangling.test_mangle_series_groupbyzGH-26611. kwargs for multi-agg.r  c                 C   sœ   ddd„}ddd„}t ddgƒ ddg¡ ||gd¡}tdgdgd	œƒ}t ||¡ t ddgƒ ddg¡j||gdd
d�}tdgdgd	œƒ}t ||¡ d S )Nr   c                 S   ó   |   ¡ | | S r%   rE   ©r   rÇ   r   r   r   r   r(   †  rP  z5TestLambdaMangling.test_with_kwargs.<locals>.<lambda>r   c                 S   s   |   ¡ ||  S r%   rE   r%  r   r   r   r(   ‡  rP  r   r   r¼   r!  rÃ   )r   é   rˆ   )r   )r   )r   r   r    r   r.   r/   )r‚  Úf1Úf2r2   r3   r   r   r   Útest_with_kwargs„  s   

"&z#TestLambdaMangling.test_with_kwargsc                 C   sÈ   t g d¢g d¢g d¢dœƒ}g d¢}t ddgdd	gd
dgdœtddgdd�|d�}|jdd�jtjddd„ d�tjddd�tjddd�d�}t ||¡ |jdd�jddd„ fddd�}t ||¡ d S )Nr   r  r  r
  )Úheight_sqr_minÚ
height_maxÚ
weight_maxç¤p=
×³T@ç      B@r  r  r  r	  r  r  r  r¦   rô   ©Úbyr  c                 S   ó   t  | d ¡S r<   ©re   rç   r   r   r   r   r(   ¨  r?   z=TestLambdaMangling.test_agg_with_one_lambda.<locals>.<lambda>r‘  ræ   r  c                 S   r1  r<   r2  r   r   r   r   r(   ±  r?   ©r  ræ   ©r  ræ   )r   r   r   r    r“   rœ  r.   r/   ©r‚  r!   rl   r3   Úresult1r`  r   r   r   Útest_agg_with_one_lambda�  s:   ýÿýùÿû
ýz+TestLambdaMangling.test_agg_with_one_lambdac              	   C   s  t g d¢g d¢g d¢dœƒ}g d¢}t ddgdd	gd
dgdd	gddgdœtddgdd�|d�}|jdd�jddd„ fddddd„ fddd„ fd�}t ||¡ |jdd�jtjddd„ d�tjddd�tjddd�tjddd„ d�tjdd d„ d�d�}t ||¡ d S )!Nr   r  r  r
  )r*  r+  r,  Úheight_max_2Ú
weight_minr-  r.  r  r  r  r	  r  rÒ  r  r  r  r¦   rô   r/  r  c                 S   r1  r<   r2  r   r   r   r   r(   Ö  r?   z=TestLambdaMangling.test_agg_multiple_lambda.<locals>.<lambda>r3  r4  c                 S   r  r%   ©re   ræ   r   r   r   r   r(   Ù  rA  r  c                 S   r  r%   r2  r   r   r   r   r(   Ú  rA  c                 S   r1  r<   r2  r   r   r   r   r(   á  r?   r‘  ræ   c                 S   r  r%   r:  r   r   r   r   r(   å  rA  c                 S   r  r%   r2  r   r   r   r   r(   æ  rA  )r   r   r   r    r.   r/   r“   rœ  r5  r   r   r   Útest_agg_multiple_lambda·  sF   ýÿû÷


ûÿù	z+TestLambdaMangling.test_agg_multiple_lambdaN)r–  r˜  r™  r   r#  r@   rš  Úxfailr)  r7  r;  r   r   r   r   r  r  s    

'r  c                  C   sZ   t g d¢g d¢dœƒ} |  d¡ ddd„ i¡}t dd	gd
dgdœƒ d¡}t ||¡ d S )N)ÚSÚWr>  )rV  rV  rr   r5  r5   rF   c                 S   s   |   | jd ¡S )Néÿÿÿÿ)Úgetr>   r   r   r   r   r(   î  rP  z+test_groupby_get_by_index.<locals>.<lambda>r=  r>  rV  rr   )r   r   r    rD  r.   r/   )r!   r†   r3   r   r   r   Útest_groupby_get_by_indexë  s   rA  zgrp_col_dict, exp_data)ÚnrÚcat_ordrL   rC  rB  c                 C   s®   t g d¢tdƒtdƒdœƒ}| dddœ¡}|d j ¡ |d< |jdd	d
� | ¡}tjddgddgd	ddd�}t ||d�}d|v rO|d j	}|d  |¡|d< t
 ||¡ d S )N©r   r   r   r   rL   r¼   rM   ra   ÚaabbccddÚaaaabbbb©rB  rC  r  Úcategory©r  rC  rC  r  F©Úobservedr   r   ©Ú
categoriesÚorderedr~   r{   )rk   r>   )r   r‘   r¿   r  Ú
as_orderedr   r    r“   ÚCategoricalIndexr{   r.   r/   )Úgrp_col_dictr"  Úinput_dfÚ	result_dfÚ	cat_indexÚexpected_dfr{   r   r   r   Ú test_groupby_single_agg_cat_colsó  s"   ýÿÿ
rV  )r   r   r   )rL   ra   r   )r   r   r   )rL   r   r(  r¥   )r   r(  c           
         s  t g d¢tdƒtdƒdœƒ}| dddœ¡}|d j ¡ |d< |jdd	d
� | ¡}tjddgddgd	ddd�}g }|  	¡ D ]\‰ }t
|tƒrS| ‡ fdd„|D ƒ¡ q=| ˆ |g¡ q=t t|ƒ¡}t |||d�}|jD ]}	t
|	tƒrƒd|	v rƒ||	  |d j¡||	< qlt ||¡ d S )NrD  rE  rF  rG  rH  rI  rC  r  FrJ  r   r   rL  c                 3   s   � | ]}ˆ |gV  qd S r%   r   )r  r   ©rº   r   r   Ú	<genexpr><  s   € z6test_groupby_combined_aggs_cat_cols.<locals>.<genexpr>r  )r   r‘   r¿   r  rO  r   r    r“   rP  ÚitemsrØ   ÚextendÚappendr   rg   r˜   rl   r{   r.   r/   )
rQ  r"  rR  rS  rT  Úmulti_index_listÚvÚmulti_indexrU  Úcolr   rW  r   Ú#test_groupby_combined_aggs_cat_cols  s0   ýÿÿ

€r`  c                  C   sT   t g d¢g d¢dœƒ} |  d¡}| dg¡}|j d¡|_| d¡}t ||¡ d S )Nr+  )r   r   r   r   r¥   r   r<  r?  )r   r   r    rl   Ú	droplevelr.   r/   )r!   rh   r2   r3   r   r   r   Útest_nonagg_aggJ  s   

rb  c                  C   sh   t ddgt ddddddd¡t d	dddddd¡gd
œƒ} |  d¡j ¡ }|  d¡d }t ||¡ d S )Nr  rà  iÕ  r   rÃ   rˆ   é   i`= i½  r5  r5   rF   )r   Údatetimer   rF   ræ   rD  r.   rH   rz  r   r   r   Útest_aggregate_datetime_objectsW  s   þþÿ	re  c                  C   s|   t g d¢g d¢g d¢dœƒ} | j d¡| _|  ddg¡}|j dd	„ ¡}tjd
dgdd�}tddg|dd�}t	 
||¡ d S )N)r   r   r   ró  ©r   r   r   )Úc0Úc1ÚpÚOrg  rh  c                 S   s   t | dkƒS r   r.  r   r   r   r   r(   n  r0  z1test_groupby_index_object_dtype.<locals>.<lambda>)r   r   rg  )rg  rh  r_   FTri  rÓ   )r   r>   r¿   r   ri  r    r   rg   r   r.   rH   )r!   r1   r†   r  r3   r   r   r   Útest_groupby_index_object_dtypei  s   ÿrk  c                  C   sT   dd„ } t dgt d¡gd�}| dd„ ¡ | ¡}t dggdgd�}t ||¡ d S )	Nc                 S   s   |   ¡  ¡ rd S t | ¡S r%   )Úisnar/  re   r   rÎ   r   r   r   rÀ   {  s   
z)test_timeseries_groupby_agg.<locals>.funcrV  z2018-01-16 00:00:00+00:00r=   c                 S   r‹  r�  r   r   r   r   r   r(   �  rŒ  z-test_timeseries_groupby_agg.<locals>.<lambda>r   )r   r“   r~  r   r    r.   r/   )rÀ   r!   r†   r3   r   r   r   Útest_timeseries_groupby_aggx  s
   rm  c                 C   sÞ   | t jv rt | ¡j}| t jv rt | ¡j}| t jv r#t |  ¡ ¡j}| t j	v r0t |  ¡ ¡j}t
dgdgtj|g| d�dœƒ}dgdgg}tj|dd�}t
dtj|g| d�i|d�}| d	d
g¡ dd„ ¡}t  ||¡ d S )Nr   r   rz   rv  )rw  rx  r_   ry  r=   rw  rx  c                 S   s   | S r%   r   r   r   r   r   r(   ž  rŒ  z,test_groupby_agg_precision.<locals>.<lambda>)r.   ÚALL_INT_NUMPY_DTYPESre   Úiinforæ   ÚFLOAT_NUMPY_DTYPESÚfinfoÚFLOAT_EA_DTYPESÚlowerÚALL_INT_EA_DTYPESr   r“   rÕ   r   rú  r   r    r/   )Úany_real_numeric_dtypeÚ	max_valuer!   Úarraysr>   r3   r2   r   r   r   Útest_groupby_agg_precision‡  s*   



ýÿÿrx  c                 C   s†   | dv rd S t ddgdtjggƒ}| d¡ | ¡}| d¡ d| i¡}| dv r3tj||d dd� d S t ||¡ t |j|j¡ d S )N)ÚcorrwithÚnthr   r   )rÍ   ÚngroupF)Úcheck_names)	r   re   rf   r   r    r.   rH   r/   Údtypes)r±   ÚobjÚresult_reduced_seriesÚresult_reduced_framer   r   r   Ú test_groupby_aggregate_directory¢  s   

ÿÿr�  c                  C   sJ   t g d¢dd�} t dgdt dg¡d�}|  g d¢¡ ¡ }t ||¡ d S )N)z1 dayz3 daysÚNaTútimedelta64[ns]rz   z2 daysr   r|   ©r   r   r   )r   re   rÕ   r   r,   r.   rH   )rk   r3   r2   r   r   r   Útest_group_mean_timedelta_nat¸  s   r…  zinput_data, expected_output)z2021-01-01T00:00r‚  z2021-01-01T02:00z2021-01-01T01:00)z2021-01-01T00:00-0100r‚  z2021-01-01T02:00-0100z2021-01-01T01:00-0100c                 C   sF   t t| ƒƒ}t t|t dg¡d�ƒ}| g d¢¡ ¡ }t ||¡ d S )Nr   r=   r„  )r
   r   re   rÕ   r   r,   r.   rH   )Ú
input_dataÚexpected_outputrk   r3   r2   r   r   r   Útest_group_mean_datetime64_natÂ  s   rˆ  zfunc, outputr,   y       @      2@y      $@      6@y      D@     €V@y      I@     €[@c                 C   sN   t t d¡ dd¡ ddg¡ƒ}| |jd ¡ | ¡}t |ƒ}t 	||¡ d S )NrÅ   rÃ   r   r   ù               @)
r   re   rÈ   rÉ   Údotr   r>   r    r.   rH   )rÀ   Úoutputrk   r2   r3   r   r   r   Útest_groupby_complexØ  s    rŒ  )rç   ræ   r    c                 C   sn   t t d¡ dd¡ ddg¡ƒ}d}tjt|d�� | |j	d ¡ 
| ¡ W d   ƒ d S 1 s0w   Y  d S )NrÅ   rÃ   r   r   r‰  zNo matching signature foundr7   )r   re   rÈ   rÉ   rŠ  r@   rA   r¯   r   r>   r    )rÀ   rk   rC   r   r   r   Útest_groupby_complex_raisesã  s
    "ÿr�  Úprodrf  c                 C   sš   t g d¢g d¢g d¢dœƒ}d}tjt|d�� |jddd	�}W d   ƒ n1 s)w   Y  tjtd
d�� | | ¡ W d   ƒ d S 1 sFw   Y  d S )Nrn  ©r   r   rL   )r¼   rM   ra   r-  rm   r7   r   r   r®   z"axis other than 0 is not supported)	r   r.   rt   ru   r   r@   rA   ÚNotImplementedErrorr    )rÀ   r!   rC   r"   r   r   r   Útest_multi_axis_1_raisesì  s   ÿ"ÿr‘  ztest, constantr5   rF   r6   rs   rˆ   )Úmarksc                 C   s<   t | ƒ}| d¡ tj¡}t |ƒ}| d¡}t ||¡ d S r   )r   r   r    r   ÚmoderD  r.   r/   )r¾  ÚconstantÚdf1r2   r3   r   r   r   Útest_agg_of_mode_listù  s
   
r–  c                  C   sÖ   t g d¢g d¢dœƒ} |  d¡}ddd„}dd
d„}d}tjt|d�� |j||gdddd� W d   ƒ n1 s9w   Y  |j||gddd�}t ddgddgddggtg d¢dd�t ddg¡d�}t	 
||¡ d S )Nrˆ  r-  rg  rÇ   r   r   c                 S   r$  r%   rE   ©r   r   r   r   r   r   Úfoo1  ó   z@test_dataframe_groupy_agg_list_like_func_with_args.<locals>.foo1r   c                 S   r$  r%   rE   ©r   r   r   r   r   r   Úfoo2  r™  z@test_dataframe_groupy_agg_list_like_func_with_args.<locals>.foo2ú/foo1\(\) got an unexpected keyword argument 'b'r7   r   r   rÌ  rÆ  ra   rb   rÃ   r¦   )r   r˜  )r   r›  rô   ©r   r   ©r   r   )r   r   r@   rA   r¯   r    r   r   rg   r.   r/   )r!   r"   r˜  r›  rC   r2   r3   r   r   r   Ú2test_dataframe_groupy_agg_list_like_func_with_args  s   


ÿýrŸ  c                  C   sÂ   t g d¢ƒ} |  | ¡}ddd„}ddd„}d	}tjt|d
�� |j||gdddd� W d   ƒ n1 s4w   Y  |j||gddd�}tddgddgddggtg d¢ƒddgd�}t 	||¡ d S )Nrˆ  r   r   c                 S   r$  r%   rE   r—  r   r   r   r˜  /  r™  z=test_series_groupy_agg_list_like_func_with_args.<locals>.foo1r   c                 S   r$  r%   rE   rš  r   r   r   r›  2  r™  z=test_series_groupy_agg_list_like_func_with_args.<locals>.foo2rœ  r7   r   r   rÌ  rÆ  ra   rb   rÃ   r˜  r›  rô   r�  rž  )
r   r   r@   rA   r¯   r    r   r   r.   r/   )rò   Úsgbr˜  r›  rC   r2   r3   r   r   r   Ú/test_series_groupy_agg_list_like_func_with_args*  s   


ÿ$ÿr¡  c                  C   s˜   t g d¢g d¢g d¢dœƒ} |  ddg¡}|ddg }| dd	„ ¡}td
dgddggdd
gdd
ggddgd�}t ddgddgdœ|d�}t ||¡ d S )Nrn  )r   r   r   )rL   r¼   rM   r-  r   r   r   c                 S   r9   r%   rE   r   r   r   r   r(   E  r;   z.test_agg_groupings_selection.<locals>.<lambda>r   r   r   r   r   )rX  ræ  r`   r¼   rR   rM   rÌ  r=   rç  )r!   r"   Úselected_gbr2   r>   r3   r   r   r   Útest_agg_groupings_selection@  s   "ÿr£  c                  C   sb   t g d¢g d¢dœƒ} | jddd�d }| dd	g¡}t d
dgddgddgdœƒ}t ||¡ d S )Nrn  r�  r¥   r   Fr\  r   r   r,   r   r   rM   rL   rÃ  rù  )r   r   r,   )r   r   r    r.   r/   r9  r   r   r   Ú?test_agg_multiple_with_as_index_false_subset_to_a_single_columnM  s
   r¤  c                  C   sr   t g d¢g d¢g d¢dœƒ} | jddgdd�}| d	g¡}t g d
¢g d¢g d¢gt g d¢¡d�}t ||¡ d S )Nr‰  )r   r   r   )r   rL   r¼   )Úa1Úa2r   r¥  r¦  F)r0  r]  r   )r   r   r   )r   r   rL   )r   r   r¼   ))r¥  Ú )r¦  r§  )r   r   rj   )r   r   r    r   rg   r.   r/   r9  r   r   r   Ú&test_agg_with_as_index_false_with_listV  s   þr¨  c                  C   sj   t dt d¡t d¡t d¡dœiƒ} t tg d¢dd�g d¢d	œƒ}| d
¡}|jdd�}t || ¡ d S )NÚtdú0 days 01:00:00ú0 days 01:15:00rf  )rª  z0 days 00:15:00r«  rƒ  rz   )r   r   r   )r©  Úgrpsr¬  )r©  r<  )r©  )r   r“   Ú	Timedeltar   r   r    r.   r/   )r3   r!   r"   r2   r   r   r   ÚBtest_groupby_agg_extension_timedelta_cumsum_with_named_aggregationc  s&   ýÿÿ	þûÿ
	r®  c                  C   sx   dd„ } t tjddgg d¢d�ddgdœƒ}d}tjt|d	�� |jd
dd� | ¡ W d   ƒ d S 1 s5w   Y  d S )Nc                 S   s   t | ƒdkr
tdƒ‚t | ƒS )Nr   úlength must not be 0)r   r°   r   r   r   r   rÀ   ~  s   z2test_groupby_aggregation_empty_group.<locals>.funcr   r-  )rM  r   r5  r¯  r7   r5   FrJ  )r   r“   ÚCategoricalr@   rA   r°   r   r    )rÀ   r!   rC   r   r   r   Ú$test_groupby_aggregation_empty_group|  s   ÿ"ÿr±  )sÚ__doc__rd  r®  r   rÇ  Únumpyre   r@   Úpandas.errorsr   Úpandas.core.dtypes.commonr   Úpandasr“   r   r   r   r   r	   r
   Úpandas._testingÚ_testingr.   Úpandas.core.groupby.grouperr   r#   r4   rD   rK   ri   rw   r‡   rš   rœ   rš  r›  r£   rª   rµ   Úintr‚   rÂ   rË   rÝ   rå   rì   rî   r
  r  r  r)  r*  r4  r7  r:  rE  rT  rG  rW  rY  rb  r¶   Úuint64ri  rk  rP  r‘   Úinterval_rangeÚperiod_rangerg   rq  r{  r  r€  r�  r,   rœ  rß  rá  râ  rå  rè  ré  rò  rô  rü  rÿ  r  r  r<  r  r  rA  rV  r`  rb  re  rk  rm  rx  r�  r…  rˆ  rŒ  r�  r‘  Úparamr–  rŸ  r¡  r£  r¤  r¨  r®  r±  r   r   r   r   Ú<module>   s¾    
1ÿ
úþ
 üþ
	#$
úþ
(þþÿÿ(þþ

üþ
	5vú
	
ú
	úïþ


ÿ


yýþ
ýþ
(
þþûþ
	ÿ

ÿ

**0ýüþ

	