
    d                     h   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 Zd	 Zd
 Zd Zd Zd Zd Zd Z d Z!ej"        #                    dd d d gg          d             Z$d Z%d Z&ej"        #                    ddg ddi fddgdz  e'e(e(e(dfd d!gdz  e'e(e(e(dfdg dd"d#difddgdz  d"e(e(e(dfd d!gdz  d"d$d$d$dfg          d%             Z)ej"        #                    d&dd'd(gd)d*gd+d,ggddd-fdd.gd'z  gdz  d$fd d'gd'z  gdz  d$d$d-fg          d/             Z*d0 Z+d1 Z,d2 Z-d3 Z.d4 Z/d5 Z0d6 Z1d7 Z2d8 Z3d9 Z4ej"        #                    d:d; d< d= d> d? d@ g          dA             Z5ej"        #                    dBdCg edDgdCE          fdCdFg edDgd'ggdgdggdCdFgG          fg          ej"        #                    dHg dI          ej"        #                    dJg dI          ej"        #                    dKg dL          dM                                                 Z6ej"        #                    dBdCg edDgdCE          fdCdFg edDgd'ggdgdggdCdFgG          fg          ej"        #                    dNg dO          ej"        #                    dPe7e'e(g          ej"        #                    dKg dL          dQ                                                 Z8dR Z9dS Z:ej"        #                    dPej;        ej<        g          ej"        #                    dTg dU          dV                         Z=dW Z>ej"        #                    dX ej?         e@dY                     ejA        dd           ejB        dZdd[\           ejC        g d]          g          d^             ZDd_ ZEd` ZF G da db          ZG G dc dd          ZHej"        #                    dedfdgejI        fdhdDdgdd'gdidjgfdgdk fdgdl fdhdDdgdDdDgdidjgf ejJ        dgdm           ejJ        dnejK                   ejJ        dgdo           dDdgdidjgdDdDgfg          dp             ZLdq ZMdr ZNej"        #                    dsdtdugig dugdvg          dw             ZOdx ZPdy ZQdz ZRd{ ZSej"        #                    d|d} d~ d g          d             ZTd ZUej"        #                    d|d eUg          d             ZVd ZWej"        X                    d          d             ZY G d d          ZZd Z[ej"        #                    ddududdDdgdCdtgdfdduiddCdtgifdduiddDdgifg          d             Z\ej"        #                    ddudmgdudddgfdududmgdddgfddudmgiddgfg          d             Z]d Z^d Z_d Z`d Zad Zbd Zcej"        #                    dg ddgfg ddgfg          d             Zdej"        #                    ddddgfdddgfg          d             Zeej"        #                    d|g d          d             Zfej"        #                    d|dugddmgdFdidddvg          d             Zgej"        #                    dd,dgd,dgd)dggd)d,gdddggdfd,dgd,dgddggd,dgddgdgdfdCdDgdCdDgdFd'gdFdggdCdFgdDd'dggdf ejh        dCdDgdCd'gdFdgdFdggdCdFgdDd'gdgdej"        jX                  g          d             Zid Zjd Zkd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                      t          g dg dd          } |                     d          d         }d }|                    |           d S )N)abcr               )keyvaluer   r   c                 T    t          |           dk    sJ |                                 S Nr   )lensumxs    i/var/www/html/t/fyr/venv311/lib/python3.11/site-packages/pandas/tests/groupby/aggregate/test_aggregate.py
dummy_funcz3test_groupby_agg_no_extra_calls.<locals>.dummy_func"   s"    1vv{{{{uuww    )r   groupbyagg)dfgbr   s      r   test_groupby_agg_no_extra_callsr%      sa    	///,,,GG	H	HB	E		7	#B   FF:r    c                     |                      d d g          }|                    t          j                  }|                                }t	          j        ||           d S )Nc                     | j         S Nyearr   s    r   <lambda>z&test_agg_regression1.<locals>.<lambda>*   s     r    c                     | j         S r(   monthr   s    r   r+   z&test_agg_regression1.<locals>.<lambda>*   s    17 r    r!   r"   npmeantmassert_frame_equal)tsframegroupedresultexpecteds       r   test_agg_regression1r8   )   sY    oo//1B1BCDDG[[!!F||~~H&(+++++r    c                 f   |                      d          d         }d}t          j        t          |          5  |                    d            d d d            n# 1 swxY w Y   t          j        t          |          5  |                    d            d d d            d S # 1 swxY w Y   d S )NACzMust produce aggregated valuematchc                 *    |                                  S r(   )describer   s    r   r+   z#test_agg_must_agg.<locals>.<lambda>5   s    ajjll r    c                      | j         d d         S Nr   indexr   s    r   r+   z#test_agg_must_agg.<locals>.<lambda>7   s    agbqbk r    )r!   pytestraises	Exceptionr"   )r#   r5   msgs      r   test_agg_must_aggrH   0   s*   jjooc"G
)C	y	,	,	, , ,**+++, , , , , , , , , , , , , , ,	y	,	,	, + +))***+ + + + + + + + + + + + + + + + + +s#   AA #A B&&B*-B*c                    d }| j                             | j        | j        g                              |          }|                     ddg                                          d         }t          j        ||           d S )Nc                 *    |                                  S r(   r   r   s    r   r+   z(test_agg_ser_multi_key.<locals>.<lambda>;       !%%'' r    r:   Br;   )r;   r!   r:   rM   	aggregater   r2   assert_series_equal)r#   fresultsr7   s       r   test_agg_ser_multi_keyrR   :   sr    AdllBD"$<((22155Gzz3*%%))++C0H7H-----r    c                  J   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                    } 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          j        ||            d S )!N      r   r   r   7   M   !   ,      )v1v2))r   _   )r   c   )r   r]   )r   r^   )bigdamp)bluedry)redrc   )rc   wetby1by2namesrB      	   X   r^   rc   ra   r   r_      rd   rb   r]   r`   )r[   r\   re   rf   r[   r\   )	r   r0   nanr   from_tuplesr!   r1   r2   r3   )r7   r#   gr6   s       r   $test_groupby_aggregation_mixed_dtyperp   A   sk   aBFAq!Q/r2rvr2r26	
 	
 $	 	 	 %.
 
 
  H( 
aAq!Q1a;r2r2r2rvr2r2F61a1eQPRS		
 	

 
B, 	

E5>""Ad|_!!##F&(+++++r    c                  d   g dddt           j        dgddt           j        dgddt           j        dgg} t          | t          j        g d                    }|                    dd          }|                    d          }t          g d	g d
d          }t          j        ||           d S )N)TTTFTF))r:   r   )r:   r   )rM   r   )rM   r   )datacolumnsr   levelaxis)numeric_only)       @TTT)r   r   r   r   r   r   )	r0   rm   r   r   rn   r!   r   r2   r3   )lstr#   r$   r6   r7   s        r   +test_groupby_aggregation_multi_level_columnr{   r   s     	"!!	ubfe$	tRVU#	tRVU#	C 
&'O'O'OPP
 
 
B
 
!!	$	$BVVV''F444FFGGH&(+++++r    c           	         |                      | t          j        z  d          }| j        t          j        k    sJ t          g t          j        t          g t          j                            }t          j        |	                                |           t          j        |
                    t          j	                  |           t          j        |                    t          j	                  |d           |                     |d         t          j        z  d          }t          |j        t          t          g dt          j                            }t          j        |	                                |           t          j        |
                    t          j	                  |           t          j        |                    t          j	                  |           d S )	NF
group_keysdtyper   rC   )check_index_typer:   )namer   )rs   r   rC   )r!   r0   rm   r   float64r	   r   r2   rO   r   r"   applyr   rs   floatr3   )tsr4   r5   expexp_dfs        r   test_agg_apply_cornerr      sr   jjbfj77G8rz!!!! 2:U2RZ-H-H-H
I
I
IC7;;==#...7;;rv..4447==00#NNNN oogclRV3oFFGBS
333  F
 '++--000'++bf--v666'--//88888r    c                 b   t          j                    }|                    d           }|j        j        d         j        }t          | j        t          |                    |j        j        d<   |	                    t          j                  }|                                }t          j        ||           t          | j        t          |                    |j        j        d<   |	                    t          j                  }|                                }t          j        ||           d S )Nc                     | j         S r(   r)   r   s    r   r+   z1test_agg_grouping_is_list_tuple.<locals>.<lambda>   s    16 r    r   )r2   makeTimeDataFramer!   grouper	groupingsgrouping_vectorr   rC   listr"   r0   r1   r3   tuple)r   r#   r5   r   r6   r7   s         r   test_agg_grouping_is_list_tupler      s    				Bjj))**Go'*:G#+BHd7mm#D#DGOa [[!!F||~~H&(+++#+BHeGnn#E#EGOa [[!!F||~~H&(+++++r    c                     |                      ddg          }|                    t          j                  }|                                }t	          j        ||           d S )Nr:   rM   r/   )mframer5   r6   r7   s       r   test_agg_python_multiindexr      sP    nnc3Z((G[[!!F||~~H&(+++++r    groupbyfuncc                 *    |                                  S r(   weekdayr   s    r   r+   r+      s    aiikk r    c                     | j         S r(   r-   r   s    r   r+   r+      s    ag r    c                 *    |                                  S r(   r   r   s    r   r+   r+      s     r    c                    |                      |          }|d                             d          }|d                                         }t          j        ||           |                    d          }|                                }t          j        ||           |                    ddddd          }t          |d                                         |d                                         |d         	                                |d	         
                                d          }t          j        ||           d S )
Nr:   stdvarr1   sem)r:   rM   r;   DrM   r;   r   )r!   r"   r   r2   rO   rN   r   r3   r   r1   r   )r4   r   r5   r6   r7   s        r   test_aggregate_str_funcr      s*    ook**G S\e$$Fs|!!H68,,, u%%F{{}}H&(+++ [[u5vEJJKKF!!##!!##""$$!!##		
 	
 H &(+++++r    c                 4   t          g dt          t          j        ddddddgd          d          }|                    d                                          }t          dd	d
git          ddgd          d          }t          j        ||           d S )N)r   r   r   r   r   r   r   r   r   Float64r   r   r   r   r   g(y?r   r   rC   r   )	r   r	   pdNAr!   r   r   r2   r3   )any_numeric_ea_dtyper#   r6   r7   s       r   test_std_masked_dtyper      s    	&&&1aAq1CCC	
 	

 
B ZZ__  ""F	wl5!Qc#:#:#:)  H &(+++++r    c                     |                      d          }|dv r
t          }d}nt          }d| d}t          j        ||          5  |                    |d	           d d d            d S # 1 swxY w Y   d S )
Nr   ru   )idxmaxidxminz3reduction operation '.*' not allowed for this dtypez
Operation z does not support axis=1r<   r   rv   )r!   	TypeError
ValueErrorrD   rE   r"   )r#   reduction_funcr$   errorrG   s        r   %test_agg_str_with_kwarg_axis_1_raisesr      s    	!		B---CC>CCC	uC	(	(	( ' '
~A&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 's   A--A14A1z(func, expected, dtype, result_dtype_dictr   )rT   rU   rj   int64r   glv @r   ijkr   g      @Int64r   r   c                 b   t          g dgdz  t          j        ddgg dg                                        ||d          }|                    dd	                              |           }t          |gdz  g d                              |          }t          j        ||           d S )
N)r   r   r   r   rT      r   r   r   r   rs   ))r   r   )r   r   r   rt   )r   r   from_productastyper!   r"   r2   r3   )funcr7   r   result_dtype_dictr#   r6   s         r   (test_multiindex_groupby_mixed_cols_axis1r      s     
			q '#s___(EFF
 
 
 f%U3344  ZZaaZ((,,T22F(aAAAHH H &(+++++r    z&func, expected_data, result_dtype_dictr   r   
   rl         )r   r   g;f?c                    t          t          j        d                              dd          t	          g dd          t	          g dd          d	
                              ddi          }|                    dd                              |           }t          |t	          g dd          t	          ddgd                                        |          }t          j	        ||           d S )Nrl   r   r   r   r   r   yr   )r   r   r   r   r   r   )rC   rs   r   r   r   r   r   r   )rr   rC   rs   )
r   r0   arangereshaper   r   r!   r"   r2   r3   )r   expected_datar   r#   r6   r7   s         r   test_groupby_mixed_cols_axis1r     s	    

	"a##IIIC(((&&&S111	
 
 

 fb']  ZZ!Z$$((..FIIIC(((r2hS)))   f	 
 &(+++++r    c                 @   |                      d          }d }|                    |          }| j        dk                                    }| j        dk                                    }t	          |j                  }t          t          j        |g|z            t          d          d          }t          j        |                    d          |           t          t          j        |g|z            t          d          d          }t          j        |                    d          |           d }t                                           | j                                      |          }t          |t                    sJ t	          |          dk    sJ d S )	Nr:   c                     | j         S r(   sizesers    r   r+   z-test_aggregate_item_by_item.<locals>.<lambda>%  s    38 r    foobarBCDrC   r   c                     | j         S r(   r   r   s    r   aggfun_1z-test_aggregate_item_by_item.<locals>.aggfun_12  s	    xr    r   )r!   r"   r:   r   r   rs   r	   r0   arrayr   r2   rO   xsassert_almost_equalr   
isinstance)	r#   r5   aggfun_0r6   foosumbarsumKr   r   s	            r   test_aggregate_item_by_itemr   "  sf   jjooG##H[[""Fdem  ""Fdem  ""FFNA 6(Q,''tE{{
G
G
GC699U++S111
6(Q,''tE{{
G
G
GC699U++S111   [[  &&**844Ffi(((((v;;!r    c                    |                      ddg          }d }t          j        t          d          5  |                    |           d d d            n# 1 swxY w Y   |d | D                                          |          }| j        d d | j        dk    f         }|                     ddg                              |          }t          j        ||           d S )Nr:   rM   c                 h    | j         t          k    rt          d          |                                 S )NTest error message)r   objectr   r   r   s    r   r   ztest_wrap_agg_out.<locals>.func=  s,    90111wwyyr    r   r<   c                     g | ]
}|d k    |S )r;    ).0r   s     r   
<listcomp>z%test_wrap_agg_out.<locals>.<listcomp>D  s    999ASar    r;   )	r!   rD   rE   r   rN   locrs   r2   r3   )three_groupr5   r   r6   exp_groupedr7   s         r   test_wrap_agg_outr   :  s+   !!3*--G  
 
y(<	=	=	=    $                             99999:DDTJJF/!!![%8C%?"?@K""C:..88>>H&(+++++s   AAAc                 
   dt           j        fdt           j        fdt           j        fg}|                     d          d                             |          }t          g d          }t          j        |j	        |           d S )Nr1   maxminr:   r;   )r1   r   r   )
r0   r1   r   r   r!   r"   r   r2   assert_index_equalrs   )r#   funcsr6   exp_colss       r   *test_agg_multiple_functions_maintain_orderr   J  sr    bg%AEZZ__S!%%e,,F+++,,H&.(33333r    c                  D   t          t          j                            dd          t	          j        ddd          g d                              d                              d	t          t          j	        d
          t          t          j	        d          gi          } t	          j        ddd          }t          j        ddg          }t          j        fddD                       j        }t          |||          }t          j        | |           d S )N  r   1/1/2012S)freqperiodsr:   rM   r;   rC   rs   3Tr:   H.?q镲q?r   )r:   quantilec                 v    g | ]5}                     d           j                            |          j        6S r   r   resampler:   r  valuesr   r  r#   s     r   r   z9test_agg_multiple_functions_same_name.<locals>.<listcomp>`  <    LLLaT				%	%	%	*	*	1LLLr    r   r  rs   rC   )r   r0   randomrandnr   
date_ranger  r"   r   r  r   rn   r   Tr2   r3   )r6   expected_indexexpected_columnsexpected_valuesr7   r#   s        @r   %test_agg_multiple_functions_same_namer  S  s+   	
	a  mJS$???
 
 
B
 [[""	wr{f---wr{f/M/M/MNO F ]:D!DDDN!-/@BS.TUUhLLLL;KLLL   !1  H &(+++++r    c            	         t          t          j                            dd          t	          j        dddd          t          g dd	          
                              d                              ddt          t          j
        d          t          t          j
        d          gi          } t	          j        dddd          }t          j        g dg d          }t          j        fddD                       j        }t          j                            d          j                                        |g          }t          |||          }t%          j        | |           d S )Nr   r   r   r   dti)r   r   r   r   alphar   r   r   r:   ohlcr   r   r  r   ))r:   r  open)r:   r  high)r:   r  low)r:   r  closer:   r  r:   r  )r  NNrg   c                 v    g | ]5}                     d           j                            |          j        6S r  r  r	  s     r   r   zKtest_agg_multiple_functions_same_name_with_ohlc_present.<locals>.<listcomp>  r
  r    r  r  )r   r0   r  r  r   r  r   r  r"   r   r  r   rn   r   r  hstackr:   r  r2   r3   )r6   r  r  non_ohlc_expected_valuesr  r7   r#   s         @r   7test_agg_multiple_functions_same_name_with_ohlc_presentr!  h  s    

	a  mJS$UKKKoooG444
 
 
B
 [[""	vwr{f555wr{f7U7U7UVW F ]:D!%PPPN!-	
 	
 	
 $##
 
 
  "xLLLL;KLLL     iT!2!2!4!9!9!;!;=U VWWO!1  H &(+++++r    c                    |                      ddg          } ddg}ddg}|                     d          d                             |          }|                     d          d                             |          }t          j        ||           |                     d                              |          }|                     d                              |          }t          j        ||           d S )	NrM   r;   r   )r   r1   r   )r   r   r:   r   )dropr!   r"   r2   r3   )r#   r   ex_funcsr6   r7   s        r   -test_multiple_functions_tuples_and_non_tuplesr%    s     
#s	$	$Be$E0HZZ__S!%%e,,Fzz#s#''11H&(+++ZZ__  ''Fzz#""8,,H&(+++++r    c                 `   |                      d          }|                    t          j        t          j        d          }|                    t          j        t          j        d          }t          ||gddgd          }|                    ddd                              dd	          }t          j        t          j        gt          j        t          j        gd}|                    |          }t          j
        ||           |                    t          j        t          j        t          j        gd          }|                    t          j        t          j        t          j        gd          }t          j
        ||           d
 }d }d}	t          j        t          |	          5  t          j        t          j        t          j        dd}|                    |           d d d            n# 1 swxY w Y   t          j        g||gd}|                    |           d S )Nr:   r;   r   r1   r   r   )keysrv   r   r   rt   c                 *    t          j        |           S r(   r0   r1   r   s    r   	numpymeanz:test_more_flexible_frame_multi_function.<locals>.numpymean  s    wqzzr    c                 .    t          j        | d          S )Nr   )ddof)r0   r   r   s    r   numpystdz9test_more_flexible_frame_multi_function.<locals>.numpystd  s    vaa    r    nested renamer is not supportedr<   r   r   )r!   r"   r0   r1   r   r
   	swaplevel
sort_indexrN   r2   r3   rD   rE   r   )
r#   r5   exmeanexstdr7   dr6   r+  r.  rG   s
             r   'test_more_flexible_frame_multi_functionr6    s+   jjooG[[rwRW5566FKKbf262233EvuoVUO!DDDH!!!QQ!//:::KKHwrw&788Aq!!F&(+++ RWBGRV3DEEFFF  rwbgrv5F!G!GHHH&(+++  ! ! ! -C	)	5	5	5  ' ? ?@@!              
 wiy(344Aas   4<G<<H H c                    |                      d          }dddddid}d}t          j        t          |          5  |                    |           d d d            n# 1 swxY w Y   ddddd}t          j        t          |          5  |                    |           d d d            n# 1 swxY w Y   ddddd}t          j        t          |          5  |                    |           d d d            d S # 1 swxY w Y   d S )	Nr:   r1   r   r0  r   r'  r/  r<   )r!   rD   rE   r   rN   )r#   r5   r5  rG   s       r    test_multi_function_flexible_mixr8    s   jjooG U++5%.AAA
,C	)	5	5	5  !               U++%88A	)	5	5	5  !               U++%88A	)	5	5	5  !                 s5   AA#&A#B//B36B3D  DDc                     t          g dg dg dd          } |                     d          }t          ddgd          }|d	                             d
           }t	          ddg|d	          }t          j        ||           |d                             d           }t	          ddg|d          }t          j        ||           d S )Nr   r   r   r   r   r   r   r   )NNr   r   r   r   r   r   r   r   r   r   c                 2    | dk                                     S r   allr   s    r   r+   z1test_groupby_agg_coercing_bools.<locals>.<lambda>  s    !q& r    FTr   r   c                 N    |                                                                  S r(   )isnullr?  r   s    r   r+   z1test_groupby_agg_coercing_bools.<locals>.<lambda>  s    )9)9 r    )r   r!   r   rN   r	   r2   rO   )datgprC   r6   r7   s        r   test_groupby_agg_coercing_boolsrD    s    
,,,\\\@R@R@RSS
T
TC	S		B1a&s###EW7788Fudm5s;;;H68,,,W99::FtUm5s;;;H68,,,,,r    c                     t          g dg dd          } |                     d          dg                             ddi          }t          dddgiddg	                              dd
          }t	          j        ||           d S )N)r:   r:   rM   rM   rM   )r   r   r   r   r   r:   rM   r:   rM   r   r   r   rB   r   r   )r   r!   r"   rename_axisr2   r3   )rB  r6   r7   s      r   "test_groupby_agg_dict_with_getitemrH    s    
333///JJ
K
KC[[se$((#u66F#1vsCj999EEcPQERRH&(+++++r    opc                 *    |                                  S r(   rK   r   s    r   r+   r+     rL   r    c                 *    |                                  S r(   )cumsumr   s    r   r+   r+     s    !((** r    c                 ,    |                      d          S Nr   	transformr   s    r   r+   r+     s    !++e$$ r    c                 ,    |                      d          S NrL  rO  r   s    r   r+   r+     s    !++h'' r    c                 ,    |                      d          S rN  r"   r   s    r   r+   r+     s    !%%,, r    c                 ,    |                      d          S rR  rT  r   s    r   r+   r+     s    !%%// r    c                 D   t          ddgddgd          }|                    d          d         } | |                    d                    d         j        }t	          |          sJ  | |                    d                    j        }t	          |          sJ d S )Nr   FTr   r   r   )r   	set_indexr!   r   r   )rI  r#   sr6   s       r   test_bool_agg_dtyperY    s     
!Qudm44	5	5B
S#AR

3  %+FF#####R		#%FF#######r    zkeys, agg_indexr   r   r   r   rg   input_dtype)boolint32r   float32r   result_dtypemethod)r   rN   rP  c                    t          dgdgdgd          }|d                             |          |d<   t          |                    |           dg         |          } |fd          }|dk    rt	          j        dd          n|}t          d|d         j        d         gi|	                                        }	|d
k    rdg|	j        _        t          j
        ||	           d S )Nr   r   Tr<  r   c                 D    |                                j        d         S r   r   iloc)r   r^  s    r   r+   z2test_callable_result_dtype_frame.<locals>.<lambda>  s    !((<005a8 r    rP  r   rB   r   )r   r   getattrr!   r   
RangeIndexrc  rs   rh   r2   r3   )
r(  	agg_indexrZ  r^  r_  r#   rI  r6   r  r7   s
      `      r    test_callable_result_dtype_framerg    s    $ 
!A3dV44	5	5Bgnn[))BsG	D!!3%(&	1	1BR888899F,2k,A,AR]1a(((yN#3Q01HHHOO H "#&(+++++r    input)Tr         ?r   c                 t   t          dgdg|gd          }t          |                    |           d         |          } |fd          }|dk    rt          j        dd          n|}t          |d         j        d         g|d                                        }	t          j	        ||	           d S )	Nr   r   r<  r   c                 D    |                                j        d         S r   rb  )r   r   s    r   r+   z3test_callable_result_dtype_series.<locals>.<lambda>5  s    !((5//.q1 r    rP  r   r   )
r   rd  r!   r   re  r	   rc  r   r2   rO   )
r(  rf  rh  r   r_  r#   rI  r6   r  r7   s
      `      r   !test_callable_result_dtype_seriesrl  '  s     
!A3eW55	6	6B	D!!#&	/	/BR111122F,2k,A,AR]1a(((yNr#w|A'~CHHHOOPUVVH68,,,,,r    c                      t          g dg dd          } |                     d                              g d          }|j        j        d         }t          g d          }t          j        ||           d S )Nr:  r   rF  r:   )r   r   r1   r  r   r   )r   r!   r"   rs   levelsr   r2   r   )r#   resr6   r7   s       r   #test_order_aggregate_multiple_funcsrp  ;  s    	LLL99	:	:B
**S//

CCC
D
DC["F:::;;H&(+++++r    c           	      :   t          g dddt          j        ddt          j        gd|           }|                    d          }|                                }t          g d	t          j        gd
z  dgd
z  dgd
z  gt          j        dgg dg          t          g d| d          |           }t          j	        ||           |                    dd          }|                                }|
                                }t          j	        ||           d S )N)r   r   r   r   r   r      rZ   r   r   r   r   r   )rr  rr  rZ   rZ   r   r   )r  r  r  r  r   r   r   )rs   rC   r   Fas_index)r   r   r   r!   r  r   r   r   r2   r3   reset_index)r   r#   r$   r6   r7   gb2result2	expected2s           r   test_ohlc_ea_dtypesrz  G  s*   	   Br2ru'EFF"
 
 
B 
CBWWYYF			BE7Q;q2$(;'#0P0P0P(QRRLLL(<3GGG"	  H &(+++
**S5*
)
)ChhjjG$$&&I'9-----r    how)firstlastr   r   r1   medianc                    t          dddgd          }|                    d                              d|i          }|j                            |           |_        |                    d                              d|i          }|dvr)|j                            t
          j                  |_        t          j        ||d	           d S )
Nl   &tLWHd~ r   r   r   r   r   r   )r1   r~  T)check_exact)	r   r!   r"   r   r   r0   r   r2   r3   )r   r{  r#   r7   r6   s        r   test_uint64_type_handlingr  ]  s     
,Aq6::	;	;Bzz#""C:..H4;;uBDZZ__  #s,,F
$$$8??28,,&(======r    c                      d} t          g dg dd          }t          j        t          |           5  |                    d                              ddg           d d d            d S # 1 swxY w Y   d S )NzFunction namesr   r   r   r   r   rF  r<   r:   r   )r   rD   rE   r   r!   r"   )rG   r#   s     r   test_func_duplicates_raisesr  k  s    
C	LLL99	:	:B	)	5	5	5 , ,


3UEN+++, , , , , , , , , , , , , , , , , ,s   +A,,A03A0rC   abc2020r   )r   r   ))r   r   )r   r   )r   r   c                    t          g dg dd|           }|                    d                              dt          j        i          }t          ddgddgd                              d          }t          j        ||           d S )	Nr   r   r   r   )groupr   rB   r  r   r   r   )r   r!   r"   r	   nuniquerW  r2   r3   )rC   r#   r6   r7   s       r   $test_agg_index_has_complex_internalsr  s  s     
YYY;;5	I	I	IBZZ  $$gv~%>??FAq6QF;;<<FFwOOH&(+++++r    c                     t          g dg dg dd          } |                     d                                          }t          ddgddgdt          d	d
gd                    }t	          j        ||           d S )N)r   r   r   r   r   )onetwor  r  r  )threer  r  sixr  )key1key2key3r  r  r  )r  r  r   r   r   rB   )r   r!   r   r   r2   r3   r#   r6   r7   s      r   test_agg_split_blockr    s    	---777===	
 	

 
B ZZ##%%F%88S#JV,,,  H &(+++++r    c            
         t          t          j        dd          g dg dg dt          j        dd          g dd                              t                    } |                     g d                                          }t          t          j        d          gd	gd
gdgt          j        d          gd
gdt          j	        dg          t                    }t          j        ||           d S )N2000r   )r   )r   r   r   r5  r   )r   r   r5  e)r:   rM   r;   r   EF)r   r   r   r   r   r   r   r   r   )r   r   r  r   r   r!   r   	Timestampr0   r   r2   r3   r  s      r   #test_agg_split_object_part_datetimer    s   	vq111%%%%%%vq111	
 	
	
 	
 fVnn  ZZ%%))++F,v&&',v&&'	
 	
 hsmm  H &(+++++r    c                       e Zd Zd Zd Zd Zd Zej        	                    d e
j        dd          d	ddgg          d
             ZdS )TestNamedAggregationSeriesc                 x   t          g d          }|                    g d          }|                    dd          }t          ddgddgdd	d
gt	          j        ddg                    }t          j        ||           |                    dd          }|d
d	g         }t          j        ||           d S )Nr   r  r   r   r   r   rU   r   r   r   r   r  )r   r   r	   r!   r"   r   r0   r   r2   r3   )selfr#   grr6   r7   s        r   test_series_named_aggz0TestNamedAggregationSeries.test_series_named_agg  s    LLL!!ZZ%%%5))a&1v&&c
"(Aq6BRBR
 
 
 	fh///%5))S#J'
fh/////r    c                 T   t          ddg                              ddg          }t          j        t          d          5  |                                 d d d            n# 1 swxY w Y   |                    g           }t          g           }t          j        ||           d S )Nr   r   r   Must provider<   r   )	r	   r!   rD   rE   r   r"   r   r2   r3   r  r  r6   r7   s       r   test_no_args_raisesz.TestNamedAggregationSeries.test_no_args_raises  s    QF^^##QF++]9N;;; 	 	FFHHH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 R(((
fh/////s   A##A'*A'c                    t          g d                              g d          }|                    dd          }t          ddgddgdt	          j        ddg                    }t          j        ||           d S )	Nr   r   r   r   r   r   r   r   r   r   r   rB   r  )r  r  r5   r7   s       r   *test_series_named_agg_duplicates_no_raiseszETestNamedAggregationSeries.test_series_named_agg_duplicates_no_raises  s    III&&yyy11&&5E&**Aq6A77rxA?O?OPPP
h00000r    c                    t          g d                              g d          }|                    d d           }t          ddgddgdt	          j        ddg                    }t          j        ||           d S )	Nr  r  c                     dS r   r   r   s    r   r+   z9TestNamedAggregationSeries.test_mangled.<locals>.<lambda>  s    A r    c                     dS Nr   r   r   s    r   r+   z9TestNamedAggregationSeries.test_mangled.<locals>.<lambda>  s    1 r    r   r   r   rB   r  r  s       r   test_mangledz'TestNamedAggregationSeries.test_mangled  s    III&&yyy11++55Aq6A77rxA?O?OPPP
fh/////r    inpanythingr   columnaggfunc)r  r   c                    t          g d          }dt          |          j         }t          j        t
          |          5  |                    |j                                      |           d d d            d S # 1 swxY w Y   d S )N)r   r   r   r   r   r   r   rT   zfunc is expected but received r<   r   )	r	   type__name__rD   rE   r   r!   r  r"   )r  r  rX  rG   s       r   test_named_agg_nametuplez3TestNamedAggregationSeries.test_named_agg_nametuple  s     +++,,CtCyy/ACC]9C000 	+ 	+IIah##c#***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+s   /B  BBN)r  
__module____qualname__r  r  r  r  rD   markparametrizer   NamedAggr  r   r    r   r  r    s        0 0 00 0 01 1 10 0 0 [BKz5999	
 + + + + +r    r  c                   >    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	S )
TestNamedAggregationDataFramec           	      n   t          g dg dg dd          }|                    d                              dd          }t          d	d
gddgdt          ddgd          ddg          }t	          j        ||           t          j        t          j	        d          }|                    d                              ddt          fdt          j        fddd|f          }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          g d          }t	          j        ||           d S ) Nr   r   r   r   r;  rT   r   rU   ri   r  r:   rM   r  r:   r   rM   r   )a_maxb_maxr   r   r   ri   r   r   r   r  r  r   b   r   rM   r   r:   )b_mina_mina_meanr  r  a_98rT   rU   r   r   g      ?g      @g\(\?gףp=
@)r   r!   r"   r   r2   r3   	functoolsr   r0   
percentiler   r1   )r  r#   r6   r7   p98s        r   test_agg_relabelz.TestNamedAggregationDataFrame.test_agg_relabel  s   ***LLLQQ
 
 G$$((|<(PP!f1v..c
111g&
 
 

 	fh/// 444G$$((*>s ) 
 
 QQ*QQt  c
111JJJ
 
 
 	fh/////r    c                     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                    }t	          j        ||           d S )Nr  r;  r  r  r  zmy colr  r   r   r   r   r   rB   r   r   r!   r"   r   r2   r3   r  r#   r6   r7   s       r   test_agg_relabel_non_identifierz=TestNamedAggregationDataFrame.test_agg_relabel_non_identifier  s    ***LLLQQ
 
 )G$$(DDHl+CDDhA/uc3Zg7V7V7VWWW
fh/////r    c                    t          g dg dd          }|                    d                              dd          }t          ddgddgdt          d	dgd
                    }t	          j        ||           t          j        t          j	        d          }t          j        t          j	        d          }d|_
        d|_
        t          g dg dd          }|                    d                              d|fd|f          }t          ddgddgdt          ddgd
                    }t	          j        ||           d S )Nr  r   rF  r:   r  r   r   r   r   r   rB   2   r   F   quant50quant70)r   r   r   r   r   )r   r   r   r   rT   )col1col2r  r  )quantile_50quantile_70      ?      @g333333?g@r   r   )r   r!   r"   r   r2   r3   r  r   r0   r  r  )r  r#   r5   r7   r  r  tests          r   test_duplicate_no_raisesz6TestNamedAggregationDataFrame.test_duplicate_no_raises  su    \\\==>>**S//%%%EEAq6A77uaVRU?V?V?VWWW
gx000#BMR888#BMR888$$";";";___UUVV,,v&&**)7H + 
 
  #JSzBBc
000
 
 
 	gx00000r    c                 "   t          g dg ddt          j        ddgddgg                    }|                    d	
                              ddd          }t          d	dgd	dgddgdddg          }t          j        ||           d S )Nr  r   rF  r:   rM   r   r   rB   r   r   r  )r:   r   )rM   r1   )aabbccr   r  g      @)r   r   r   r!   r"   r2   r3   r  s       r   test_agg_relabel_with_levelz9TestNamedAggregationDataFrame.test_agg_relabel_with_level-  s    ,,\\\22)C:Sz*BCC
 
 
 !$$(( ) 
 
 q6!QSz::3*
 
 
 	fh/////r    c                    t          g dg dd          }|                    d          }d}t          j        t          |          5  |                    d           d d d            n# 1 swxY w Y   t          j        t          |          5  |                                 d d d            n# 1 swxY w Y   t          j        t          |          5  |                    d	d
           d d d            d S # 1 swxY w Y   d S )Nr  r  rF  r:   r  r<   r   )r   r  r   )r   r!   rD   rE   r   r"   )r  r#   r5   r=   s       r   test_agg_relabel_other_raisesz;TestNamedAggregationDataFrame.test_agg_relabel_other_raises:  s   YYYYYY7788**S//]9E222 	 	KKAK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ]9E222 	 	KKMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ]9E222 	5 	5KK,)K444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5s6   	A,,A03A0B33B7:B7C>>DDc                    t          ddgddgd          }t          j        d          }t          j        t
          |          5  |                    d                              d	           d d d            d S # 1 swxY w Y   d S )
Nr   r   r   rF  zColumn(s) ['C'] do not existr<   r:   )r;   r   r   )r   reescaperD   rE   KeyErrorr!   r"   )r  r#   r=   s      r   test_missing_raisesz1TestNamedAggregationDataFrame.test_missing_raisesG  s    aV1a&1122	899]85111 	0 	0JJsOO,///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0s   *A==BBc                 R   t          ddgddgd          }|                    d                              t          j        dd          t          j        dd	          
          }|                    d                              dd
          }t          j        ||           d S )Nr   r   r   rF  r:   rM   r   countr  r   r   )rM   r   )rM   r  r   r!   r"   r   r  r2   r3   r  s       r   test_agg_namedtuplez1TestNamedAggregationDataFrame.test_agg_namedtupleM  s    aV1a&1122C$$k#u%%C)Q)Q)Q % 
 
 ::c??&&&HH
fh/////r    c                    t          ddgddgddgd          }|                    d                              dd	 fd
d f          }t          ddgddgdt          ddgd                    }t	          j        ||           d S )Nr   r   r   r   r   r   r:   rM   c                     dS r   r   r   s    r   r+   z<TestNamedAggregationDataFrame.test_mangled.<locals>.<lambda>W  s    q r    r;   c                     dS r  r   r   s    r   r+   z<TestNamedAggregationDataFrame.test_mangled.<locals>.<lambda>W  s    Q r    r  r   rB   r  r  s       r   r  z*TestNamedAggregationDataFrame.test_mangledU  s    aV1a&1v>>??C$$[['9c;;=O$PPAq6A77uaVRU?V?V?VWWW
fh/////r    N)r  r  r  r  r  r  r  r  r  r  r  r   r    r   r  r    s        "0 "0 "0H0 0 01 1 120 0 05 5 50 0 00 0 00 0 0 0 0r    r  zCagg_col1, agg_col2, agg_col3, agg_result1, agg_result2, agg_result3r   r:   r   r  )r   rM   r1   g      @      @c                      t          |           S r(   )r   r   s    r   r+   r+   h  s    3q66 r    c                     dS r  r   r   s    r   r+   r+   i      1 r    r   r  c                     dS r  r   r   s    r   r+   r+   r  s    a r    c                    t          g dg dg dd          }t          j        g d          |_        t	          ddgd	          }|                    d                              d
          }t          dddgi|          }	t          j        ||	           |                    d                              | ||          }t          |||d|          }	t          j        ||	           d S )Nr  r;  r  r  r   r  r  r  r   r   r  r   r  )r  r  r   r   rB   )col_1col_2col_3)	r   r   rn   rs   r   r!   r"   r2   r3   )
agg_col1agg_col2agg_col3agg_result1agg_result2agg_result3r#   idxr6   r7   s
             r   "test_agg_relabel_multiindex_columnr  \  s   B 
&&&\\\MM
 
B '(P(P(PQQBJ
c

0
0
0CZZ''++2E+FFF'Aq6*#666H&(+++ZZ''++hh ,  F kJJRU  H &(+++++r    c                  (   t          g dg dg dd          } t          j        g d          | _        t	          j        t          d          5  |                     d                              d	
           d d d            d S # 1 swxY w Y   d S )Nr  r;  r  r  r  zdo not existr<   r  ))Yr   r   r  )	r   r   rn   rs   rD   rE   r  r!   r"   )r#   s    r   ,test_agg_relabel_multiindex_raises_not_existr    s    	&&&\\\MM
 
B '(P(P(PQQBJ	x~	6	6	6 > >


>""&&)<&===> > > > > > > > > > > > > > > > > >s   *BBBc                  B   t          g dg dg dd          } t          j        g d          | _        |                     d                              dd          }t          d	d
gd          }t          ddgddgd|          }t          j        ||           d S )Nr  r;  r  r  r  r  )r  r   r   r   r   r   r   r   rB   )	r   r   rn   rs   r!   r"   r   r2   r3   )r#   r6   r  r7   s       r   &test_agg_relabel_multiindex_duplicatesr    s     
&&&\\\MM
 
B '(P(P(PQQBJZZ''++
!4 ,  F c

0
0
0C1vQF333???H&(+++++r    kwargsr   r   r  c                 (   t          g dg dg dd          }|                    d                              |           }t          ddgt          ddgd	d
          t	          j        ddgg                    }t          j        ||           d S )Nr  r  r   r   r   r<  r   r   r   r   r   rs  r   r   r   )r   r!   r"   r   r   rn   r2   r3   )r  r#   r6   r7   s       r    test_groupby_aggregate_empty_keyr    s     
CC	D	DBZZ__  ((F	
AQF'444&e~66  H
 &(+++++r    c                      t          g dg dg dd          } |                     d                              dg i          }t          t          dgg gg g g                    }t	          j        ||           d S )	Nr  r  r  r<  r   r   )rn  codesr   )r   r!   r"   r   r2   r3   r  s      r   -test_groupby_aggregate_empty_key_empty_returnr    s    	CC	D	DBZZ__  #r++FSE2;r2h!O!O!OPPPH&(+++++r    c            	         t          g d          } |                     ddgd                              dt          f          }t          d	gt	          g g gg g gddg
                    }t          j        ||           d S )Nr<  r   r   r   Fr}   r   )r5  r5  rg   r  )r   r!   r"   r   r   r2   r3   r  s      r   2test_groupby_aggregate_empty_with_multiindex_framer    s    	???	+	+	+BZZc
uZ5599S$K9HHFZR2r(3*MMM  H &(+++++r    c                  
   t          g dg dd          } |                     dd          }|                    t          j        dd	          
          }t          g dg dd          }t          j        ||           d S )N)r   r   zr   r   r   ri  皙?rx   g      @g@      ?)r   valr   Frt  r$  r   r  min_val)r   r   r   )ri  r"  r#  )r   r&  r  r#   r5   r6   r7   s       r   9test_grouby_agg_loses_results_with_as_index_false_relabelr(    s     
...7V7V7VWW
 
B jjj//G[[E5!I!I!I[JJF=M=M=MNNOOH&(+++++r    c                     t          g dg dg dd          } |                     ddgd          }|                    t          j        d	d
                    }t          g dg dg dd          }t          j        ||           d S )N)r   r   r   r   r   r   )r   r   r   r   r   r   r!  )r   r  r$  r   r  Frt  r$  r   r  r%  r   r   r   )r   r   r   )ri  r#  r"  )r   r  r&  r  r'  s       r   Dtest_grouby_agg_loses_results_with_as_index_false_relabel_multiindexr+    s    
 
111222222	
 	

 
B jj%5j99G[[E5!I!I!I[JJFEUEUEUVV H &(+++++r    r   c                 *    |                                  S r(   )r1   rX  s    r   r+   r+     s    qvvxx r    c                 *    t          j        |           S r(   r*  r-  s    r   r+   r+     s    271:: r    c                 *    t          j        |           S r(   )r0   nanmeanr-  s    r   r+   r+     s    A r    c                    g dg dg}t          |t          j        g dg dgddg                    }|                    t	          j        d	d
g                                        |           }dddddddddd}t          |t	          j        d	d
g          |j                  }t          j	        ||           d S )N)r   r   r   )rT   rU   r   r  )r   r   r   SiskoJanewayrg   r   r   r   ri  g      @ry   r  g      @rx   ))r   r   )r   r   )r   r   r   )
r   r   from_arraysr!   r0   r   r"   rs   r2   r3   )r   rr   r#   r6   expected_dictr7   s         r   test_multiindex_custom_funcr6    s    
 IIyyy!D	&YY			"7I*>
 
 

 
 
B ZZ!Q(())--d33FC  C  C   M
 bh1v.>.>
SSSH&(+++++r    c                 .    t          j        | d          S Ng?r   r0   r  r-  s    r   myfuncr:    s    =d####r    c                 .    t          j        | d          S r8  r9  r-  s    r   r+   r+     s    BM!t,D,D,D r    c                    t          g dg dg dd          }|                    d                              dd| f          }t          d	d
gddggddgt          ddgd                    }t	          j        ||           d S )Ncatdogr>  r?  g333333"@g      @      #@      A@皙@r  #@     h@kindheightweightrH  )rI  r1   rI  )mean_heightperc90g"@g0'5"@g      4@g5^I@rK  rL  r>  r?  r   r  r  )r   animalsr6   r7   s       r   test_lambda_named_aggrN    s     000+++,,,	
 	
 G __V$$((&$/? )  F 
vu&)UEN000  H &(+++++r    c                     t          t          j        dgdz                                dd          t	          d          t	          d                    } g 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          t          g dd                    }t          j	        ||           d S )Nr   rj   r   XYZr  rr   rs   rC   )group 1rR  r   groupingc                 *    |                                  S r(   )tolistr   s    r   r+   z,test_aggregate_mixed_types.<locals>.<lambda>%  s    

 r    r   rR  r   rs  )Xr  Zr   r   )
r   r0   r   r   r   r!   rN   r   r2   r3   )r#   r6   r   r7   s       r   test_aggregate_mixed_typesrX    s   	XqcAg&&q!,,d5kke
 
 
B /..BzNZZ
##--.B.BCCFcA3_1v1v1v&>?MQ	N(DDDoooX666  H
 &(+++++r    zNot implemented;see GH 31256reasonc                  >   d } t          dt          j        g d          i          }|                    g d                              |           }t          dt          j        dt          j        gd          iddg	          }t          j        ||           d S )
Nc                 D    t          | dk              rdS t          j        S )Nr   r   )r?  r   r   r   s    r   r  z5test_aggregate_udf_na_extension_type.<locals>.aggfunc8  s     q1u:: 	15Lr    r:   r  r  r   r   r   r   rB   )r   r   r   r!   r"   r   r2   r3   )r  r#   r6   r7   s       r   $test_aggregate_udf_na_extension_typer]  /  s       
C))),,-	.	.BZZ			""&&w//F#rxBE
'BBBCAq6RRRH&(+++++r    c                   n    e Zd Zd Zd Zej                            d          d             Zd Z	d Z
dS )	TestLambdaManglingc                 
   t          g dg dd          }|                    d                              dd d gi          }t          ddgd	d	gd
t          dd	gd                    }t	          j        ||           d S )Nr  r   rF  r:   rM   c                     dS r   r   r   s    r   r+   z/TestLambdaMangling.test_basic.<locals>.<lambda>G  s    a r    c                     dS r  r   r   s    r   r+   z/TestLambdaMangling.test_basic.<locals>.<lambda>G  s    1 r    r   r   ))rM   
<lambda_0>)rM   
<lambda_1>r   rB   r  r  s       r   
test_basiczTestLambdaMangling.test_basicE  s    \\\==>>C$$cKK+E%FGG#$a&1vFFAS)))
 
 
 	fh/////r    c                 
   t          g d                              g d          }|                    d d g          }ddgddgd}t          |t	          j        ddg                    }t          j        ||           d S )	Nr   r  c                     dS r   r   r   s    r   r+   z?TestLambdaMangling.test_mangle_series_groupby.<locals>.<lambda>Q  r  r    c                     dS r  r   r   s    r   r+   z?TestLambdaMangling.test_mangle_series_groupby.<locals>.<lambda>Q  s     r    r   r   rc  rd  rB   r  )r  r  r6   exp_datar7   s        r   test_mangle_series_groupbyz-TestLambdaMangling.test_mangle_series_groupbyO  s    LLL!!)),,,77kk233#$a&A??XRXq!f-=-=>>>
fh/////r    zGH-26611. kwargs for multi-agg.rY  c                    dd}dd}t          ddg                              ddg                              ||gd          }t          dgdgd          }t	          j        ||           t          ddg                              ddg                              ||gdd	
          }t          dgdgd          }t	          j        ||           d S )Nr   c                 6    |                                  |z   |z   S r(   rK   r   r   r   s      r   r+   z5TestLambdaMangling.test_with_kwargs.<locals>.<lambda>X  s    quuww{Q r    r   c                 6    |                                  ||z  z   S r(   rK   rn  s      r   r+   z5TestLambdaMangling.test_with_kwargs.<locals>.<lambda>Y  s    quuwwQ r    r   r   r   ri  r   )r         )r   )r   )r	   r!   r"   r   r2   r3   )r  f1f2r6   r7   s        r   test_with_kwargsz#TestLambdaMangling.test_with_kwargsV  s    ......A''A//33RHa@@QCsCCDD
fh///A''A//33RHa23FFRDEEFF
fh/////r    c                    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                              t	          j        dd           t	          j        dd          t	          j        dd                    }t          j        ||           |                    d                              dd fdd          }t          j        ||           d S )Nr=  r@  rC  rG  )height_sqr_min
height_max
weight_maxp=
׳T@      B@rA  rB  rE  rF  r>  r?  rH  r   r   byrI  c                 0    t          j        | dz            S rA   r0   r   r   s    r   r+   z=TestLambdaMangling.test_agg_with_one_lambda.<locals>.<lambda>z      26!Q$<< r    r  r   rJ  c                 0    t          j        | dz            S rA   r~  r   s    r   r+   z=TestLambdaMangling.test_agg_with_one_lambda.<locals>.<lambda>      q!t r    rI  r   rJ  r   )r   r   r!   r"   r   r  r2   r3   r  r#   rs   r7   result1rx  s         r   test_agg_with_one_lambdaz+TestLambdaMangling.test_agg_with_one_lambdab  si   444///000 
 
 A@@#(%."Dk"El 
 V444
 
 
 ***''++;)?)?   {(EBBB{(EBBB , 
 
 	gx000 ***''++$&<&<=(( , 
 

 	gx00000r    c           
         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d fdddd fdd f          }t	          j        ||           |                    d                              t          j        dd           t          j        dd          t          j        dd          t          j        dd           t          j        dd                     }t	          j        ||           d S ) Nr=  r@  rC  rG  )rv  rw  rx  height_max_2
weight_minry  rz  rA  rB  rE  rF  rD  r  r>  r?  rH  r   r   r{  rI  c                 0    t          j        | dz            S rA   r~  r   s    r   r+   z=TestLambdaMangling.test_agg_multiple_lambda.<locals>.<lambda>  r  r    r  r  c                 *    t          j        |           S r(   r0   r   r   s    r   r+   z=TestLambdaMangling.test_agg_multiple_lambda.<locals>.<lambda>  s    bfQii r    rJ  c                 *    t          j        |           S r(   r~  r   s    r   r+   z=TestLambdaMangling.test_agg_multiple_lambda.<locals>.<lambda>  s    BF1II r    c                 0    t          j        | dz            S rA   r~  r   s    r   r+   z=TestLambdaMangling.test_agg_multiple_lambda.<locals>.<lambda>  r  r    r  r   c                 *    t          j        |           S r(   r  r   s    r   r+   z=TestLambdaMangling.test_agg_multiple_lambda.<locals>.<lambda>  s    q		 r    c                 *    t          j        |           S r(   r~  r   s    r   r+   z=TestLambdaMangling.test_agg_multiple_lambda.<locals>.<lambda>  s    bfQii r    )r   r   r!   r"   r2   r3   r   r  r  s         r   test_agg_multiple_lambdaz+TestLambdaMangling.test_agg_multiple_lambda  s    444///000 
 

 
 
 #(%."Dk"El!$d"Cj  V444

 

 

 ***''++$&<&<=(("$7$78 "5"56 , 
 
 	gx000 ***''++;)?)?   {(EBBB{(EBBBH>Q>QRRR{(<O<OPPP , 
 
 	gx00000r    N)r  r  r  re  rk  rD   r  xfailrt  r  r  r   r    r   r_  r_  D  s        0 0 00 0 0 [?@@	0 	0 A@	0%1 %1 %1N11 11 11 11 11r    r_  c                     t          g dg dd          } |                     d                              dd i          }t          ddgd	d
gd                              d          }t	          j        ||           d S )N)r   Wr  )ri  ri  rx   rF  r:   rM   c                 B    |                      | j        d                   S )N)getrC   r   s    r   r+   z+test_groupby_get_by_index.<locals>.<lambda>  s    aeeAGBK.@.@ r    r   r  ri  rx   )r   r!   r"   rW  r2   r3   )r#   ro  r7   s      r   test_groupby_get_by_indexr    s    	??	@	@B
**S//

s$@$@A
B
BCSzc
;;<<FFsKKH#x(((((r    zgrp_col_dict, exp_data)nrcat_ordrT   r  r  c                    t          g dt          d          t          d          d          }|                    ddd          }|d         j                                        |d<   |                    d                              |           }t          j        d	d
gd	d
gddd          }t          ||          }d|v r+|d         j	        }|d                             |          |d<   t          j        ||           d S )Nr   r   r   r   rT   r   rU   ri   aabbccddaaaabbbbr  r  r>  categoryr>  r  r  r>  r   r   F
categoriesorderedr   r   )rr   rC   )r   r   r   r>  
as_orderedr!   r"   r   CategoricalIndexr   r2   r3   )grp_col_dictrj  input_df	result_df	cat_indexexpected_dfr   s          r    test_groupby_single_agg_cat_colsr    s$    ***J''
##	
 	
 H zjIIJJH"9-1<<>>HY  ''++L99I #	c
Sz5uJ  I ;;;KK#)!,Y!7!>!>u!E!EI)[11111r    )r   r   r   )rT   ri   r   )r   r   r   )rT   r   r5  r   )r   r5  c                 T   t          g dt          d          t          d          d          }|                    ddd          }|d         j                                        |d<   |                    d                              |           }t          j        d	d
gd	d
gddd          }g }| 	                                D ]N\  }}t          |t                    r|D ]}|                    ||g           7|                    ||g           Ot          j        t          |                    }	t          ||	|          }
|
j        D ]D}t          |t                    r-d|v r)|
|                             |d         j                  |
|<   Et#          j        ||
           d S )Nr  r  r  r  r  r  r  r>  r   r   Fr  rQ  )r   r   r   r>  r  r!   r"   r   r  itemsr   appendr   rn   r   rs   r   r2   r3   )r  rj  r  r  r  multi_index_listr   vr   multi_indexr  cols               r   #test_groupby_combined_aggs_cat_colsr    s    ***J''
##	
 	
 H zjIIJJH"9-1<<>>HY  ''++L99I #	c
Sz5uJ  I ""$$ , ,1a 	, 4 4 ''E
33334 ##QF++++(/?)@)@AAK;iPPPK" R Rc5!! 	Ri3&6&6*3/66x	7J7PQQK)[11111r    c                     t          g dg dd          } |                     d          }|                    dg          }|j                            d          |_        |                    d          }t          j        ||           d S )Nr:  )r   r   r   r   r   r   rL  r  )r   r!   r"   rs   	droplevelr2   r3   )r#   ro   r6   r7   s       r   test_nonagg_aggr    s     
LLL99	:	:B


3AUUH:F^--b11FNuuXH&(+++++r    c                  J   t          ddgt          j        ddddddd          t          j        d	dddddd          gd
          } |                     d          j                                        }|                     d          d         }t          j        ||           d S )NrV  r  i  r   r   rq     i`= i  rF  r:   rM   )r   datetimer!   rM   r   rW  r2   rO   r  s      r   test_aggregate_datetime_objectsr  *  s     
s!$1b"b&AA!$1b"b&AA	
 	

 
B ZZ__""$$F||C  %H68,,,,,r    c                  \   t          g dg dg dd          } | j                            d          | _        |                     ddg          }|j                            d           }t          j        d	d
gd          }t          ddg|d          }t          j
        ||           d S )N)r   r   r   r*  )r   r   r   )c0c1pOr  r  c                 (    t          | dk              S r   r>  r   s    r   r+   z1test_groupby_index_object_dtype.<locals>.<lambda>A  s    #a!e** r    )r   r   r  )r  r  rg   FTr  r   )r   rC   r   r!   r  r"   r   rn   r	   r2   rO   )r#   r5   ro  r  r7   s        r   test_groupby_index_object_dtyper  <  s    	///yyyQQ	R	RBxs##BHjj$&&G
)--,,
-
-C  +	Z   N udm>DDDH3)))))r    c                      d } t          dgt          j        d          g          }|                    d                               |           }t          dggdg          }t          j        ||           d S )Nc                 z    |                                                                  rd S t          j        |           S r(   )isnar?  r0   r   r   s    r   r   z)test_timeseries_groupby_agg.<locals>.funcN  s/    88::>> 	4vc{{r    ri  z2018-01-16 00:00:00+00:00rB   c                     dS r  r   r   s    r   r+   z-test_timeseries_groupby_agg.<locals>.<lambda>T  s    q r    r   )r   r   r  r!   r"   r2   r3   )r   r#   ro  r7   s       r   test_timeseries_groupby_aggr  K  s      
 
C5.I!J!J K	L	L	LB
**[[
!
!
%
%d
+
+C3%,,,H#x(((((r    c                    | dv rd S t          ddgdt          j        gg          }|                    d                              |           }|                    d                              d| i          }| dv rt          j        ||d         d           d S t          j        ||           t          j        |j        |j                   d S )N)corrwithnthr   r   )r   ngroupF)check_names)	r   r0   rm   r!   r"   r2   rO   r3   dtypes)r   objresult_reduced_seriesresult_reduced_frames       r    test_groupby_aggregate_directoryr  Z  s    ,,,t
aVa[)
*
*CKKNN..~>>;;q>>--q..ABB+++
!#7#:	
 	
 	
 	
 	
 	
 	35IJJJ
!(*>*E	
 	
 	
 	
 	
r    c                      t          g dd          } t          dgdt          j        dg                    }|                     g d                                          }t          j        ||           d S )N)z1 dayz3 daysNaTztimedelta64[ns]r   z2 daysr   r   r   r   r   )r	   r0   r   r!   r1   r2   rO   )rr   r7   r6   s      r   test_group_mean_timedelta_natr  p  sw    ,,,4EFFFDxj(91#OOOH\\)))$$))++F68,,,,,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                    t          t          |                     }t          t          |t          j        dg                              }|                    g d                                          }t          j        ||           d S )Nr   rB   r  )r   r	   r0   r   r!   r1   r2   rO   )
input_dataexpected_outputrr   r7   r6   s        r   test_group_mean_datetime64_natr  z  sw     vj))**D6/1#GGGHHH\\)))$$))++F68,,,,,r    zfunc, outputr1   y       @      2@y      $@      6@y      D@     V@y      I@     [@c                 B   t          t          j        d                              dd                              ddg                    }|                    |j        dz                                |           }t          |          }t          j	        ||           d S )Nr   r   r   r                  @)
r	   r0   r   r   dotr!   rC   r"   r2   rO   )r   outputrr   r6   r7   s        r   test_groupby_complexr    s    
 ")B--''A..22Ar7;;<<D\\$*q.))--d33Ff~~H68,,,,,r    )r   r   r   c                 f   t          t          j        d                              dd                              ddg                    }d}t          j        t          |          5  |                    |j	        dz            
                    |            d d d            d S # 1 swxY w Y   d S )Nr   r   r   r   r  zNo matching signature foundr<   )r	   r0   r   r   r  rD   rE   r   r!   rC   r"   )r   rr   rG   s      r   test_groupby_complex_raisesr    s     ")B--''A..22Ar7;;<<D
'C	y	,	,	, / /TZ!^$$((.../ / / / / / / / / / / / / / / / / /s   (1B&&B*-B*prodr~  c                     t          g dg dg dd          }|                    dd          }t          j        t          d	          5  |                    |            d d d            d S # 1 swxY w Y   d S )
Nr  )r   r   rT   )r   rU   ri   r<  r   r   r   z"axis other than 0 is not supportedr<   )r   r!   rD   rE   NotImplementedErrorr"   )r   r#   r$   s      r   test_multi_axis_1_raisesr    s    
 
CC	D	DB	Ca	 	 B	*2V	W	W	W  
t                 s   A//A36A3ztest, constantr:   rM   r;   ry   rq  )marksc                     t          |           }|                    d                              t          j                  }t          |          }|                    d          }t          j        ||           d S r   )r   r!   r"   r	   moderW  r2   r3   )r  constantdf1r6   r7   s        r   test_agg_of_mode_listr    si     D//C[[^^,,F ""H!!!$$H&(+++++r    c                     t          g dg dd          } |                     d          }dd}dd	}d
}t          j        t          |          5  |                    ||gddd           d d d            n# 1 swxY w Y   |                    ||gdd          }t          ddgddgddggt          g dd          t          j        ddg                    }t          j
        ||           d S )Nr  r<  r  r   r   r   c                 6    |                                  |z   |z   S r(   rK   r   r   r   s      r   foo1zAtest__dataframe_groupy_agg_list_like_func_with_args.<locals>.foo1      uuww{Qr    r   c                 6    |                                  |z   |z   S r(   rK   r   r   r   s      r   foo2zAtest__dataframe_groupy_agg_list_like_func_with_args.<locals>.foo2  r  r    /foo1\(\) got an unexpected keyword argument 'b'r<   r   r   r  r  ri   rj   r   r   )r   r  )r   r  r   r   r   r   r   )r   r!   rD   rE   r   r"   r   r   rn   r2   r3   )r#   r$   r  r  rG   r6   r7   s          r   3test__dataframe_groupy_agg_list_like_func_with_argsr    sn   	99	:	:B	CB       =C	y	,	,	, * *
d|Q!q)))* * * * * * * * * * * * * * * VVT4L!qV))F
Q!Q"b"OOO#...&}'EFF  H
 &(+++++s   A99A= A=c                     t          g d          } |                     |           }dd}dd}d}t          j        t          |          5  |                    ||gd	d	d
           d d d            n# 1 swxY w Y   |                    ||gd	d
          }t          ddgddgddggt          g d          ddg          }t          j	        ||           d S )Nr  r   r   c                 6    |                                  |z   |z   S r(   rK   r  s      r   r  z>test__series_groupy_agg_list_like_func_with_args.<locals>.foo1  r  r    r   c                 6    |                                  |z   |z   S r(   rK   r  s      r   r  z>test__series_groupy_agg_list_like_func_with_args.<locals>.foo2  r  r    r  r<   r   r   r  r  ri   rj   r   r  r  r   r  r  )
r	   r!   rD   rE   r   r"   r   r   r2   r3   )rX  sgbr  r  rG   r6   r7   s          r   0test__series_groupy_agg_list_like_func_with_argsr    sP   yyyA
))A,,C       =C	y	,	,	, + +ta1***+ + + + + + + + + + + + + + + WWdD\1W**F
Q!Q"b"%			*:*:VVDT  H &(+++++s   A44A8;A8)l__doc__r  r  r   r  numpyr0   rD   pandas.errorsr   pandas.core.dtypes.commonr   pandasr   r   r   r   r	   r
   r   pandas._testing_testingr2   pandas.core.groupby.grouperr   r%   r8   rH   rR   rp   r{   r   r   r   r  r  r   r   r   intr   r   r   r   r   r   r  r!  r%  r6  r8  rD  rH  rY  rg  r[  rl  rp  rz  r   uint64r  r  r  r   interval_rangeperiod_rangern   r  r  r  r  r  r   r  r1   r  r  r  r  r  r  r(  r+  r6  r:  rN  rX  r  r]  r_  r  r  r  r  r  r  r  r  r  r  r  r  r  paramr  r  r  r   r    r   <module>r	     s7               				      , , , , , , 6 6 6 6 6 6                          0 0 0 0 0 0	 	 	, , ,+ + +. . .., ., .,b, , ,(9 9 9., , ,$, , , )),=,=?T?T+UV , , ,4, , ,	' 	' 	' .				7B'	
Q5u5%I%IJ		3e%e D DE				7S'N3	
Qu5u)M)MN		7)))$T$TU
 
, ,
 
, ,	!Q"bB8,7.H.HI	&A"I.	!q	AI9==>	 , , ,"  0, , , 4 4 4, , ,*, , ,B, , ,"! ! !H  0- - - , , , $$''!!
 

$ 
$
 

$ 
qc$$$%
sZZ!qc
aS1#JsCjIIIJ  CCC  DDD  #F#F#FGG, , HG   ," 
qc$$$%
sZZ!qc
aS1#JsCjIIIJ  ...114e"455#F#F#FGG- - HG 65 21 -	, 	, 	,. . ., 28RY"788 Q Q QRR	> 	> SR 98	>, , , DDKK((!Q444
===>>	 , , ,, , ,", , ,82+ 2+ 2+ 2+ 2+ 2+ 2+ 2+js0 s0 s0 s0 s0 s0 s0 s0l I    FF#J	
 ))*% FF#J	
 BK
E**BK
BG,,BK
KK00F#JF	
# :, ,; :,.> > >, , ," S5'N"E74K4K#LMM	, 	, NM	,, , ,, , ,, , ,, , ,* 
!5!57N7NO , , ,&$ $ $ "D"Df!MNN, , ON,,, , ,  899, , :9,(v1 v1 v1 v1 v1 v1 v1 v1r) ) ) %	(	(!QS#J*O*OP
U	i#s45
1v' 2 2 2> 5	1	1K3MN5%.	1	1M=3QR
eU^	$z:&>? &2 &2 &2R
, 
, 
,- - -$* * *) ) )
 
 
,- - - ! <;; 	

 FEE$%	
	 - - - fw12UXy<Q4RS - - - !6!6!677/ / 87/ 
eWvuoU|65Q5QR    s)b#YS		*RcC:=N,O,OPs)b#YS		*RsCj#=N,O,OP(S!HsAha	1Szq1a&k3R3RS1XQx#qC84c
A{+++#	
 	
 	
		 	, 	, 	,, , ,0, , , , ,r    