
    >ie                   X/   d dl mZ d dlZd dl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Zd dlZd dlZd dlmZ d dlmZ d dlmZmZmZmZmZmZmZmZ d dlmZ d dlm Z  d d	l!m"Z" d d
l#m$Z$m%Z%m&Z&m'Z' d dl(m)Z) d dl*m+Z+m,Z, d ej-        dej.        /                    edd                    ddddd ej-        dej.        /                    edd                     ej-        dej.        /                    edd                     ej-        dej.        /                    edd                     ej-        dej.        /                    edd                    ddddgZ0 ej1        e0           d!             Z2 ej1        d"#          d$             Z3ej4        d%             Z5ej.        /                    d&'          d(             Z6d) Z7d* Z8d+ Z9d, Z:ej.        ;                    d-d. d/ d0 d1  ej-        d2 ej.        /                    d3'                    g          ej.        ;                    d4d"dg          d5                         Z<d6 Z=ej.        ;                    d7d8d9g          d:             Z>ej.        ;                    d-d; d< d= d> d? d@ dA g          dB             Z?dC Z@ej.        ;                    dDd"dE fddF fd"dG fddH fddI fg          dJ             ZAdK ZBdL ZCdM ZDej.        ;                    dNdO          ej.        ;                    dPdQ          dR                         ZEdS ZFdT ZGdU ZHdV ZIej.        ;                    dWd"dg          dX             ZJej.        ;                    dYdZd[g          d\             ZKej.        ;                    d]d^ d_ d` da db dc dd de df dg dh di g          ej.        ;                    dPdj dk g          dl                         ZLej.        ;                    d-dm dn do dp dq  ej-        dr ej.        /                    ds                    g          ej.        ;                    dPdt du g          dv                         ZMdw ZNdx ZOdy ZPdz ZQd{ ZRd| ZSd} ZTej.        ;                    dZd~dg          ej.        ;                    d[ddg          d                         ZUej.        ;                    dd"dg          d             ZVd ZWej.        ;                    dddidddg          ej.        ;                    ddddgg          d                         ZXej.        ;                    dd d~g          ej.        ;                    dg d          ej.        ;                    dg d          d                                     ZYej.        ;                    dg d          ej.        ;                    dg d          d                         ZZej.        ;                    dg d          ej.        ;                    dg d          d                         Z[ej.        \                    d          ej.        ;                    d-d d d d d g          ej.        ;                    d[d~dg          d                                     Z]ej.        ;                    d-d d d g          ej.        ;                    d[d~dg          d                         Z^ej.        ;                    d-d d d d  ej-        d ej.        /                    e d'                    g          ej.        ;                    dd d d g          d                         Z_d Z`d Zaej.        ;                    dNg d          ej.        ;                    dZddg          ej.        ;                    d[g d          d                                     Zbd Zcd Zdd Zed Zfej.        ;                    ddddddgddgg          ej.        ;                    ddddgg          ej.        ;                    dPg dQ          d                                     Zgd Zhej.        ;                    dPddg          d             Zid Zjd Zkej.        ;                    dddg          d             Zld Zmd ZndÄ Zoej.        ;                    dddgddgdgg          dń             Zpej.        ;                    dg dǢ          dȄ             Zqej.        ;                    dddgddgdgdg          ej.        ;                    dejr        ejs        dod̄g          d̈́                         Zt eju        dd΄ dτ dЄ           Zv eju        ddф d҄           Zwej.        ;                    dddidevidfddidewid"fddgevewgdfdddgidevewgidfg          dԄ             Zxej.        ;                    ddevfdgevgfddgevewgfg          dք             Zydׄ Zzd؄ Z{dل Z|ej.        ;                    dPde}g          dڄ             Z~ej4        dۄ             Zej.        ;                    dP ej-        dej.        /                    ed'                     ej-        dej.        /                    ed'                     ej-        dej.        /                    ed'                     ej-        dej.        j                  g          d܄             Zd݄ Zdބ Zej.        ;                    dg d          d             Zej.        ;                    dg d          d             Zej.        ;                    dg d ej        g d          g dg dg          d             Zd Zej.        ;                    dPddg          ej.        ;                    dg d          d                         Zej.        ;                    dd"dg          d             Zd Zej.        ;                    dd"dg          d             Zd Zej.        ;                    dd"dg          d             Zd Zej.        ;                    dd"dg          d             Zej.        j        ej.        ;                    dg d          d                         Zej.        ;                    ddddgg          ej.        ;                    dg d          d                         Zd Zej4        d             Zej.        ;                    dNg d          ej.        ;                    d g d          ej.        ;                    dd d~g          d                                     Zd Zd Zej.                            d          d             Zd Zej.        ;                    dd	 ej        dej        j        g          d
             Zej.        ;                    dN e} ed~d                              ej.        ;                    dd"dgddg          d                         Zej.        ;                    dd d fd d fd d fd d fg          d             Zej.        ;                    dd d d d g          d             Zej.        ;                    dd  d! g          d"             Zej.        ;                    dd# d$ g          d%             Zej.        ;                    d&dd"g          d'             Zej.        j        ej.        ;                    d&g d(          ej.        ;                    ddddddgddgddgg          ej.        ;                    dg d          d)                                                 Zej.        j        ej.        ;                    dddg          d*                         Zej.        j        ej.        ;                    d ej-        d"ej.                            e d+'                    dg          d,                         Zej.        ;                    dd"dg          d-             Zd. Zd/ Zej.        ;                    d[dd0g          ej.        ;                    d1ddgddgdd2gg          d3                         Zej.        ;                    d4d5 ej-        d6ej.        j                  g          d7             Zej.        ;                    ddddddgddgg          ej.        ;                    dd ej-        dej.        /                    edd8                     ej-        dej.        /                    edd8                    g          ej.        ;                    dd"dg          d9                                     Zej.        ;                    de)j        e)j        e)j        e)jr        g          ej.        ;                    dd"dg          d:                         Zd; Zej.        ;                    d<d"dgd=d>g          ej.        ;                    d?d"dgd@dAg          ej.        ;                    dBdCdCdDgg          ej.        ;                    dEd"dgdEdFg          dG                                                 ZdH Zej.                            e dI'          dJ             Zej.                            e dK'          ej.        ;                    dLd"dg          dM                         Zej.                            e dK'          ej.        ;                    dLd"dg          ej.        ;                    ddd e	ej        d~N          g          dO                                     Zej.        ;                    ddPdPdQgg          dR             ZdS Zej.                            dT          ej.        ;                    dUdVdWg          dX                         Zej.        ;                    dUdVdWg          dY             Zej.        ;                    dUdVdWg          dZ             Zd[ Zd\ Zej.        ;                    dd]d]d^gg          ej.        ;                    d_d0d`d`gda ej        d`g           ej        d`g          g          db                         Zej.        ;                    dPddddddd ej-        dej.                            dc'                     ej-        dej.                            dc'                    g	          ej.        ;                    ddg de          ej.                            e df'          dg                                     Zej.        ;                    dPe"          ej.        ;                    ddddg          dh                         Zej.        ;                    dPg di          dj             Zej.                            e dk'          ej.        ;                    dPddg          dl                         Zej.        ;                    dPddg          dm             Zej.        ;                    dPddg          ej.        ;                    dEd"dg          ej.        ;                    d&d"dg          dn                                     ZdS (p      )annotationsNdatetime)partial)_compat)PANDAS_GE_140PANDAS_GE_150PANDAS_GE_200PANDAS_GE_210check_nuisance_columns_warningcheck_numeric_only_deprecationcheck_observed_deprecationtm)to_pyarrow_string)grouper_dispatch)NUMERIC_ONLY_NOT_IMPLEMENTED)assert_dask_graph	assert_eqassert_max_depspyarrow_strings_enabled)M)_check_warning	hlg_layersummeanz"numeric_only=False not implementedF)	conditionreasonstrict)marksmedianminmaxcountsizestdvarcovcorrnuniquefirstlastprod)paramsc                    | j         S )z+
    Aggregations supported for groups
    )param)requests    Alib/python3.11/site-packages/dask/dataframe/tests/test_groupby.pyagg_funcr2   ^   s    
 =    T)autousec              #     K   d V  d S N )shuffle_methods    r1   auto_shuffle_methodr9   h   s      	EEEEEr3   c               #     K   t          j                    } t          rt          j        t
          d          } | 5  d V  d d d            d S # 1 swxY w Y   d S )Naxismatch)
contextlibnullcontextr   pytestwarnsFutureWarning)ctxs    r1   groupby_axis_deprecatedrD   m   s      

 
"
"C 8l=777	                   s   AAAz)uncertain how to handle. See issue #3481.)r   c                     t          j        g dt          d          d          } t          j        | d          }|                     d          d         }|                    d          d         }t          |j        t          j                  sJ t          |j        |j                   |                     | j
                  d         }|                    |j
                  d         }t          |j        t          j                  sJ d S N
r                        	   
   
abcbabbcdaxyrJ   rT   rS   )pd	DataFramelistddfrom_pandasgroupby
isinstanceobjSeriesr   rT   pdfddfgpdps       r1    test_groupby_internal_repr_xfailrc   v   s    
,<<<4CUCUVV
W
WC
.a
 
 C	S		#	B	S		#	Bbfbi(((((bfbf	SU		C	 B	SU		C	 Bbfbi(((((((r3   c                 
   t          j        g dt          d          d          } t          j        | d          }|                     d          }|                    d          }t          |t          j        j                  sJ t          |j        t           j	        j        j                  sJ t          |j
        t          j                  sJ t          |j
        |j
                   |                     d          d         }|                    d          d         }t          |t          j        j                  sJ t          |j        t           j	        j        j                  sJ |                     d          dg         }|                    d          dg         }t          |t          j        j                  sJ t          |j        t           j	        j        j                  sJ t          |j
        t          j                  sJ t          |j
        |j
                   |                     | j                  d         }|                    |j                  d         }t          |t          j        j                  sJ t          |j        t           j	        j        j                  sJ |                     | j                  dg         }|                    |j                  dg         }t          |t          j        j                  sJ t          |j        t           j	        j        j                  sJ t          |j
        t          j                  sJ t          |j
        |j
                   d S rF   )rU   rV   rW   rX   rY   rZ   r[   DataFrameGroupBy_metacorer\   r   SeriesGroupByrT   r^   s       r1   test_groupby_internal_reprri      s   
,<<<4CUCUVV
W
WC
.a
 
 C	S		B	S		Bb"*566666bh @AAAAAbfbl+++++bfbf	S		#	B	S		#	Bb"*233333bh =>>>>>	S		3%	 B	S		3%	 Bb"*566666bh @AAAAAbfbl+++++bfbf	SU		C	 B	SU		C	 Bb"*233333bh =>>>>>	SU		SE	"B	SU		SE	"Bb"*566666bh @AAAAAbfbl+++++bfbfr3   c                    t          j        g dt          d          d          } t          j        | d          }t          j        t                    5  |                    d           d d d            n# 1 swxY w Y   t          j        t                    5  |                    ddg           d d d            n# 1 swxY w Y   |                    d          }d}t          j        t                    5 }|d          d d d            n# 1 swxY w Y   |t          |j
                  v sJ d	}t          j        t                    5 }|ddg          d d d            n# 1 swxY w Y   |t          |j
                  v sJ d
}t          j        t                    5 }|                                 d d d            n# 1 swxY w Y   |t          |j
                  v sJ d S )NrG   rQ   rR   rJ   ArS   rT   zColumn not found: zColumns not found: zDataFrameGroupBy does not allow compute method.Please chain it with an aggregation method (like ``.mean()``) or get a specific group using ``.get_group()`` before calling ``compute()``)rU   rV   rW   rX   rY   r@   raisesKeyErrorrZ   strvalueNotImplementedErrorcompute)r_   r`   rb   msgerrs        r1   test_groupby_errorrt      s   
,<<<4CUCUVV
W
WC
.a
 
 C	x	 	   C               
x	 	     S#J                              
S		B
C	x	 	  C
3              #ci..    
C	x	 	  C
C:              #ci..    	M  
*	+	+ s


              #ci..      sZ   A77A;>A;B??CC:	DDDE$$E(+E("GG
Gc                    t          j        g dg ddg d          } t          j        | d          t	          j        t          fd           t	          j        t          fd	           d
t          	                    d                    v sJ d }| 	                    d          
                    |          }t	          j        t          d          5  	                    d          
                    |          j                            d          sJ t          |	                    d          
                    |                     d d d            d S # 1 swxY w Y   d S )N	rH   rI   rJ   rK      rL   rM   rN   rO   	rK   rw   rL   rJ   rI   rH   r   r   r   ab	r   rH   rJ   rw   rL   rN   rO   rO   rO   indexrJ   npartitionsc                 .                          d          S )Ndoes_not_existrZ   r`   s   r1   <lambda>z#test_full_groupby.<locals>.<lambda>   s    CKK0@$A$A r3   c                 8                          d          j        S Nrz   )rZ   r   r   s   r1   r   z#test_full_groupby.<locals>.<lambda>   s    #++c*:*:*I r3   r{   rz   c                l    |                      | j        | j                                        z
            S Nr{   assignr{   r   dfs    r1   funcztest_full_groupby.<locals>.func   '    yy24"$))++-y...r3   `meta` is not specifiedr<   r   )rU   rV   rX   rY   r@   rl   rm   AttributeErrordirrZ   applyrA   UserWarning_name
startswithr   )r   r   expectedr`   s      @r1   test_full_groupbyr      s   	)))0K0K0KLL)))
 
 
B .
+
+
+C
M(AAAABBB
M."I"I"I"IJJJ#ckk#&&''''''/ / / zz#$$T**H	k)B	C	C	C : :{{3%%d++1<<VDDDDD(CKK,,22488999: : : : : : : : : : : : : : : : : :s   A9E##E'*E'c            	     
  	
 t          j        g dg ddg d          } t          j        | d          }dd}| j                                        	| j                                        
|j                                        }|j                                        } t          j	        	fd	                      } t          j	        
fd
                      }t          j        t          d          5  t          |                     d                              |	
          |                    d                              |	|                     t          |                     d                              |	          |                    d                              |	                     t          |                     d                              |	
          |                    d                              |	
                     t          |                     d                              |	          |                    d                              ||          d           d d d            n# 1 swxY w Y   |                     d                              |	          }t          |                     d                              |	          |                    d                              |||                     t          |                     d                              |	
          |                    d                              |	||                     t          j        t"                    5 }|                    d                              |	|           d d d            n# 1 swxY w Y   dt%          |j                  v rdt%          |j                  v sJ t          j        t"                    5 }|                    d                              ||
           d d d            n# 1 swxY w Y   dt%          |j                  v rdt%          |j                  v sJ t          |                     d                              |	          |                    d                              |||                     t          |                     d                              |	
          |                    d                              |	||                     d S )Nrv   rx   ry   r|   r}   rJ   r   c                x    |                      | j        | j                                        z
  ||z  z             S r   r   )r   cds      r1   r   z.test_full_groupby_apply_multiarg.<locals>.func   s0    yy24"$))++-A5y666r3   c                      S r6   r7   )r   s   r1   r   z2test_full_groupby_apply_multiarg.<locals>.<lambda>       Q r3   c                      S r6   r7   r   s   r1   r   z2test_full_groupby_apply_multiarg.<locals>.<lambda>   r   r3   r   r<   rz   r   Fcheck_dtypemeta)r   r   zdask.delayedr   )rJ   )rU   rV   rX   rY   rz   r   r{   r   daskdelayedr@   rA   r   r   rZ   r   rl   
ValueErrorrn   ro   )r   r`   r   c_scalard_scalar	c_delayed	d_delayedr   excr   r   s            @@r1    test_full_groupby_apply_multiargr      s   	)))0K0K0KLL)))
 
 
B .
+
+
+C7 7 7 7 	

A
		Auyy{{Huzz||H'YYYY''))I'YYYY''))I	k)B	C	C	C 
 
JJsOO!!$Q!//KK""4h"77	
 	
 	

 	"**S//''a00#++c2B2B2H2Hq2Q2QRRRJJsOO!!$Q!//S1A1A1G1GaST1G1U1U	
 	
 	
 	JJsOO!!$**KK""422	
 	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
$ ::c??  q))D


3dA&&CtXD99  
 


3dA++CtQ(>>   
z	"	" 5cCtQ)4445 5 5 5 5 5 5 5 5 5 5 5 5 5 5S^^++#ci..0H0H0H0H	z	"	" 5cCtY!4445 5 5 5 5 5 5 5 5 5 5 5 5 5 5S^^++#ci..0H0H0H0H


3dA&&CtYT::  
 


3dA++CtQ)$??    s7   9FJJJ,OOO",QQ!Qgrouperc                    dgS r   r7   r   s    r1   r   r   )      C5 r3   c                
    ddgS Nrz   r{   r7   r   s    r1   r   r   *  
    C: r3   c                    | d         S r   r7   r   s    r1   r   r   +  
    2c7 r3   c                "    | d         | d         gS r   r7   r   s    r1   r   r   ,      BsGRW% r3   c                2    | d         dk    | d         dk    gS Nrz   rI   r{   rH   r7   r   s    r1   r   r   .      3!RWq[1 r3   znot yet supportedreversec           	        g d}|r|d d d         }t          j        g dg dg dd|          }t          j        |d          }d	 }t	          j        t          d
          5  t          |                     | |                    	                    |          |                     | |                    	                    |                     d d d            d S # 1 swxY w Y   d S )Nr|   rv   rx   )rz   r   r{   r}   rJ   r   c                l    |                      | j        | j                                        z
            S r   r   r   s    r1   r   z*test_full_groupby_multilevel.<locals>.funcB  r   r3   r   r<   )
rU   rV   rX   rY   r@   rA   r   r   rZ   r   )r   r   r~   r   r`   r   s         r1   test_full_groupby_multilevelr   &  sc    (''E ddd	,,,,,,,,,	
 	

 
 
 
B .
+
+
+C/ / / 
k)B	C	C	C 
 
JJwwr{{##))$//WWS\\1J1J1P1PQU1V1V	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s   &A/C""C&)C&c                 
   t          j        t          d          t          d          d          } t          j        | d          }|                    d          }dt          |          v sJ dt          |          vsJ d S )NrP   )rz   b c d erI   r   rz   r   )rU   rV   rangerX   rY   rZ   r   )r   r`   gs      r1   test_groupby_dirr   K  sz    	E"II%))<<	=	=B
.
+
+
+CCA#a&&====CFF""""""r3   	schedulersyncthreadsc                   t          j        g dg ddg d          }t          j        |d          }|                    d          }|                    d          }t          |                    d          j                                        |                    |j	                  j                                                   |                    d          
                    d	d
i          }t          |                    d          j                                        |j                   t          |j        d          sJ d }d }d }t          j                            |           5  t          j                    5  t          j        dt$                     t          |                    d                              |          |                    d                              |                     t          |                    d                              |                              d          |                    d                              |                              d                     t          |                    |j	                                      |          |                    |j	                                      |                     t          |j                            d                              |          |j                            d                              |                     t          |j                            |j	                                      |          |j                            |j	                                      |                     d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nrv   rx   ry   r|   r}   rJ   r   rz   r{   r   getitemc                l    |                      | j        | j                                        z
            S r   r   r   s    r1   r   z#test_groupby_on_index.<locals>.funcd  r   r3   c                L    | dg         | dg                                          z
  S Nr{   r   r   s    r1   func2z$test_groupby_on_index.<locals>.func2g  s#    3%y2se9>>++++r3   c                *    |                                  S r6   r   r   s    r1   func3z$test_groupby_on_index.<locals>.func3j  s    wwyyr3   r   ignore)rU   rV   rX   rY   	set_indexr   rZ   r{   r   r~   aggr   r   configsetwarningscatch_warningssimplefilterr   r   )	r   r_   r`   ddf2pdf2r   r   r   r   s	            r1   test_groupby_on_indexr   S  s   
,)))0K0K0KLL)))  C .!
,
,
,C==D==Dckk# %%''dj)A)A)C)H)H)J)JKKK ,,s



f
.
.Cckk# %%''///SXy)))))/ / /, , ,   
9	-	-  $&& 	 	!(K888ckk#&&,,T22CKK4D4D4J4J44P4PQQQC  &&t,,66s;;C  &&t,,66s;;  
 TZ((..u55TZ((..u55  
 s##))%00$&..2E2E2K2KE2R2R   tz**0077tz**0077  %	 	 	 	 	 	 	 	 	 	 	 	 	 	 	                 s7   2OH5O;OO	OO	OO#&O#c                8    |                      d          d         S r   r   r   s    r1   r   r         2::c??3' r3   c                0    |                      ddg          S r   r   r   s    r1   r   r     s    2::sCj)) r3   c                <    |                      ddg          d         S Nrz   r{   r   r   r   s    r1   r   r     s    2::sCj))#. r3   c                H    |                      | d                   ddg         S r   r   r   s    r1   r   r         2::bg&&Sz2 r3   c                <    |                      d          ddg         S r   r   r   s    r1   r   r         2::c??C:. r3   c                :    |                      d          dg         S r   r   r   s    r1   r   r     s    2::c??C5) r3   c                0    |                      g d          S )Nrz   r{   r   r   r   s    r1   r   r     s    2::ooo.. r3   c                "   |dk    rd S t          j        g dg dg dg dd          }t          j        |d          } | |          } | |          }t	          |t           j        j        j                  r|dv rd S t          ||          }t          ||          }t	          |t          j        j	                  sJ t	          |t           j        j        j
                  sJ |d	k    r:t           |             |                                t                               d S  |            }t          j                    5  t          j        d
t"                      |            }	d d d            n# 1 swxY w Y   t          ||	           d S )Nr)   rH   rI   rJ   rH   rI   rJ   rH   rI   rH   rK   rI   rH   rH   rJ   rI   rH   rH   rI   rH   rI   rH   rH   rI   rI   rz   r{   r   r   rI   r'   r(   r   r   )rU   rV   rX   rY   r[   rg   rZ   rh   getattr_GroupByGroupByr   astypefloatr   r   r   RuntimeWarning)
r   r2   r   r`   
dask_grouppandas_groupdask_agg
pandas_aggrz   r{   s
             r1   test_groupby_multilevel_getitemr     s    9	############		
 	

 
B .Q

CJ72;;L , =>> 8 P D D 	z8,,Hx00Jj"*"566666lBGO$;<<<<<6((**jjll11%8899999HJJ$&& 	 	 !(N;;;
A		 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 	!Qs   %E44E8;E8c                    t          j        g dg dg dg dd          } t          j        | d          }|                     dg                                          }|                    dg                                          }t          ||           |                     ddg                                          }|                    ddg                                          }t          ||           |                     | d         | d         g                                          }|                    |d         |d         g                                          }t          ||           d S )	Nr   r   r   r   r   rI   rz   r   )rU   rV   rX   rY   rZ   r   r   )r   r`   solress       r1   test_groupby_multilevel_aggr     s^   	############		
 	

 
B .Q

C
**cU


 
 
"
"C
++se


!
!
#
#Cc3
**c3Z
 
 
%
%
'
'C
++sCj
!
!
&
&
(
(Cc3
**bgr#w'
(
(
-
-
/
/C
++s3xS*
+
+
0
0
2
2Cc3r3   zcategoricals,byc                    dS r   r7   r   s    r1   r   r         # r3   c                    dS r   r7   r   s    r1   r   r     s    3 r3   c                    | j         S r6   r   r   s    r1   r   r     s    "$ r3   c                    | j         S r6   r   r   s    r1   r   r     s    24 r3   c                    | j         dz   S NrH   r   r   s    r1   r   r     s    24!8 r3   c                   t          j        g dg ddg d          t          j        g dg ddg d          t          j        g d	g d
dg d          d}|d         }t          j        |d|g d          }| r|                    dg          }|                                }t
          r| rt          j        t          d          }nt          j
                    }|5  |                     ||                    }d d d            n# 1 swxY w Y   |5  |                     ||                    }d d d            n# 1 swxY w Y   t          |                    d          |                    d                     t          |                    d          |                    d                     t          |j                            d          |j                            d                     t          |j                            d          |j                            d                     d S )N)rH   rI   rL   )rK   rI   rM   ry   )r   rH   rJ   r}   )rK   rI   rL   )rJ   rJ   rH   )rw   rL   rN   )rK   rJ   rM   )rH   rH   rJ   )rO   rO   rO   )rS   r   )rS   rH   )rS   rI   r  rS   )r   rK   rO   rO   r{   columnszThe default of observed=Falser<   rI   rJ   )rU   rV   rX   
categorizerq   r   r@   rA   rB   r>   r?   rZ   r   	get_grouprz   )	categoricalsbydskr   r`   r_   rC   	ddgrouped	pdgroupeds	            r1   test_groupby_get_groupr    s    ,YYYYYY??yyyQQQ,YYYYYY??yyyQQQ,YYYYYY??yyyQQQ C
 x=D
,sC|||
4
4C ,nncUn++
++--C ' 'l=0OPPP$&&	 ) )KK3((	) ) ) ) ) ) ) ) ) ) ) ) ) ) )	 ) )KK3((	) ) ) ) ) ) ) ) ) ) ) ) ) ) ) i!!!$$i&9&9!&<&<===i!!!$$i&9&9!&<&<===ik##A&&	(=(=a(@(@AAAik##A&&	(=(=a(@(@AAAAAs$   &DDDE		EEc                    t          d          } t          j                            t	          |                     }t          j        t          | |                    }t          j	        |d          }|
                    d          d                                         }|
                    d          d                                         }t          ||           d S )NaaabbccccdddeeestringsdatarJ   r   r  r  )rW   nprandomrandnlenrU   rV   dictrX   rY   rZ   r)   r   r  r  pssr   results         r1   test_dataframe_groupby_nuniquer!    s    $%%G9??3w<<((D	d7666	7	7B
rq)))Azz)$$V,4466HYYy!!&)1133Ffhr3   c                    t          d          } t          t          t          d                    }t          j        t          | |                    }t          j        |d          }|                    d          d         	                                }|                    d          d         	                                }t          ||           d S )Nr  123111223323412r  rJ   r   r  r  )rW   mapintrU   rV   r  rX   rY   rZ   r)   r   r  s         r1   6test_dataframe_groupby_nunique_across_group_same_valuer&    s    $%%GC*++,,D	d7666	7	7B
rq)))Azz)$$V,4466HYYy!!&)1133Ffhr3   c                    t          j        g dg dd          } t          j        | d          }d }t	          j        t                    5  |                    d                              |          }d d d            n# 1 swxY w Y   |                     d                              |          }t          ||           d S )NrH   rI   rJ   rK   rw   rL   rR   rI   c                6    | d                                          S )NrT   r   r   s    r1   r   z6test_series_groupby_propagates_names.<locals>.<lambda>  s    bgkkmm r3   rS   )
rU   rV   rX   rY   r@   rA   r   rZ   r   r   )r   r`   r   r   r   s        r1   $test_series_groupby_propagates_namesr,    s    	IIIIII66	7	7B
.Q

C##D	k	"	" . .S!!''--. . . . . . . . . . . . . . .zz#$$T**Hfhs   )BB	Br   )rH   rI   r   )cumsumcumprodcumcountc                   t          j        g dg dd                              d          }t          j        ||           }|j        | k    sJ  t          |d                             d          |                      } t          |d                             d          |                      }t          ||           d S )N)rH   rI   rJ   rK   rw   rL   rM   )rN   rO   rL   rI   rJ   rw   rL   rR   rS   rT   )	rU   rV   r   rX   rY   r   r   rZ   r   )r   r   r   r`   r   r   s         r1   ,test_series_groupby_cumfunc_with_named_indexr1    s     
###*?*?*?@@
 
inn  .[
)
)C?k))))2wr#ws++T2244H1WSX%%c**D1133Ffhr3   c                 r   t          j        g d          } |                     |           }t          j        | d          }|                    |          }|                     | dz             }|                    |dz             }||f||ffD ]\  }}t          |                                |                                           t          |                                |                                           t          |                                |                                           t          |	                                |	                                           t          |
                                |
                                           t          |                                |                                           t          |                                |                                           t          |                                |                                           d S )NrH   rI   rI   rH   rH   rI   r   rH   )rU   r]   rZ   rX   rY   r   r#   r   r!   r"   r$   r*   r+   r,   )r  pd_groupssr   	pd_group2dask_group2dgpdgs           r1   test_series_groupbyr:  (  s   
	///""Ayy||H	q	)	)	)BBJ		!a%  I**R!V$$K*Y,DE ) )C"((**ciikk***"&&((CGGII&&&"&&((CGGII&&&"&&((CGGII&&&"''))SXXZZ((("((**ciikk***"''))SXXZZ((("''))SXXZZ(((() )r3   c                    t          j        g d          } t          j        | d          }d}t	          j        t                    5 }|                     g            d d d            n# 1 swxY w Y   |t          |j	                  v sJ t	          j        t                    5 }|                    g            d d d            n# 1 swxY w Y   |t          |j	                  v sJ t          j        | d          }t	          j        t                    5  |                    |           d d d            n# 1 swxY w Y   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 )Nr3  rI   r   zNo group keys passed!rw   rS   )rU   r]   rX   rY   r@   rl   r   rZ   rn   ro   rp   rm   )r  r5  rr   rs   ssss        r1   test_series_groupby_errorsr=  =  s   
	///""A	q	)	)	)B
!C	z	"	" c			"              #ci..    	z	"	" c


2              #ci..    
.
*
*
*C	*	+	+  


3               
x	 	   			#              	x	 	   


3                 sZ   A**A.1A.&CCCD<<E E  FF	F&G		GGc                 @   t          j                    } t          j        | d          }t	          | j                            | j        j                  	                                |j                            |j        j                  	                                d           t	          |                     | j        j                  j        	                                |                    |j        j                  j        	                                d           d S )NrI   r   Fcheck_names)
r   makeTimeDataFramerX   rY   r   rk   rZ   r~   monthr)   r   r`   s     r1   test_groupby_index_arrayrD  T  s    		"	$	$B
.
+
+
+C 
RX^$$,,..cio&&..00    


28>""$,,..CIO$$&..00     r3   c                      t          j                    t          j        d           t	          j        t           fd           d S )NrI   r   c                 F                          j        j        d          S )NFas_index)rZ   r~   rB  r`   r   s   r1   r   z(test_groupby_set_index.<locals>.<lambda>j  s    S[[%[%P%P r3   )r   rA  rX   rY   r@   rl   	TypeErrorrI  s   @@r1   test_groupby_set_indexrK  g  sK    		"	$	$B
.
+
+
+C
M)PPPPPQQQQQr3   emptyc           	     ^   | r,t          j        dgdgddg          j        d d         }g }n#g d}t          j        g dg ddg d          }t          j        |d	
          dj        |j        fj        dz   |j        dz   ffD ]\  }}t                              |          j        	                                |                    |          j        	                                           t                              |          j        
                                |                    |          j        
                                           t                              |          j                                        |                    |          j                                                   t                              |          j                                        |                    |          j                                                   t                              |          j                                        |                    |          j                                                   t                              |          j                                        |                    |          j                                                   t                              |          j                                        |                    |          j                                                   t                              |          j                                        |                    |          j                                                   t                              |          j                                        |                    |          j                                                   t                              |          j                                        |                    |          j                                                   |D ]}t                              |          j                            |          |                    |          j                            |                     t                              |          j                            |          |                    |          j                            |                     t                              |                                          |                    |                                                     t                              |          	                                |                    |          	                                           t                              |          
                                |                    |          
                                           t                              |                                          |                    |                                                     t                              |                                          |                    |                                                     t                              |                                          |                    |                                                     t                              |                                          |                    |                                                     t                              |                                          |                    |                                                     t                              |                                          |                    |                                                     |D ]}t                              |                              |          |                    |                              |          d           t                              |                              |          |                    |                              |          d           j        |j        fj        dz   |j        dz   ffD ]\  }}t          j                            |                                          |j                            |                                          d           t          j                            |          
                                |j                            |          
                                d           t          j                            |                                          |j                            |                                          d           t          j                            |                                          |j                            |                                          d           t          j                            |                                          |j                            |                                          d           t          j                            |                                          |j                            |                                          d           t          j                            |                                          |j                            |                                          d           t          j                            |                                          |j                            |                                          d           |D ]}t          j                            |                              |          |j                            |                              |                     t          j                            |                              |          |j                            |                              |                     ϐ	dD ]}t                              j        |k              j                                        |                    |j        |k              j                                                   t                              j        |k              j        	                                |                    |j        |k              j        	                                           t                              j        |k              j        
                                |                    |j        |k              j        
                                           t                              j        |k              j                                        |                    |j        |k              j                                                   t                              j        |k              j                                        |                    |j        |k              j                                                   t                              j        |k              j                                        |                    |j        |k              j                                                   t                              j        |k              j                                        |                    |j        |k              j                                                   t                              j        |k              j                                        |                    |j        |k              j                                                   t                              j        |k              j                                        |                    |j        |k              j                                                   t                              j        |k              j                                        |                    |j        |k              j                                                   t                              j        |k              j                                        |                    |j        |k              j                                                   t                              j        |k              j                                        |                    |j        |k              j                                                   t                              j        |k              j                                        |                    |j        |k              j                                                   t                              j        |k              j        	                                |                    |j        |k              j        	                                           t                              j        |k              j        
                                |                    |j        |k              j        
                                           t                              j        |k              j                                        |                    |j        |k              j                                                   t                              j        |k              j                                        |                    |j        |k              j                                                   t                              j        |k              j                                        |                    |j        |k              j                                                   t                              j        |k              j                                        |                    |j        |k              j                                                   t                              j        |k              j                                        |                    |j        |k              j                                                   t                              j        |k              j                                        |                    |j        |k              j                                                   t                              j        |k              j                                        |                    |j        |k              j                                                   t                              j        |k              j                                        |                    |j        |k              j                                                   t                              j        |k              j                                        |                    |j        |k              j                                                   t                              j        |k                                              |                    |j        |k                                                         t                              j        |k              	                                |                    |j        |k              	                                           t                              j        |k              
                                |                    |j        |k              
                                           t                              j        |k                                              |                    |j        |k                                                         t                              j        |k                                              |                    |j        |k                                                         t                              j        |k                                              |                    |j        |k                                                         t                              j        |k                                              |                    |j        |k                                                         t                              j        |k                                              |                    |j        |k                                                         t                              j        |k                                              |                    |j        |k                                                         t                              j        |k                                              |                    |j        |k                                                         t                              j        |k              	                                |                    |j        |k              	                                           t                              j        |k              
                                |                    |j        |k              
                                           t                              j        |k                                              |                    |j        |k                                                         t                              j        |k                                              |                    |j        |k                                                         t                              j        |k                                              |                    |j        |k                                                         t                              j        |k                                              |                    |j        |k                                                         t                              j        |k                                              |                    |j        |k                                                         t                              j        |k                                              |                    |j        |k                                                         |D ]p}t                              j        |k                                  |          |                    |j        |k                                  |                     q dj        |j        fj        dz   |j        dz   fj        d	k    |j        d	k    ffD ]\  }}t                              |          j                                        |                    |          j                                                   t                              |          j        	                                |                    |          j        	                                           t                              |          j        
                                |                    |          j        
                                           t                              |          j                                        |                    |          j                                                   t                              |          j                                        |                    |          j                                                   t                              |          j                                        |                    |          j                                                   t                              |          j                                        |                    |          j                                                   t                              |          j                                        |                    |          j                                                   t                              |                                          |                    |                                                     t                              |                                          |                    |                                                     t                              |                                          |                    |                                                     t                              |          	                                |                    |          	                                           t                              |          
                                |                    |          
                                           t                              |                                          |                    |                                                     t                              |                                          |                    |                                                              t0                               t                              |                                          |                    |                                                     t                              |                                          |                    |                                                     t                              |                                          |                    |                                                     t                              |                                          |                    |                                                     |D ]h}t                              |          j                            |          |                    |          j                            |                     it3                              d          j                                        j                  t3                              d          j                                        j                  k    sJ t3                              j        d	k              j                                        j                  t3                              j        d	k              j                                        j                  k    sJ t7          j        t:          fd           t7          j        t:          fd           t7          j        t:          fd           t7          j        t:          fd           t7          j        t:          fd           t=                              d          j                                        d           t=                              d          j        	                                d           t=                              d          j        
                                d           t=                              d          j                                        d           t=                              d          j                                        d           t=                              d          j                                        d           t=                              d          j                                        d           t=                              d          j                                        d           t=                              d          j                                        d            t=                              d          j                                        d!           t=                              d          j                                        d"           t=                              d          j                                        d           t=                              d          j                                        d           t=                              d          j                                        d#           t=                              d          j                                        d$           t=                              d                                          d%           t=                              d          	                                d&           t=                              d          
                                d'           t=                              d                                          d(           t=                              d                                          d)           t=                              d                                          d*           t=                              d                                          d+           t=                              d                                          d%           t=                              d                                          d(           t=                              d                                          d,           d S )-N      ?ry   r   r}   r   rH   rI   	rH   rI   rL   rK   rK   rL   rK   rJ   rM   	rK   rI   rM   rJ   rJ   rH   rH   rH   rI   r|   rJ   r   )r{   r{   rH   Fr   r?  )r   rK   rM   )rz   rz   r{   c                 .                          d          S )NrS   r   r   s   r1   r   z4test_split_apply_combine_on_series.<locals>.<lambda>#  s    CKK$4$4 r3   c                 2                          ddg          S Nrz   rS   r   r   s   r1   r   z4test_split_apply_combine_on_series.<locals>.<lambda>$  s    CKKc
$;$; r3   c                 :                          d          d         S rT  r   r   s   r1   r   z4test_split_apply_combine_on_series.<locals>.<lambda>%  s    CKK$4$4S$9 r3   c                 :                          d          d         S )Nrz   )r{   rS   r   r   s   r1   r   z4test_split_apply_combine_on_series.<locals>.<lambda>&  s    CKK$4$4X$> r3   c                 >                          d          ddg         S )Nrz   r{   rS   r   r   s   r1   r   z4test_split_apply_combine_on_series.<locals>.<lambda>'  s    CKK$4$4c3Z$@ r3   zseries-groupby-sumzseries-groupby-minzseries-groupby-maxzseries-groupby-countzseries-groupby-varzseries-groupby-covzseries-groupby-firstzseries-groupby-lastzseries-groupby-tailzseries-groupby-headzseries-groupby-prodzseries-groupby-nuniquezseries-groupby-sizezdataframe-groupby-sumzdataframe-groupby-minzdataframe-groupby-maxzdataframe-groupby-countzdataframe-groupby-firstzdataframe-groupby-lastzdataframe-groupby-prodzdataframe-groupby-size) rU   rV   ilocrX   rY   r{   r   rZ   rz   r!   r"   r#   r   r)   r$   r*   r+   tailheadr&   r%   r   r,   r   r   sortedr   r@   rl   rm   r   r'   )rL  r_   ddofsddkeypdkeyddofir`   s          @r1   "test_split_apply_combine_on_seriesra  m  s#    

l#cU33A3???DRaRH 		l---4O4O4OPP---
 
 
 .!
,
,
,C#ceSU^ceai5KL # #u#++e$$&**,,ckk%.@.@.B.F.F.H.HIII#++e$$&**,,ckk%.@.@.B.F.F.H.HIII#++e$$&,,..E0B0B0D0J0J0L0LMMM#++e$$&++--s{{5/A/A/C/H/H/J/JKKK#++e$$&..00#++e2D2D2F2N2N2P2PQQQ#++e$$&++--s{{5/A/A/C/H/H/J/JKKK#++e$$&,,..E0B0B0D0J0J0L0LMMM#++e$$&++--s{{5/A/A/C/H/H/J/JKKK#++e$$&++--s{{5/A/A/C/H/H/J/JKKK#++e$$&++--s{{5/A/A/C/H/H/J/JKKK 	V 	VDckk%((*..t44ckk%6H6H6J6N6Nt6T6TUUUckk%((*..t44ckk%6H6H6J6N6Nt6T6TUUUU#++e$$((**CKK,>,>,B,B,D,DEEE#++e$$((**CKK,>,>,B,B,D,DEEE#++e$$((**CKK,>,>,B,B,D,DEEE#++e$$**,,ckk%.@.@.F.F.H.HIII#++e$$))++S[[-?-?-D-D-F-FGGG#++e$$))++S[[-?-?-D-D-F-FGGG#++e$$**,,ckk%.@.@.F.F.H.HIII#++e$$))++S[[-?-?-D-D-F-FGGG#++e$$))++S[[-?-?-D-D-F-FGGG 
	 
	DE""&&t,,E""&&t,,!   
 E""&&t,,E""&&t,,!    
	 %#%!)SUQY)?@ "V "VuEMM%  $$&&e(<(<(@(@(B(BPU	
 	
 	
 	
 	EMM%  $$&&e(<(<(@(@(B(BPU	
 	
 	
 	
 	EMM%  &&((EMM%  &&((	
 	
 	
 	

 	EMM%  %%''u)=)=)B)B)D)DRW	
 	
 	
 	
 	EMM%  ((**EMM%  ((**	
 	
 	
 	

 	EMM%  &&((EMM%  &&((	
 	
 	
 	

 	EMM%  %%''u)=)=)B)B)D)DRW	
 	
 	
 	
 	EMM%  %%''u)=)=)B)B)D)DRW	
 	
 	
 	
  	V 	VDcemmE**..t44cemmE6J6J6N6Nt6T6TUUUcemmE**..t44cemmE6J6J6N6Nt6T6TUUUU	V  6 6#++ceai((*..00#++ceai2H2H2J2N2N2P2PQQQ#++ceai((*..00#++ceai2H2H2J2N2N2P2PQQQ#++ceai((*..00#++ceai2H2H2J2N2N2P2PQQQ#++ceai((*0022CKK	4J4J4L4R4R4T4TUUU#++ceai((*//113;;suqy3I3I3K3P3P3R3RSSSKK	""$,,..CEAI0F0F0H0P0P0R0R	
 	
 	
 	#++ceai((*//113;;suqy3I3I3K3P3P3R3RSSS#++ceai((*0022CKK	4J4J4L4R4R4T4TUUU#++ceai((*//113;;suqy3I3I3K3P3P3R3RSSS#++ceai((*//113;;suqy3I3I3K3P3P3R3RSSS#++ceai((*//113;;suqy3I3I3K3P3P3R3RSSS#++ceai((*//113;;suqy3I3I3K3P3P3R3RSSS#++ceai((*..00#++ceai2H2H2J2N2N2P2PQQQ#++ceai((*..00#++ceai2H2H2J2N2N2P2PQQQ#++ceai((*..00#++ceai2H2H2J2N2N2P2PQQQ#++ceai((*0022CKK	4J4J4L4R4R4T4TUUU#++ceai((*//113;;suqy3I3I3K3P3P3R3RSSSKK	""$,,..CEAI0F0F0H0P0P0R0R	
 	
 	
 	#++ceai((*//113;;suqy3I3I3K3P3P3R3RSSS#++ceai((*0022CKK	4J4J4L4R4R4T4TUUU#++ceai((*//113;;suqy3I3I3K3P3P3R3RSSS#++ceai((*//113;;suqy3I3I3K3P3P3R3RSSS#++ceai((*//113;;suqy3I3I3K3P3P3R3RSSS#++ceai((*//113;;suqy3I3I3K3P3P3R3RSSS#++ceai((,,..CEAI0F0F0J0J0L0LMMM#++ceai((,,..CEAI0F0F0J0J0L0LMMM#++ceai((,,..CEAI0F0F0J0J0L0LMMM#++ceai((..00#++ceai2H2H2N2N2P2PQQQ#++ceai((--//SUQY1G1G1L1L1N1NOOO#++ceai((--//SUQY1G1G1L1L1N1NOOO#++ceai((..00#++ceai2H2H2N2N2P2PQQQ#++ceai((--//SUQY1G1G1L1L1N1NOOO#++ceai((--//SUQY1G1G1L1L1N1NOOO#++ceai((,,..CEAI0F0F0J0J0L0LMMM#++ceai((,,..CEAI0F0F0J0J0L0LMMM#++ceai((,,..CEAI0F0F0J0J0L0LMMM#++ceai((..00#++ceai2H2H2N2N2P2PQQQ#++ceai((--//SUQY1G1G1L1L1N1NOOO#++ceai((--//SUQY1G1G1L1L1N1NOOO#++ceai((..00#++ceai2H2H2N2N2P2PQQQ#++ceai((--//SUQY1G1G1L1L1N1NOOO#++ceai((--//SUQY1G1G1L1L1N1NOOO 	 	DCEAI&&**400#++ceai2H2H2L2LT2R2R   	 			CEAI	CEAI	 V Vu 	#++e$$&**,,ckk%.@.@.B.F.F.H.HIII#++e$$&**,,ckk%.@.@.B.F.F.H.HIII#++e$$&**,,ckk%.@.@.B.F.F.H.HIII#++e$$&,,..E0B0B0D0J0J0L0LMMM#++e$$&++--s{{5/A/A/C/H/H/J/JKKK#++e$$&..00#++e2D2D2F2N2N2P2PQQQ#++e$$&++--s{{5/A/A/C/H/H/J/JKKK#++e$$&,,..E0B0B0D0J0J0L0LMMM#++e$$))++S[[-?-?-D-D-F-FGGG#++e$$))++S[[-?-?-D-D-F-FGGG#++e$$((**CKK,>,>,B,B,D,DEEE#++e$$((**CKK,>,>,B,B,D,DEEE#++e$$((**CKK,>,>,B,B,D,DEEE#++e$$**,,ckk%.@.@.F.F.H.HIII#++e$$))++S[[-?-?-D-D-F-F-M-Me-T-TUUU#++e$$))++S[[-?-?-D-D-F-FGGG#++e$$**,,ckk%.@.@.F.F.H.HIII#++e$$))++S[[-?-?-D-D-F-FGGG#++e$$))++S[[-?-?-D-D-F-FGGG 	V 	VDckk%((*..t44ckk%6H6H6J6N6Nt6T6TUUUU	V #++c""$((**/00FC  %5 5     #++ceai((*//116776CEAI %%'',< <    
 M(4444555
M(;;;;<<<
M(9999:::
M(>>>>???
M(@@@@AAA ckk#&&(,,..0DEEEckk#&&(,,..0DEEEckk#&&(,,..0DEEEckk#&&(..002HIIIckk#&&(,,..0DEEEckk#&&(,,..0DEEEckk#&&(..002HIIIckk#&&(--//1FGGGckk#&&(--//1FGGGckk#&&(--//1FGGGckk#&&(--//1FGGGckk#&&(--//1EFFFckk#&&(--//1GHHHckk#&&(00224LMMMckk#&&(--//1FGGGckk#&&**,,.EFFFckk#&&**,,.EFFFckk#&&**,,.EFFFckk#&&,,..0IJJJckk#&&,,..0IJJJckk#&&++--/GHHHckk#&&++--/GHHHckk#&&++--/FGGGckk#&&++--/HIIIckk#&&++--/GHHHHHr3   keywordsplit_every	split_outc                b   t          j        g ddz  g ddz  d          }t          j        |d          }d }|dvr ||                    d	d
          |fi | di} ||                    d	          |          }t          ||            ||                    d	          |          j        |j        k    sJ  ||                    d	d
          dfddi| di} ||                    d	          dd          }t          ||            ||                    d	          dd          j        |j        k    sJ |dvr ||                    d	d
          j        |fi | di} ||                    d	          j        |          }t          ||            ||                    d	          j        |          j        |j        k    sJ  ||                    d	d
          j        dfddi| di} ||                    d	          j        dd          }t          ||            ||                    d	          j        dd          j        |j        k    sJ |dvr ||j                            |j        d
          |fi | di} ||j                            |j                  |          }t          ||d
            ||j                            |j                  |          j        |j        k    sJ  ||j                            |j        d
          dfddi| di} ||j                            |j                  dd          }t          ||            ||j                            |j                  dd          j        |j        k    sJ d S )NrP  d   rQ  ry      r   c                .     t          | |          di |S Nr7   r   r   mkwargss      r1   callz*test_groupby_reduction_split.<locals>.callO       wq!}}&&v&&&r3   r)   r'   r(   r{   FsortrI   r&   r_  r_  r   r?  )	rU   rV   rX   rY   rZ   r   r   rz   r{   )rb  r2   r_   r`   rn  r   r   s          r1   test_groupby_reduction_splitrt  H  s   
,)))C/6Q6Q6QTW6WXX C ."
-
-
-C' ' ' 111d3;;s;//JJgq\JJd3;;s##X..#stCKK$$h//5BBBB
$s{{3U{++U
K
K
Kwl
K
KC
$s{{3Q
/
/
/Cc34C  %a0006#)CCCC &&d3;;s;//18LL|LLd3;;s##%x00#stCKK$$&11739DDDD
$s{{3U{++-u
M
M1
M!
M
MC
$s{{3!5q
1
1
1Cc34C  "E2228CIEEEE &&d35==U=33XNN'1NNd35==''22 	#s....tCEMM#%(((339SYFFFF
$su}}SU}//
O
OQ
O7A,
O
OC
$su}}SU##U
3
3
3Cc34ce$$e!444:ciGGGGGGr3   groupedc                ,    |                      d          S Nrk   r   r   s    r1   r   r     s    2::c?? r3   c                8    |                      | d                   S rw  r   r   s    r1   r   r     s    2::bg&& r3   c                >    |                      | d         dz             S Nrk   rH   r   r   s    r1   r   r     s    2::bgk** r3   c                8    |                      d          d         S Nrk   Br   r   s    r1   r   r     r   r3   c                8    |                      d          d         S r|  r   r   s    r1   r   r     r   r3   c                D    |                      | d                   d         S r|  r   r   s    r1   r   r     s    2::bg&&s+ r3   c                J    |                      | d         dz             d         S )Nrk   rH   r}  r   r   s    r1   r   r     s    2::bgk**3/ r3   c                B    | j                             | d                   S rw  r}  rZ   r   s    r1   r   r     s    24<<3(( r3   c                H    | j                             | d         dz             S rz  r  r   s    r1   r   r     s    24<<3!,, r3   c                <    |                      d          ddg         S Nrk   r}  Cr   r   s    r1   r   r     r   r3   c                H    |                      | d                   ddg         S r  r   r   s    r1   r   r     r   r3   c                N    |                      | d         dz             ddg         S )Nrk   rH   r}  r  r   r   s    r1   r   r     s#    2::bgk**C:6 r3   c                .    |                      d           S )Nc                *    |                                  S r6   r+  rS   s    r1   r   z<lambda>.<locals>.<lambda>  s     r3   r   grps    r1   r   r     s    CII//00 r3   c                .    |                      d           S )Nc                *    |                                  S r6   r+  r  s    r1   r   z<lambda>.<locals>.<lambda>  s    AEEGG r3   	transformr  s    r1   r   r     s    CMM"3"344 r3   c           	        t          j        g ddz  t          j                            d          t          j                            d          t          j                            d          d          }t          j        |d          }t          j        t                    5  t           | | |                     | | |                               d d d            d S # 1 swxY w Y   d S )NrH   rI   rJ   rK   rw      rk   r}  r  DrJ   )rU   rV   r  r  r  rX   rY   r@   rA   r   r   )ru  r   r_   r`   s       r1   test_apply_or_transform_shuffler  ~  s   8 ,!$$$$$$		
 	
 C .a
 
 C	k	"	" : :$$wws||$$dd773<<&8&8999: : : : : : : : : : : : : : : : : :s   $5C&&C*-C*c                    dS NAAr7   r   s    r1   r   r     s    4 r3   c                
    ddgS Nr  ABr7   r   s    r1   r   r     s
    D$< r3   c                    | d         S r  r7   r   s    r1   r   r     s
    2d8 r3   c                "    | d         | d         gS r  r7   r   s    r1   r   r     s    BtHbh' r3   c                    | d         dz   S )Nr  rH   r7   r   s    r1   r   r     s    2d8a< r3   c                .    | d         dz   | d         dz   gS )Nr  rH   r  r7   r   s    r1   r   r     s    41bhl3 r3   NotImplementedc                .    |                      d           S )Nc                *    |                                  S r6   r+  r  s    r1   r   z<lambda>.<locals>.<lambda>  s     r3   r  ru  s    r1   r   r     s    &7&788 r3   c                .    |                      d           S )Nc                *    |                                  S r6   r+  r  s    r1   r   z<lambda>.<locals>.<lambda>  s    AEEGG r3   r  r  s    r1   r   r     s    ))*;*;<< r3   c                   t          j        g ddz  g ddz  t          j                            d          t          j                            d          t          j                            d          d          }t          j        |d          }t          j        t                    5  t           ||                     | |                               ||                     | |                                         t           ||                     | |                    d                    ||                     | |                    d                              t           ||                     | |                    ddg                    ||                     | |                    ddg                              d d d            d S # 1 swxY w Y   d S )Nr  rw   r  )r  r  r}  r  r  rJ   r}  r  )rU   rV   r  r  r  rX   rY   r@   rA   r   r   rZ   )r   r   r_   r`   s       r1   *test_apply_or_transform_shuffle_multilevelr    s   , ,,,",,"$$$$$$	
 	
 C .a
 
 C	k	"	" 
 
$$s{{773<<001144GGCLL8Q8Q3R3RSSS 	DWWS\\**3/00$$s{{773<<7P7PQT7U2V2V	
 	
 	

 	DWWS\\**C:677DWWS\\**C:677	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s   *D+G""G&)G&c                    t          j        g dg dg dd          } t          j        | d          }t	          |                    d                                          |                     d                                                     t	          |                    ddg                                          |                     ddg                                                     |                     d                              d           }t	          |                    d                              d |	          |           d S )
N)r   rH   r   rH   r  rO  rI   r   r   c                    | S r6   r7   r  s    r1   r   z+test_numeric_column_names.<locals>.<lambda>      Q r3   c                    | S r6   r7   r  s    r1   r   z+test_numeric_column_names.<locals>.<lambda>  s    q r3   r   )rU   rV   rX   rY   r   rZ   r   r   )r   r`   r   s      r1   test_numeric_column_namesr    s!    
,,,<<<LLLII	J	JB
.
+
+
+Cckk!nn  ""BJJqMM$5$5$7$7888ckk1a&!!%%''QF););)?)?)A)ABBBzz!}}"";;//HA[[x88    r3   c                f   | dk    rt          j        d           t          j                    }|j        dz  |d<   |j        dz  |d<   t          j        |d          }d d	 fD ]}|                     ||                    	                    t                    }t          j        t                    5  |                     ||                    	                    t                    }d d d            n# 1 swxY w Y   t          ||                                           t          d
 |j        D                       rJ |                     ||                    j        	                    t                    }t          j        t                    5  |                     ||                    j        	                    t                    }d d d            n# 1 swxY w Y   t          ||                                           t          d |j        D                       rJ d S )NdiskzTasks-only shuffle testg?rk   r}  rP   r   c                    dS rw  r7   r  s    r1   r   z*test_groupby_apply_tasks.<locals>.<lambda>  r  r3   c                    | j         S r6   )rk   r  s    r1   r   z*test_groupby_apply_tasks.<locals>.<lambda>  s     r3   c              3  *   K   | ]}d |d         v V  dS partdr   Nr7   .0ks     r1   	<genexpr>z+test_groupby_apply_tasks.<locals>.<genexpr>  *      771w!A$777777r3   c              3  *   K   | ]}d |d         v V  dS r  r7   r  s     r1   r  z+test_groupby_apply_tasks.<locals>.<genexpr>  r  r3   )r@   skipr   rA  rk   r}  rX   rY   rZ   r   r  rA   r   r   rq   anyr   )r8   r   r`   indrz   r{   s         r1   test_groupby_apply_tasksr    si   -...		"	$	$BdckBsGdckBsG
.
,
,
,C}}- 8 8JJss2ww%%c**\+&& 	1 	1CCHH%%++C00A	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1!QYY[[!!!7777777777JJss2ww!'',,\+&& 	3 	3CCHH%%'--c22A	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3!QYY[[!!!777777777778 8s$   67C99C=	 C=	<G""G&	)G&	c                    t          j        g dg dd          } t          j        | d          }|                     d                              d           }t                      rt          |          n|}t          j	        
                    d	          5  t          |                    d                              d
 |          |           d d d            d S # 1 swxY w Y   d S )NrH   rI   rJ   rK   rw   )1r  rz   rz   rz   rk   r}  rJ   r   r}  c                    | S r6   r7   r  s    r1   r   z.test_groupby_multiprocessing.<locals>.<lambda>  s    q r3   	processesr   c                    | S r6   r7   r  s    r1   r   z.test_groupby_multiprocessing.<locals>.<lambda>  r  r3   r   )rU   rV   rX   rY   rZ   r   r   r   r   r   r   r   )r   r`   r   r   s       r1   test_groupby_multiprocessingr    s(   	OOO2K2K2KLL	M	MB
.
+
+
+Czz#$$[[11H*A*C*CQX&&&D	;	/	/ 
 
KK"";;T"::	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s   :C!!C%(C%c                 t   t          j        g dg ddg d          } t          j        | d          }|                    d          j        dk    sJ |                    |d                   j        dk    sJ |                    |d         d	k              j        j        |d         d	k    j        k    sJ |                    dd
g          j        dd
gk    sJ |                    |d         |d
         g          j        dd
gk    sJ |                    |d         d
g          j        dd
gk    sJ d S )Nrv   rx   ry   r|   r}   rJ   r   rz   rI   r{   )rU   rV   rX   rY   rZ   r  r   )fullr   s     r1   test_groupby_normalize_byr    sR   <)))0K0K0KLL)))  D 	t+++A99S>>####99QsV3&&&&99QsVaZ  #)afqj-?????99c3Z  #Sz111199afaf%&&)c3Z777799afc]##&3*444444r3   c                   | }|dv rd S t          j        g dg dg dg ddg d          }t          j        |d	          }|                    d
dg                              |          }|dv r|                    t                    }| dk    rddini }t          | |                    d
dg          j        |fi |           d S )Nrp  )rH   rH   rJ   rJ   )rK   rK      r  )rH   rH   rK   rK   r   r   r{   rz   r   r	  rJ   r   rz   r   >   r&   r   r    shuffletasks)	rU   rV   rX   rY   rZ   r   r   r   r   )r2   specr_   r`   r   r  s         r1   %test_aggregate__single_element_groupsr    s   D )))
,lllllVV$$$  C .!
,
,
,C{{C:&&**400H ??5))&.(&:&:y'""Gh3S#J//3DDDGDDEEEEEr3   c                 n   ddl m}  ddg}g d} | |          \  }}} | |          \  }}}t          |          t          |          k    sJ t          |          t          |          k    sJ t          |          t          |          k    sJ t          |          t          |          k    sJ dS )zAggregate reuses intermediates. For example, with sum, count, and mean
    the sums and counts are only calculated once across the graph and reused to
    compute the mean.
    r   )_build_agg_argsfoor   inputbarr#   r  )r  r  )bazr   r  N)dask.dataframe.groupbyr  r  )	r  no_mean_specwith_mean_specno_mean_chunksno_mean_aggsno_mean_finalizerswith_mean_chunkswith_mean_aggswith_mean_finalizerss	            r1   5test_aggregate_build_agg_args__reuse_of_intermediatesr  3  s    
 766666+-FGL  N 8G|7T7T4NL"4=L_> >:n&: ~#&6"7"77777|N 3 33333!""c,&7&77777#$$N(;(;;;;;;;r3   c                    t          j        ddg          fd} ddidddd	dddgd	g d
g dddddddddddg}t          j        g ddz  g ddz  g ddz  g ddz  dg d          }t	          j        |d          }|D ]}|                    ddg                              |d          }|                    ddg                              |d          } | |          } | |          }t          |d           t          |d           t          |t                    rt          |j        d           sJ t          j        |d!                   t          j        |d!                   k    sJ |D ]}	t          |t                    t          |	t                    k    rt          |t                    t          |	t                    k    r|                    ddg                              |	d          }
t!          |
j                  t!          |j                  k    sJ t!          |
j                  t!          |j                  k    sJ ߐd S )"Ndask_holderr   c                \     d | j                                         D                       S )Nc                d    i | ]-\  }}|d                               d          rd|d          v*||.S )r   	aggregatez-chunk-)r   r  r  vs      r1   
<dictcomp>z9test_aggregate_dask.<locals>.<lambda>.<locals>.<dictcomp>Q  sV     	
 	
 	
A !,,	
 2;!A$1F1F q
 2G1F1Fr3   )r   items)r\   r  s    r1   r   z%test_aggregate_dask.<locals>.<lambda>P  s;    {{	
 	
(..**	
 	
 	
	  	  r3   r   r   r"   r!   ry   r{   r   )r   r   r!   r"   r#   r$   )r%   r&   r*   r+   r,   r   r#   r%   r&   r*   r+   r,   	rH   rI   rJ   rH   rH   rI   rK   rJ   rM   rf  rQ  	r   rH   rI   rJ   rK   rw   rL   rM   rN   	rJ   rI   rH   rJ   rI   rH   rI   rL   rK   r   r  r	  r   rz   r{   rI   )rc  r   r   )collections
namedtuplerU   rV   rX   rY   rZ   r   r   r[   r  r   r   pickledumpsrW   r  )get_agg_daskspecsr_   r`   r  result1result2	agg_dask1	agg_dask2
other_specotherr  s              @r1   test_aggregate_daskr  N  s   (AAK	 	 	 	L FmE":":;;E5>**	
 	
 	
	
 	
 	
 	7E@ ,,,,s2,,,s2,,,s2,,,s2		
 	
 %$$  C .#
.
.
.C !< !<++sCj))--d-BB++sCj))--d-BB L))	 L))	 		1%%%	1%%% dD!! 	6W\955555
 |IaL))V\)A,-G-GGGGG   	< 	<J 4&&*Z*F*FFF4&&*Z*F*FFFS#J//33JA3NN5:#gl*;*;;;;;5:#gl*;*;;;;;	<-!< !<r3   rH   rN   rI       c                   t          j        g ddz  g ddz  g ddz  g ddz  dg d          }t          j        |d	          }d
ddgd}|                    ddgd                              ||||           }|                    ddg                              |          }|d                             |d         j                  |d<   t          ||           d S )Nr  rf  rQ  r  r  r   r  r	  r   r   r!   r"   r  rz   r{   Frq  )rd  rc  r  )r{   r   )	rU   rV   rX   rY   rZ   r   r   dtyper   )r8   rd  rc  r_   r`   r  r   expects           r1   test_shuffle_aggregater    s'    ,,,,s2,,,s2,,,s2,,,s2		
 	
 %$$  C .#
.
.
.Cuen--D[[#s%[0044	{N 5  F [[#s$$((..F #=1889N9TUUF=ffr3   rr  c                L   t          j        g ddz  g ddz  g ddz  g ddz  dg d          }t          j        |d	          }d
ddgd}|                    d|                              |d|           }|                    d|                              |          }t          ||           |                    ddg|                              |d|           }|                    ddg|                              |          }t          |||            d S )Nr  rf  rQ  r  r  r   r  r	  r   r   r!   r"   r  rz   rq  rI   rd  r  r{   )sort_resultsrU   rV   rX   rY   rZ   r   r   )r8   rr  r_   r`   r  r   r  s          r1   test_shuffle_aggregate_sortr    sh   
,,,,s2,,,s2,,,s2,,,s2		
 	
 %$$  C .#
.
.
.C uen--D[[4[((,,TQ,WWF[[4[((,,T22Fff [[#s$[//33> 4  F [[#s$[//33D99Ffft8444444r3   c                   t          j        g ddz  g ddz  g ddz  g ddz  dg d          }t          j        |d	          }d
ddgd}|                    d                              |d          j        }t          d |j        D                       rJ t          j
        t                    5  |                    d                              |dd           d d d            n# 1 swxY w Y   |                    dd                              |dd          j        }t          d |j        D                       sJ d S )Nr  rf  rQ  r  r  r   r  r	  r   r   r!   r"   r  rz   rH   rd  c              3     K   | ]}d |v V  	dS r  Nr7   r  ls     r1   r  z2test_shuffle_aggregate_defaults.<locals>.<genexpr>  s&      66a9>666666r3   rd  rc  Frq  rI   c              3     K   | ]}d |v V  	dS r  r7   r  s     r1   r  z2test_shuffle_aggregate_defaults.<locals>.<genexpr>  s&      22!yA~222222r3   )rU   rV   rX   rY   rZ   r   r   r  layersr@   rl   r   )r8   r_   r`   r  r  s        r1   test_shuffle_aggregate_defaultsr    s   
,,,,s2,,,s2,,,s2,,,s2		
 	
 %$$  C .#
.
.
.Cuen--D ++c



tq

1
1
6C663:66666666 
z	"	" ? ?CTQA>>>? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ++c+
&
&
*
*41!
*
L
L
QC22sz2222222222s   7,C//C36C3r  r   r  keysrz   r   c                   t          j        g ddz  g ddz  g ddz  g ddz  dg d          }t          j        |d	          }|                    |                              | |
          }|                    |                              |           }t          ||           t          j        t          d          5  |                    |                              | d
           d d d            n# 1 swxY w Y   t          j        t          d          5  |                    |          
                    d
           d d d            d S # 1 swxY w Y   d S )Nr  rP   rQ  r  r  r   r  r	  r   )r  zmust use shufflr<   F)rU   rV   rX   rY   rZ   r  r   r@   rl   r   r    )r  r  r8   r_   r`   actualr   s          r1   test_aggregate_medianr    s    ,,,,r1,,,r1,,,r1,,,r1		
 	
 %$$  C ."
-
-
-C[[((~(FFF{{4  **400Hfh	z):	;	;	; 9 9D##D%#8889 9 9 9 9 9 9 9 9 9 9 9 9 9 9	z):	;	;	; 0 0D   ///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0s$   +C<<D D "*EE Er;   
group_keys)TFNlimit)NrH   rK   c           
     v   t          j        g dg dt          j        dt          j        t          j        gdt          j        dt          j        gdt          j        dt          j        gd          }t	          j        |d	
          }t                      5  |                    d|                              d|           }d d d            n# 1 swxY w Y   t                      5  |                    d|                              d|           }d d d            n# 1 swxY w Y   t          ||           t          |                    d|          j
                            d          |                    d|          j
                            d                     t          |                    ddg|                              d          |                    ddg|                              d                     t          j        t                    5  |                    d                              ddi           d d d            n# 1 swxY w Y   t          j        t                    5  |                    d                              t          j        t                               d d d            n# 1 swxY w Y   t          j        t                    5  |                    d                              t           j                   d d d            d S # 1 swxY w Y   d S )NrH   rH   rI   rI   rJ   rK   rJ   rK   rJ   rK   rw   rL   rM   rk   r}  r  r  ErI   r   rk   r  r   r;   r}  r  )rU   rV   r  nanrX   rY   rD   rZ   fillnar   r}  r@   rl   rp   r]   r%  )r;   r  r  r   r`   r   r   s          r1   test_fillnar#    s+    
&!RVRV,RVQ'RVQ'	
 	

 
B .
+
+
+C	 	"	" O O::cj:99@@@NNO O O O O O O O O O O O O O O	 	"	" N NSZ88???MMN N N N N N N N N N N N N N Nh


3:
..077::CJ//188;;   


C:*
55<<Q??S#J:66==a@@  
 
*	+	+ * *Ca)))* * * * * * * * * * * * * * * 
*	+	+ 6 6C	 4 4 45556 6 6 6 6 6 6 6 6 6 6 6 6 6 6 
*	+	+ . .C---. . . . . . . . . . . . . . . . . .s[   -CCC'-D  D$'D$"+II I=AK

KK.3L..L25L2c           
     z   t          j        g dg dt          j        dt          j        t          j        gdt          j        dt          j        gdt          j        dt          j        gd          }t	          j        |d	
          }t          |                    d|                               |          |                    d|                               |                     t          |                    d|           j	                            |          |                    d|           j	                            |                     t          |                    ddg|                               |          |                    ddg|                               |                     d S Nr  r  rJ   rK   rw   rL   rM   r  rI   r   rk   r  )r  r}  )
rU   rV   r  r!  rX   rY   r   rZ   ffillr}  r  r  r   r`   s       r1   
test_ffillr(  8  s    
&!RVRV,RVQ'RVQ'	
 	

 
B .
+
+
+C


3:
..4454AACJ//55E5BB   


3:
..066U6CCCJ//177e7DD   


C:*
55;;%;HHS#J:66<<5<II    r3   c           
     z   t          j        g dg dt          j        dt          j        t          j        gt          j        dt          j        dgt          j        dt          j        dgd          }t	          j        |d	
          }t          |                    d|                               |          |                    d|                               |                     t          |                    d|           j	                            |          |                    d|           j	                            |                     t          |                    ddg|                               |          |                    ddg|                               |                     d S r%  )
rU   rV   r  r!  rX   rY   r   rZ   bfillr}  r'  s       r1   
test_bfillr+  S  s    
&!RVRV,&!RVQ'&!RVQ'	
 	

 
B .
+
+
+C


3:
..4454AACJ//55E5BB   


3:
..066U6CCCJ//177e7DD   


C:*
55;;%;HHS#J:66<<5<II    r3   rw   )rerunsc                    dgS r   r7   r   s    r1   r   r   r  r   r3   c                
    ddgS r   r7   r   s    r1   r   r   s  r   r3   c                    | d         S r   r7   r   s    r1   r   r   t  r   r3   c                "    | d         | d         gS r   r7   r   s    r1   r   r   u  r   r3   c                2    | d         dk    | d         dk    gS r   r7   r   s    r1   r   r   v      BsGaKC1- r3   c           
     t   |dk    }d }t          j        g ddz  g ddz  g ddz  g ddz  dg d	          }t          j        |d
          }|dvrot	           ||                     | |          |          d         |           ||                     | |          |          d         ||d                     |dk    r|dv r|dk    rt          j        d           t	           ||                     | |          |          ddg         |           ||                     | |          |          ddg         ||d                     |dv r ||                     | |          |          |                                          }t          t          |j                            }||         } ||                     | |          |          ||d                                          }	|	                                }	t          t          |	j                            }|	|         }	t	          ||	           d S t	           ||                     | |          |          |           ||                     | |          |          ||d                     d S d S )NrH   c                .     t          | |          di |S ri  rj  rk  s      r1   rn  z4test_dataframe_aggregations_multilevel.<locals>.call}  ro  r3   rP  rP   rQ  r  )rz   r{   r   r   r  r	  r   r   rq  r   rI   r  r)   z(https://github.com/dask/dask/issues/9509r   )rU   rV   rX   rY   r   rZ   r@   r  
sort_indexr[  rW   r
  rq   )
r   rd  r2   rr  rn  r_   r`   r   colsdddfs
             r1   &test_dataframe_aggregations_multilevelr8  n  sG    >D' ' ' ,,,,r1,,,r1,,,r1,,,r1		
 	
 %$$  C ."
-
-
-C &&DWWS\\55c:HEEDGGCLLt44S9#	  	
 	
 	
 9&&9q==KBCCCDWWS\\55sCjA8LLDGGCLLt44c3Z@#	  	
 	
 	
 &&ckk''#,,Tk::HEEPPRRB$rz**++DDB4GGCLLt44#	  
 gii  ??$$D$t|,,--D:Db$S[[D[998DDKK4K88' !	      ; r3   c                    | d         S r   r7   r   s    r1   r   r     r   r3   c                "    | d         | d         gS r   r7   r   s    r1   r   r     r   r3   c                2    | d         dk    | d         dk    gS r   r7   r   s    r1   r   r     r2  r3   c           
        |dk    }d }|dv rdS t          j        g ddz  g ddz  g ddz  d	g d
          }t          j        |d          }t	           ||d                              | |          |          |           ||d                              | |          |          ||d          |dv           dS )zp
    similar to ``test_dataframe_aggregations_multilevel``, but series do not
    support all groupby args.
    rH   c                .     t          | |          di |S ri  rj  rk  s      r1   rn  z1test_series_aggregations_multilevel.<locals>.call  ro  r3   r   NrP  rP   rQ  r  r   r   r{   rz   r	  r   r   rq  rI   r  >   r   r)   r?  rU   rV   rX   rY   r   rZ   )r   rd  r2   rr  rn  r_   r`   s          r1   #test_series_aggregations_multilevelr@    s0    >D' ' ' ?""
,,,,r1,,,r1,,,r1	
 	

    C ."
-
-
-CSXggcll66AAHWWS\\55		
 	
 	
 %88     r3   c                    | d         S r   r7   r   s    r1   r   r     r   r3   c                    | d         dk    S Nrz   rI   r7   r   s    r1   r   r     s    2c7Q; r3   c                "    | d         | d         gS r   r7   r   s    r1   r   r     r   r3   c                    | d         dk    gS rC  r7   r   s    r1   r   r     s    BsGaK= r3   c                2    | d         dk    | d         dk    gS r   r7   r   s    r1   r   r     r   r3   z/index dtype does not coincide: boolean != emptygroup_and_slicec                >    |                       ||                     S r6   r   r   r   s     r1   r   r     s    BJJwwr{{33 r3   c                J    | d                               ||                     S Nr   r   rI  s     r1   r   r     s    BsGOOGGBKK88 r3   c                J    |                       ||                     d         S rK  r   rI  s     r1   r   r     s    BJJwwr{{33C8 r3   c                   t          j        g ddz  g ddz  g ddz  dg d          }t          j        |d          } | ||                                                              d	          } | ||          j                                        } | ||          j                                                            d	          }t          ||           t          ||           d S )
NrP  rP   rQ  r  r   r>  r	  r   r   )	rU   rV   rX   rY   r*   rZ  rf   _meta_nonemptyr   )rG  r   r_   r`   r   r   meta_nonemptys          r1   test_groupby_meta_contentrP    s   2 ,,,,r1,,,r1,,,r1	
 	

    C ."
-
-
-CsG,,224499!<<H?3((.4466D#OC11@FFHHMMaPPMhh&&&&&r3   c                 V   t          j        g ddz  g ddz  g ddz  dg d          } t          j        | d	          }t          j        | d
	          }|                    ddg           |                    |d         |d         g           t          j        t                    5  |                    |d                    d d d            n# 1 swxY w Y   t          j        t                    5  |                    |d         |d         g           d d d            n# 1 swxY w Y   t          j        t                    5  |                    |d         |d         g           d d d            n# 1 swxY w Y   t          j        t                    5  |                    |d         |d         g           d d d            n# 1 swxY w Y   t          j        t                    5  |                    |d         dg           d d d            d S # 1 swxY w Y   d S )NrP  rP   rQ  r  r   r>  r	  rJ   r   rM   rz   r{   )rU   rV   rX   rY   rZ   r@   rl   rp   )r_   ddf3ddf7s      r1   test_groupy_non_aligned_indexrT    s[   
,,,,r1,,,r1,,,r1	
 	

    C >#1---D>#1---D 	LL#sLL$s)T#Y'((( 
*	+	+    T#Y                              
*	+	+ - -d3ic+,,,- - - - - - - - - - - - - - - 
*	+	+ - -d3ic+,,,- - - - - - - - - - - - - - - 
*	+	+ - -d3ic+,,,- - - - - - - - - - - - - - - 
*	+	+ ' 'd3i%&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 'sZ   +CCC7$D''D+.D+$E;;E?E?$GGG3HH"%H"c                 *   t          j        g ddz  g ddz  g ddz  dg d          } t          j        | d	          } | d
         }|                    |           |                    ||g           t          j        t                    5  |                    d           d d d            n# 1 swxY w Y   t          j        t                    5  |                    |dg           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  |                    || g           d d d            d S # 1 swxY w Y   d S )NrP  rP   rQ  r  r   r>  r	  rJ   r   rz   r  )	rU   rV   rX   rY   rZ   r@   rl   rm   r   )r   r  s     r1    test_groupy_series_wrong_grouperrV  ?  s   	,,,r1,,,r1,,,r1	
 	

  
 
 
B 
	*	*	*B
3A IIaLLLIIq!f 
x	 	   			%               
x	 	   			1e*               
z	"	"  			"               
z	"	"  			1b'                 sH   B11B58B5C99C= C=D??EE#FFF)rH   rK   r  )rH   rw   r  c                   t          j        t          j        d          dz  t          j        d          d          }t          j        ||           }|                    d|dk              j        	                    ||          }|
                    |j        |                                          }dd	lm}  ||          \  }}	|j        |k    sJ t!          d
 |                                D                       | k    sJ t%          ||                    d          j        	                                           d S )Nrf  rP   rR   rS   rH   rq  )rc  rd  r   )get_depsc                    g | ]	\  }}||
S r7   r7   r  s      r1   
<listcomp>z/test_hash_groupby_aggregate.<locals>.<listcomp>o  s!    <<<da!<<<<r3   )rU   rV   r  arangeonesrX   rY   rZ   rT   r&   __dask_optimize__r   __dask_keys__	dask.corerX  r   r  r  r   )
r   rc  rd  r   r`   r   r  rX  dependencies
dependentss
             r1   test_hash_groupby_aggregaterb  ^  s7    
BIcNNR/bgcllCC	D	DB
.[
)
)C[[IN[446::9 ;  F 
"
"6;0D0D0F0F
G
GC""""""'x}}L*****<<l0022<<<==LLLLfbjjoo'++--.....r3   c                    t          j        t          j        d          dz  t          j        d          g ddz  d          } t          j        | d          }|                    ddgd	
          j        	                    d          }|                     ddg          j        	                                }t          ||d	           d S )Nrf  rP   r  r  rS   rT   zr   rS   rT   Frq  rK   r
  r   )rU   rV   r  r[  r\  rX   rY   rZ   re  r   r   )r   r`   r   r   s       r1   #test_split_out_multi_column_groupbyrf  t  s    	innr!???R;OPP
 
B .
,
,
,C[[#s%[00277!7DDFzz3*%%',,..HfhE222222r3   c                 2   t          j        t          j        g dg dd          d          } |                     d                                          j        dk    sJ |                     dd	                              d
          j        dk    sJ |                     dd	                              d
          j        dk    sJ t          j        t                    5  |                     dd
           d d d            d S # 1 swxY w Y   d S )Nr  r  r  rI   r   rk   rH   Frq  r
  rJ   )
rX   rY   rU   rV   rZ   r   r   r@   rl   rJ  r   s    r1   test_groupby_split_out_numrh    sY   
.
<<<lll;;<<!  C ;;s!!-2222;;s;''++a+88DIIII;;s;''++a+88DIIII	y	!	! & &C1%%%& & & & & & & & & & & & & & & & & &s   'DDDc                    t          j        t          j        g dg dd          d          } t	          j        t                    5  |                     dd           d d d            n# 1 swxY w Y   t	          j        t                    5  |                     dd	           d d d            n# 1 swxY w Y   t	          j        t                    5  |                     dd
           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  r  rI   r   rk   rH   r  )levelFrG  T)squeeze)rX   rY   rU   rV   r@   rl   rJ  rZ   r   s    r1   test_groupby_not_supportedrl    s4   
.
<<<lll;;<<!  C 
y	!	! ! !Ca   ! ! ! ! ! ! ! ! ! ! ! ! ! ! !	y	!	! " "Cq!!!" " " " " " " " " " " " " " "	y	!	! ) )C%((() ) ) ) ) ) ) ) ) ) ) ) ) ) )	y	!	! ' 'C&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 'sH   	A--A14A1B55B9<B9C==DD!EE
E
c                 H   t          j        g dg dd          } t          j        | d          }t	          |                    |j                  d                                         |                     | j                  d                                                    d S )N)r  r  r  r(  )rk   r   rJ   r   r   )rU   rV   rX   rY   r   rZ   rk   r   rC  s     r1   test_groupby_numeric_columnrn    s    	111iii@@	A	AB
.
+
+
+Cckk#%  #''))2::bd+;+;A+>+B+B+D+DEEEEEr3   selr{   keyc                l   t          j        g ddz  g ddz  t          j                            d          t          j                            d          dg d          }t          j        |j        g ddf<   t          j        |d	
          }fd||fD             \  }}t           t          ||                        t          ||                                  | dk    rLt          j        t          d          5  |                    d           d d d            d S # 1 swxY w Y   d S d S )NrP  rL   rQ  6   r   r	  )iir   rP   r   c              3  N   K   | ]}|                                        V   d S r6   r   )r  r   rp  ro  s     r1   r  z"test_cumulative.<locals>.<genexpr>  s2      44QQYYs^^C 444444r3   r/  J`axis` keyword argument is deprecated and will removed in a future releaser<   r   r  )rU   rV   r  r  r  r!  rX  rX   rY   r   r   r@   rA   rB   r/  )r   rp  ro  r   r`   r   r8  s    ``    r1   test_cumulativerv    s    
,,,q0,,,q0$$$$		
 	
 %$$
 
 
B #%&BGNNNB
.
,
,
,C444442s)444EArga  "3'"d"3"3"5"5666z\^
 
 
 	  	  KKQK		  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  s   D''D+.D+c                 *   t          j        dg di          } t          j        | d          }t	          |                     d          j                                        |                    d          j                                                   d S )Naa)rH   rI   rH   rJ   rK   rH   rI   rJ   r   )rU   rV   rX   rY   r   rZ   rx  r-  rC  s     r1   /test_series_groupby_multi_character_column_namery    s}    	t2223	4	4B
.
+
+
+Cbjj!((**CKK,=,=,@,G,G,I,IJJJJJr3   r-  r.  c                |   t          j        g ddz  t          j                            d          t          j                            d          d          }t          j        |j        d<   t          j        |d          } t          |
                    d          |                       } t          |
                    d          |                       }t          ||           t                      5   t          |
                    d          |           d	
          }d d d            n# 1 swxY w Y   t                      5   t          |
                    d          |           d	
          }d d d            n# 1 swxY w Y   t          ||           t                      5   t          |
                    d          |           d
          }d d d            n# 1 swxY w Y   t                      5   t          |
                    d          |           d
          }d d d            n# 1 swxY w Y   t          ||           t                      5  t          j        t          d          5   t          |
                    d          j        |           d
           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          j        t$          d          5  |
                    d                              d
           d d d            d S # 1 swxY w Y   d S )NrP  rI      r   )rs  r   rK   r   rz   r   r  rH   z&No axis named 1 for object type Seriesr<   ru  )rU   rV   r  r  r  r!  rX  rX   rY   r   rZ   r   rD   r@   rl   r   r{   rA   rB   r/  )r   r   r`   r   r   s        r1   test_cumulative_axisr|    s   	,,,q0$$$$	
 	

 
B fBGFO
.
+
+
+C .wrzz#--//H,WS[[%%t,,..Fh 
!	"	" : :172::c??D11q999: : : : : : : : : : : : : : :	 	"	" 9 90S))400a8889 9 9 9 9 9 9 9 9 9 9 9 9 9 9h 
!	"	" : :172::c??D11q999: : : : : : : : : : : : : : :	 	"	" 9 90S))400a8889 9 9 9 9 9 9 9 9 9 9 9 9 9 9h	 	"	" 6 6]:-UVVV 	6 	6-GCKK$$&--15555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	66 6 6 6 6 6 6 6 6 6 6 6 6 6 6 
Z
 
 
 * * 	C!!q!)))	* * * * * * * * * * * * * * * * * *s   6.D00D47D4	.FF
F,.G&&G*-G*?.H99H= H="K>3J=1K=K	KK	KKK:*L11L58L5c            
        t          j        t          j                            ddd          t          j                            d          t          j                            d          d          } t          j        | d          }| | j        dk              }||j        dk              }|	                    |j
                  }|j        	                    |j
                  }|                                |                                |j                                        |                    d          |                                |                                |                                |                    d          g}|D ]G}t          j        t"                    5  |                                 d d d            n# 1 swxY w Y   Hd }|	                    | j
                  }	|	                    |          }
t)          |                    ||
	          |
           |	j                            |          }
t)          |j                            ||
	          |
           d S )
Nr   rP   2   r   rw   r         ?c                    | dz   S r  r7   r  s    r1   add1z*test_groupby_unaligned_index.<locals>.add1  s    1ur3   r   )rU   rV   r  r  randintr  rX   rY   r{   rZ   rz   r   r&   r)   r  r@   rl   r   rq   r   r   )r   r`   filtered	dfiltered	ddf_groupds_groupbadr\   r  df_groupr   s              r1   test_groupby_unaligned_indexr    sK   	""1b"--$$$$	
 	

 
B .
+
+
+C"$*~HCECK I!!#%((I{""35))H 	A1	C   ]:&& 	 	KKMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	   %%H~~d##Hioodo22H===z%%Hik844h?????s   !GG		G	c                    t          j        g dg dg dd          } t          j        t          j        |           d          }|                    d          }|                    d                                          }t          j        ddgdd	gd
dgdt          j        ddg                    }t          j	        ||           d S )N)rH   rH   rK   rI   rJ   rK   )rw   rL   rM   )r  r}  r  rH   r   r  rI   rJ   rw   rL   r   r}   )
rU   rV   rX   rY   rZ   r  rq   Indexr   assert_frame_equal)r   r`   r  r   r   s        r1   test_groupby_string_labelr    s    	iiiiiiiiiHH	I	IB
.b))q
9
9
9CE""I  ##++--F|AaV1a&111a&9I9I  H &(+++++r3   opc                   t          j        t          t          d                    t          j        dd                    }d|d<   d	|d
<   t          j        |d          } t          |                    dg          |                       }|	                    ddd          } t          |                    dg          |                       }t          j        ||          \  }}|                                |                                }}|                    |          sJ |                    |          sJ dS )zaTest caching behavior of cumulative operations on grouped dataframes.

    Relates to #3756.
    aabbccrz   20100101rL   startperiodsr}   rH   r\  rI   twosrJ   r   rz   r  r  )r\  r  r	  N)rU   rV   r  rW   
date_rangerX   rY   r   rZ   renamer   rq   equals)	r  r   r`   ddf0ddf1res0_ares1_ares0_bres1_bs	            r1   "test_groupby_dataframe_cum_cachingr  %  s2    
tH~~bm*a&P&P&P
 
 
B BvJBvJ
.
+
+
+C*73;;u%%r**,,D::ue<<:==D+74<<&&++--D \$--NFF\\^^T\\^^FF==     ==       r3   c            	        t          j        t          t          d                    t          j        dd                    } d| d<   d	| d
<   ddg}|D ]}t          j        | d          }|                    dg          }t          j	         t          |d         |                       t          |d
         |                                \  }}|                     dg          } t          |d         |                       t          |d
         |                      }	}|                    |          sJ |                    |	          sJ dS )z[Test caching behavior of cumulative operations on grouped Series

    Relates to #3755
    r  r  r  rL   r  r}   rH   r\  rI   r  r-  r.  rJ   r   rz   N)rU   rV   r  rW   r  rX   rY   rZ   r   rq   r   r  )
r   opsr  r`   dcumr  r  cumr  r  s
             r1   test_groupby_series_cum_cachingr  ?  sb   
 
tH~~bm*a&P&P&P
 
 
B BvJBvJY
C 
% 
%nRQ///{{C5!!%GDL"%%'')Bfr)B)B)D)D
 
 jj#2'#f+r22446Ngc&k26N6N6P6P}}V$$$$$}}V$$$$$$
% 
%r3   c                 H   t          j        g dg dd          } t          j        | d          }|                    d          d                             dd	g          }|                     d          d                             dd	g          }t          ||           d S )
Nr  rI   rJ   rK   rw   ry   rI   r   rz   r{   r!   r"   r  r   rz   r   r   s       r1   test_groupby_slice_agg_reducesr  X  s    
<<<lll;;<<A
qa(((AYYs^^C $$eU^44Fyy~~c"&&u~66Hfhr3   c                 B   t          j        dg di          } t          j        | d          }|                    d          d                             ddg          }|                     d          d                             ddg          }t          ||           d S )Nrz   r  rI   r   r!   r"   r  r  s       r1   test_groupby_agg_grouper_singler  `  s    
c<<<())A
qa(((AYYs^^C $$eU^44Fyy~~c"&&u~66Hfhr3   slice_c                H   t          j        g dg dd          }t          j        |d          }|                    d          |                              ddg          }|                    d          |                              ddg          }t          ||           d S )Nr  ry   rI   r   rz   r!   r"   r  )r  r   rz   r   r   s        r1   !test_groupby_agg_grouper_multipler  j  s     	<<<lll;;<<A
qa(((AYYs^^F#''77Fyy~~f%))5%.99Hfhr3   r2   )r.  r/  r-  r&   r   r   r#   r$   r%   r!   r"   r*   r+   r,   c                   d }t          j        g dg dt          j        d          g dd                              d          }t          j        ||j                                                  }t          j        ||j                                        d	          } ||	                    dd
g          |           }| dv r|
                    t                    } ||	                    dd
g          |           }t          ||            ||	                    dd
g          |           }t          ||           h d}| |v r:|	                    dd
g                              |           }t          ||            ||	                    d
dg          |           }| dv r|
                    t                    } ||	                    d
dg          |           }t          ||            ||	                    d
dg          |           }t          ||           | |v r:|	                    d
dg                              |           }t          ||            ||	                    d          |           }| dv r|
                    t                    } ||	                    d          |           }t          ||            ||	                    d          |           }t          ||           | |v r:|	                    d                              |           }t          ||           d S d S )Nc                .     t          | |          di |S ri  rj  rk  s      r1   rn  z5test_groupby_column_and_index_agg_funcs.<locals>.call  ro  r3   rH   rH   rH   rI   rI   rI   rH   rI   rH   rI   rH   rI   rL   )idxrz   r{   r   r  r   Fr   rr  rz   >   r&   r   >	   r%   r   r&   r+   r   r,   r$   r#   r*   )rU   rV   r  r[  r   rX   rY   r~   r)   rZ   r   r   r   r   )r2   rn  r   r`   ddf_no_divsr   r   aca_aggs           r1   'test_groupby_column_and_index_agg_funcsr  u  si   (' ' ' 
%%%###1###		
 	

 
 i  .)9)9););
<
<
<C.1A1A1C1C%PPPK
 tBJJs|,,h77H?""??5))T#++ucl++X66FhT+%%ucl33X>>Fh VUUG 7$$eS\2266x@@(F###
 tBJJU|,,h77H?""??5))T#++sEl++X66FhT+%%sEl33X>>Fh 7$$c5\2266x@@(F###
 tBJJu%%x00H?""??5))T#++e$$h//FhT+%%e,,h77Fh 7$$U++//99(F##### r3   
group_argsr  
apply_funcc                h    t          j        | j                  t          j        | j                  z
  S r6   )r  r"   valuesr   )r  r;   s     r1   r   r     s#    26!(+;+;bgah>O>O+O r3   c                   t          j        g dg dt          j        d          d                              d          }t          j        ||j                                                  }t          j        ||j                                        d          }|	                    |           
                    |d	
          }|	                    |           
                    |d	|          }t          ||d           |j        |j        k    sJ t          |j                  t          |j                  |j        z   k    sJ |	                    |           
                    |d	
          }|	                    |           
                    |d	|          }t          ||d           |j        |j        k    sJ t          |j                  t          |j                  |j        z   k    sJ d S )Nr  r  rL   )r  rz   r{   r  r   Fr  r   r  )r;   r   )check_divisions)rU   rV   r  r[  r   rX   rY   r~   r)   rZ   r   r   	divisionsr  r   r   )r  r  r   r`   r  r   r   s          r1   #test_groupby_column_and_index_applyr    s    
""");););")A,,OO
 
i  .)9)9););
<
<
<C.1A1A1C1C%PPPK zz*%%++JQ+??H [[$$**:AH*MMFh6666 =F,,,,, v{CH ?@@@@zz*%%++JQ+??H   ,,22:AH2UUFh6666  F$44444 v{s;#344{7NNOOOOOOr3   c                R    |                                  |                                 fS r6   r#   r   r  s    r1   r   r     s    qwwyy!%%''" r3   c                R    |                                  |                                 fS r6   r+  s0s1s     r1   r   r     s    BFFHHbffhh' r3   c                    || z  S r6   r7   r  s     r1   r   r      s
    27 r3   c                *    |                                  S r6   r+  r  s    r1   r   r     s    QUUWW r3   c                *    |                                  S r6   r+  r  s    r1   r   r     s     r3   z#pandas_spec, dask_spec, check_dtypec                8   t          j        g ddz  g ddz  d          }t          j        |d          }|                    d                              |           }|                    d                              |          }t          |||           d S )	Nr   r   rH   rJ   r(  r   r{   rI   r   r   r   rU   rV   rX   rY   rZ   r  r   )pandas_spec	dask_specr   r   r`   r   r   s          r1   %test_dataframe_groupby_agg_custom_sumr    s     
IIIM			A>>	?	?B
.
+
+
+Czz#((55H[[''	22FfhK888888r3   zpandas_spec, dask_specc                h   t          j        g ddz  g ddz  d          }t          j        |d          }|d                             |d                                       |           }|d                             |d                                       |          }t          ||d	
           d S )Nr  rJ   r(  r  rI   r   r{   r   Fr   r  )r  r  r   rz   r   r   s         r1   #test_series_groupby_agg_custom_meanr    s     	999q=yyy1}==>>A
qa(((Av~~af%%//<<HsV^^AcF##--i88FfhE222222r3   c                 `   t          j        g ddz  g ddz  d          } t          j        | d          }t          j        dd d	           }t          j        t                    5  |                    d
          	                    d|dgi           ddd           dS # 1 swxY w Y   dS )z7for a single input column only unique names are allowedr  rJ   r(  r  rI   r   r   c                *    |                                  S r6   r+  r  s    r1   r   zOtest_groupby_agg_custom__name_clash_with_internal_same_column.<locals>.<lambda>0  s    quuww r3   c                *    |                                  S r6   r+  r  s    r1   r   zOtest_groupby_agg_custom__name_clash_with_internal_same_column.<locals>.<lambda>0  s    26688 r3   r   r{   N)
rU   rV   rX   rY   Aggregationr@   rl   r   rZ   r  )r   rz   r2   s      r1   =test_groupby_agg_custom__name_clash_with_internal_same_columnr  +  s    
999q=yyy1}==>>A
qa(((A~e%6%68K8KLLH	z	"	" ; ;			#  #%'8!9:::; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;s   )-B##B'*B'c                    t          j        g ddz  g ddz  g ddz  d          } t          j        | d          }t          j        dd	 d
 d           }|                    d                              |dd          }|                     d                              ddd          }t          ||d           dS )zEcustom aggregation functions can share the name of a builtin functionr  rJ   r(  r)  )r   r{   r   rI   r   r   c                R    |                                  |                                 fS r6   r  r  s    r1   r   zTtest_groupby_agg_custom__name_clash_with_internal_different_column.<locals>.<lambda>>  s    17799aeegg& r3   c                R    |                                  |                                 fS r6   r+  r  s     r1   r   zTtest_groupby_agg_custom__name_clash_with_internal_different_column.<locals>.<lambda>?  s    "&&((+ r3   c                    || z  S r6   r7   r  s     r1   r   zTtest_groupby_agg_custom__name_clash_with_internal_different_column.<locals>.<lambda>@  s
    rBw r3   r   r  r   Fr   N)rU   rV   rX   rY   r  rZ   r  r   )r   rz   r2   r   r   s        r1   Btest_groupby_agg_custom__name_clash_with_internal_different_columnr  6  s    
999q=yyy1}999q=QQRRA
qa(((A ~&&++	 H YYs^^%%H5&A&ABBFyy~~''f5(A(ABBHfhE222222r3   c                    d } t          j        dd | d           }t          j        g ddz  g ddz  g ddz  d          }t          j        |d	
          }|d                             |d         |d         g                              |          }t          j        ddgddgddgd          }|d                             |d         |d         g                              d          }t          ||           d S )Nc                2    d }|                      |          S )Nc                |    | j         d         \  }| j         dd          D ]\  }|                    |d          }|gS )Nr   rH   )
fill_value)rX  add)r  r   r`  s      r1   implz=test_groupby_agg_custom__mode.<locals>.agg_mode.<locals>.implO  sH    VAYFSqrr
 / /ggaAg..5Lr3   r  )r  r  s     r1   agg_modez/test_groupby_agg_custom__mode.<locals>.agg_modeN  s#    	 	 	 wwt}}r3   custom_modec                .    |                      d           S )Nc                ,    |                                  gS r6   )value_countsr  s    r1   r   zAtest_groupby_agg_custom__mode.<locals>.<lambda>.<locals>.<lambda>[  s    Q^^%5%5$6 r3   r  r  s    r1   r   z/test_groupby_agg_custom__mode.<locals>.<lambda>[  s    !''6677 r3   c                .    |                      d           S )Nc                6    | d                                          S )Nr   )idxmax)r`  s    r1   r   zAtest_groupby_agg_custom__mode.<locals>.<lambda>.<locals>.<lambda>]  s    !A$++-- r3   )r$  r  s    r1   r   z/test_groupby_agg_custom__mode.<locals>.<lambda>]  s    !%%//00 r3   )r   r   r   rH   rH   rJ   )rK   rw   rK   rL   rL   )g0g1ccrw   r   r  r  r  r   rH   rK   rL   r   )rX   r  rU   rV   rY   rZ   r   r   )r  r2   r   rz   r  r   s         r1   test_groupby_agg_custom__moder  K  s,   	 	 	 ~7700	 H 	!//A%!//A%!//A%	
 	
	 	A 	qa(((AtW__agqw/0044X>>F |Aq6!Q1vFFGGH~%%x~x~&FGGKKERRHfhr3   c                @   t          j        g dg dd          }t          j        |d          }|                    d          d                             |           }|                    d          d                             |           }t          ||           d S )N)	rH   rI   rJ   rH   rI   rJ   rH   rI   rK   )	gEgٿgV-gS㥫?gNbX9?gtVglgClgZd;Or  rK   r   rk   r}  r  )r   r_   r`   r  r   s        r1   test_groupby_select_column_aggr  r  s    
,,,,UUU	
 	
 C .!
,
,
,C[[c"&&t,,F{{3$((..Hfhr3   c               #     K   t          j        d          5 } t          j        ddt                     | V  d d d            d S # 1 swxY w Y   d S )NTrecordalways!The default value of numeric_only)r   r   filterwarningsrB   )recs    r1   record_numeric_only_warningsr    s      		 	-	-	- 9=	
 	
 	
 				                 s    AA	A	c                   t          j        g dg dg dd          }t          j        |d          }t	          j                    }| dk    rt                      }|5  t                      5   t          ||                       }d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          | dv ot           t          d	
          5   t          ||                       }d d d            n# 1 swxY w Y   t          ||           t                      5 } t          |                    d          |                       }d d d            n# 1 swxY w Y   t                      5 } t          |                    d          |                       }d d d            n# 1 swxY w Y   t          |          t          |          k    sJ t          ||           t                      5 } t          |                    d          j        |                       }d d d            n# 1 swxY w Y   t                      5 } t          |                    d          j        |                       }d d d            n# 1 swxY w Y   t          |          t          |          k    sJ t          ||           d S )N)rH   rI   rH   r   )g      &@g      6@g     @@rd  rI   r   r   r%   r&   numeric_onlymessagerS   )rU   rV   rX   rY   r>   r?   r   r   r   r   r
   rB   r   r  rZ   r  re  )r   r   r`   rC   r   r   rec_pdrec_dds           r1   test_std_object_dtyper    sL   8 
IIIOOOBTBTBTUU	V	VB
.
+
+
+C 
 
"
"Cu}},..	 ' ',.. ' '$72t$$&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '	4}#4
 
 
 & &
 $d##%%& & & & & & & & & & & & & & & h 
&	'	' 46172::c??D11334 4 4 4 4 4 4 4 4 4 4 4 4 4 4	%	'	' 360S))400223 3 3 3 3 3 3 3 3 3 3 3 3 3 3v;;#f++%%%%h 
&	'	' 66372::c??,d33556 6 6 6 6 6 6 6 6 6 6 6 6 6 6	%	'	' 562S))+T22445 5 5 5 5 5 5 5 5 5 5 5 5 5 5v;;#f++%%%%hs   B)-BB)B	B)B	B))B-0B-C::C>C>#,EE"E4,F,,F03F071H44H8;H81J

JJc                    t          j        dgdgd          } t          j        | d          }t          j                            ddg                                          }|                    |          	                                 d S )Nrw   )r   rH   rI   r   r   rH   )
rU   rV   rX   rY   r   array
from_arrayto_dask_dataframerZ   r%   )r   r`   r  s      r1   test_std_columns_intr    sz     
1#1#&&	'	'B
.
+
+
+C			1v	&	&	8	8	:	:BKKOOr3   c                    t           j                                        j        d d         } t	          |                     d                                          |                     d                                                     d S )NrI   name)r   datasets
timeseries
partitionsr   rZ   r%   r   s    r1   test_timeseriesr    sg    		!	!	#	#	.rr	2Bbjj  $$&&

6(:(:(>(>(@(@AAAAAr3   	min_count)r   rH   rI   rJ   c                   t          j        g dt          j        ddgt          j        ddgg dd          t          j        g ddt          j        t          j        gt          j        ddgg dd          g}d |D             }t	          ||          D ]\  }}t          |                    d	                              | 
          |                    d	                              | 
                     t          |                    d	                              | 
          |                    d	                              | 
                     d S )N)rk   rk   r}  rI   rJ   rw   rL   )rw   rK   rO   )groupval1val2val3c                :    g | ]}t          j        |d           S )rK   r   )rX   rY   )r  r   s     r1   rZ  z'test_with_min_count.<locals>.<listcomp>  s'    <<<"BN21---<<<r3   r  )r  )	rU   rV   r  r!  zipr   rZ   r   r,   )r  dfsddfsr   r`   s        r1   test_with_min_countr    so    	(AA!			 	
 	
 	(BFBF+A!			 	
 	
C$ =<<<<DsD>> 
 
CJJw##i#88KK  $$y$99	
 	
 	
 	JJw$$y$99KK  %%	%::	
 	
 	
 	

 
r3   c                F   t          j        g dg dd          }t          j        |d                              d          }|                    d          }d }|                    d                              |          }t          ||                    d                              ||                     |                    d| 	                              |          }t          ||                    d| 	                              ||                     d S )
N)rH   rI   rI   rJ   r  ry   rI   r   rz   c                *    |                                  S r6   )copy)r   s    r1   r   z)test_groupby_group_keys.<locals>.<lambda>  s    QVVXX r3   r   r  )rU   rV   rX   rY   r   rZ   r   r   )r  r   r`   r_   r   r   s         r1   test_groupby_group_keysr    s   	LLL|||<<	=	=B
.
+
+
+
5
5c
:
:C
,,s

CD{{3%%d++HhC((..t(.CCDDD{{3:{66<<TBBH#++cj+99??8?TT    r3   r
  r   )rN         @      @)r  23) rz   r{   c                v   d}d}t           j                            ||          }t          j        ||           }dgdz  dgdz  z   dgdz  z   |d	<   t          j        |d
          }|                    d	                                          }|                    d	                                          }t          | t           j
                  rY|                                }|j                            t          j        d                    |_        t          ||d           d S t          ||           d S )Nr  rJ   r	  r   rP   rH   rw   rI   rp  r   OF)check_index)r  r  r  rU   rV   rX   rY   rZ   r'   r[   ndarrayrq   r
  r   r  r   )r
  rowsr6  r  r   r`   r   r   s           r1   test_groupby_covr'  	  s   
 DD9??4&&D	dG	,	,	,BbA37"aS1W,BuI
.
+
+
+Czz%  $$&&H[[##%%F
 '2:&& $!!..rx}}==(F666666(F#####r3   c                    t          j        t          t          d                    g dg dd                              d          } t          j        | d          }t          j        ddgd	d
gd                              d          }|                     d                                          }|                    d                                          }t          ||           t          ||           d S )NrK   r  rP   r  r  rP   r  r  ro   r  rI   r   rH   r   rJ   r  ro   r  )
rU   rV   rW   r   r   rX   rY   rZ   idxminr   r_   r`   r   	result_pd	result_dds        r1   test_df_groupby_idxminr0  #	      
,U1XX@P@P@PQQ i  .!
,
,
,C|q!f1v>>??II'RRHG$$++--IG$$++--Ii###h	"""""r3   r,  r  )r   rH   r~   r
  c                   t          j        t          t          d                    g dg dd                              d          }t          j        |d          }|dv rat          j        t                    5   t          |                    d	          |           |
           d d d            d S # 1 swxY w Y   d S t                      5   t          |                    d	          |           |
          }d d d            n# 1 swxY w Y   t                      5   t          |                    d	          |           |
          }d d d            n# 1 swxY w Y   t          ||           d S )NrK   r  r)  r*  r  rI   r   )rH   r
  r  r  )rU   rV   rW   r   r   rX   rY   r@   rl   rp   r   rZ   rD   r   )r   r;   r_   r`   r   r   s         r1   test_df_groupby_idx_axisr3  3	  sT    ,U1XX@P@P@PQQ i  .!
,
,
,C~].// 	; 	;/GCKK(($//T::::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; %&& 	F 	F:ws{{733T::EEEH	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F$&& 	D 	D8WS[[11488dCCCF	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D(F#####s6   =.B88B<?B<.DDD&.E  E$'E$skipnac                   t          j        t          t          d                    g dt          j        dt          j        dgd                              d          }t          j        |d          }|	                    d	          
                    | 
          }t          j                    }| s"t          rt          j        t           d          }|5  |	                    d	          
                    | 
          }d d d            n# 1 swxY w Y   |5  t#          ||           d d d            d S # 1 swxY w Y   d S NrK   r  皙4@333333$@r*  r  rI   r   r  r4  all-NA valuesr<   rU   rV   rW   r   r  r!  r   rX   rY   rZ   r,  r>   r?   r   r@   rA   rB   r   r4  r_   r`   r/  rC   r.  s         r1   test_df_groupby_idxmin_skipnar=  F	  s   
,a>>!\\fdBFD1	
 	
  i  .!
,
,
,CG$$++6+::I

 
"
"C Am Al=@@@	 ? ?KK((//v/>>	? ? ? ? ? ? ? ? ? ? ? ? ? ? ?	 ( ()Y'''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ($   *DDDD99D= D=c                    t          j        t          t          d                    g dg dd                              d          } t          j        | d          }t          j        dd	gdd	gd
                              d          }|                     d                                          }|                    d                                          }t          ||           t          ||           d S )NrK   r  r)  r*  r  rJ   r   rH   rI   r+  r  )
rU   rV   rW   r   r   rX   rY   rZ   r  r   r-  s        r1   test_df_groupby_idxmaxr@  ]	  r1  r3   c                   t          j        t          t          d                    g dt          j        dt          j        dgd                              d          }t          j        |d          }|	                    d	          
                    | 
          }t          j                    }| s"t          rt          j        t           d          }|5  |	                    d	          
                    | 
          }d d d            n# 1 swxY w Y   |5  t#          ||           d d d            d S # 1 swxY w Y   d S r6  rU   rV   rW   r   r  r!  r   rX   rY   rZ   r  r>   r?   r   r@   rA   rB   r   r<  s         r1   test_df_groupby_idxmax_skipnarC  m	  s   
,a>>!\\fdBFD1	
 	
  i  .!
,
,
,CG$$++6+::I

 
"
"C Am Al=@@@	 ? ?KK((//v/>>	? ? ? ? ? ? ? ? ? ? ? ? ? ? ?	 ( ()Y'''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (r>  c                 8   t          j        t          t          d                    g dg dd                              d          } t          j        | d          }t          j        ddgd	d
gd                              d                                          }|                     d          d         	                                }|                    d          d         	                                }t          ||           t          ||           d S )NrK   r  r)  r*  r  rI   r   rH   r   rJ   r+  r  ro   )rU   rV   rW   r   r   rX   rY   rk  rZ   r,  r   r-  s        r1   test_series_groupby_idxminrE  	     
,U1XX@P@P@PQQ i  .!
,
,
,C 	1vA7788BB7KKSSUU  G$$W-4466IG$$W-4466Ii###h	"""""r3   c                   t          j        t          t          d                    g dt          j        dt          j        dgd                              d          }t          j        |d          }|	                    d	          d
         
                    |           }t          j                    }| s"t          rt          j        t           d          }|5  |	                    d	          d
         
                    |           }d d d            n# 1 swxY w Y   |5  t#          ||           d d d            d S # 1 swxY w Y   d S NrK   r  r7  r8  r*  r  rI   r   r  ro   r9  r:  r<   r;  r<  s         r1   !test_series_groupby_idxmin_skipnarI  	  s   
,a>>!\\fdBFD1	
 	
  i  .!
,
,
,CG$$W-44F4CCI

 
"
"C Am Al=@@@	 H HKK((1888GG	H H H H H H H H H H H H H H H	 ( ()Y'''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ($   0DD!D'EE	E	c                 8   t          j        t          t          d                    g dg dd                              d          } t          j        | d          }t          j        dd	gdd	gd
                              d                                          }|                     d          d         	                                }|                    d          d         	                                }t          ||           t          ||           d S )NrK   r  r)  r*  r  rJ   r   rH   rI   r+  r  ro   )rU   rV   rW   r   r   rX   rY   rk  rZ   r  r   r-  s        r1   test_series_groupby_idxmaxrL  	  rF  r3   c                   t          j        t          t          d                    g dt          j        dt          j        dgd                              d          }t          j        |d          }|	                    d	          d
         
                    |           }t          j                    }| s"t          rt          j        t           d          }|5  |	                    d	          d
         
                    |           }d d d            n# 1 swxY w Y   |5  t#          ||           d d d            d S # 1 swxY w Y   d S rH  rB  r<  s         r1   !test_series_groupby_idxmax_skipnarN  	  s   
,a>>!\\fdBFD1	
 	
  i  .!
,
,
,CG$$W-44F4CCI

 
"
"C Am Al=@@@	 H HKK((1888GG	H H H H H H H H H H H H H H H	 ( ()Y'''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (rJ  	int_dtype)uint8int32int64c                   t           j                            d          }t          j        |                    dd          |                    dd          d|           }t          j        |d          }|                    d	          d
         	                                }|                    d	          d
         	                                }t          |                                |                                           d S )N*   rJ   rf  r$   rP   )r  r  r   r   r  r  )r  r  RandomStaterU   rV   r  rX   rY   rZ   uniquer   explode)rO  rngr   r`   pd_gbdd_gbs         r1   test_groupby_uniquer\  	  s     )


#
#C	AC((Rc1J1JKK
 
 
B
 .
,
,
,CJJue$++--EKKu%,,..E emmoou}}/////r3   r  r  r  c                   t           j                            d          }t          j        |                    dd          |                    dd          |                    dd          d|          }t          j        |d	
          }|                    |           j	        
                                }|                    |           j	        
                                }t          ||           d S )NrT  rJ   rf  rU  rK   rw   )r  r  r  r   rI   r   )r  r  rV  rU   rV   r  rX   rY   rZ   r  r  r   )r  rO  rY  r   r`   rZ  r[  s          r1   test_groupby_value_countsr^  	  s     )


#
#C	;;qs;++;;qs;++;;qs;++	
 	

 
 
 
B .
+
+
+CJJrNN++--EKKOO,,..EeUr3   c                    t          j        dgdz  dgdz  z   dgdz  z   dgdz  dgdz  z   dgdz  z   dgdz  z   dgdz  z   d          } |                     d	          d
                                         }t	          j        | d          }|                    d	          d
                                         }t          ||           dS )z9Repro case for https://github.com/dask/dask/issues/10322.rP   rw   rL   rJ   rH   rI   rK   rR   rS   rT   r   N)rU   rV   rZ   r  rX   rY   r   )r   countsr`   dcountss       r1   test_groupby_value_counts_10322rb  	  s    	QC!G#qcAg-qA37"aS1W,sQw6!q@	
 	

 
B ZZ__S!..00F
.
+
+
+Ckk#s#0022Gfgr3   c               #    K   t          j                    5 } d V  d d d            n# 1 swxY w Y   t          rt          |           dk    snnJ d | j        D                         | d         j        t          u sJ dt          | d         j                  v sJ t          r4| d         j        t          u sJ dt          | d         j                  v sJ d S d S )NrI   rH   c                    g | ]	}|j         
S r7   r  )r  rS   s     r1   rZ  z)groupby_axis_and_meta.<locals>.<listcomp>
  s    5U5U5UAai5U5U5Ur3   r   r   r   r;   )
r@   rA   r   r  rW   categoryr   rn   r  rB   r  s    r1   groupby_axis_and_metarf  
  s2      
 6              ,U3v;;!5U5U5U5U5U":+----$F2J,>(?(????? 0ay!]2222VAY.//////0 0//s   '++)rH   rI   rw   period)rH   r   rP   c                   t          j        g dg dg dd          }t          j        ||           }t	                      5  |                    ddg                              ||          }d d d            n# 1 swxY w Y   t                      5  |                    ddg                              ||          }d d d            n# 1 swxY w Y   t          ||           t	                      5  |                    dg                              ||          }d d d            n# 1 swxY w Y   t                      5  |                    dg                              ||          }d d d            n# 1 swxY w Y   t          ||           t	                      5  |                    |j	                                      ||          }d d d            n# 1 swxY w Y   t                      5  |                    |j	                                      ||          }d d d            n# 1 swxY w Y   t          ||           d S )	N	r   r   rH   rH   rI   rI   rJ   rJ   rJ   rx   	r   r   r   r   r   rH   rH   rH   rH   r   r   rz   r   r  )
rU   rV   rX   rY   rD   rZ   shiftrf  r   r   )r   rg  r;   r_   r`   r   r   s          r1   test_groupby_shift_basic_inputrl  
  s    ,,,,,,,,,,	
 	
 C .+
6
6
6C	 	"	" D D;;Sz**00d0CCD D D D D D D D D D D D D D D		 	  B Bc3Z((..vD.AAB B B B B B B B B B B B B B Bh	 	"	" ? ?;;u%%++F+>>? ? ? ? ? ? ? ? ? ? ? ? ? ? ?		 	  = =cU##))&t)<<= = = = = = = = = = = = = = =h	 	"	" ? ?;;su%%++F+>>? ? ? ? ? ? ? ? ? ? ? ? ? ? ?		 	  = =SU##))&t)<<= = = = = = = = = = = = = = =hsl   -A<<B B -CCC7,D//D36D3,F  FF)0G%%G),G)>0H::H>H>c                    t          j        g dg dd          } t          j        | d          }t	          j        t                    5  t          |                     d          d         	                    d	          |                    d          d         	                    d	                     d d d            d S # 1 swxY w Y   d S )
Nri  rx   ry   rJ   r   rz   r{   rI   r  )
rU   rV   rX   rY   r@   rA   r   r   rZ   rk  r_   r`   s     r1   test_groupby_shift_seriesrp  5
  s   
,,,,,,,	
 	
 C .!
,
,
,C	k	"	" 
 
KKS!'''22KKS!'''22	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s   A+CC
Cc            	     (   t          j        g dg dg dd          }  t          j        d                       }t	          j        | d          }t          |                     | j                  	                    d	          |                    |j                  	                    |t          t          d
                     t          j        t                    5  t          |                     | j                  	                    d| j                                                  |                    |j                  	                    d|j                                                             d d d            d S # 1 swxY w Y   d S )Nri  rx   rj  r   c                     dS r  r7   r7   r3   r1   r   z/test_groupby_shift_lazy_input.<locals>.<lambda>L
  s    1 r3   rJ   r   rH   rn  ry   )r  r   )r  r  )rU   rV   r   r   rX   rY   r   rZ   r   rk  r%  r@   rA   r   r{   r"   )r_   delayed_periodsr`   s      r1   test_groupby_shift_lazy_inputrt  D
  s   
,,,,,,,,,,	
 	
 C .dl99--//O
.!
,
,
,CCE   ++CE  Ss?S?S TT   
k	"	" 
 
KK$$Q3599;;$GGKK$$Q3599;;$GG	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s   !BFFFzignore:`meta` is not specifiedc                    t          d          D ]} t          j        t          d          g ddz  g ddz  d          }|                    d                                          }t          j        |d	          }t          |                    d
          d         	                    d          |                    d
          d         	                    d          d           d S )NrP   <   )rI   rK   rJ   rH   rg  )NrP   r  N   (   r   rz   rL   r   r{   r   rH   r   r   )
r   rU   rV   r   r5  rX   rY   r   rZ   rk  )_r   r`   s      r1   +test_groupby_shift_within_partition_sortingrz  Y
  s     2YY 
 
\2YY!\\B&111B6 
 
 \\#))++nRQ///JJsOOC &&q))KKS!''**	
 	
 	
 	
 	

 
r3   c                 P   t          j        t          g dg d          t          j        dd                    } t	          j        | d	          }|                     | j                                      d
d          }t          ||                    |j                                      d
d|          d           |                     d                              d
d          }t          ||                    d                              d
d|                     d S )NrH   rI   rJ   rK   rw   rL   )r   r   r   rH   rH   rH   ry   r  rL   r  r}   rJ   r   r  r  freq)r  r  r   F)
check_freqr{   )
rU   rV   r  r  rX   rY   rZ   r~   rk  r   )r_   r`   	df_results      r1   test_groupby_shift_with_freqr  n
  s(   
,!!!%7%7%7888m*a888  C .!
,
,
,C CI&&,,Rc,BBI CI$$Rc	$JJ   
 C  &&r&<<IiS))//9/UUVVVVVr3   transformationc                *    |                                  S r6   r+  r  s    r1   r   r   
  s     r3   c                   t          j        g ddz  t          j                            d          t          j                            d          t          j                            d          d          }t          j        |d          }t          j        t                    5  t          |                    d                              |           |                    d                              |                      t          |                    d          d                             |           |                    d          d                             |                      d d d            d S # 1 swxY w Y   d S )Nr  rw   r  r  rJ   rk   r}  )rU   rV   r  r  r  rX   rY   r@   rA   r   r   rZ   r  )r  r_   r`   s      r1   test_groupby_transform_funcsr  
  s    ,!$$$$$$		
 	
 C .a
 
 C	k	"	" 
 
KK&&~66KK&&~66	
 	
 	
 	KKS!++N;;KKS!++N;;	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s   $CE66E:=E:rP   indexednot_indexed)idsc                   t          j        g ddz  t          j                            d          d          }|r|                    d          }t          j        ||           }t          j	        t                    5  t          |                    d                              d           |                    d                              d                      t          |                    d          d                             d	           |                    d          d                             d
                      d d d            d S # 1 swxY w Y   d S )Nr  r  rf  r+  r  c                0    | |                                  z
  S r6   r   seriess    r1   r   z;test_groupby_transform_ufunc_partitioning.<locals>.<lambda>
      &6;;==:P r3   c                0    | |                                  z
  S r6   r   r  s    r1   r   z;test_groupby_transform_ufunc_partitioning.<locals>.<lambda>
  r  r3   ro   c                0    | |                                  z
  S r6   r   r  s    r1   r   z;test_groupby_transform_ufunc_partitioning.<locals>.<lambda>
      v5 r3   c                0    | |                                  z
  S r6   r   r  s    r1   r   z;test_groupby_transform_ufunc_partitioning.<locals>.<lambda>
  r  r3   )rU   rV   r  r  r  r   rX   rY   r@   rA   r   r   rZ   r  )r   r  r_   r`   s       r1   )test_groupby_transform_ufunc_partitioningr  
  s    ,2!5	PS@T@TUU
V
VC %mmG$$
.k
*
*C	k	"	" 
 
KK  **+P+PQQKK  **+P+PQQ	
 	
 	
 	KK  )3355  KK  )3355 		
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s   ?C	EEEzgrouping,aggc                T    |                      d                              d          S N
category_2r	  
category_1droprZ   r   s    r1   r   r   
  "    rww|w44<<\JJ r3   c                *    |                                  S r6   r   r  s    r1   r   r   
      

 r3   c                T    |                      d                              d          S r  r  r   s    r1   r   r   
  r  r3   c                ,    |                      d          S Nr   r   r  s    r1   r   r   
       r3   c                0    |                      ddg          S Nr  r  r   r   s    r1   r   r   
      rzz<">?? r3   c                *    |                                  S r6   r   r  s    r1   r   r   
  r  r3   c                0    |                      ddg          S r  r   r   s    r1   r   r   
  r  r3   c                ,    |                      d          S r  r  r  s    r1   r   r   
  r  r3   c                z   t          j        t          j        t          d                    t          j        t          d                    t          j                            d          d          }t          j        |d          }t                      5   | | |                    }d d d            n# 1 swxY w Y   t          rt          j        t          d          nt          j                    }|5   | | |                    }t!          ||           d d d            n# 1 swxY w Y   t                      5   | | |          d	                   }d d d            n# 1 swxY w Y   |5   | | |          d	                   }d d d            n# 1 swxY w Y   t!          ||           d S )
NAABBCCABCABCrL   rU  )r  r  ro   rI   observedr<   ro   )rU   rV   CategoricalrW   r  r  uniformrX   rY   r   r   r@   rA   rB   r>   r?   r   )groupingr   r_   r`   r   observed_ctxr   s          r1   #test_groupby_aggregate_categoricalsr  
  s   , ,.h88.h88Y&&A&..	
 	
 C .a
 
 C 
$	%	% & &3xx}}%%& & & & & & & & & & & & & & &
 	&]*5555#%% 
 
 $ $XXc]]##&(###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $
 
$	%	% / /3xx}}W-../ / / / / / / / / / / / / / / 
 - -XXc]]7+,,- - - - - - - - - - - - - - -fhsH   B99B= B=;%D,,D03D0E,,E03E09F  F$'F$r   c                ^    |                      t          t          j        d                    S NrH   rs  r   r   r  r%   r  s    r1   r   r   
  !    CGGGBF33344 r3   c                ^    |                      t          t          j        d                    S Nr}  rs  r  r  s    r1   r   r   
  !    CGGGBF44455 r3   c                ^    |                      t          t          j        d                    S r  r   r   r  r&   r  s    r1   r   r   
  r  r3   c                ^    |                      t          t          j        d                    S r  r  r  s    r1   r   r   
  r  r3   c                   t          j        g dg dd          }t          j        |d          }t	           | |                    d                     | |                    d                               t	           | |                    d          d                    | |                    d          d                              d S )Nrw   rK   rJ   rw   rK   rI   rJ   rI   rH   rI   rw   rL   rO   rI   rL   rN   ry   rI   r   rz   r{   r?  r   r_   r`   s      r1   'test_groupby_aggregate_partial_functionr  
  s     ,))))))	
 	
 C .!
,
,
,C cc#++c""##SSS)9)9%:%:;;; cc#++c""3'((##ckk#.>.>s.C*D*DEEEEEr3   c                ^    |                      t          t          j        d                    S NrH   )unexpected_argr  r  s    r1   r   r     !    CGGGBF1===>> r3   c                ^    |                      t          t          j        d                    S r  r  r  s    r1   r   r     r  r3   c                   t          j        g dg dd          }t          j        |d          }t	          j        t          d          5   | |                    d                     d d d            n# 1 swxY w Y   t	          j        t          d          5   | |                    d          d	                    d d d            d S # 1 swxY w Y   d S )
Nr  r  ry   rI   r   z?supports {'ddof'} keyword arguments, but got {'unexpected_arg'}r<   rz   r{   rU   rV   rX   rY   r@   rl   rJ  rZ   r  s      r1   9test_groupby_aggregate_partial_function_unexpected_kwargsr  	  s}    ,))))))	
 	
 C .!
,
,
,C	O
 
 
   	CKK	               
O
 
 
 # # 	CKKS!"""	# # # # # # # # # # # # # # # # # #$   A88A<?A<%CCCc                \    |                      t          t          j        d                    S Npositional_argr  r  s    r1   r   r   *      CGGGBF,<==>> r3   c                \    |                      t          t          j        d                    S r  r  r  s    r1   r   r   +  r  r3   c                   t          j        g dg dd          }t          j        |d          }t	          j        t          d          5   | |                    d                     d d d            n# 1 swxY w Y   t	          j        t          d          5   | |                    d          d	                    d d d            d S # 1 swxY w Y   d S )
Nr  r  ry   rI   r   z$doesn't support positional argumentsr<   rz   r{   r  r  s      r1   7test_groupby_aggregate_partial_function_unexpected_argsr  '  sk    ,))))))	
 	
 C .!
,
,
,C	y(N	O	O	O  CKK               
y(N	O	O	O # #CKKS!"""# # # # # # # # # # # # # # # # # #r  dropnac                @   t          j        g dg dd          }t          j        |d          }|                    d|           j                                        }|                    d|           j                                        }t          ||           d S )NrH   rI   rJ   rK   NNrM   rN   rK   rw   rL   rJ   rI   rH   r   r   )rz   erJ   r   rz   )r  )rU   rV   rX   rY   rZ   r  r   r   )r  r   r`   dask_result	pd_results        r1   test_groupby_dropna_pandasr  ?  s    	,,,3K3K3KLL
 
B .
+
+
+C++c&+1137799K

3v
..04466Ik9%%%%%r3   )FTNc                    t          j        d          }t          j        d          }|                    g dddgdz  g dg dd	          }|d
                             d          |d<   |                    |d          }| ]|                    ||          j                                        }|                    ||          j                                        }n^|                    || |          j                                        }|                    || |          j                                        }|dv r*|                                }|j	        j
        |j	        _
        t          ||           d S )Ncudf	dask_cudfr  rH   r   rK   rz   r{   NNr  fr   hr  rz   r{   r   r  r   re  r   rJ   r   r  )r  r  r   r   )r@   importorskiprV   r   	from_cudfrZ   r  r   rq   r~   r	  r   )	r  r  r  r  r  r   r`   r  cudf_results	            r1   test_groupby_dropna_cudfr  K  sx    v&&D#K00I	///Q!;;;)))		
 	

 
B gnnZ((BsG


ba

0
0C~kk"k<<>BBDDjj
j;;=AACCkk"V
kKKMQQSSjjFzjJJLPPRR	Z!))++!,!2!7k;'''''r3   c                   t          j        d          }t          j        d           t          j        g dg dg dd          }|                    |          } t          |          |           } t          |          |           }|                    |                              d	          }|                    |                                          }t          ||           d S )
Nr  r  )rz   r{   r   r   r  r  r   r  rH   rI   rJ   rK   rw   rL   rM   rN   )rN  r  g      @gffffff@      @gffffff@g@g!@r   rp  Tr  )	r@   r  rU   rV   rY   r   rZ   r   r   )rp  r  r_   gdf
pd_grouper
gd_grouperr  gots           r1   test_groupby_grouper_dispatchr  v  s     v&&D $$$
,999)))999	
 	
 C 

3

C&!#&&3///J&!#&&3///J [[$$((d(;;F
++j
!
!
%
%
'
'Cfcr3   z"cudf and pandas behave differentlyc                R   t          j        d           t          j        d          }t          j        g dg dd          }t	          j        |d          }|                    d          }d }|                    d	| 
                              |          }|                    d	| 
                              ||          }|                    d	| 
                              ||                    |                    }t          ||           t          ||           d S )Nr  r  r   )rK   rw   rL   rM   rN   rO   ry   rI   r   c                    | S r6   r7   r  s    r1   r   z)test_groupby_apply_cudf.<locals>.<lambda>  s    Q r3   rz   r  r   )
r@   r  rU   rV   rX   rY   
to_backendrZ   r   r   )	r  r  r   r`   dcdfr   res_pdres_ddres_dcs	            r1   test_groupby_apply_cudfr    s&   ( $$$v&&D	...5G5G5GHH	I	IB
.
+
+
+C>>&!!D;DZZ
Z3399$??F[[[44::4f:MMF\\#*\55;;4##F++ <  F ffffr3   c                   t          j        g dg dg dd          }t          r.|                    ddgd|                               d	          }n-|                    ddgdd
                              d	          }t          j        |d          }|                    ddgd|                               d	          }t          ||           d S )N)rz   Nr{   )rH   rI   N)g      @r  N)id1id2v1r  r  F)r  rr  r   TrH   )rU   rV   r
   rZ   r   rX   rY   r   )rr  r   r   r`   r  s        r1   test_groupby_dropna_with_aggr    s     
   =M=M=MNN
 
B  R::uenU:FFJJ5QQ ::uenU:FFJJ5QQ
.Q

C[[%D[AAEEeLLFhr3   c                    t          j        t          j        t          d          t          d                    t          j        ddgg d          t          j                            d          d          } |                     d	d
gd                              d          }t          j
        | d          }|                    d	d
gd                              d          }t          ||           d S )Nr  ABCDE)
categoriesrH   rI   r(  rU  cat_1cat_2value_1r  r   Tr  r   )rU   rV   r  rW   r  r  r  rZ   r   rX   rY   r   )r   r   r`   r  s       r1   test_groupby_observed_with_aggr    s    	^DJJ4==III^QFyyyAAAy((a(00	
 	

 
B zz7G,tz<<@@GGH
.Q

C[['7+d[;;??FFFhr3   c                    d t          d          D             } d t          d          D             d t          d          D             z   }t          j        || d          }t          j        |d          }t          |                    d	          j                                        |                    d	          j                                                   d S )
Nc                    g | ]}d S )gE}]r7   r  ry  s     r1   rZ  z.test_rounding_negative_var.<locals>.<listcomp>  s    +++A+++r3   rP   c                    g | ]}d S )rH   r7   r  s     r1   rZ  z.test_rounding_negative_var.<locals>.<listcomp>  s    


1


r3   rw   c                    g | ]}d S )rI   r7   r  s     r1   rZ  z.test_rounding_negative_var.<locals>.<listcomp>  s    "7"7"71"7"7"7r3   )r  rS   rI   r   r  )	r   rU   rV   rX   rY   r   rZ   rS   r%   )rS   r  r   r`   s       r1   test_rounding_negative_varr	    s    ++r+++A

eAhh


"7"7eAhh"7"7"7
7C	c**	+	+B
.
+
+
+Cckk%  "&&(("**U*;*;*=*A*A*C*CDDDDDr3   rJ   columnr  c                   t          j        t          j        d          g dddgdz  g dd                              d          }|d                             d	          |d
<   t          j        |d          }|dd
gk    r#t          rt          j
        t          d          }nt          j                    }|5  |                    |d          j                            d                                                                          }|                    |d          j                            |                                                                           }d d d            n# 1 swxY w Y   t'          ||           d S )NrN   )rH   r   r   rI   rH   rH   rI   r   r   rH   rK   )dogcatr  r  r  r  r  birdr   r   re  r  rJ   r   r{   r  r<   Frq  r
  )rU   rV   r  r[  r"  r   rX   rY   r   r@   rA   rB   r>   r?   rZ   rz   r   rq   r  r   )rd  r
  r   r`   rC   
result_so1r   s          r1   !test_groupby_split_out_multiindexr    s    
1)))Q!JJJ		
 	

 
 fQii  gnnZ((BsG
.
+
+
+C#sl=
;;;$&&	 

 

KKUK++-22Q2??GGIIPPRR 	
 KKUK++ttit((WYYVXX	 	

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 fj!!!!!s   <B)E11E58E5backendpandasr  c                   t          j        |           }| dk    rt          j        d          }|j        }nt          j        }t          j        t
          j                  j        }|dz  }|	                    t          j
        |t          j        d          z  t          j        d          g                                        d          }|                    |t          j        d          t          j        d          d          } ||d	
          }t          |                    d                                          |                    d                                                              d                     d S )Nr  r  r  rw   #   rR  rx  )rS   re  rT   rH   r   rS   zsingle-threadedr   )r@   r  r  rX   rY   r  iinfouint64r"   r]   concatenater[  r   rV   r   rZ   r%   rq   )	r  data_sourcer  
data_framer"   sqrtr  r   r`   s	            r1   !test_groupby_large_ints_exceptionr    sM    %g..K&'44	(

^

(29


!C8D
ry||+RYr]];<< fWoo  
		V")B--biPRmmTT	U	UB
*RQ
'
'
'C


3C&&1B&CC    r3   )r   r   c                   t          j        g dddgdz  g dg dd          }t          j        |d	          }|                    | |
          }|                    | |
          }t          ||          }t          ||          }t          |j        |          }	t          |j        |          }
|                    d|i          }|                    d|i          }|dk    rt                      5 } |            	                    d          }d d d            n# 1 swxY w Y   t                      5 } |            }d d d            n# 1 swxY w Y   t          |          t          |          k    sJ t          ||           t                      5 } |
            	                    d          }d d d            n# 1 swxY w Y   t                      5 } |	            }d d d            n# 1 swxY w Y   t          |          t          |          k    sJ t          ||           t                      5 }|	                    d          }d d d            n# 1 swxY w Y   t                      5 }|}d d d            n# 1 swxY w Y   t          |          t          |          k    sJ t          ||           d S t                      5 } |            }d d d            n# 1 swxY w Y   t                      5 } |            }d d d            n# 1 swxY w Y   t          |          t          |          k    sJ t          ||           t                      5 } |
            }d d d            n# 1 swxY w Y   t                      5 } |	            }d d d            n# 1 swxY w Y   t          |          t          |          k    sJ t          ||           t                      5 }|}d d d            n# 1 swxY w Y   t                      5 }|}d d d            n# 1 swxY w Y   t          |          t          |          k    sJ t          ||           d S )Nr  rH   r   rK   r  r  r  rJ   r   rq  r  r   r   )rU   rV   rX   rY   rZ   r   r  r   r  r   r  r   )r  r   rr  r   r`   gbgb_pdresult_1result_1_pdresult_2result_2_pdresult_3result_3_pdr   r   r  r   s                    r1   test_groupby_sort_argumentr%  !  s   , 
///Q!;;;)))		
 	

 
B .
+
+
+C	Rd	#	#BJJrJ%%E r3H%%%K rtS!!H%'3''K vvsCj!!H))S#J''K
f}})++ 	5v"{}}++G44H	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5)++ 	 vXZZF	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 6{{c&kk))))&(###)++ 	5v"{}}++G44H	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5)++ 	 vXZZF	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 6{{c&kk))))&(###)++ 	3v"))'22H	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3)++ 	vF	 	 	 	 	 	 	 	 	 	 	 	 	 	 	6{{c&kk))))&(#####)++ 	%v"{}}H	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%)++ 	 vXZZF	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 6{{c&kk))))&(###)++ 	%v"{}}H	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%)++ 	 vXZZF	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 6{{c&kk))))&(###)++ 	#v"H	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#)++ 	vF	 	 	 	 	 	 	 	 	 	 	 	 	 	 	6{{c&kk))))&(#####s   6D  D$'D$9EEEGG	G	G55G9<G9 I""I&)I&;J

JJK..K25K2LL"%L")N  NNN00N47N4;P

PP#P22P69P6c                D   t          j        g dg dd          }t          j        |d          } | |                    d|                    } | |                    d|                    }t          ||           |rt          |j        |j                   d S d S )NrK   rI   rH   rI   rJ   rH   r|  rR   rJ   r   rS   rq  )rU   rV   rX   rY   rZ   r   r~   )r   rr  r   r`   r   r.  s         r1   test_groupby_sort_argument_aggr(  |  s     
...5G5G5GHH	I	IB
.
+
+
+CSSt,,--FBJJsJ..//Ifi    1 	&,	000001 1r3   c                    t          j        g dg dd          } t          j        | d          }t	          j        |                    dd          d	
           t	          j        |                    dd          d
           t          j        t          d          5  t	          j        |                    d          d
           d d d            n# 1 swxY w Y   t          j
        t                    5  t	          j        |                    dd          dd           d d d            n# 1 swxY w Y   |                    dd                              ddd           d S )Nr'  r|  rR   rJ   r   rS   Trq  rH   r
  FrI   zsplit_out>1r<   )r  rd  r   r  )rU   rV   rX   rY   r   r   rZ   r@   rA   rB   rl   rp   r   rC  s     r1    test_groupby_sort_true_split_outr*    s   	...5G5G5GHH	I	IB
.
+
+
+C E#++c+
%
%3333E#++c+
&
&!4444 
m=	9	9	9 - -	ckk#!,,,,- - - - - - - - - - - - - - - 
*	+	+ G G	ckk#Dk))5AFFFFG G G G G G G G G G G G G G G
 KK$K##EQ#EEEEEs$   #*CC C=-D66D:=D:
known_catsknownunknownordered_catsordered
unordererdrZ   r  r   r  
unobservedc           	        dv rt          j        d           dk    r)t          |t                    rt          j        d           dv r|dk    rt          j        d           dv r|rt          j        d	           d
v rt          rt          j        d           t          j        t          j        t          d          t          d          |          t          j        ddgg d|          t          j                            d          d          }t          j        |d          }| sD|d         j                                        |d<   |d         j                                        |d<   fd}|du rdv r|dk    r|ddg         }|ddg         }t#           ||                    ||                     ||                    ||                               d S )N)r'   r(   r)   z)Not implemented for DataFrameGroupBy yet.r    z'Can't calculate median over categorical)r   r#   r,   r  zGives zeros rather than nans.r  z&Can't calculate observed with all nans)r   r,   z1Not implemented for category type with pandas 2.0r  r  )r  r/  rH   rI   r(  rU  r  r   c                   t          | t          j        j        j                  st
          rt          st          }nt          j	        } |            5   t          |           di |cd d d            S # 1 swxY w Y   d S ri  )r[   rU   rg   rZ   re   r	   r
   r   r>   r?   r   )r  rm  rC   r2   s      r1   r   z8test_groupby_aggregate_categorical_observed.<locals>.agg  s    c27?;<< 	)	)"/	) 1CC(CSUU 	4 	4)73))33F33	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4s   A55A9<A9F)r!   r"   r  r  )r@   r  r[   rn   r
   xfailrU   rV   r  rW   r  r  r  rX   rY   r  
as_unknownr   rZ   )r+  r.  r2   rZ   r  r_   r`   r   s     `     r1   +test_groupby_aggregate_categorical_observedr6    s-    ---?@@@8
7C 8 8=>>>+++70B0B3444>!!h!<===?""}"HIII
,^T

tG}}l   ^QFyyy,WWWy((a(00	
 	
 C .a
 
 C 57|'2244G7|'2244G	4 	4 	4 	4 	4 u^!;!;7@R@R7I&'7I&'CKK(K3344CKK(K3344    r3   c                    t          j        dt          j        d          t          j        d          t          j        d          gdd          } t          j        | d          }t          |                    d                                          |                     d                                                     d S )NrH   z
2019-12-31rI   r   r   r{   )rU   rV   	TimestamprX   rY   r   rZ   r'   ro  s     r1   ,test_groupby_cov_non_numeric_grouping_columnr9    s    
,\**\**\**
 	
 	

 
C .!
,
,
,Cckk#""$$ckk#&6&6&:&:&<&<=====r3   zrequires pandas >= 1.5.0c                     t          j        g dg d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   )rz   NrH   r   c                    | S r6   r7   r  s    r1   r   z<test_groupby_numeric_only_None_column_name.<locals>.<lambda>  s    a r3   Fr  )	rU   rV   rX   rY   r@   rl   rp   rZ   r   rC  s     r1   *test_groupby_numeric_only_None_column_namer<    s    	III___==	>	>B
.
+
+
+C	*	+	+ : :KK  %%5%999: : : : : : : : : : : : : : : : : :s   +BB
Bzrequires pandas >= 1.4.0r  c                <   t          j        g dg dg dd          }t          j        |d          }|                    d                              t          j        dd	
          t          j        dt          t          j	        d          
                    }|                    d                              | t          j        dd	
          t          j        dt          t          j	        d          
                    }t          ||           d S )Nr  )rH   rI   rw   rL   )rL   rJ   rL   rM   r   rI   r   rz   r{   r   )aggfuncr   rH   rs  rR   )r  rS   rT   )rU   rV   rX   rY   rZ   r   NamedAggr   r  r%   r   )r  r   r`   r   r  s        r1   test_dataframe_named_aggr@    s    
	
 	

 
B .
+
+
+Czz#""
+c5
)
)
)
+c726#:#:#:
;
;
; #  H [[!!
+c5
)
)
)
+c726#:#:#:
;
;
; "  F
 hr3   rs  c                F   t          j        g dg dd          }t          j        |d          }|                    d          j                            |d          }|                    d          j                            | |d	          }t          ||           d S )
Nr  r  ry   rI   r   rz   r   r  )r  r   r   )rU   rV   rX   rY   rZ   r{   r   r   )r  r   r   r`   r   r  s         r1   test_series_named_aggrB  	  s     
))))))	
 	

 
B .
+
+
+Czz# $$se$44H[[##Gse#DDFhr3   rk   r}  c                   t          j        g dg dg dg dg dg dg dg dg dg	g d          }t                      r|                                }|                    |           j                                        }t          j        |d	
          }|                    |           j                                        }t          ||           d S )N)a1b1T)rD  NF)NNN)a3b3T)rF  rG  F)a5b5Trk   r}  r  r  r
  rJ   r   )
rU   rV   r   convert_dtypesrZ   r  r  rX   rY   r   )r  r   r   r`   r  s        r1   'test_empty_partitions_with_value_countsrM    s     


  
 
 
B    !  zz"~~,,..H
.
+
+
+C[[__++--Fhr3   c                    t          j        t          j        g dg dg dd          d          } t	          j        t                    5  |                     t          j        d                     d d d            n# 1 swxY w Y   t	          j        t                    5  |                     dt          j        d	          g           d d d            d S # 1 swxY w Y   d S )
Nrz   r{   rz   r   r   r   r(  )key1key2ro   rJ   r   rQ  r  rR  )	rX   rY   rU   rV   r@   rl   rp   rZ   Grouperr   s    r1   test_groupby_with_pd_grouperrT  3  se   
.
$__ooo			RR	
 	
 	  C 
*	+	+ , ,BJ6***+++, , , , , , , , , , , , , , ,	*	+	+ 6 6VRZF33345556 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6s$   )BBB%+CC!$C!z/ignore:Invalid value encountered:RuntimeWarning	operationrZ  rY  c                r   t          j        ddgdd gddgd d gd d gd d gddgddgddgg	ddg	          }t          j        | d
          } ||                    d          d                   }t          j        |d          } ||                    d          d                   }t          ||           d S )NrD  rE  rF  rG  rH  rI  rk   r}  rK  rH   rJ   r   rU   rV   operatormethodcallerrZ   rX   rY   r   rU  r   callerr   r`   r  s         r1   1test_groupby_empty_partitions_with_rows_operationr\  A  s     
4L4L4L4L4L4L4L4L4L

 c

 
 
B "9a00Fvbjjooc*++H
.
+
+
+CVCKK$$S)**Fhr3   c                p   t          j        ddgddgddgddgddgddgddgddgddgg	d	d
g          }t          j        |           } ||                    d	          d
                   }t          j        |d          } ||                    d	          d
                   }t          ||           d S Na0rE  b2rD  rF  rG  rH  rI  rk   r}  rK  rJ   r   rW  rZ  s         r1    test_groupby_with_row_operationsra  Z  s    	4L4L4L4L4L4L4L4L4L

 c

 
 
B "9--Fvbjjooc*++H
.
+
+
+CVCKK$$S)**Fhr3   c                   t          j        ddgddgddgddgddgddgddgddgddgg	d	d
g          }t          j        |           } ||                    d	|d	                             d          g          d
                   }t          j        |d          } ||                    d	|d	                             d          g          d
                   }t          ||           d S r^  )	rU   rV   rX  rY  rZ   eqrX   rY   r   rZ  s         r1   ,test_groupby_multi_index_with_row_operationsrd  r  s   	4L4L4L4L4L4L4L4L4L

 c

 
 
B "9--Fvbjj#r#wzz$'7'7!899#>??H
.
+
+
+CVCKKc#hkk$&7&7 899#>??Fhr3   c                 &   t          j        ddgddgddgddggdd	g
          } t          j        | d          }t	          j        t          d          5  t          |                    d                     d d d            d S # 1 swxY w Y   d S )Nr_  rE  rD  rF  rG  rH  rI  rk   r}  rK  rH   r   zcomputing the groupsr<   )	rU   rV   rX   rY   r@   rl   rp   rW   rZ   rC  s     r1   test_groupby_iter_failsrf    s    	4L4L4L4L	
 c

 
 
B .
+
+
+C	*2H	I	I	I  S[[                 s   #BB
B
c                 (   t          j        g dg dd          } t          j        | d          }t	          j        t          d          5  |                    d                              d	d
id            d d d            d S # 1 swxY w Y   d S )NrH   rH   rI   r  ry   rH   r   zsplit_out=Noner<   rz   r{   r"   r
  )	rU   rV   rX   rY   r@   rA   rB   rZ   r   rC  s     r1   !test_groupby_None_split_out_warnsri    s    	IIIIII66	7	7B
.
+
+
+C	m+;	<	<	< ; ;Cc5\T:::; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;s   -BBBrQ  rR  	slice_keyro   )ro   c                v   t          j        g dg dg dg dd          }t          j        |d          }|                    |           |                                         }|                    |           |                                         }t          |j        d          sJ t          ||           d S )NrO  rP  r(  )rQ  rR  ro   rJ   rJ   r   r   )	rU   rV   rX   rY   rZ   r#   r   r   r   )r  rj  r_   r`   r  r  s         r1   test_groupby_slice_getitemrl    s     ,#OO#OOYYyy		
 	
 C .!
,
,
,C[[__Y'--//F
++b//)
$
*
*
,
,C SXy)))))fcr3   z(https://github.com/dask/dask/issues/9882r  )NTFz-numeric_only not implemented for pandas < 1.5c           	        t          j        g dg dt          j        ddd          g dd          }t          j        |d	
          }|i nd|i}t          j                    }t          rHt          sA| dv r=|t          j
        t          d          }n|du rt          j
        t          d          }	 |5   t          |                    d          |           di |}d d d            n# 1 swxY w Y   d}n-# t          $ r  t          j        t          d          }d}Y nw xY w|5   t          |                    d          |           di |}|rt!          ||           d d d            d S # 1 swxY w Y   d S )N)rK   rK   rw   rw   rw   )rH   rI   rJ   rK   rH   z
2015-01-01rw   1minr~  )qr   r  rz   r  )intsints2datesr  rJ   r   r  )r   r,   r    r  r<   FDropping invalid columnsrp  TzECannot convert|could not convert|does not support|agg function failedr7   )rU   rV   r  rX   rY   r>   r?   r	   r
   r@   rA   rB   r   rZ   rJ  rl   r   )	r   r  r_   r`   rm  rC   r   successful_computer   s	            r1   #test_groupby_numeric_only_supportedru    s   8 ,#OO$__]<HHH000		
 	
 C .!
,
,
,C'RRnl-KF
 
 
"
"C T] T,,,#l!)L   &&l=8RSSS# 	D 	D9ws{{622D99CCFCCH	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D! # # # mY
 
 
 ## 
 ( (3V,,d33==f== 	(h'''	( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (sH   6C< 8*C."C< .C22C< 5C26C< <'D&%D&+<E44E8;E8c                   t          j        g dg dg dd          }t          j        |d          }t	          j                    }t          j        t          d          }t          j	        t          d	          }|t          r
t          s|}nt          r|}n|}|i nd|i}|5   t          |                    d          |           di | d
d
d
           d
S # 1 swxY w Y   d
S )zIThese should warn / error when numeric_only is set to its default / Falserh  )rJ   rK   rJ   r   rJ  rJ   r   r  r<   z/'numeric_only=False' is not implemented in DaskNr  rk   r7   )rU   rV   rX   rY   r>   r?   r@   rA   rB   rl   rp   r	   r
   r   rZ   )r   r  r   r`   rC   ctx_warn	ctx_errorrm  s           r1   )test_groupby_numeric_only_not_implementedry  
  sZ    
IIIIIIOOOLL	M	MB
.
+
+
+C

 
"
"C|M1TUUUH#T  I  	 	CC 	C   'RRnl-KF	 2 2'C  $''11&1112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2s   '*CC"%C")r!   r"   r   r,   r*   r+   r(   r'   r.  r-  r   r    r%   r&   c                   t          j        g dg dg dd          }t          j        |d          }| dv rt          st          j        t          d	          5   t          |	                    d
          |           d           d d d            n# 1 swxY w Y   t          j        t          d	          5   t          |	                    d
          |           d           d d d            d S # 1 swxY w Y   d S  t          |	                    d
          |           d          } t          |	                    d
          |           d          }t          ||           d S )Nr  r  r   rJ  rI   r   )r&   r%   r'   r(   znumeric_only not supportedr<   rk   Tr  zgot an unexpected keyword)rU   rV   rX   rY   r	   r@   rl   rJ  r   rZ   r   )r   r   r`   
ddf_result
pdf_results        r1   test_groupby_numeric_only_truer}  '  s   ( 
LLL|||BVBVBVWW	X	XB
.
+
+
+C,,,],]9,HIII 	? 	?+GCKK$$d++>>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?]9,GHHH 	> 	>*GBJJsOOT**====	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 5WS[[--t44$GGG
3WRZZ__d33FFF
*j)))))s$   .BBB;.C66C:=C:z#numeric_only not supported for <1.5c                <   t          j        g dg dt          j        g d          dd          }t          j        |d          } t          |                    d          |           d	          } t          |                    d          |           d	          }t          ||            t          |                    d          |           d
	          } t          |                    d          |           d
	          }t          ||           d S )N)rN  r  r        @rw         @      @       @r  rH   )r   r%  	timedeltark   rI   r   rk   Fr  T)rU   rV   to_timedeltarX   rY   r   rZ   r   )r   r   r`   	dd_resultr  s        r1   (test_groupby_numeric_only_false_cov_corrr  I  s     
;;;+++)A)A)ABB		
 	

 
B .
+
+
+C/C(($//UCCCI.

3..EBBBIi###/C(($//TBBBI.

3..DAAAIi#####r3   c                f   t          j        g dddddt          j        dddgt           j        gd	 t          d
d          D             z   d
d          }t          j        |d          }t          r6t          j
        t          d          }|5   t          |                    d          |           d           d d d            n# 1 swxY w Y   |5   t          |                    d          |           d           d d d            n# 1 swxY w Y   |5   t          |                    d          |                        d d d            n# 1 swxY w Y   |5   t          |                    d          |                        d d d            d S # 1 swxY w Y   d S t          j        t          d          }|5   t          |                    d          |           d          }d d d            n# 1 swxY w Y   |5   t          |                    d          |           d          }d d d            n# 1 swxY w Y   t!          ||           t"          rt          j        t          d          }nt%          j                    }|5   t          |                    d          |                       }d d d            n# 1 swxY w Y   |5   t          |                    d          |                       }d d d            n# 1 swxY w Y   t!          ||           d S )Nr  rN  r  r  r  r  r  r  c                0    g | ]}t          d |d          S )i  rH   r   )r  r`  s     r1   rZ  z3test_groupby_numeric_only_false.<locals>.<listcomp>d  s$    HHHqhtQ22HHHr3   rH   rN   )r%  r   dtrk   rI   r   zdoes not supportr<   rk   Fr  rs  zdefault value of numeric_only)rU   rV   r  r!  NaTr   rX   rY   r
   r@   rl   rJ  r   rZ   rA   rB   r   r	   r>   r?   )r   r   r`   rC   r  r  s         r1   test_groupby_numeric_only_falser  ^  sC   	+++3S"&#sC@6(HHE!QKKHHHH		
 	

 
B .
+
+
+C (mI-?@@@ 	@ 	@+GCKK$$d++????	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	? 	?*GBJJsOOT**>>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?  	. 	.+GCKK$$d++---	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	- 	-*GBJJsOOT**,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- l=0JKKK 	L 	L7C 0 0$77UKKKI	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	K 	K6

366EJJJI	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K)Y''' 	+,}4STTTCC(**C 	: 	:7C 0 0$7799I	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	9 	96

36688I	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9)Y'''''s   .C		CC.DDD,EEE",FF"F.G??HH.II
I
,KKK,LLLc                   t          j        g dt          j        dgdz  t          j        gz   ddg          d          }t          j        |d          } t          |                    d	|| 
          |                      } t          |                    d	|| 
          |                      }t          ||           d S )N)
         rH   rI   rJ   rK   rw   rL   rP   rH   rO   rI   )r  r  ry   rJ   r   r{   )r  r  )
rU   rV   r  r  r!  rX   rY   r   rZ   r   )r  r  r   r   r`   r  r|  s          r1    test_groupby_var_dropna_observedr    s     
333sQw"&'9q!fMMM	
 	

 
B .
+
+
+CQC(6JJDQQSSIQC(6JJDQQSSJi$$$$$r3   r6   )
__future__r   r  r>   rX  r  r   r   	functoolsr   numpyr  r  rU   r@   r   dask.dataframe	dataframerX   r   dask.dataframe._compatr   r	   r
   r   r   r   r   r   dask.dataframe._pyarrowr   dask.dataframe.backendsr   r  r   dask.dataframe.utilsr   r   r   r   
dask.utilsr   dask.utils_testr   r   r/   markr4  	AGG_FUNCSfixturer2   r9   contextmanagerrD   rc   ri   rt   r   r   parametrizer   r   r   r   r   r  r!  r&  r,  r1  r:  r=  rD  rK  ra  rt  r  r  r  r  r  r  r  r  r  r  r  r  r  r#  r(  r+  flakyr8  r@  rP  rT  rV  rb  rf  rh  rl  rn  rv  ry  r|  r  r  r  r  r  r  r  r  r!   r   r  r  custom_mean
custom_sumr  r  r  r  r  rW   r  r  xfail_with_pyarrow_stringsr  r  r  r  r  r  r'  r0  r3  r=  r@  rC  rE  rI  rL  rN  skip_with_pyarrow_stringsr\  r^  rb  rf  rl  rp  rt  r  rz  r  r   r]   rankr  r   r  r  r  r  r  r  gpur  r  skipifr  r  r  r	  r  r  r%  r,   r"   r(  r*  r6  r9  r<  r@  r&   rB  rM  rT  r\  ra  rd  rf  ri  r  rl  r  ru  ry  r}  r  r  r  r7   r3   r1   <module>r     s#   " " " " " "                                        " " " " " "	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 6 5 5 5 5 5 4 4 4 4 4 4 ? ? ? ? ? ?                  5 5 5 5 5 5 5 5 
FLk#7   
 
   		
FLk#7   
 
   FLk#7   
 
   FLk#7   
 
   FLk#7   
 
   

e3	l y!!!  "! 
 
 
    EFF) ) GF)# # #L! ! !B: : :,A A AH %%11+##+>#??	
 	
 	
	  T5M22
 
 32 
.# # # vy&9::/ / ;:/d ''))..22..)).. ( ( (V  0 	~~			 	##$	 	B B	 	B<                //!BCC    DC 0/ ) ) )*  .  &R R R 4-00WI WI 10WIt ]K$@AA2H 2H BA2Hj ""&&**''''++//((,,..2266 ( 
0044 : : ) 6: ''33+##$455	
 	
 	

  
88<< 
 
  *
8  8 8 8.
 
 
5 5 5 F F F.< < <6Y< Y< Y<x A//q"g..  /. 0/0 $//5 5 0/543 3 36 3/3N3N!OPP#Sz!2330 0 43 QP0* !Q((':':':;;,,,//!. !. 0/ <; )(!.H ':':':;;,,,//  0/ <;2 ':':':;;,,,//  0/ <;2 !%%--	 	 q!f--D D .-	 	 DN %%--  q!f--$ $ .- $N %%  11+##!!H $  	
 	
 	
   338888 ' ' ! 0'(' ' 'D  > 


33A//jjj11/ / 21 0/ 43/&
3 
3 
3& & &' ' 'F F F c3c
S#J GHHsCj 122!B!B!BCC    DC 32 IH 0K K K (I!677&* &* 87&*R&@ &@ &@R
, 
, 
, )455! ! 65!2% % %2           C#c
SE#BCC    DC     &G$ G$' &G$T sElUGU'STTVRWOOOP "P "P	  UT
"PJ bn
""''	  R^E#4#46I6IJJ
 )
vk*E2
uZ($/
%;
3U;
	#Z'@!A5I	 9 9 9 	
K=!
%;
34 3 3 3; ; ;3 3 3*$  $  $ N %//
  
  0/
     
+##&J $  	
 	
 	
 	+##&J $  	
 	
 	
 	+##&J $  	
 	
 	
 	+8	
 	
 	
' 6!  ! 7 6! H  B B B
 lll33
 
 43
@ ':':':;;  <; __hbh//...Q $ $	 $.# # #  (H!566!;!;!;<<$ $ =< 76$" D%=11( ( 21(,# # #  D%=11( ( 21(*# # #$ D%=11( ( 21(*# # #$ D%=11( ( 21(, &&A&A&ABB0 0 CB '&0  u~677&A&A&ABB  CB 87"   
0 
0 
0 			22;;;//!Q((    )( 0/ 32 :
 
 

 
 
* <==
 
 >=
(W W W* (("&%H 
 
 
2 UU1b\\(:(:;;T5M	=7QRR
 
 SR <;
4  KJ""	

 KJ''	

 @?""	

 @?''	
 *   + * @ 	44554455	 F F F  	>>>> # # #. 	>>>> # # #" E4=11& & 21& #6#6#677S#SzC:SzRSS   ( (  TS 87 (@ c
++  ,+ 2 +$$!!; %  	
 	
 	
 		    0 $//    0/ &     E E E q!f--S#Jc
S#J#GHH" " IH .-"@ V6;?333   ( S#SzC:FGG	+##&JSX $  	
 	
 	
 	+##&JSX $  	
 	
 	
 $ $//C$ C$ 0/%  HG*C$L qu =>>$//1 1 0/ ?>1F F F( e}7I:NOO$Y<UVVWw.@$ABBdE]\8RSS1 1 TS CB WV PO1h> > >" %.HII: : JI: %.HIIT5M22    32 JI , %.HIIT5M22&''"&q2I2I2I JKK    LK 32 JI  c3Z011    21 0
6 
6 
6 MNNvv&677    87 ON . vv&677    87 . vv&677    87 .  ; ; ; (89::			'	7)
 
 
 
 ;:( 
+""*T"UU	
 	
 	
 	+""*T"UU	
 	
 	
 (   M   ,( ,( 	 ) 6,(^ !=>>%772 2 87 ?>26 
   &* *' &* %.STT%11$ $ 21 UT$& (I!677)( )( 87)(X %00dE]33D%=11
% 
% 21 43 10
% 
% 
%r3   