
    Owg                     n   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jD                  jG                  dd d d gg      d        Z$d Z%d Z&ejD                  jG                  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jD                  jG                  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 Z4d: Z5d; Z6ejD                  jG                  d<d= d> d? d@ dA dB g      dC        Z7ejD                  jG                  dDdEg edFgdEG      fdEdHg edFgd'ggdgdggdEdHgI      fg      ejD                  jG                  dJg dK      ejD                  jG                  dLg dK      ejD                  jG                  dMg dN      dO                             Z8ejD                  jG                  dDdEg edFgdEG      fdEdHg edFgd'ggdgdggdEdHgI      fg      ejD                  jG                  dPg dQ      ejD                  jG                  dRe9e'e(g      ejD                  jG                  dMg dN      dS                             Z:dT Z;dU Z<ejD                  jG                  dRejz                  ej|                  g      ejD                  jG                  dVg dW      dX               Z?dY Z@ejD                  jG                  dZ ej                   eBd[             ej                  dd       ej                  d\dd]^       ej                  g d_      g      d`        ZFda ZGdb ZH G dc dd      ZI G de df      ZJejD                  jG                  dgdhdiej                  fdjdFdgdkdlgdmdngfdido fdidp fdqej                  fdFdgdFdFgdmdngf ej                  didr       ej                  dqej                         ej                  dids       dFdgdmdngdFdFgfg      dt        ZMdu ZNdv ZOejD                  jG                  dwdxdygig dygdzg      d{        ZPd| ZQd} ZRd~ ZSd ZTejD                  jG                  dd d d g      d        ZUd ZVejD                  jG                  dd eVg      d        ZWd ZXejD                  j                  d      d        ZZ G d d      Z[d Z\ejD                  jG                  ddydyddFdgdEdxgdfddyiddEdxgifddyiddFdgifg      d        Z]ejD                  jG                  ddydrgdydddgfdydydrgdddgfddydrgiddgfg      d        Z^d Z_d Z`d Zad Zbd Zcd Zdd ZeejD                  jG                  dg ddgfg ddgfg      d        ZfejD                  jG                  ddddgfdddgfg      d        ZgejD                  jG                  dg d      d        ZhejD                  jG                  ddygddrgdHdidddzg      d        ZiejD                  jG                  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dEdFgdEdFgdHd'gdHdggdEdHgdFd'dggdf ej                  dEdFgdEd'gdHdgdHdggdEdHgdFd'gdgdejD                  j                        g      d        Zkd Zld Zmd Znd Zod Zpd ZqdÄ Zry)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                  x    t        g dg dd      } | j                  d      d   }d }|j                  |       y )Nabcr               )keyvaluer   r   c                 B    t        |       dk7  sJ | j                         S Nr   )lensumxs    d/var/www/horilla/myenv/lib/python3.12/site-packages/pandas/tests/groupby/aggregate/test_aggregate.py
dummy_funcz3test_groupby_agg_no_extra_calls.<locals>.dummy_func"   s    1v{{uuw    )r   groupbyagg)dfgbr    s      r   test_groupby_agg_no_extra_callsr&      s8    	/,G	HB	E	7	#B FF:r!   c                     | j                  d d g      }|j                  d      }|j                         }t        j                  ||       y )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
    177 r!   meanr"   r#   r0   tmassert_frame_equal)tsframegroupedresultexpecteds       r   test_agg_regression1r8   )   s@    oo/1BCDG[[ F||~H&(+r!   c                 8   | j                  d      d   }d}t        j                  t        |      5  |j	                  d        d d d        t        j                  t        |      5  |j	                  d        d d d        y # 1 sw Y   @xY w# 1 sw Y   y xY w)NACzMust produce aggregated valuematchc                 "    | j                         S r)   )describer   s    r   r,   z#test_agg_must_agg.<locals>.<lambda>5   s    ajjl r!   c                      | j                   d d S Nr   indexr   s    r   r,   z#test_agg_must_agg.<locals>.<lambda>7   s    aggbqk r!   )r"   pytestraises	Exceptionr#   )r$   r5   msgs      r   test_agg_must_aggrH   0   s~    jjoc"G
)C	y	, ,*+,	y	, +)*+ +, ,+ +s   B(BBBc                     d }| j                   j                  | j                  | j                  g      j	                  |      }| j                  ddg      j                         d   }t        j                  ||       y )Nc                 "    | j                         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   :   s`    AddllBDD"$$<(2215Gzz3*%))+C0H7H-r!   c                  n   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      }|j                  ddg      }|dd g   j                         }t        j                  ||        y )!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   npnanr   from_tuplesr"   r0   r2   r3   )r7   r$   gr6   s       r   $test_groupby_aggregation_mixed_dtyperq   A   sD   aBFFAq!Q/r2rvvr2r26	
 $$	 %.
H( 
aAq!Q1a;r2r2r2rvvr2r2F61a1eQPRS		

B, 	

E5>"Ad|_!!#F&(+r!   c                     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}t        j                  t        |      5  |j                  dd	      }d d d        j                  d
      }t        g dg dd      }t        j                  ||       y # 1 sw Y   DxY w)N)TTTFTF))r:   r   )r:   r   )rM   r   )rM   r   datacolumns+DataFrame.groupby with axis=1 is deprecatedr<   r   levelaxis)numeric_only)       @TTT)r   r   r   r   r   r   )rm   rn   r   r   ro   r2   assert_produces_warningFutureWarningr"   r   r3   )lstr$   rG   r%   r6   r7   s         r   +test_groupby_aggregation_multi_level_columnr   r   s     	"	ubffe$	tRVVU#	tRVVU#	C 
&&'OP
B
 8C		#	#M	= )ZZaaZ()VVV'F4FGH&(+) )s   >CCc           	         | j                  | t        j                  z  d      }| j                  t        j                  k(  sJ t        g t        j                  t        g t        j                              }t        j                  |j                         |       t        j                  |j                  d      |       t        j                  |j                  d      |d       |j                  |d   t        j                  z  d      }t        |j                  t        t        g dt        j                        	      }t        j                  |j                         |       t        j                  |j                  d      |       d
}t        j                   t"        |d      5  |j                  t        j                        }d d d        t        j                  |       y # 1 sw Y    xY w)NF
group_keysdtyper   rC   r   )check_index_typer:   )namer   )ru   r   rC   z:The behavior of DataFrame.sum with axis=None is deprecated)r=   check_stacklevel)r"   rm   rn   r   float64r	   r   r2   rO   r   r#   applyr   ru   floatr3   r}   r~   )tsr4   r5   expexp_dfrG   ress          r   test_agg_apply_cornerr      s_   jjbffj7G88rzz!!! 2::U2RZZ-H
IC7;;=#.7;;u-s37==/uM oogclRVV3oFGBS

3F
 '++-0'++e,f5
FC		#	#Mu	U $mmBFF#$#v&$ $s   - G,,G5c           	         t        t        j                  j                  d      j	                  d      t        t        d      t              t        j                  ddd      	      }|j                  d
       }|j                  j                  d   j                  }t        | j                  t        |            |j                  j                  d<   |j!                  d      }|j#                         }t%        j&                  ||       t        | j                  t)        |            |j                  j                  d<   |j!                  d      }|j#                         }t%        j&                  ||       y )Nr   )   r   ABCDr   z
2000-01-01r   rM   periodsfreqru   rC   c                     | j                   S r)   r*   r   s    r   r,   z1test_agg_grouping_is_list_tuple.<locals>.<lambda>   s
    166 r!   r   r0   )r   rm   randomdefault_rngstandard_normalr   listobjectpd
date_ranger"   _grouper	groupingsgrouping_vectorr   rC   r#   r0   r2   r3   tuple)r   r$   r5   grouperr6   r7   s         r   test_agg_grouping_is_list_tupler      s   	
		a 009d6l&1mmL"3?
B jj)*G((+;;G$,RXXtG}$EGq![[ F||~H&(+$,RXXuW~$FGq![[ F||~H&(+r!   c                     | j                  ddg      }|j                  d      }|j                         }t        j                  ||       y )Nr:   rM   r0   r1   ) multiindex_dataframe_random_datar5   r6   r7   s       r   test_agg_python_multiindexr      s?    .66SzBG[[ F||~H&(+r!   groupbyfuncc                 "    | j                         S r)   weekdayr   s    r   r,   r,      s    aiik r!   c                     | j                   S r)   r.   r   s    r   r,   r,      s
    agg r!   c                 "    | j                         S r)   r   r   s    r   r,   r,      s     r!   c                    | j                  |      }|d   j                  d      }|d   j                         }t        j                  ||       |j                  d      }|j                         }t        j                  ||       |j                  ddddd      }t        |d   j                         |d   j                         |d   j                         |d	   j                         d      }t        j                  ||       y )
Nr:   stdvarr0   sem)r:   rM   r;   DrM   r;   r   )r"   r#   r   r2   rO   rN   r   r3   r   r0   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KF!!#!!#""$!!#		
H &(+r!   c                    t        g dt        t        j                  ddddddgd      d      }|j	                  d      j                         }t        dd	d
git        ddgd      d      }t        j                  ||       y )N)r   r   r   r   r   r   r   r   r   Float64r   r   r   r   r   g(y?r   r   rC   r   )	r   r	   r   NAr"   r   r   r2   r3   )any_numeric_ea_dtyper$   r6   r7   s       r   test_std_masked_dtyper      s    	&1aAq1C	

B ZZ_  "F	wl5!Qc#:)H &(+r!   c                 L   | j                  d      }d| d}|dv rt        }d}t        }nt        }d| d}d }t	        j
                  ||	      5  t        j                  ||	      5  |j                  |d
       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr   rx   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=1r<   r   ry   )	r"   	TypeErrorr~   
ValueErrorrD   rE   r2   r}   r#   )r$   reduction_funcr%   warn_msgerrorrG   warns          r   %test_agg_str_with_kwarg_axis_1_raisesr      s    	!	B">"22LMH--K>**BC	uC	( +''H= 	+FF>F*	++ +	+ 	++ +s$   B)B=BB	BB#z(func, expected, dtype, result_dtype_dictr   )rT   rU   rj   int64r   glv @r   ijkr   g      @Int64r   r   c                    t        g dgdz  t        j                  ddgg dg            j                  ||d      }d}t	        j
                  t        |	      5  |j                  d
d
      }d d d        j                  |       }t        |gdz  g d      j                  |      }t	        j                  ||       y # 1 sw Y   SxY w)N)r   r   r   r   rT      r   r   r   r   ru   ))r   r   )r   r   rv   r<   r   rw   )
r   r   from_productastyper2   r}   r~   r"   r#   r3   )funcr7   r   result_dtype_dictr$   rG   r%   r6   s           r   (test_multiindex_groupby_mixed_cols_axis1r      s     
	q ''#s_(EF
 f%U34 
 8C		#	#M	= )ZZaaZ()VVD\F(aAHHH &(+) )s   CCz&func, expected_data, result_dtype_dictr   r   
   rl         )r   r   g;f?c                    t        t        j                  d      j                  dd      t	        g dd      t	        g dd      d	
      j                  ddi      }d}t        j                  t        |      5  |j                  dd      }d d d        j                  |       }t        |t	        g dd      t	        ddgd            j                  |      }t        j                  ||       y # 1 sw Y   hxY w)Nrl   r   r   r   r   r   yr   )r   r   r   r   r   r   )rC   ru   r   r   r   rv   r<   r   r   r   )rt   rC   ru   )r   rm   arangereshaper   r   r2   r}   r~   r"   r#   r3   )r   expected_datar   r$   rG   r%   r6   r7   s           r   test_groupby_mixed_cols_axis1r     s     

		"a#IC(&S1	

 fb']  8C		#	#M	= %ZZ!Z$%VVD\FIC(r2hS) f	 
 &(+% %s   ;C66C?c                    | j                  d      }d }|j                  |      }| j                  dk(  j                         }| j                  dk(  j                         }t	        |j
                        }t        t        j                  |g|z        t        d      d      }t        j                  |j                  d      |       t        t        j                  |g|z        t        d      d      }t        j                  |j                  d      |       d }t               j                  | j                        j                  |      }t        |t              sJ t	        |      dk(  sJ y )	Nr:   c                     | j                   S r)   sizesers    r   r,   z-test_aggregate_item_by_item.<locals>.<lambda>;  s
    388 r!   foobarBCDrC   r   c                     | j                   S r)   r   r   s    r   aggfun_1z-test_aggregate_item_by_item.<locals>.aggfun_1H  s    xxr!   r   )r"   r#   r:   r   r   ru   r	   rm   arrayr   r2   rO   xsassert_almost_equalr   
isinstance)	r$   r5   aggfun_0r6   foosumbarsumKr   r   s	            r   test_aggregate_item_by_itemr   8  s   jjoG#H[["Fddem  "Fddem  "FFNNA 6(Q,'tE{
GC699U+S1
6(Q,'tE{
GC699U+S1 [  &**84Ffi(((v;!r!   c                 x   | j                  ddg      }d }t        j                  t        d      5  |j	                  |       d d d        |g d   j	                  |      }| j
                  d d g df   }|j                  ddg      j	                  |      }t        j                  ||       y # 1 sw Y   mxY w)Nr:   rM   c                 ^    | j                   t        k(  rt        d      | j                         S )NTest error message)r   r   r   r   r   s    r   r   ztest_wrap_agg_out.<locals>.funcS  s&    99011wwyr!   r   r<   )r   EF)r:   rM   r   r   r   )r"   rD   rE   r   rN   locr2   r3   )three_groupr5   r   r6   exp_groupedr7   s         r   test_wrap_agg_outr   P  s    !!3*-G
 
y(<	=  $ _%//5F//!%>">?K""C:.88>H&(+   s   B00B9c                 r   dt         j                  fdt         j                  fdt         j                  fg}d}t	        j
                  t        |      5  | j                  d      d   j                  |      }d d d        t        g d      }t	        j                  j                  |       y # 1 sw Y   7xY w)	Nr0   maxmin%is currently using SeriesGroupBy.meanr<   r:   r;   )r0   r  r  )rm   r0   r  r  r2   r}   r~   r"   r#   r   assert_index_equalru   )r$   funcsrG   r6   exp_colss        r   *test_agg_multiple_functions_maintain_orderr  `  s    bgg%AE
1C		#	#M	= 1C%))%01+,H&..(3	1 1s   $B--B6c                     | j                   d d dgf   j                  | d         }|j                  d       }|j                  j                  dk(  sJ y )Nr;   r:   c                 "    | j                         S r)   r0   r   s    r   r,   z(test_series_index_name.<locals>.<lambda>m  s    1668 r!   )r   r"   r#   rC   r   )r$   r5   r6   s      r   test_series_index_namer  k  sL    ffQX&&r#w/G[[+,F<<###r!   c                     t        t        j                  j                  d      j	                  d      t        j                  ddd      g d      } | j                  d	      j                  d
t        t        j                  d      t        t        j                  d      gi      }t        j                  dd	d      }t        j                  ddg      }t        j                  dD cg c]7  }| j                  d	      j                  j                  |      j                  9 c}      j                   }t        |||      }t#        j$                  ||       y c c}w )Nr     r   1/1/2012sr  )r   r   r:   rM   r;   rC   ru   3minr:   H.?q镲q?r   )r:   quantiler  r  r   )r   rm   r   r   r   r   r   resampler#   r   r  r   ro   r   r:   valuesTr2   r3   )r$   r6   expected_indexexpected_columnsr  expected_valuesr7   s          r   %test_agg_multiple_functions_same_namer   q  s   	
		a 00;mmJS$?
B
 [[ $$	wr{{f-wr{{f/MNOF ]]:FAFN!--/@BS.TUhh=MNV				'	'!	'	,	3	3Na  !1H &(+ 	Os   +<Ec            	      d   t        t        j                  j                  d      j	                  d      t        j                  dddd      t        g dd	
            } | j                  d      j                  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                  dD cg c]7  }| j                  d      j                  j                  |      j                   9 c}      j"                  }t        j$                  | j                  d      j                  j'                         |g      }t        |||      }t)        j*                  ||       y c c}w )Nr   r  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   r  r   )r   rm   r   r   r   r   r   r   r  r#   r   r  r   ro   r   r:   r  r  hstackr$  r2   r3   )r$   r6   r  r  r  non_ohlc_expected_valuesr  r7   s           r   7test_agg_multiple_functions_same_name_with_ohlc_presentr,    s^    

		a 00;mmJS$UKoG4
B
 [[ $$	vwr{{f5wr{{f7UVWF ]]:FAERN!--	
 $
  "xx=MNV				'	'!	'	,	3	3N a  ii	V				#	#	%'?@O !1H &(+ 	Os   =<F-c                    | j                  ddg      } ddg}ddg}| j                  d      d   j                  |      }| j                  d      d   j                  |      }t        j                  ||       | j                  d      j                  |      }| j                  d      j                  |      }t        j                  ||       y )	NrM   r;   r   )r   r0   r   )r   r   r:   r   )dropr"   r#   r2   r3   )r$   r  ex_funcsr6   r7   s        r   -test_multiple_functions_tuples_and_non_tuplesr0    s     
#s	$Be$E0HZZ_S!%%e,Fzz#s#''1H&(+ZZ_  'Fzz#""8,H&(+r!   c                    | j                  d      }|j                  ddd      }|j                  ddd      }t        ||gddgd      }|j                  ddd      j	                  dd	      }ddgddgd}|j                  |      }t        j                  ||       |j                  dddgd      }|j                  dddgd      }t        j                  ||       d
 }d }d}	t        j                  t        |	      5  ddddd}|j                  |       d d d        dg||gd}|j                  |       y # 1 sw Y   #xY w)Nr:   r0   r;   r   r   r   )keysry   r   r   rw   c                 ,    t        j                  |       S r)   rm   r0   r   s    r   	numpymeanz:test_more_flexible_frame_multi_function.<locals>.numpymean  s    wwqzr!   c                 0    t        j                  | d      S )Nr   )ddof)rm   r   r   s    r   numpystdz9test_more_flexible_frame_multi_function.<locals>.numpystd  s    vvaa  r!   nested renamer is not supportedr<   r   r   )r"   r#   r
   	swaplevel
sort_indexrN   r2   r3   rD   rE   r   )
r$   r5   exmeanexstdr7   dr6   r6  r9  rG   s
             r   'test_more_flexible_frame_multi_functionrA    s[   jjoG[[vF34FKKe%01EvuoVUO!DH!!!QQ!/:::KHuoVUO4Aq!F&(+ V65/BCF  vVUO!DEH&(+! -C	)	5 ve<=!
 hi23Aa s   EEc                    | j                  d      }dddddid}d}t        j                  t        |      5  |j	                  |       d d d        ddddd}t        j                  t        |      5  |j	                  |       d d d        ddddd}t        j                  t        |      5  |j	                  |       d d d        y # 1 sw Y   xY w# 1 sw Y   SxY w# 1 sw Y   y xY w)	Nr:   r0   r   r;  r   r2  r:  r<   )r"   rD   rE   r   rN   )r$   r5   r@  rG   s       r    test_multi_function_flexible_mixrC    s    jjoG U+5%.AA
,C	)	5 ! U+%8A	)	5 ! U+%8A	)	5 !    s#   C6C3C&CC#&C/c                  Z   t        g dg dg dd      } | j                  d      }t        ddgd      }|d	   j                  d
       }t	        ddg|d	      }t        j                  ||       |d   j                  d       }t	        ddg|d      }t        j                  ||       y )Nr   r   r   r   r   r   r   r   )NNr   r   r   r   r   r   r   r   r   r   c                 (    | dk7  j                         S r   allr   s    r   r,   z1test_groupby_agg_coercing_bools.<locals>.<lambda>  s    !q& r!   FTr   r   c                 >    | j                         j                         S r)   )isnullrJ  r   s    r   r,   z1test_groupby_agg_coercing_bools.<locals>.<lambda>  s    )9 r!   )r   r"   r   rN   r	   r2   rO   )datgprC   r6   r7   s        r   test_groupby_agg_coercing_boolsrO    s    
,\@RS
TC	S	B1a&s#EW78Fudm5s;H68,W9:FtUm5s;H68,r!   c                      t        g dg dd      } | j                  d      dg   j                  ddi      }t        dddgiddg	      j                  dd
      }t	        j
                  ||       y )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   )rM  r6   r7   s      r   "test_groupby_agg_dict_with_getitemrS    so    
3/J
KC[[se$((#u6F#1vsCj9EEcPQERH&(+r!   c                      t        g dg dg dgg d      } | j                  d      }|j                  ddi      }t        dd	d
git        ddgd            }t	        j
                  ||       y )Nr   )r   r   r   rT   )r   r   rT   r   r   r   r   r   r   rT   r   r   r   r   rB   r   r"   r#   r   r2   r3   r$   r%   r6   r7   s       r   !test_groupby_agg_dict_dup_columnsrW    si    		|\2$
B 
CBVVS%L!F#1veQF.EFH&(+r!   opc                 "    | j                         S r)   rK   r   s    r   r,   r,     rL   r!   c                 "    | j                         S r)   )cumsumr   s    r   r,   r,      s    !((* r!   c                 $    | j                  d      S Nr   	transformr   s    r   r,   r,   !  s    !++e$ r!   c                 $    | j                  d      S Nr[  r^  r   s    r   r,   r,   "  s    !++h' r!   c                 $    | j                  d      S r]  r#   r   s    r   r,   r,   #  s    !%%, r!   c                 $    | j                  d      S ra  rc  r   s    r   r,   r,   $  s    !%%/ r!   c                    t        ddgddgd      }|j                  d      d   } | |j                  d            d   j                  }t	        |      sJ  | |j                  d            j                  }t	        |      sJ y )Nr   FTr   r   r   )r   	set_indexr"   r   r   )rX  r$   r  r6   s       r   test_bool_agg_dtyperg    s     
!Qudm4	5B
S#A

3 %++FF###		#%%FF###r!   zkeys, agg_indexr   r   r   r   rg   input_dtype)boolint32r   float32r   result_dtypemethod)r   rN   r_  c                    t        dgdgdgd      }|d   j                  |      |d<   t        |j                  |       dg   |      } |fd      }|dk(  rt	        j
                  dd      n|}t        d|d   j                  d   gi|	      j                        }	|d
k(  rdg|	j                  _        t        j                  ||	       y )Nr   r   TrG  r   c                 @    | j                        j                  d   S r   r   iloc)r   rl  s    r   r,   z2test_callable_result_dtype_frame.<locals>.<lambda>I  s    !((<055a8 r!   r_  r   rB   r   )r   r   getattrr"   r   
RangeIndexrq  ru   rh   r2   r3   )
r3  	agg_indexrh  rl  rm  r$   rX  r6   r  r7   s
      `      r    test_callable_result_dtype_frameru  4  s    $ 
!A3dV4	5Bgnn[)BsG	D!3%(&	1B89F,2k,AR]]1a(yN#3Q01HOOH "#&(+r!   input)Tr         ?r   c                 >   t        dgdg|gd      }t        |j                  |       d   |      } |fd      }|dk(  rt        j                  dd      n|}t        |d   j                  d   g|d      j                        }	t        j                  ||	       y )	Nr   r   rG  r   c                 @    | j                        j                  d   S r   rp  )r   r   s    r   r,   z3test_callable_result_dtype_series.<locals>.<lambda>a  s    !((5/..q1 r!   r_  r   r   )
r   rr  r"   r   rs  r	   rq  r   r2   rO   )
r3  rt  rv  r   rm  r$   rX  r6   r  r7   s
      `      r   !test_callable_result_dtype_seriesrz  S  s     
!A3eW5	6B	D!#&	/B12F,2k,AR]]1a(yNr#w||A'~CHOOPUVH68,r!   c                      t        g dg dd      } | j                  d      j                  g d      }|j                  j                  d   }t        g d      }t        j                  ||       y )NrE  r   rQ  r:   )r   r  r0   r$  r  r   )r   r"   r#   ru   levelsr   r2   r  )r$   r   r6   r7   s       r   #test_order_aggregate_multiple_funcsr}  g  sY    	L9	:B
**S/

C
DC[["F:;H&(+r!   c           	         t        g dddt        j                  ddt        j                  gd|       }|j                  d      }|j	                         }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                  ||       |j                  dd      }|j	                         }|j                         }t        j                  ||       y )N)r   r   r   r   r   r      rZ   r   r   r   r   r   )r  r  rZ   rZ   r   r   )r%  r&  r'  r(  r   r   r   )ru   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_dtypesr  s  s    	 Br2ruu'EF"
B 
CBWWYF	BEE7Q;q2$(;''#0P(QRL(<3G"	H &(+
**S5*
)ChhjG$$&I'9-r!   how)firstlastr  r  r0   medianc                    t        dddgd      }|j                  d      j                  d|i      }|j                  j	                  |       |_        |j                  d      j                  d|i      }|dvr.|j                  j	                  t
        j                        |_        t        j                  ||d	       y )
Nl   &tLWHd~ r   r   r   r   r   r   )r0   r  T)check_exact)	r   r"   r#   r   r   rm   r   r2   r3   )r   r  r$   r7   r6   s        r   test_uint64_type_handlingr    s     
,Aq6:	;Bzz#""C:.H44;;uBDZZ_  #s,F
$$88??288,&(=r!   c                      d} t        g dg dd      }t        j                  t        |       5  |j	                  d      j                  ddg       d d d        y # 1 sw Y   y xY w)NzFunction namesr   r   r   r   r   rQ  r<   r:   r  )r   rD   rE   r   r"   r#   )rG   r$   s     r   test_func_duplicates_raisesr    sT    
C	L9	:B	)	5 ,


3UEN+, , ,s   #AA%rC   abc2020r   r   ))r   r   )r   r   )r   r   c                     t        g dg dd|       }|j                  d      j                  dt        j                  i      }t        ddgddgd      j                  d      }t        j                  ||       y )	Nr   r   r   r   )groupr   rB   r  r   r   r   )r   r"   r#   r	   nuniquerf  r2   r3   )rC   r$   r6   r7   s       r   $test_agg_index_has_complex_internalsr    si     
Y;5	IBZZ $$gv~~%>?FAq6QF;<FFwOH&(+r!   c                      t        g dg dg dd      } | j                  d      j                         }t        ddgddgdt        d	d
gd            }t	        j
                  ||       y )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    sm    	-7=	

B ZZ##%F%8S#JV,H &(+r!   c            
         t        t        j                  dd      g dg dg dt        j                  dd      g dd      j                  t              } | j                  g d      j                         }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                  ||       y )N2000r   )r   )r   r   r   r@  r   )r   r   r@  e)r:   rM   r;   r   r   r   )r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r"   r  	Timestamprm   r   r2   r3   r  s      r   #test_agg_split_object_part_datetimer    s    	vq1%%vq1	
	
 fVn  ZZ%))+F,,v&',,v&'	
 hhsmH &(+r!   c                       e Zd Zd Zd Zd Zd Zej                  j                  d e
j                  dd      d	ddgg      d
        Zy)TestNamedAggregationSeriesc                 N   t        g d      }|j                  g d      }|j                  dd      }t        ddgddgdd	d
gt	        j
                  ddg            }t        j                  ||       |j                  dd      }|d
d	g   }t        j                  ||       y )Nr   r  r   r  r   r   rU   r   r   r   r   r   )r   r   r	   r"   r#   r   rm   r   r2   r3   )selfr$   grr6   r7   s        r   test_series_named_aggz0TestNamedAggregationSeries.test_series_named_agg  s    L!ZZ%%5)a&1v&c
"((Aq6BR
 	fh/%5)S#J'
fh/r!   c                 &   t        ddg      j                  ddg      }t        j                  t        d      5  |j                          d d d        |j                  g       }t        g       }t        j                  ||       y # 1 sw Y   =xY w)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  ss    QF^##QF+]]9N; 	FFH	 R(
fh/	 	s   BBc                     t        g d      j                  g d      }|j                  dd      }t        ddgddgdt	        j
                  ddg            }t        j                  ||       y )	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_    I&&y1&&5E&*Aq6A7rxxA?OP
h0r!   c                     t        g d      j                  g d      }|j                  d d       }t        ddgddgdt	        j
                  ddg            }t        j                  ||       y )	Nr  r  c                      yr    r   s    r   r,   z9TestNamedAggregationSeries.test_mangled.<locals>.<lambda>      r!   c                      yNr   r  r   s    r   r,   z9TestNamedAggregationSeries.test_mangled.<locals>.<lambda>  r  r!   r   r   r   rB   r  r  s       r   test_mangledz'TestNamedAggregationSeries.test_mangled  s_    I&&y1+5Aq6A7rxxA?OP
fh/r!   inpanythingr  columnaggfunc)r  r  c                    t        g d      }dt        |      j                   }t        j                  t
        |      5  |j                  |j                        j                  |       d d d        y # 1 sw Y   y xY w)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  r  rG   s       r   test_named_agg_nametuplez3TestNamedAggregationSeries.test_named_agg_nametuple  sg     +,.tCy/A/A.BC]]9C0 	+IIahh##c#*	+ 	+ 	+s   ,A66A?N)r  
__module____qualname__r  r  r  r  rD   markparametrizer   NamedAggr  r  r!   r   r  r    s\    0010 [[BKKz59	
++r!   r  c                   <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)
TestNamedAggregationDataFramec           	         t        g dg dg dd      }|j                  d      j                  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      }|j                  d      j                  ddd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
                  ||       y )"Nr   r   r   r   rF  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:   r  )r:   r0   r:   )b_mina_mina_meanr  r  a_98rT   rU   r   r         ?      @g\(\?gףp=
@)
r   r"   r#   r   r2   r3   	functoolsr   rm   
percentile)r  r$   r6   r7   p98s        r   test_agg_relabelz.TestNamedAggregationDataFrame.test_agg_relabel  s$   *LQ
 G$((|<(P!f1v.c
1g&

 	fh/ 4G$(( s ) 
 QQ*QQt c
1J
 	fh/r!   c                     t        g dg dg dd      } |j                  d      j                  di ddi}t        ddd	git        d
dgd            }t	        j
                  ||       y )Nr  rF  r  r  r  zmy colr  r   r   r   r   r   rB   r  rU  r  r$   r6   r7   s       r   test_agg_relabel_non_identifierz=TestNamedAggregationDataFrame.test_agg_relabel_non_identifier7  sk    *LQ
 )G$((DHl+CDhA/uc3Zg7VW
fh/r!   c                 h   t        g dg dd      }|j                  d      j                  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      }|j                  d      j                  d|fd|f      }t        ddgddgdt        ddgd
            }t	        j
                  ||       y )Nr  r   rQ  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   rm   r  r  )r  r$   r5   r7   r  r  tests          r   test_duplicate_no_raisesz6TestNamedAggregationDataFrame.test_duplicate_no_raises@  s    \=>**S/%%%EAq6A7uaVRU?VW
gx0##BMMR8##BMMR8$$";_UV,,v&**)7H + 
  #JSzBc
0
 	gx0r!   c                    t        g dg ddt        j                  ddgddgg            }|j                  d	
      j	                  ddd      }t        d	dgd	dgddgdddg      }t        j                  ||       y )Nr  r   rQ  r:   rM   r   r   rB   r   r   r  r  )rM   r0   )aabbccr   r        @)r   r   r   r"   r#   r2   r3   r  s       r   test_agg_relabel_with_levelz9TestNamedAggregationDataFrame.test_agg_relabel_with_levelY  s    \2))C:Sz*BC
 !$(( ) 
 q6!QSz:3*
 	fh/r!   c                    t        g dg dd      }|j                  d      }d}t        j                  t        |      5  |j                  d       d d d        t        j                  t        |      5  |j                          d d d        t        j                  t        |      5  |j                  d	d
       d d d        y # 1 sw Y   uxY w# 1 sw Y   MxY w# 1 sw Y   y xY w)Nr  r  rQ  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_raisesf  s    YY78**S/]]9E2 	KKAK	 ]]9E2 	KKM	 ]]9E2 	5KK,)K4	5 	5	 		 		5 	5s$   C7C+C CC C)c                     t        ddgddgd      }t        j                  d      }t        j                  t
        |      5  |j                  d      j                  d	       d d d        y # 1 sw Y   y xY w)
Nr   r   r   rQ  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_raisess  sd    aV1a&12		89]]851 	0JJsO,/	0 	0 	0s   "A..A7c                 .   t        ddgddgd      }|j                  d      j                  t        j                  dd      t        j                  dd	      
      }|j                  d      j                  dd
      }t        j                  ||       y )Nr   r   r   rQ  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_namedtupley  s    aV1a&12C$$kk#u%C)Q % 
 ::c?&&&H
fh/r!   c                     t        ddgddgddgd      }|j                  d      j                  dd	 fd
d f      }t        ddgddgdt        ddgd            }t	        j
                  ||       y )Nr   r   r   r   r   r  r:   rM   c                      yr   r  r   s    r   r,   z<TestNamedAggregationDataFrame.test_mangled.<locals>.<lambda>  r  r!   r;   c                      yr  r  r   s    r   r,   z<TestNamedAggregationDataFrame.test_mangled.<locals>.<lambda>  r  r!   r  r   rB   rU  r  s       r   r  z*TestNamedAggregationDataFrame.test_mangled  s{    aV1a&1v>?C$$['9c;=O$PAq6A7uaVRU?VW
fh/r!   N)r  r  r  r  r  r  r  r  r  r  r  r  r!   r   r  r    s+    "0H01205000r!   r  zCagg_col1, agg_col2, agg_col3, agg_result1, agg_result2, agg_result3r   r:   r  r  )r   rM   r0   r  r  g      @      @c                     t        |       S r)   )r  r   s    r   r,   r,     s
    3q6 r!   c                      yr  r  r   s    r   r,   r,     r  r!   r  r  c                      yr  r  r   s    r   r,   r,     r  r!   c                    t        g dg dg dd      }t        j                  g d      |_        t	        ddgd	      }|j                  d      j                  d
      }t        dddgi|      }	t        j                  ||	       d}
t        j                  t        |
      5  |j                  d      j                  | ||      }d d d        t        |||d|      }	t        j                  ||	       y # 1 sw Y   1xY w)Nr  rF  r  r  r   r  r  r  r   r   r  r   r  )r  r  r   r   rB   r  r<   )col_1col_2col_3)r   r   ro   ru   r   r"   r#   r2   r3   r}   r~   )agg_col1agg_col2agg_col3agg_result1agg_result2agg_result3r$   idxr6   r7   rG   s              r   "test_agg_relabel_multiindex_columnr     s    B 
&\M
B ''(PQBJ
c

0CZZ'++2E+FF'Aq6*#6H&(+
1C		#	#M	= 
N+//(( 0 

 kJRUH &(+
 
s   &$C::Dc                     t        g dg dg dd      } t        j                  g d      | _        t	        j
                  t        d      5  | j                  d      j                  d	
       d d d        y # 1 sw Y   y xY w)Nr  rF  r  r  r  zdo not existr<   r  ))Yr   r  r  )	r   r   ro   ru   rD   rE   r  r"   r#   )r$   s    r   ,test_agg_relabel_multiindex_raises_not_existr#    si    	&\M
B ''(PQBJ	x~	6 >


>"&&)<&=> > >s   "A88Bc                     t        g dg dg dd      } t        j                  g d      | _        | j	                  d      j                  dd      }t        d	d
gd      }t        ddgddgd|      }t        j                  ||       y )Nr  rF  r  r  r  r  )r  r  r   r   r   r   r   r   rB   )	r   r   ro   ru   r"   r#   r   r2   r3   )r$   r6   r  r7   s       r   &test_agg_relabel_multiindex_duplicatesr%    s     
&\M
B ''(PQBJZZ'++
!4 , F c

0C1vQF33?H&(+r!   kwargsr   r  r  c                    t        g dg dg dd      }|j                  d      j                  |       }t        ddgt        ddgd	d
      t	        j
                  ddgg            }t        j                  ||       y )Nr  r  r   r   r   rG  r   r   r   r   r   r  r   r  r  )r   r"   r#   r   r   ro   r2   r3   )r&  r$   r6   r7   s       r    test_groupby_aggregate_empty_keyr)    st     
C	DBZZ_  (F	
AQF'4&&e~6H
 &(+r!   c                      t        g dg dg dd      } | j                  d      j                  dg i      }t        t        dgg gg g g            }t	        j
                  ||       y )	Nr  r  r(  rG  r   r   )r|  codesr   r   r"   r#   r   r2   r3   r  s      r   -test_groupby_aggregate_empty_key_empty_returnr-    sZ    	C	DBZZ_  #r+FSE2;r2h!OPH&(+r!   c            	          t        g d      } | j                  ddgd      j                  dt        f      }t        d	gt	        g g gg g gddg
            }t        j                  ||       y )NrG  r   r   r   Fr   r   )r@  r@  rg   r   )r   r"   r#   r   r   r2   r3   r  s      r   2test_groupby_aggregate_empty_with_multiindex_framer/    sl    	?	+BZZc
uZ599S$K9HFZR2r(3*MH &(+r!   c                      t        g dg dd      } | j                  dd      }|j                  t        j                  dd	      
      }t        g dg dd      }t        j                  ||       y )N)r   r   zr   r   r1  rw  皙?r{   g      @g@      ?)r   valr   Fr  r5  r  r  min_val)r   r   r1  )rw  r3  r4  )r   r7  r  r$   r5   r6   r7   s       r   9test_grouby_agg_loses_results_with_as_index_false_relabelr9    sf     
.7VW
B jjj/G[[E5!I[JF=MNOH&(+r!   c                      t        g dg dg dd      } | j                  ddgd      }|j                  t        j                  d	d
            }t        g dg dg dd      }t        j                  ||       y )N)r   r   r   r   r   r   )r   r   r   r   r   r   r2  )r   r  r5  r   r  Fr  r5  r  r  r6  r   r   r   )r   r   r   )rw  r4  r3  )r   r  r7  r  r8  s       r   Dtest_grouby_agg_loses_results_with_as_index_false_relabel_multiindexr<    sv    
 
122	

B jj%5j9G[[E5!I[JFEUVH &(+r!   r   c                 "    | j                         S r)   r
  r  s    r   r,   r,     s    qvvx r!   c                 ,    t        j                  |       S r)   r5  r>  s    r   r,   r,     s    2771: r!   c                 ,    t        j                  |       S r)   )rm   nanmeanr>  s    r   r,   r,     s    A r!   c                 v   g dg dg}t        |t        j                  g dg dgddg            }|j                  t	        j
                  d	d
g            j                  |       }dddddddddd}t        |t	        j
                  d	d
g      |j                        }t        j                  ||       y )N)r   r   r   )rT   rU   r   r  )r   r   r   SiskoJanewayrg   r   r   r   rw        @r|   r  g      @r{   ))r   r   )r   r   )r   r   r  )
r   r   from_arraysr"   rm   r   r#   ru   r2   r3   )r   rt   r$   r6   expected_dictr7   s         r   test_multiindex_custom_funcrH    s    
 y!D	&&	"7I*>

B ZZ!Q()--d3FC C C M
 bhh1v.>

SH&(+r!   c                 0    t        j                  | d      S Ng?r  rm   r  r>  s    r   myfuncrL  2  s    ==d##r!   c                 0    t        j                  | d      S rJ  rK  r>  s    r   r,   r,   6  s    BMM!t,D r!   c                     t        g dg dg dd      }|j                  d      j                  dd| f      }t        d	d
gddggddgt        ddgd            }t	        j
                  ||       y )NcatdogrP  rQ  g333333"@g      @      #@      A@皙@r  #@     h@kindheightweightrZ  )r[  r0   r[  )mean_heightperc90g"@g0'5"@g      4@g5^I@r]  r^  rP  rQ  r   r   rU  )r   animalsr6   r7   s       r   test_lambda_named_aggr`  6  s     0+,	
G __V$((&$/? ) F 
vu&)UEN0H &(+r!   c                     t        t        j                  dgdz        j                  dd      t	        d      t	        d            } g d| d<   | j                  d      j                  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                  ||       y )Nr   rj   r   XYZr  rt   ru   rC   )group 1rd  r   groupingc                 "    | j                         S r)   )tolistr   s    r   r,   z,test_aggregate_mixed_types.<locals>.<lambda>S  s    
 r!   r   rd  r   r  )Xr"  Zr   r  )
r   rm   r   r   r   r"   rN   r   r2   r3   )r$   r6   r   r7   s       r   test_aggregate_mixed_typesrj  M  s    	XXqcAg&&q!,d5ke
B /BzNZZ
#--.BCFcA3_1v1v1v&>?MQ	N(DoX6H
 &(+r!   zNot implemented;see GH 31256reasonc                  *   d } t        dt        j                  g d      i      }|j                  g d      j	                  |       }t        dt        j                  dt        j
                  gd      iddg	      }t        j                  ||       y )
Nc                 @    t        | dkD        ryt        j                  S )Nr   r   )rJ  r   r   r   s    r   r  z5test_aggregate_udf_na_extension_type.<locals>.aggfuncf  s    q1u:55Lr!   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_typero  ]  sr     
C),-	.BZZ	"&&w/F#rxxBEE
'BCAq6RH&(+r!   c                   h    e Zd Zd Zd Zej                  j                  d      d        Zd Z	d Z
y)	TestLambdaManglingc                     t        g dg dd      }|j                  d      j                  dd d gi      }t        ddgd	d	gd
t        dd	gd            }t	        j
                  ||       y )Nr  r   rQ  r:   rM   c                      yr   r  r   s    r   r,   z/TestLambdaMangling.test_basic.<locals>.<lambda>u  r  r!   c                      yr  r  r   s    r   r,   z/TestLambdaMangling.test_basic.<locals>.<lambda>u  r  r!   r   r   ))rM   
<lambda_0>)rM   
<lambda_1>r   rB   rU  r  s       r   
test_basiczTestLambdaMangling.test_basics  sm    \=>C$$cK+E%FG#$a&1vFAS)
 	fh/r!   c                     t        g d      j                  g d      }|j                  d d g      }ddgddgd}t        |t	        j
                  ddg            }t        j                  ||       y )	Nr   r  c                      yr   r  r   s    r   r,   z?TestLambdaMangling.test_mangle_series_groupby.<locals>.<lambda>  r  r!   c                      yr  r  r   s    r   r,   z?TestLambdaMangling.test_mangle_series_groupby.<locals>.<lambda>  r  r!   r   r   ru  rv  rB   r  )r  r  r6   exp_datar7   s        r   test_mangle_series_groupbyz-TestLambdaMangling.test_mangle_series_groupby}  se    L!)),7k23#$a&A?XRXXq!f-=>
fh/r!   zGH-26611. kwargs for multi-agg.rk  c                 p   dd}dd}t        ddg      j                  ddg      j                  ||gd      }t        dgdgd      }t	        j
                  ||       t        ddg      j                  ddg      j                  ||gdd	
      }t        dgdgd      }t	        j
                  ||       y )Nr   c                 .    | j                         |z   |z   S r)   rK   r   r   r   s      r   r,   z5TestLambdaMangling.test_with_kwargs.<locals>.<lambda>  s    quuw{Q r!   r   c                 .    | j                         ||z  z   S r)   rK   r  s      r   r,   z5TestLambdaMangling.test_with_kwargs.<locals>.<lambda>  s    quuwQ r!   r   r   r   r{  r   )r      r   )r   )r   )r	   r"   r#   r   r2   r3   )r  f1f2r6   r7   s        r   test_with_kwargsz#TestLambdaMangling.test_with_kwargs  s    ..A''A/33RHa@QCsCD
fh/A''A/33RHa23FRDE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      |      }|j                  d      j                  t	        j
                  dd       t	        j
                  dd      t	        j
                  dd            }t        j                  ||       |j                  d      j                  dd fdd      }t        j                  ||       y )NrO  rR  rU  rY  )height_sqr_min
height_max
weight_maxp=
׳T@      B@rS  rT  rW  rX  rP  rQ  rZ  r   r  byr[  c                 2    t        j                  | dz        S rA   rm   r  r   s    r   r,   z=TestLambdaMangling.test_agg_with_one_lambda.<locals>.<lambda>      266!Q$< r!   r  r  r\  c                 2    t        j                  | dz        S rA   r  r   s    r   r,   z=TestLambdaMangling.test_agg_with_one_lambda.<locals>.<lambda>      q!t r!   r[  r  r\  r  )r   r   r"   r#   r   r  r2   r3   r  r$   ru   r7   result1r  s         r   test_agg_with_one_lambdaz+TestLambdaMangling.test_agg_with_one_lambda  s    4/0
 A#(%."Dk"El
 V4
 ***'++;;)? {{(EB{{(EB , 
 	gx0 ***'++$&<=(( , 

 	gx0r!   c           
      f   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      |      }|j                  d      j                  dd fdddd fdd f      }t	        j
                  ||       |j                  d      j                  t        j                  dd       t        j                  dd      t        j                  dd      t        j                  dd       t        j                  dd             }t	        j
                  ||       y ) NrO  rR  rU  rY  )r  r  r  height_max_2
weight_minr  r  rS  rT  rW  rX  rV  r  rP  rQ  rZ  r   r  r  r[  c                 2    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)   rm   r  r   s    r   r,   z=TestLambdaMangling.test_agg_multiple_lambda.<locals>.<lambda>  s    bffQi r!   r\  c                 ,    t        j                  |       S r)   r  r   s    r   r,   z=TestLambdaMangling.test_agg_multiple_lambda.<locals>.<lambda>  s    BFF1I r!   c                 2    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    bffQi r!   )r   r   r"   r#   r2   r3   r   r  r  s         r   test_agg_multiple_lambdaz+TestLambdaMangling.test_agg_multiple_lambda  sA    4/0

 #(%."Dk"El!$d"Cj V4

 ***'++$&<=(("$78 "56 , 
 	gx0 ***'++;;)? {{(EB{{(EBH>QR{{(<OP , 
 	gx0r!   N)r  r  r  rw  r}  rD   r  xfailr  r  r  r  r!   r   rq  rq  r  s?    00 [[?@	0 A	0%1N11r!   rq  c                      t        g dg dd      } | j                  d      j                  dd i      }t        ddgd	d
gd      j                  d      }t	        j
                  ||       y )N)SWr  )rw  rw  r{   rQ  r:   rM   c                 >    | j                  | j                  d         S )N)getrC   r   s    r   r,   z+test_groupby_get_by_index.<locals>.<lambda>  s    aeeAGGBK.@ r!   r  r  rw  r{   )r   r"   r#   rf  r2   r3   )r$   r   r7   s      r   test_groupby_get_by_indexr    sa    	?	@B
**S/

s$@A
BCSzc
;<FFsKH#x(r!   zgrp_col_dict, exp_data)nrcat_ordrT   r  r  c                    t        g dt        d      t        d      d      }|j                  ddd      }|d   j                  j	                         |d<   |j                  dd	
      j                  |       }t        j                  ddgddgd	dd      }t        ||      }d|v r&|d   j                  }|d   j                  |      |d<   t        j                  ||       y )Nr   r   r   r   rT   r   rU   ri   aabbccddaaaabbbbr  r  rP  categoryrP  r  r  rP  Fobservedr   r   
categoriesorderedr   r   )rt   rC   )r   r   r   rP  
as_orderedr"   r#   r   CategoricalIndexr   r2   r3   )grp_col_dictr|  input_df	result_df	cat_indexexpected_dfr   s          r    test_groupby_single_agg_cat_colsr    s     *J'
#	
H zjIJH"9-11<<>HY   7;;LII ##	c
Sz5uJI ;KK#))!,Y!7!>!>u!EI)[1r!   )r   r   r   )rT   ri   r   )r   r   r   )rT   r   r@  r   )r   r@  c                   
 t        g dt        d      t        d      d      }|j                  ddd      }|d   j                  j	                         |d<   |j                  dd	
      j                  |       }t        j                  ddgddgd	dd      }g }| j                         D ]C  \  
}t        |t              r|j                  
fd|D               1|j                  
|g       E t        j                  t        |            }t        |||      }|j                   D ]<  }	t        |	t              sd|	v s||	   j                  |d   j"                        ||	<   > t%        j&                  ||       y )Nr  r  r  r  r  r  r  rP  Fr  r   r   r  c              3   &   K   | ]  }|g 
 y wr)   r  ).0r   r   s     r   	<genexpr>z6test_groupby_combined_aggs_cat_cols.<locals>.<genexpr><  s     #>5QJ#>s   rc  )r   r   r   rP  r  r"   r#   r   r  itemsr   extendappendr   ro   r   ru   r   r2   r3   )r  r|  r  r  r  multi_index_listvmulti_indexr  colr   s             @r   #test_groupby_combined_aggs_cat_colsr    sx    *J'
#	
H zjIJH"9-11<<>HY   7;;LII ##	c
Sz5uJI ""$ ,1a###>A#>>##QF+	,
 ((/?)@AK;iPK"" Rc5!i3&6*3/66x	7J7P7PQKR
 )[1r!   c                      t        g dg dd      } | j                  d      }|j                  dg      }|j                  j	                  d      |_        |j                  d      }t        j                  ||       y )NrE  )r   r   r   r   r   r   r[  r  )r   r"   r#   ru   	droplevelr2   r3   )r$   rp   r6   r7   s       r   test_nonagg_aggr  J  sc     
L9	:B


3AUUH:F^^--b1FNuuXH&(+r!   c                  2   t        ddgt        j                  ddddddd      t        j                  d	dddddd      gd
      } | j                  d      j                  j	                         }| j                  d      d   }t        j                  ||       y )Nrh  r"  i  r   r   r      i`= i  rQ  r:   rM   )r   datetimer"   rM   r  rf  r2   rO   r  s      r   test_aggregate_datetime_objectsr  W  s     
s!!$1b"b&A!!$1b"b&A	

B ZZ_""$F||C %H68,r!   c                  J   t        g dg dg dd      } | j                  j                  d      | _        | j                  ddg      }|j                  j                  d       }t        j                  d	d
gd      }t        ddg|d      }t        j                  ||       y )N)r   r   r   r;  r   r   r   )c0c1pOr  r  c                     t        | dkD        S r   rI  r   s    r   r,   z1test_groupby_index_object_dtype.<locals>.<lambda>n  s    #a!e* r!   )r   r   r  )r  r  rg   FTr  r   )r   rC   r   r"   r  r#   r   ro   r	   r2   rO   )r$   r5   r   r  r7   s        r   test_groupby_index_object_dtyper  i  s    	/yQ	RBxxs#BHjj$&G
))--,
-C  ++	Z N udm>DH3)r!   c                      d } t        dgt        j                  d      g      }|j                  d       j	                  |       }t        dggdg      }t        j                  ||       y )Nc                 j    | j                         j                         ry t        j                  |       S r)   )isnarJ  rm   r   r   s    r   r   z)test_timeseries_groupby_agg.<locals>.func{  s#    88:>>vvc{r!   rw  z2018-01-16 00:00:00+00:00rB   c                      yr  r  r   s    r   r,   z-test_timeseries_groupby_agg.<locals>.<lambda>  r  r!   r   )r   r   r  r"   r#   r2   r3   )r   r$   r   r7   s       r   test_timeseries_groupby_aggr  x  s_    
 
C5.I!J K	LB
**[
!
%
%d
+C3%,H#x(r!   c                    | t         j                  v rt        j                  |       j                  }| t         j
                  v rt        j                  |       j                  }| t         j                  v r-t        j                  | j                               j                  }| t         j                  v r-t        j                  | j                               j                  }t        dgdgt        j                  g|       d      }dgdgg}t        j                  |d      }t        dt        j                  |g|       i|      }|j                  d	d
g      j!                  d       }t        j"                  ||       y )Nr   r   r   r  )r  r  rg   r  rB   r  r  c                     | S r)   r  r   s    r   r,   z,test_groupby_agg_precision.<locals>.<lambda>  s     r!   )r2   ALL_INT_NUMPY_DTYPESrm   iinfor  FLOAT_NUMPY_DTYPESfinfoFLOAT_EA_DTYPESlowerALL_INT_EA_DTYPESr   r   r   r   rF  r"   r#   r3   )any_real_numeric_dtype	max_valuer$   arraysrC   r7   r6   s          r   test_groupby_agg_precisionr    s>   !8!88HH3488	!6!66HH3488	!3!33HH399;<@@	!5!55HH399;<@@		EEHHi[0FG	

B ecU^F""61ABE	9+-CDEUH ZZ()--k:F&(+r!   c                    | dv ry t        ddgdt        j                  gg      }|j                  d      j	                  |       }|j                  d      j	                  d| i      }| dv rt        j                  ||d   d       y t        j                  ||       t        j                  |j                  |j                         y )N)corrwithnthr   r   )r   ngroupF)check_names)	r   rm   rn   r"   r#   r2   rO   r3   dtypes)r   objresult_reduced_seriesresult_reduced_frames       r    test_groupby_aggregate_directoryr    s    ,,
aVa[)
*CKKN..~>;;q>--q..AB++
!#7#:	
 	35IJ
!((*>*E*E	
r!   c                      t        g dd      } t        dgdt        j                  dg            }| j                  g d      j	                         }t        j                  ||       y )N)z1 dayz3 daysNaTtimedelta64[ns]r   z2 daysr   r   r   r   r   )r	   rm   r   r"   r0   r2   rO   )rt   r7   r6   s      r   test_group_mean_timedelta_natr    sR    ,4EFDxj(91#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                  }|j	                  g d      j                         }t        j                  ||       y )Nr   rB   r  )r   r	   rm   r   r"   r0   r2   rO   )
input_dataexpected_outputrt   r7   r6   s        r   test_group_mean_datetime64_natr     sU     vj)*D6/1#GHH\\)$))+F68,r!   zfunc, outputr0   y       @      2@y      $@      6@y      D@     V@y      I@     [@c                    t        t        j                  d      j                  dd      j	                  ddg            }|j                  |j                  dz        j                  |       }t        |      }t        j                  ||       y )Nr   r   r   r                  @)
r	   rm   r   r   dotr"   rC   r#   r2   rO   )r   outputrt   r6   r7   s        r   test_groupby_complexr    sl    
 "))B-''A.22Ar7;<D\\$**q.)--d3Ff~H68,r!   )r  r  r   c                 @   t        t        j                  d      j                  dd      j	                  ddg            }d}t        j                  t        |      5  |j                  |j                  dz        j                  |        d d d        y # 1 sw Y   y xY w)Nr   r   r   r   r  zNo matching signature foundr<   )r	   rm   r   r   r  rD   rE   r   r"   rC   r#   )r   rt   rG   s      r   test_groupby_complex_raisesr    sy     "))B-''A.22Ar7;<D
'C	y	, /TZZ!^$((./ / /s   .BBprodr  c                 :   t        g dg dg dd      }d}t        j                  t        |      5  |j	                  dd	      }d d d        t        j                  t        d
      5  j                  |        d d d        y # 1 sw Y   ?xY w# 1 sw Y   y xY w)Nr  r   r   rT   )r   rU   ri   rG  rv   r<   r   r   r   z"axis other than 0 is not supported)	r   r2   r}   r~   r"   rD   rE   NotImplementedErrorr#   )r   r$   rG   r%   s       r   test_multi_axis_1_raisesr    s    
 
C	DB
7C		#	#M	= %ZZ!Z$%	*2V	W 
t % % s   B*BBBztest, constantr:   rM   r;   r|   r   )marksc                     t        |       }|j                  d      j                  t        j                        }t        |      }|j                  d      }t        j                  ||       y r   )r   r"   r#   r	   moderf  r2   r3   )r  constantdf1r6   r7   s        r   test_agg_of_mode_listr    sU     D/C[[^,F "H!!!$H&(+r!   c                     t        g dg dd      } | j                  d      }dd}dd}d}t        j                  t        |      5  |j                  ||gd	d	d
       d d d        |j                  ||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                  ||       y # 1 sw Y   oxY w)Nr  rG  r  r   c                 .    | j                         |z   |z   S r)   rK   r   r   r   s      r   foo1z@test_dataframe_groupy_agg_list_like_func_with_args.<locals>.foo1      uuw{Qr!   c                 .    | j                         |z   |z   S r)   rK   r   r   r   s      r   foo2z@test_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   ro   r2   r3   )r$   r%   r  r  rG   r6   r7   s          r   2test_dataframe_groupy_agg_list_like_func_with_argsr    s    	9	:B	CB =C	y	, *
d|Q!q)* VVT4L!qV)F
Q!Q"b"O#.&&}'EFH
 &(+* *s   	CCc                     t        g d      } | j                  |       }dd}dd}d}t        j                  t        |      5  |j                  ||gddd       d d d        |j                  ||gdd	      }t        d
d
gddgddggt        g d      ddg      }t        j                  ||       y # 1 sw Y   ZxY w)Nr  c                 .    | j                         |z   |z   S r)   rK   r  s      r   r  z=test_series_groupy_agg_list_like_func_with_args.<locals>.foo1/  r  r!   c                 .    | j                         |z   |z   S r)   rK   r  s      r   r  z=test_series_groupy_agg_list_like_func_with_args.<locals>.foo22  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   )r  sgbr  r  rG   r6   r7   s          r   /test_series_groupy_agg_list_like_func_with_argsr#  *  s    yA
))A,C =C	y	, +ta1*+ WWdD\1W*F
Q!Q"b"%	*:VVDTH &(++ +s   B55B>c                     t        g dg dg dd      } | j                  ddg      }|ddg   }|j                  d       }t        d	d
gddggdd	gdd	ggddg      }t        ddgddgd|      }t	        j
                  ||       y )Nr  )r   r   r   )rT   r   rU   rG  r   r   r   c                 "    | j                         S r)   rK   r   s    r   r,   z.test_agg_groupings_selection.<locals>.<lambda>E  s    quuw r!   r   r   r   r   r   )r|  r+  rh   r   rZ   rU   r  rB   r,  )r$   r%   selected_gbr6   rC   r7   s         r   test_agg_groupings_selectionr'  @  s    	C	DB	S#J	Bc3Z.K__./FAAAA'7SzE 1vRG4EBH&(+r!   c                      t        g dg dd      } | j                  dd      d   }|j                  dd	g      }t        d
dgddgddgd      }t        j                  ||       y )Nr  r
  r   r   Fr  r   r   r0   r   r   rU   rT   r  rE  )r   r   r0   )r   r"   r#   r2   r3   rV  s       r   ?test_agg_multiple_with_as_index_false_subset_to_a_single_columnr)  M  sg    	3	4B	C%	(	-BVVUFO$F1vq!fsCjIJH&(+r!   c                      t        g dg dg dd      } | j                  ddgd      }|j                  d	g      }t        g d
g dg dgt        j                  g d            }t        j                  ||       y )Nr  )r   r   r   )r   rT   r   )a1a2r   r+  r,  F)r  r  r   )r   r   r   )r   r   rT   )r   r   r   ))r+   )r,  r-  )r   r   rs   )r   r"   r#   r   ro   r2   r3   rV  s       r   &test_agg_with_as_index_false_with_listr.  V  sm    	)99E	FB	d|e	4BVVUG_FI.&&'MNH &(+r!   c                  D   t        dt        j                  d      t        j                  d      t        j                  d      di      } t        t        g dd      g dd	      }|j	                  d
      }|j                  d      }t        j                  ||        y )Ntd0 days 01:00:000 days 01:15:00r  )r1  z0 days 00:15:00r2  r  r   )r   r   r   )r0  grpsr3  )r0  r[  )r0  )r   r   	Timedeltar	   r"   r#   r2   r3   )r7   r$   r%   r6   s       r   Btest_groupby_agg_extension_timedelta_cumsum_with_named_aggregationr5  c  s    << 12<< 12<< 12	
H 
I' $	

B 
F	BVV'V(F&(+r!   c                     d } t        t        j                  ddgg d      ddgd      }d}t        j                  t
        |      5  |j                  d	d
      j                  |        d d d        y # 1 sw Y   y xY w)Nc                 J    t        |       dk(  rt        d      t        |       S )Nr   length must not be 0)r   r   r   s    r   r   z2test_groupby_aggregation_empty_group.<locals>.func~  s"    q6Q;3441vr!   r   rG  )r  r   rQ  r8  r<   r:   Fr  )r   r   CategoricalrD   rE   r   r"   r#   )r   r$   rG   s      r   $test_groupby_aggregation_empty_groupr:  |  ss    
 
nnc3ZODAq6R
B !C	z	- 2


3
'++D12 2 2s   
#A66A?)s__doc__r  r  r   r   numpyrm   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   rq   r   r   r   r   r  r  r   r   r   intr   r   r   r   r   r  r  r   r,  r0  rA  rC  rO  rS  rW  rg  ru  ri  rz  r}  r  r   uint64r  r  r  r   interval_rangeperiod_rangero   r  r  r  r  r  r0   r  r   r#  r%  r)  r-  r/  r9  r<  rH  rL  r`  rj  r  ro  rq  r  r  r  r  r  r  r  r  r  r  r   r  r  r  paramr  r  r#  r'  r)  r.  r5  r:  r  r!   r   <module>rH     s	      	   , 6    0	,+..,b,,'6,,, ),=?T+UV,,4,+  .		7B'	
Q5u5%IJ		3e%e DE		7S'N3	
Qu5u)MN		7)))$TU
,
,$ ,	!Q"bB8,7.HI	&A"I.	!q	AI9=>	,,*0, 4$,* ,F,"!H0- ,	, $'!

$

$ 
qc$%
sZ!qc
aS1#JsCjIJ C D #FG, H," 
qc$%
sZ!qc
aS1#JsCjIJ .14e"45#FG- H 6 2-	,., 288RYY"78 QR	> S 9	>, DK(!Q4
=>	,,,",82+ 2+js0 s0l I  ! F#J#J	
 )*%!FF#J	
 BKK
E*BKK
BGG,BKK
K0F#JF	
#:,;:,2>," S5'N"E74K#LM	, N	,,,,,* 
!57NO,,&$ "Df!MN, O,,,  89, :,(v1 v1r) %	(!QS#J*OP
U	i#s45
1v'22> 5	1K3MN5%.	1M=3QR
eU^	$z:&>?%2%2P
,-$*),6
,- ! < 	

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