
    bi                   *   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	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 d dlmZmZmZmZmZmZ d dlmZ d d	lmZ d d
l m!Z! d dl"m#Z#m$Z$ d dl%m&Z& d ejN                  dejP                  jS                  dd            ddddd ejN                  dejP                  jS                  dd             ejN                  dejP                  jS                  dd             ejN                  dejP                  jS                  dd             ejN                  dejP                  jS                  dd            ddddgZ*erd dini Z+ ejX                  e*!      d"        Z- ejX                  d#$      d%        Z.ej^                  d#d&d'       Z0ejP                  jS                  d()      d*        Z1d+ Z2d, Z3ejP                  ji                  d-d. d/ d0 d1 d2 g      ejP                  ji                  d3d#dg      d4               Z5d5 Z6ejP                  ji                  d6d7d8g      d9        Z7ejP                  ji                  d-d: d; d< d= d> d? d@ g      dA        Z8dB Z9ejP                  ji                  dCd#dD fddE fd#dF fddG fddH fg      dI        Z:dJ Z;dK Z<dL Z=ejP                  ji                  dMdN      ejP                  ji                  dOdP      dQ               Z>dR Z?dS Z@dT ZAdU ZBejP                  ji                  dVd#dg      dW        ZCejP                  ji                  dXdYdZg      d[        ZDejP                  ji                  d\d] d^ d_ d` da db dc dd de df dg dh g      ejP                  ji                  dOdi dj g      dk               ZEejP                  ji                  d-dl dm dn do dp dq g      ejP                  ji                  dOdr ds g      dt               ZFdu ZGdv ZHdw ZIdx ZJdy ZKdz ZLejP                  ji                  dYd{d|g      ejP                  ji                  dZd}d~g      d               ZMejP                  ji                  dd#dg      d        ZNd ZOejP                  ji                  dddidddg      ejP                  ji                  ddddgg      d               ZPejP                  ji                  dg d      ejP                  ji                  dg d      d               ZQejP                  ji                  dg d      ejP                  ji                  dg d      d               ZRejP                  j                  d      ejP                  ji                  d-d d d d d g      ejP                  ji                  dZd{d}g      d                      ZTejP                  ji                  d-d d d g      ejP                  ji                  dZd{d}g      d               ZUd ZVd ZWejP                  ji                  dMg d      ejP                  ji                  dYd}dg      ejP                  ji                  dZg d      d                      ZXd ZYd ZZd Z[d Z\ejP                  j                  exr ej                  dk  d)      ejP                  ji                  ddddddgddgg      ejP                  ji                  ddddgg      ejP                  ji                  dOg dP      d                             Z_d Z`d Zad ZbejP                  j                  exr ej                  dk  d)      ejP                  ji                  dddg      d               Zcd Zdd ZeejP                  ji                  dddgddgdgg      d        ZfejP                  j                  exr ej                  dk  d)      ejP                  ji                  dg d      d               ZgejP                  ji                  dddgddgdgdg      ejP                  ji                  de
j                  e
j                  dVdg      d               Zj ej                  dd d d       Zl ej                  dd d       ZmejP                  ji                  dddidelidfddidemid#fddgelemgdfdddgidelemgidfg      dĄ        ZnejP                  ji                  ddelfdgelgfddgelemgfg      dƄ        ZodǄ ZpdȄ ZqdɄ ZrejP                  ji                  dOdesg      dʄ        Ztej^                  d˄        ZuejP                  ji                  dO ejN                  dejP                  jS                  d)             ejN                  dejP                  jS                  d)             ejN                  dejP                  jS                  d)             ejN                  dejP                  jS                   e$       xr e d̬)            g      d̈́        Zvd΄ Zwdτ ZxejP                  ji                  dg dѢ      d҄        ZyejP                  ji                  dg d      dӄ        ZzejP                  ji                  dg dբ e
j                  g d֢      g dעg dآg      dل        Z|dڄ Z}ejP                  ji                  dd#dg      d܄        Z~d݄ ZejP                  ji                  dd#dg      dބ        Zd߄ ZejP                  ji                  dd#dg      d        Zd ZejP                  ji                  dd#dg      d        ZejP                  j
                  ejP                  ji                  dg d      d               ZejP                  ji                  ddddgg      ejP                  ji                  dg d      d               Zd Zej^                  dWd       Zd ZejP                  jS                  d)      d        ZejP                  j                  d      d        Zd ZejP                  ji                  dd e
j                  dej                   j"                  g      d        ZejP                  ji                  dM es ed{d                  ejP                  ji                  dd#dgddg      d               ZejP                  ji                  dd d fd d fd d  fd d fg      d        ZejP                  ji                  dd d d d g      d	        ZejP                  ji                  dd
 d g      d        ZejP                  ji                  dd d g      d        ZejP                  ji                  ddd#g      d        ZejP                  j4                  ejP                  ji                  dg d      ejP                  ji                  ddddddgddgddgg      ejP                  ji                  dg d      d                             ZejP                  j4                  ejP                  ji                  dddg      d               ZejP                  j4                  ejP                  ji                  dd#dg      d               ZejP                  ji                  dd#dg      d        Zd Zd ZejP                  ji                  dZd}dg      ejP                  ji                  dddgddgddgg      d               ZejP                  ji                  dd ejN                  dejP                  j4                        g      d         ZejP                  ji                  ddddddgddgg      ejP                  ji                  dd ejN                  dejP                  jS                  dd             ejN                  dejP                  jS                  dd            g      ejP                  ji                  dd#dg      d!                      ZejP                  ji                  de&j                  e&jH                  e&jJ                  e&j                  g      ejP                  ji                  dd#dg      d"               Zd# ZejP                  ji                  d$d#dgd%d&g      ejP                  ji                  d'd#dgd(d)g      ejP                  ji                  d*d+d+d,gg      ejP                  ji                  d-d#dgd-d.g      d/                             Zd0 Zd1 ZejP                  ji                  d2d#dg      d3        ZejP                  ji                  d2d#dg      ejP                  ji                  ddd ee
jX                  d{4      g      d5               ZejP                  ji                  dd6d6d7gg      d8        Zd9 ZejP                  j                  d:      ejP                  ji                  d;d<d=g      d>               ZejP                  ji                  d;d<d=g      d?        ZejP                  ji                  d;d<d=g      d@        ZdA ZejP                  ji                  ddBdBdCgg      ejP                  ji                  dDddEdEgdF ejh                  dEg       ej                   dEg      g      dG               ZejP                  ji                  dOddddddd ejN                  dHejP                  jm                  dI)             ejN                  dJejP                  jm                  dI)            g	      ejP                  ji                  dKg dL      dM               ZejP                  ji                  dOe!      ejP                  ji                  dKddg      dN               ZejP                  j                  exr ej                  dk  d)      ejP                  ji                  dOg dO      dP               ZejP                  ji                  dOddg      dQ        ZejP                  ji                  dOddg      dR        ZejP                  ji                  dOddg      ejP                  ji                  d-d#dg      ejP                  ji                  dd#dg      dS                      ZdT ZdU Zy(X      )annotationsN)datetime)partial)WINDOWS)_compat)PANDAS_GE_210PANDAS_GE_220PANDAS_GE_230PANDAS_GE_300check_observed_deprecationtm)to_pyarrow_string)grouper_dispatch)NUMERIC_ONLY_NOT_IMPLEMENTED)	assert_eqpyarrow_strings_enabled)Msummeanz"numeric_only=False not implementedF)reasonstrict)marksmedianminmaxcountsizestdvarcovcorrnuniquefirstlastprodinclude_groups)paramsc                    | j                   S )z+
    Aggregations supported for groups
    )param)requests    \/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/dask/dataframe/tests/test_groupby.pyagg_funcr,   S   s    
 ==    T)autousec              #     K   d  y wN shuffle_methods    r+   auto_shuffle_methodr4   ]   s	     	s   )dask_opc              '     K   t        j                         5 }|D ]  }|j                  |        t        r,| s*|j                  t	        j
                  t        d             d  d d d        y # 1 sw Y   y xY ww)Naxismatch)
contextlib	ExitStackenter_contextr   pytestwarnsFutureWarning)r5   contextsstackctxs       r+   groupby_axis_deprecatedrC   b   sf     				 5 	%C$	%]& IJ  s   A;AA/&	A;/A84A;z)uncertain how to handle. See issue #3481.r   c                    t        j                  g dt        d      d      } t        j                  | d      }| j                  d      d   }|j                  d      d   }t        |j                  t        j                        sJ t        |j                  |j                         | j                  | j                        d   }|j                  |j                        d   }t        |j                  t        j                        sJ y )N
r                        	   
   
abcbabbcdaxyrI   rS   rR   )pd	DataFramelistddfrom_pandasgroupby
isinstanceobjSeriesr   rS   )pdfddfgpdps       r+    test_groupby_internal_repr_xfailra   l   s    
,,<4CUV
WC
..a
 C	S	#	B	S	#	Bbffbii(((bffbff	SUU	C	 B	SUU	C	 Bbffbii(((r-   c                    t        j                  g dt        d      d      } t        j                  | d      }t        j                  t              5  |j                  d       d d d        t        j                  t              5  |j                  ddg       d d d        |j                  d      }d}t        j                  t              5 }|d    d d d        |t        j                        v sJ d	}t        j                  t              5 }|ddg    d d d        |t        |j                        v sJ d
}t        j                  t              5 }|j                          d d d        |t        |j                        v sJ y # 1 sw Y   $xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   TxY w)NrF   rP   rQ   rI   ArR   rS   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()``)rT   rU   rV   rW   rX   r=   raisesKeyErrorrY   strvalueNotImplementedErrorcompute)r]   r^   r`   msgerrs        r+   test_groupby_errorrl   {   sy   
,,<4CUV
WC
..a
 C	x	  C 
x	   S#J  
S	B
C	x	  C
3#cii.   
C	x	  C
C:#cii.   	M  
*	+ s


#cii.   5     
  s<   FFF F,F8FF F),F58Gc            	     6   t        j                  g dg ddg d      } t        j                  | d      t	        j
                  t        fd       t	        j
                  t        fd	       d
t        j                  d            v sJ d } | j                  d      j                  |fi t        }t	        j                  t        d      5  t        | j                  d      j                  |fi t               d d d        y # 1 sw Y   y xY w)N	rG   rH   rI   rJ      rK   rL   rM   rN   	rJ   ro   rK   rI   rH   rG   r   r   r   ab	r   rG   rI   ro   rK   rM   rN   rN   rN   indexrI   npartitionsc                 &     j                  d      S )Ndoes_not_existrY   r^   s   r+   <lambda>z#test_full_groupby.<locals>.<lambda>   s    CKK0@$A r-   c                 :     j                  d      j                  S Nrr   )rY   rz   r|   s   r+   r}   z#test_full_groupby.<locals>.<lambda>   s    #++c*:*I*I r-   rs   rr   c                p    | j                  | j                  | j                  j                         z
        S Nrs   assignrs   r   dfs    r+   funcztest_full_groupby.<locals>.func   &    yy244"$$))+-y..r-   `meta` is not specifiedr8   )rT   rU   rW   rX   r=   rd   re   AttributeErrordirrY   applyINCLUDE_GROUPSr>   UserWarningr   )r   r   expectedr^   s      @r+   test_full_groupbyr      s    	)0KL)
B ..
+C
MM(AB
MM."IJ#ckk#&''''/ %rzz#$$T<^<H	k)B	C L(2CKK,224J>JKL L Ls   1DDgrouperc                    dgS r   r1   r   s    r+   r}   r}          C5 r-   c                
    ddgS Nrr   rs   r1   r   s    r+   r}   r}      
    C: r-   c                    | d   S r   r1   r   s    r+   r}   r}      
    2c7 r-   c                    | d   | d   gS r   r1   r   s    r+   r}   r}          BsGRW% r-   c                "    | d   dkD  | d   dkD  gS Nrr   rH   rs   rG   r1   r   s    r+   r}   r}          BsGaKC1- r-   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         |j                   | |            j                  |fi t         |j                   | |            j                  |fi t               d d d        y # 1 sw Y   y xY w)Nrt   rn   rp   )rr   drs   ru   rI   rw   c                p    | j                  | j                  | j                  j                         z
        S r   )r   r   r   r   s    r+   r   z*test_full_groupby_multilevel.<locals>.func   r   r-   r   r8   )rT   rU   rW   rX   r=   r>   r   r   rY   r   r   )r   r   rv   r   r^   r   s         r+   test_full_groupby_multilevelr      s     (Edd	,,,	

 
B ..
+C/ 
k)B	C 
)BJJwr{#))$A.A+CKK%++DCNC	

 
 
s   %A!CCc                     t        j                  t        d      t        d      d      } t        j                  | d      }|j                  d      }dt        |      v sJ dt        |      vsJ y )NrO   )rr   b c d erH   rw   rr   r   )rT   rU   rangerW   rX   rY   r   )r   r^   gs      r+   test_groupby_dirr      s]    	E"I%)<	=B
..
+CCA#a&==CF"""r-   	schedulersyncthreadsc           
     ~   t        j                  g dg ddg d      }t        j                  |d      }|j	                  d      }|j	                  d      }t        |j                  d      j                  j                         |j                  |j                        j                  j                                |j                  d      j                  d	d
i      }t        |j                  d      j                  j                         |j                         d }d }d }t        j                  j                  |       5  t        j                         5  t        j                   dt"               t         |j                  d      j$                  |fi t&         |j                  d      j$                  |fi t&               t         |j                  |j                        j$                  |fi t&         |j                  |j                        j$                  |fi t&               t         |j                  j                  d      j$                  |fi t&         |j                  j                  d      j$                  |fi t&               t         |j                  j                  |j                        j$                  |fi t&         |j                  j                  |j                        j$                  |fi t&               d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nrn   rp   rq   rt   ru   rI   rw   rr   rs   r   c                p    | j                  | j                  | j                  j                         z
        S r   r   r   s    r+   r   z#test_groupby_on_index.<locals>.func   r   r-   c                8    | dg   | dg   j                         z
  S Nrs   r   r   s    r+   func2z$test_groupby_on_index.<locals>.func2   s     3%y2se9>>+++r-   c                "    | j                         S r0   r   r   s    r+   func3z$test_groupby_on_index.<locals>.func3   s    wwyr-   r   ignore)rT   rU   rW   rX   	set_indexr   rY   rs   r   rv   aggdaskconfigsetwarningscatch_warningssimplefilterr   r   r   )	r   r]   r^   ddf2pdf2r   r   r   r   s	            r+   test_groupby_on_indexr      sq   
,,)0KL)C ..!
,C==D==Dckk#  %%'djj)A)C)C)H)H)JK ,,s


f
.Cckk#  %%'//, 
9	- $$& 	!!(K8&C &&t>~>&C &&t>~>
 .TZZ(..uGG.TZZ(..uGG
 )s#))%B>B)s#))%B>B
 0tzz*00I.I0tzz*00I.I#	 	 	 s%   L3F;L'L3'L0	,L33L<c                *    | j                  d      d   S r   r{   r   s    r+   r}   r}         2::c?3' r-   c                (    | j                  ddg      S r   r{   r   s    r+   r}   r}     s    2::sCj) r-   c                .    | j                  ddg      d   S Nrr   rs   cr{   r   s    r+   r}   r}     s    2::sCj)#. r-   c                4    | j                  | d         ddg   S r   r{   r   s    r+   r}   r}         2::bg&Sz2 r-   c                .    | j                  d      ddg   S r   r{   r   s    r+   r}   r}         2::c?C:. r-   c                ,    | j                  d      dg   S r   r{   r   s    r+   r}   r}     s    2::c?C5) r-   c                (    | j                  g d      S )Nrr   rs   r   r{   r   s    r+   r}   r}     s    2::o. r-   c                   |dk(  ry t        j                  g dg dg dg dd      }t        j                  |d      } | |      } | |      }t	        |t         j
                  j                  j                        r|dv ry t        ||      }t        ||      }t	        |t         j
                  j                  j                        sJ |d	k(  r*t         |        |       j                  t                     y  |       }t        j                         5  t        j                  d
t                 |       }	d d d        t        |	       y # 1 sw Y   xY w)Nr"   rG   rH   rI   rG   rH   rI   rG   rH   rG   rJ   rH   rG   rG   rI   rH   rG   rG   rH   rG   rH   rG   rG   rH   rH   rr   rs   r   r   rH   r    r!   r   r   )rT   rU   rW   rX   rZ   corerY   SeriesGroupBygetattrGroupByr   astypefloatr   r   r   RuntimeWarning)
r   r,   r   r^   
dask_grouppandas_groupdask_agg
pandas_aggrr   rs   s
             r+   test_groupby_multilevel_getitemr     s"    9	####		

B ..Q
CJ2;L , = =>8 P D 	z8,Hx0JlBGGOO$;$;<<<6(*jl11%89J$$& 	 !!(N;A		
 	!Q	 	s   "EEc                 \   t        j                  g dg dg dg dd      } t        j                  | d      }| j	                  dg      j                         }|j	                  dg      j                         }t        ||       | j	                  ddg      j                         }|j	                  ddg      j                         }t        ||       | j	                  | d   | d   g      j                         }|j	                  |d   |d   g      j                         }t        ||       y )	Nr   r   r   r   r   rH   rr   r   )rT   rU   rW   rX   rY   r   r   )r   r^   solress       r+   test_groupby_multilevel_aggr   A  s   	####		

B ..Q
C
**cU

 
 
"C
++se

!
!
#Cc3
**c3Z
 
%
%
'C
++sCj
!
&
&
(Cc3
**bgr#w'
(
-
-
/C
++s3xS*
+
0
0
2Cc3r-   zcategoricals,byc                     yr   r1   r   s    r+   r}   r}   \      r-   c                     yr   r1   r   s    r+   r}   r}   ]  r   r-   c                    | j                   S r0   r   r   s    r+   r}   r}   ^  s
    "$$ r-   c                    | j                   S r0   r   r   s    r+   r}   r}   _  s
    244 r-   c                     | j                   dz   S NrG   r   r   s    r+   r}   r}   `  s    244!8 r-   c                V   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}t        j                  t        j                  |j                               g d      }| r|j                  dg      }|j                         }t        r$| r"t        st        j                  t        d      }nt        j                         }|5  |j                   ||            }d d d        |5  |j                   ||            }d d d        t!        j#                  d      j#                  d             t!        |j#                  d      |j#                  d             t!        |j$                  j#                  d      |j$                  j#                  d             t!        |j$                  j#                  d      |j$                  j#                  d             y # 1 sw Y   xY w# 1 sw Y   xY w)N)rG   rH   rK   )rJ   rH   rL   rq   )r   rG   rI   ru   )rJ   rH   rK   )rI   rI   rG   )ro   rK   rM   )rJ   rI   rL   )rG   rG   rI   )rN   rN   rN   ))rR   r   )rR   rG   )rR   rH   )r   rJ   rN   rN   )	divisionsrs   columnszThe default of observed=Falser8   rH   rI   )rT   rU   rW   repartitionconcatvalues
categorizeri   r   r   r=   r>   r?   r:   nullcontextrY   r   	get_grouprr   )categoricalsbydskr^   r]   rB   	ddgrouped	pdgroupeds           r+   test_groupby_get_groupr   Y  s    ,,YY?yQ,,YY?yQ,,YY?yQC
 ..3::<0L
ICnncUn+
++-Cmll=0OP$$&	 )KK3(	)	 )KK3(	) i!!!$i&9&9!&<=i!!!$i&9&9!&<=ikk##A&	(=(=a(@Aikk##A&	(=(=a(@A) )) )s    H"HHH(c                 x   t        d      } t        j                  j                  t	        |             }t        j                  t        | |            }t        j                  |d      }|j                  d      d   j                         }|j                  d      d   j                         }t        ||       y )NaaabbccccdddeeestringsdatarI   rw   r   r   )rV   nprandomrandnlenrT   rU   dictrW   rX   rY   r"   r   r   r   pssr   results         r+   test_dataframe_groupby_nuniquer
    s    $%G99??3w<(D	d76	7B
rq)Azz)$V,446HYYy!&)113Ffhr-   c                 Z   t        d      } t        t        t        d            }t        j                  t        | |            }t        j                  |d      }|j                  d      d   j                         }|j                  d      d   j                         }t        ||       y )Nr   123111223323412r   rI   rw   r   r   )rV   mapintrT   rU   r  rW   rX   rY   r"   r   r  s         r+   6test_dataframe_groupby_nunique_across_group_same_valuer    s    $%GC*+,D	d76	7B
rq)Azz)$V,446HYYy!&)113Ffhr-   c                 z   t        j                  g dg dd      } t        j                  | d      }d }t	        j
                  t              5   |j                  d      j                  |fi t        }d d d         | j                  d      j                  |fi t        }t        |       y # 1 sw Y   <xY w)NrG   rH   rI   rJ   ro   rK   rQ   rH   c                (    | d   j                         S )NrS   r   r   s    r+   r}   z6test_series_groupby_propagates_names.<locals>.<lambda>  s    bgkkm r-   rR   )rT   rU   rW   rX   r=   r>   r   rY   r   r   r   )r   r^   r   r	  r   s        r+   $test_series_groupby_propagates_namesr    s    	II6	7B
..Q
C#D	k	" @'S!''??@$rzz#$$T<^<Hfh@ @s   'B11B:rx   )rG   rH   r   )cumsumcumprodcumcountc                L   t        j                  g dg dd      j                  d      }t        j                  ||       }|j
                  | k(  sJ  t        |d   j                  d      |             } t        |d   j                  d      |             }t        ||       y )N)rG   rH   rI   rJ   ro   rK   rL   )rM   rN   rK   rH   rI   ro   rK   rQ   rR   rS   )	rT   rU   r   rW   rX   rx   r   rY   r   )rx   r   r   r^   r   r	  s         r+   ,test_series_groupby_cumfunc_with_named_indexr    s     
#*?@
in  ..[
)C??k)))2wr#ws+T24H1WSX%%c*D13Ffhr-   c                    t        j                  g d      } | j                  |       }t        j                  | d      }|j                  |      }| j                  | dz         }|j                  |dz         }||f||ffD ]F  \  }}t        |j                         |j                                t        |j                         |j                                t        |j                         |j                                t        |j                         |j                                t        |j                         |j                                t        |j                         |j                                t        |j                         |j                                t        |j                         |j                                I y )NrG   rH   rH   rG   rG   rH   rw   rG   )rT   r\   rY   rW   rX   r   r   r   r   r   r   r#   r$   r%   )r  pd_groupssr   	pd_group2dask_group2dgpdgs           r+   test_series_groupbyr#    s0   
		/"Ayy|H	q	)BBJ		!a% I**R!V$K*Y,DE )C"((*ciik*"&&(CGGI&"&&(CGGI&"&&(CGGI&"'')SXXZ("((*ciik*"'')SXXZ("'')SXXZ()r-   c                 z   t        j                  g d      } t        j                  | d      }d}t	        j
                  t              5 }| j                  g        d d d        |t        j                        v sJ t	        j
                  t              5 }|j                  g        d d d        |t        |j                        v sJ t        j                  | d      }t	        j
                  t        t        f      5  |j                  |       d d d        t	        j
                  t              5  | j                  d       d d d        t	        j
                  t              5  |j                  d       d d d        y # 1 sw Y   &xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   bxY w# 1 sw Y   y xY w)Nr  rH   rw   zNo group keys passed!ro   rR   )rT   r\   rW   rX   r=   rd   
ValueErrorrY   rf   rg   rh   re   )r  r  rj   rk   ssss        r+   test_series_groupby_errorsr'    sN   
		/"A	q	)B
!C	z	" c			"#cii.   	z	" c


2#cii.   
..
*C	+Z8	9 


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


3   
   s<   
F F?F2F%%F1 F
FF"%F.1F:c                 j   t        j                         } t        j                  | d      }t	        | j
                  j                  | j                  j                        j                         |j
                  j                  |j                  j                        j                         d       t	        | j                  | j                  j                        j
                  j                         |j                  |j                  j                        j
                  j                         d       y )NrH   rw   Fcheck_names)
r   makeTimeDataFramerW   rX   r   rc   rY   rv   monthr"   r   r^   s     r+   test_groupby_index_arrayr.    s    		"	"	$B
..
+C 
RXX^^$,,.ciioo&..0 


288>>"$$,,.CIIOO$&&..0r-   c                      t        j                         t        j                  d       t	        j
                  t         fd       y )NrH   rw   c                 R     j                  j                  j                  d      S )NFas_index)rY   rv   r,  r^   r   s   r+   r}   z(test_groupby_set_index.<locals>.<lambda>  s    S[[%[%P r-   )r   r+  rW   rX   r=   rd   	TypeErrorr3  s   @@r+   test_groupby_set_indexr5    s0    		"	"	$B
..
+C
MM)PQr-   emptyc           	     tL   | 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 ]Z  \  }}t        j                  |      j                  j                         |j                  |      j                  j                                t        j                  |      j                  j                         |j                  |      j                  j                                t        j                  |      j                  j                         |j                  |      j                  j                                t        j                  |      j                  j                         |j                  |      j                  j                                t        j                  |      j                  j                         |j                  |      j                  j                                t        j                  |      j                  j                         |j                  |      j                  j                                t        j                  |      j                  j                         |j                  |      j                  j                                t        j                  |      j                  j!                         |j                  |      j                  j!                                t        j                  |      j                  j#                         |j                  |      j                  j#                                t        j                  |      j                  j%                         |j                  |      j                  j%                                |D ]  }t        j                  |      j                  j'                  |      |j                  |      j                  j'                  |             t        j                  |      j                  j)                  |      |j                  |      j                  j)                  |              t        j                  |      j+                         |j                  |      j+                                t        j                  |      j                         |j                  |      j                                t        j                  |      j                         |j                  |      j                                t        j                  |      j                         |j                  |      j                                t        j                  |      j                         |j                  |      j                                t        j                  |      j                         |j                  |      j                                t        j                  |      j                         |j                  |      j                                t        j                  |      j!                         |j                  |      j!                                t        j                  |      j-                         |j                  |      j-                                |D ]  }t        j                  |      j'                  |      |j                  |      j'                  |      d       t        j                  |      j)                  |      |j                  |      j)                  |      d        ] j
                  |j
                  fj
                  dz   |j
                  dz   ffD ]  \  }}t        j                  j                  |      j+                         |j                  j                  |      j+                         d       t        j                  j                  |      j                         |j                  j                  |      j                         d       t        j                  j                  |      j                         |j                  j                  |      j                         d       t        j                  j                  |      j                         |j                  j                  |      j                         d       t        j                  j                  |      j                         |j                  j                  |      j                         d       t        j                  j                  |      j                         |j                  j                  |      j                         d       t        j                  j                  |      j!                         |j                  j                  |      j!                         d       t        j                  j                  |      j-                         |j                  j                  |      j-                         d       |D ]  }t        j                  j                  |      j'                  |      |j                  j                  |      j'                  |             t        j                  j                  |      j)                  |      |j                  j                  |      j)                  |               dD ]  }t        j                  j
                  |kD        j                  j+                         |j                  |j
                  |kD        j                  j+                                t        j                  j
                  |kD        j                  j                         |j                  |j
                  |kD        j                  j                                t        j                  j
                  |kD        j                  j                         |j                  |j
                  |kD        j                  j                                t        j                  j
                  |kD        j                  j                         |j                  |j
                  |kD        j                  j                                t        j                  j
                  |kD        j                  j                         |j                  |j
                  |kD        j                  j                                t        j                  j
                  |kD        j                  j                         |j                  |j
                  |kD        j                  j                                t        j                  j
                  |kD        j                  j                         |j                  |j
                  |kD        j                  j                                t        j                  j
                  |kD        j                  j                         |j                  |j
                  |kD        j                  j                                t        j                  j
                  |kD        j                  j!                         |j                  |j
                  |kD        j                  j!                                t        j                  j
                  |kD        j                  j#                         |j                  |j
                  |kD        j                  j#                                t        j                  j
                  |kD        j                  j%                         |j                  |j
                  |kD        j                  j%                                t        j                  j
                  |kD        j                  j-                         |j                  |j
                  |kD        j                  j-                                t        j                  j                  |kD        j
                  j+                         |j                  |j                  |kD        j
                  j+                                t        j                  j                  |kD        j
                  j                         |j                  |j                  |kD        j
                  j                                t        j                  j                  |kD        j
                  j                         |j                  |j                  |kD        j
                  j                                t        j                  j                  |kD        j
                  j                         |j                  |j                  |kD        j
                  j                                t        j                  j                  |kD        j
                  j                         |j                  |j                  |kD        j
                  j                                t        j                  j                  |kD        j
                  j                         |j                  |j                  |kD        j
                  j                                t        j                  j
                  |kD        j
                  j                         |j                  |j
                  |kD        j
                  j                                t        j                  j
                  |kD        j
                  j                         |j                  |j
                  |kD        j
                  j                                t        j                  j
                  |kD        j
                  j!                         |j                  |j
                  |kD        j
                  j!                                t        j                  j
                  |kD        j
                  j#                         |j                  |j
                  |kD        j
                  j#                                t        j                  j
                  |kD        j
                  j%                         |j                  |j
                  |kD        j
                  j%                                t        j                  j
                  |kD        j
                  j-                         |j                  |j
                  |kD        j
                  j-                                t        j                  j
                  |kD        j+                         |j                  |j
                  |kD        j+                                t        j                  j
                  |kD        j                         |j                  |j
                  |kD        j                                t        j                  j
                  |kD        j                         |j                  |j
                  |kD        j                                t        j                  j
                  |kD        j                         |j                  |j
                  |kD        j                                t        j                  j
                  |kD        j                         |j                  |j
                  |kD        j                                t        j                  j
                  |kD        j                         |j                  |j
                  |kD        j                                t        j                  j
                  |kD        j                         |j                  |j
                  |kD        j                                t        j                  j
                  |kD        j!                         |j                  |j
                  |kD        j!                                t        j                  j
                  |kD        j-                         |j                  |j
                  |kD        j-                                t        j                  j                  |kD        j+                         |j                  |j                  |kD        j+                                t        j                  j                  |kD        j                         |j                  |j                  |kD        j                                t        j                  j                  |kD        j                         |j                  |j                  |kD        j                                t        j                  j                  |kD        j                         |j                  |j                  |kD        j                                t        j                  j                  |kD        j                         |j                  |j                  |kD        j                                t        j                  j                  |kD        j                         |j                  |j                  |kD        j                                t        j                  j                  |kD        j                         |j                  |j                  |kD        j                                t        j                  j                  |kD        j!                         |j                  |j                  |kD        j!                                t        j                  j                  |kD        j-                         |j                  |j                  |kD        j-                                |D ]d  }t        j                  j
                  |kD        j)                  |      |j                  |j
                  |kD        j)                  |             f  dj                  |j                  fj                  dz   |j                  dz   fj                  d	kD  |j                  d	kD  ffD ]N  \  }}t        j                  |      j
                  j+                         |j                  |      j
                  j+                                t        j                  |      j
                  j                         |j                  |      j
                  j                                t        j                  |      j
                  j                         |j                  |      j
                  j                                t        j                  |      j
                  j                         |j                  |      j
                  j                                t        j                  |      j
                  j                         |j                  |      j
                  j                                t        j                  |      j
                  j                         |j                  |      j
                  j                                t        j                  |      j
                  j                         |j                  |      j
                  j                                t        j                  |      j
                  j                         |j                  |      j
                  j                                t        j                  |      j!                         |j                  |      j!                                t        j                  |      j-                         |j                  |      j-                                t        j                  |      j+                         |j                  |      j+                                t        j                  |      j                         |j                  |      j                                t        j                  |      j                         |j                  |      j                                t        j                  |      j                         |j                  |      j                                t        j                  |      j                         |j                  |      j                         j/                  t0                     t        j                  |      j                         |j                  |      j                                t        j                  |      j                         |j                  |      j                                t        j                  |      j!                         |j                  |      j!                                t        j                  |      j-                         |j                  |      j-                                |D ]^  }t        j                  |      j
                  j)                  |      |j                  |      j
                  j)                  |             ` Q t3        j                  d      j                  j+                         j4                        t3        j                  d      j                  j+                         j4                        k(  sJ t3        j                  j                  d	kD        j
                  j                         j4                        t3        j                  j                  d	kD        j
                  j                         j4                        k(  sJ t7        j8                  t:        fd       t7        j8                  t:        fd       t7        j8                  t:        fd       t7        j8                  t:        fd       t7        j8                  t:        fd       y )N      ?rq   r   ru   r   rG   rH   	rG   rH   rK   rJ   rJ   rK   rJ   rI   rL   	rJ   rH   rL   rI   rI   rG   rG   rG   rH   rt   rI   rw   )rs   rs   rG   Fcheck_dtyper)  )r   rJ   rL   )rr   rr   rs   c                 &     j                  d      S )NrR   r{   r|   s   r+   r}   z4test_split_apply_combine_on_series.<locals>.<lambda>  s    CKK$4 r-   c                 *     j                  ddg      S Nrr   rR   r{   r|   s   r+   r}   z4test_split_apply_combine_on_series.<locals>.<lambda>  s    CKKc
$; r-   c                 ,     j                  d      d   S r@  r{   r|   s   r+   r}   z4test_split_apply_combine_on_series.<locals>.<lambda>  s    CKK$4S$9 r-   c                 ,     j                  d      d   S )Nrr   )rs   rR   r{   r|   s   r+   r}   z4test_split_apply_combine_on_series.<locals>.<lambda>  s    CKK$4X$> r-   c                 0     j                  d      ddg   S )Nrr   rs   rR   r{   r|   s   r+   r}   z4test_split_apply_combine_on_series.<locals>.<lambda>  s    CKK$4c3Z$@ r-   )rT   rU   ilocrW   rX   rs   r   rY   rr   r   r   r   r   r"   r   r#   r$   tailheadr   r   r   r%   r   r   sortedr   r=   rd   re   )r6  r]   ddofsddkeypdkeyddofir^   s          @r+   "test_split_apply_combine_on_seriesrM    s   ll#cU3A3?DDRaH ll-4OP-
 ..!
,C#ceeSUU^ceeai5KL #u#++e$&&**,ckk%.@.B.B.F.F.HI#++e$&&**,ckk%.@.B.B.F.F.HI#++e$&&,,.E0B0D0D0J0J0LM#++e$&&++-s{{5/A/C/C/H/H/JK#++e$&&..0#++e2D2F2F2N2N2PQ#++e$&&++-s{{5/A/C/C/H/H/JK#++e$&&,,.E0B0D0D0J0J0LM#++e$&&++-s{{5/A/C/C/H/H/JK#++e$&&++-s{{5/A/C/C/H/H/JK#++e$&&++-s{{5/A/C/C/H/H/JK 	VDckk%(**..t4ckk%6H6J6J6N6Nt6TUckk%(**..t4ckk%6H6J6J6N6Nt6TU	V 	#++e$((*CKK,>,B,B,DE#++e$((*CKK,>,B,B,DE#++e$((*CKK,>,B,B,DE#++e$**,ckk%.@.F.F.HI#++e$))+S[[-?-D-D-FG#++e$))+S[[-?-D-D-FG#++e$**,ckk%.@.F.F.HI#++e$))+S[[-?-D-D-FG#++e$))+S[[-?-D-D-FG 
	DE"&&t,E"&&t,!
 E"&&t,E"&&t,!
	3#J %%#%%!)SUUQY)?@ "VuEEMM% $$&e(<(@(@(BPU	
 	EEMM% $$&e(<(@(@(BPU	
 	EEMM% &&(EEMM% &&(	

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

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

 	EEMM% %%'u)=)B)B)DRW	
 	EEMM% %%'u)=)B)B)DRW	
  	VDceemmE*..t4ceemmE6J6N6Nt6TUceemmE*..t4ceemmE6J6N6Nt6TU	VA"VH  6#++ceeai(**..0#++ceeai2H2J2J2N2N2PQ#++ceeai(**..0#++ceeai2H2J2J2N2N2PQ#++ceeai(**..0#++ceeai2H2J2J2N2N2PQ#++ceeai(**002CKK	4J4L4L4R4R4TU#++ceeai(**//13;;suuqy3I3K3K3P3P3RSKK	"$$,,.CEEAI0F0H0H0P0P0R	
 	#++ceeai(**//13;;suuqy3I3K3K3P3P3RS#++ceeai(**002CKK	4J4L4L4R4R4TU#++ceeai(**//13;;suuqy3I3K3K3P3P3RS#++ceeai(**//13;;suuqy3I3K3K3P3P3RS#++ceeai(**//13;;suuqy3I3K3K3P3P3RS#++ceeai(**//13;;suuqy3I3K3K3P3P3RS#++ceeai(**..0#++ceeai2H2J2J2N2N2PQ#++ceeai(**..0#++ceeai2H2J2J2N2N2PQ#++ceeai(**..0#++ceeai2H2J2J2N2N2PQ#++ceeai(**002CKK	4J4L4L4R4R4TU#++ceeai(**//13;;suuqy3I3K3K3P3P3RSKK	"$$,,.CEEAI0F0H0H0P0P0R	
 	#++ceeai(**//13;;suuqy3I3K3K3P3P3RS#++ceeai(**002CKK	4J4L4L4R4R4TU#++ceeai(**//13;;suuqy3I3K3K3P3P3RS#++ceeai(**//13;;suuqy3I3K3K3P3P3RS#++ceeai(**//13;;suuqy3I3K3K3P3P3RS#++ceeai(**//13;;suuqy3I3K3K3P3P3RS#++ceeai(,,.CEEAI0F0J0J0LM#++ceeai(,,.CEEAI0F0J0J0LM#++ceeai(,,.CEEAI0F0J0J0LM#++ceeai(..0#++ceeai2H2N2N2PQ#++ceeai(--/SUUQY1G1L1L1NO#++ceeai(--/SUUQY1G1L1L1NO#++ceeai(..0#++ceeai2H2N2N2PQ#++ceeai(--/SUUQY1G1L1L1NO#++ceeai(--/SUUQY1G1L1L1NO#++ceeai(,,.CEEAI0F0J0J0LM#++ceeai(,,.CEEAI0F0J0J0LM#++ceeai(,,.CEEAI0F0J0J0LM#++ceeai(..0#++ceeai2H2N2N2PQ#++ceeai(--/SUUQY1G1L1L1NO#++ceeai(--/SUUQY1G1L1L1NO#++ceeai(..0#++ceeai2H2N2N2PQ#++ceeai(--/SUUQY1G1L1L1NO#++ceeai(--/SUUQY1G1L1L1NO 	DCEEAI&**40#++ceeai2H2L2LT2R	g6r 			CEEAI	CEEAI	 Vu 	#++e$&&**,ckk%.@.B.B.F.F.HI#++e$&&**,ckk%.@.B.B.F.F.HI#++e$&&**,ckk%.@.B.B.F.F.HI#++e$&&,,.E0B0D0D0J0J0LM#++e$&&++-s{{5/A/C/C/H/H/JK#++e$&&..0#++e2D2F2F2N2N2PQ#++e$&&++-s{{5/A/C/C/H/H/JK#++e$&&,,.E0B0D0D0J0J0LM#++e$))+S[[-?-D-D-FG#++e$))+S[[-?-D-D-FG#++e$((*CKK,>,B,B,DE#++e$((*CKK,>,B,B,DE#++e$((*CKK,>,B,B,DE#++e$**,ckk%.@.F.F.HI#++e$))+S[[-?-D-D-F-M-Me-TU#++e$))+S[[-?-D-D-FG#++e$**,ckk%.@.F.F.HI#++e$))+S[[-?-D-D-FG#++e$))+S[[-?-D-D-FG 	VDckk%(**..t4ckk%6H6J6J6N6Nt6TU	V7V< #++c"$$((*//0FC %%5    #++ceeai(**//16676CEEAI  %%',,<   
 MM(45
MM(;<
MM(9:
MM(>?
MM(@Ar-   keywordsplit_every	split_outc                   |dv r|dk(  rt        j                  d       t        j                  g ddz  g ddz  d      }t	        j
                  |d	
      }d }|dvrr ||j                  dd      |fi | di} ||j                  d      |      }t        ||        ||j                  d      |      j                  |j                  k7  sJ |dk(  rx ||j                  dd      dfddi| di} ||j                  d      dd      }t        ||        ||j                  d      dd      j                  |j                  k7  sJ |dvr ||j                  dd      j                  |fi | di} ||j                  d      j                  |      }t        ||        ||j                  d      j                  |      j                  |j                  k7  sJ |dk(  r ||j                  dd      j                  dfddi| di} ||j                  d      j                  dd      }t        ||        ||j                  d      j                  dd      j                  |j                  k7  sJ |dvr ||j                  j                  |j                  d      |fi | di} ||j                  j                  |j                        |      }t        ||d        ||j                  j                  |j                        |      j                  |j                  k7  sJ |dk(  r ||j                  j                  |j                  d      dfddi| di} ||j                  j                  |j                        dd      }t        ||        ||j                  j                  |j                        dd      j                  |j                  k7  sJ y y )N>   r$   r#   diskz)https://github.com/dask/dask/issues/10034rD   r:  d   r;  rq      rw   c                &     t        | |      di |S Nr1   r   r   mkwargss      r+   callz*test_groupby_reduction_split.<locals>.call      wq!}&v&&r-   r"   r    r!   rs   FsortrH   r   rK  rK  r   r)  )r=   skiprT   rU   rW   rX   rY   r   _namerr   rs   )rN  r,   r3   r]   r^   r[  r   r   s           r+   test_groupby_reduction_splitrc    s~   $$6)AFG
,,)C/6QTW6WXC .."
-C' 113;;s;/Jgq\J3;;s#X.#sCKK$h/55BBB53;;s;/OQO7A,O3;;s#U3#sCKK$e!4::ciiGGG &3;;s;/118L|L3;;s#%%x0#sCKK$&&177399DDD53;;s;/115QqQWaLQ3;;s#%%u15#sCKK$&&A6<<		III &355==U=3XN'1N355=='2 	#s.CEEMM#%%((399SYYFFF5355==U=3USSwPQlS355=='Q7#sCEEMM#%%(%a8>>#))KKK r-   groupedc                $    | j                  d      S Nrc   r{   r   s    r+   r}   r}     s    2::c? r-   c                *    | j                  | d         S rf  r{   r   s    r+   r}   r}     s    2::bg& r-   c                0    | j                  | d   dz         S Nrc   rG   r{   r   s    r+   r}   r}     s    2::bgk* r-   c                *    | j                  d      d   S Nrc   Br{   r   s    r+   r}   r}     r   r-   c                *    | j                  d      d   S rk  r{   r   s    r+   r}   r}     r   r-   c                0    | j                  | d         d   S rk  r{   r   s    r+   r}   r}     s    2::bg&s+ r-   c                6    | j                  | d   dz         d   S )Nrc   rG   rl  r{   r   s    r+   r}   r}     s    2::bgk*3/ r-   c                >    | j                   j                  | d         S rf  rl  rY   r   s    r+   r}   r}     s    244<<3( r-   c                D    | j                   j                  | d   dz         S ri  rq  r   s    r+   r}   r}     s    244<<3!, r-   c                .    | j                  d      ddg   S Nrc   rl  Cr{   r   s    r+   r}   r}     r   r-   c                4    | j                  | d         ddg   S rt  r{   r   s    r+   r}   r}     r   r-   c                :    | j                  | d   dz         ddg   S )Nrc   rG   rl  ru  r{   r   s    r+   r}   r}     s     2::bgk*C:6 r-   c                2     | j                   d fi t        S )Nc                "    | j                         S r0   r  rR   s    r+   r}   z<lambda>.<locals>.<lambda>   s     r-   r   r   grps    r+   r}   r}      s    ICII/B>B r-   c                &    | j                  d       S )Nc                "    | j                         S r0   r  rz  s    r+   r}   z<lambda>.<locals>.<lambda>  s    AEEG r-   	transformr|  s    r+   r}   r}     s    CMM"34 r-   c           	        t        j                  g ddz  t        j                  j	                  d      t        j                  j	                  d      t        j                  j	                  d      d      }t        j                  |d      }t        j                  t              5  t         | | |             | | |                   d d d        y # 1 sw Y   y xY w)NrG   rH   rI   rJ   ro      rc   rl  ru  DrI   )rT   rU   r  r  r  rW   rX   r=   r>   r   r   )rd  r   r]   r^   s       r+   test_apply_or_transform_shuffler    s    8 ,,!$$$		
C ..a
 C	k	" :$ws|$d73<&89: : :s   &%CCc                     yNAAr1   r   s    r+   r}   r}     r   r-   c                
    ddgS Nr  ABr1   r   s    r+   r}   r}     s
    D$< r-   c                    | d   S r  r1   r   s    r+   r}   r}     s
    2d8 r-   c                    | d   | d   gS r  r1   r   s    r+   r}   r}     s    BtHbh' r-   c                    | d   dz   S )Nr  rG   r1   r   s    r+   r}   r}     s    2d8a< r-   c                "    | d   dz   | d   dz   gS )Nr  rG   r  r1   r   s    r+   r}   r}     s    BtHqL"T(Q,/ r-   c                2     | j                   d fi t        S )Nc                "    | j                         S r0   r  rz  s    r+   r}   z<lambda>.<locals>.<lambda>!  s     r-   r{  rd  s    r+   r}   r}   !  s    &7J>J r-   c                &    | j                  d       S )Nc                "    | j                         S r0   r  rz  s    r+   r}   z<lambda>.<locals>.<lambda>"  s    AEEG r-   r  r  s    r+   r}   r}   "  s    ))*;< r-   c                0   t        j                  g ddz  g ddz  t        j                  j	                  d      t        j                  j	                  d      t        j                  j	                  d      d      }t        j                  |d      }t        j                  t              5  t         ||j                   | |                   ||j                   | |                         t         ||j                   | |            d          ||j                   | |            d                t         ||j                   | |            ddg          ||j                   | |            ddg                d d d        y # 1 sw Y   y xY w)Nr  ro   r  )r  r  rl  ru  r  rI   rl  ru  )rT   rU   r  r  r  rW   rX   r=   r>   r   r   rY   )r   r   r]   r^   s       r+   *test_apply_or_transform_shuffle_multilevelr    s<   & ,,""$$$	
C ..a
 C	k	" 
$s{{73<014GCL8Q3RS 	WS\*3/0$s{{73<7PQT7U2V	

 	WS\*C:67WS\*C:67	

 
 
s   ,CFFc                 D   t        j                  g dg dg dd      } t        j                  | d      }t	        |j                  d      j                         | j                  d      j                                t	        |j                  ddg      j                         | j                  ddg      j                                 | j                  d      j                  d fi t        }t	         |j                  d      j                  d fd	|it        |       y )
N)r   rG   r   rG   r  r9  rH   rw   r   c                    | S r0   r1   rz  s    r+   r}   z+test_numeric_column_names.<locals>.<lambda>H      Q r-   c                    | S r0   r1   rz  s    r+   r}   z+test_numeric_column_names.<locals>.<lambda>J  s    q r-   meta)	rT   rU   rW   rX   r   rY   r   r   r   )r   r^   r   s      r+   test_numeric_column_namesr  A  s     
,<LI	JB
..
+Cckk!n  "BJJqM$5$5$78ckk1a&!%%'QF);)?)?)AB"rzz!}"";A.AHA[JxJ>Jr-   c                2   | dk(  rt        j                  d       t        j                         }|j                  dz  |d<   |j
                  dz  |d<   t        j                  |d      }d d	 fD ]  } |j                   ||            j                  t        fi t        }t        j                  t              5   |j                   ||            j                  t        fi t        }d d d        t        |j                                t!        d
 |j"                  D              rJ  |j                   ||            j
                  j                  t        fi t        }t        j                  t              5   |j                   ||            j
                  j                  t        fi t        }d d d        t        ||j                                t!        d |j"                  D              sJ  y # 1 sw Y   xY w# 1 sw Y   RxY w)NrR  zTasks-only shuffle testg?rc   rl  rO   rw   c                     yrf  r1   rz  s    r+   r}   z*test_groupby_apply_tasks.<locals>.<lambda>X  r   r-   c                    | j                   S r0   )rc   rz  s    r+   r}   z*test_groupby_apply_tasks.<locals>.<lambda>X  s
     r-   c              3  *   K   | ]  }d |d   v   ywpartdr   Nr1   .0ks     r+   	<genexpr>z+test_groupby_apply_tasks.<locals>.<genexpr>]       71w!A$7   c              3  *   K   | ]  }d |d   v   ywr  r1   r  s     r+   r  z+test_groupby_apply_tasks.<locals>.<genexpr>c  r  r  )r=   ra  r   r+  rc   rl  rW   rX   rY   r   r  r   r>   r   r   ri   anyr   )r3   r   r^   indrr   rs   s         r+   test_groupby_apply_tasksr  O  s   -.		"	"	$BddckBsGddckBsG
..
,C}- 8%BJJs2w%%c<^<\\+& 	C+CH%++CB>BA	C!QYY[!77777'BJJs2w!!''>~>\\+& 	E-CH%''--cD^DA	E!QYY[!777778	C 	C	E 	Es   =1H ;H H
	H	c                    t        j                  g dg dd      } t        j                  | d      } | j	                  d      j
                  d fi t        }t               rt        |      n|}t        j                  j                  d	      5  t         |j	                  d      j
                  d
 fd|it        |       d d d        y # 1 sw Y   y xY w)NrG   rH   rI   rJ   ro   )1r  rr   rr   rr   rc   rl  rI   rw   rl  c                    | S r0   r1   rz  s    r+   r}   z.test_groupby_multiprocessing.<locals>.<lambda>j  s    q r-   	processesr   c                    | S r0   r1   rz  s    r+   r}   z.test_groupby_multiprocessing.<locals>.<lambda>o  r  r-   r  )rT   rU   rW   rX   rY   r   r   r   r   r   r   r   r   )r   r^   r   r  s       r+   test_groupby_multiprocessingr  f  s    	O2KL	MB
..
+C$rzz#$$[CNCH*A*CX&D	;	/ 
"CKK"";LTL^L	

 
 
s   4CCc                    t        j                  g dg ddg d      } t        j                  | d      }|j	                  d      j
                  dgk(  sJ |j	                  |d         j
                  dgk(  sJ |j	                  dd	g      j
                  dd	gk(  sJ |j	                  |d   |d	   g      j
                  dd	gk(  sJ |j	                  |d   d	g      j
                  dd	gk(  sJ y )
Nrn   rp   rq   rt   ru   rI   rw   rr   rs   )rT   rU   rW   rX   rY   r   )fullr   s     r+   test_groupby_normalize_byr  t  s    <<)0KL)D 	t+A99S>%%%99QsVC5(((99c3Z ##Sz11199afaf%&))c3Z77799afc]#&&3*444r-   c                v   | }|dv ry t        j                  g dg dg dg ddg d      }t        j                  |d	      }|j	                  d
dg      j                  |      }|dv r|j                  t              }| dk(  rdddni }t        | |j	                  d
dg      j
                  |fi |       y )Nr]  )rG   rG   rI   rI   )rJ   rJ      r  )rG   rG   rJ   rJ   r   r   rs   rr   r   r   rI   rw   rr   r   >   r   r   r   tasksrH   )r3   rP  )	rT   rU   rW   rX   rY   r   r   r   r   )r,   specr]   r^   r   r3   s         r+   %test_aggregate__single_element_groupsr    s    D ))
,,lV$C ..!
,C{{C:&**40H ??5) 8@87K73QS  h3S#J/33DKNKLr-   c                    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 y)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	            r+   5test_aggregate_build_agg_args__reuse_of_intermediatesr    s    
 7+-FGLN 8G|7T4NL"4=L>:n&: ~#&6"7777|N 3333!"c,&7777#$N(;;;;r-   rG   rM   rH       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}|j	                  ddgd      j                  ||||       }|j	                  ddg      j                  |      }|d   j                  |d   j                        |d<   t        ||       y )N	rG   rH   rI   rG   rG   rH   rJ   rI   rL   rS  r;  	r   rG   rH   rI   rJ   ro   rK   rL   rM   	rI   rH   rG   rI   rH   rG   rH   rK   rJ   r   r  r   rw   r   r   r   rs   r   rr   rs   Fr^  )rP  rO  r3   )rs   r   )	rT   rU   rW   rX   rY   r   r   dtyper   )r3   rP  rO  r]   r^   r  r	  expects           r+   test_shuffle_aggregater    s     ,,,s2,s2,s2,s2		
 %C ..#
.Cuen-D[[#s%[044%	 5 F [[#s$((.F #=1889N9T9TUF=ffr-   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	      }d
ddgd}|j	                  d|      j                  |d|       }|j	                  d|      j                  |      }t        ||       |j	                  ddg|      j                  |d|       }|j	                  ddg|      j                  |      }t        |||        y )Nr  rS  r;  r  r  r   r  r   rw   r   r   r   r  rr   r^  rH   )rP  shuffle_backendrs   )sort_resultsrT   rU   rW   rX   rY   r   r   )r3   r_  r]   r^   r  r	  r  s          r+   test_shuffle_aggregate_sortr    s   
,,,s2,s2,s2,s2		
 %C ..#
.C uen-D[[4[(,,> - F [[4[(,,T2Fff [[#s$[/33> 4 F [[#s$[/33D9Ffft84r-   c                b   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}t	        j
                  t              5  |j                  d      j                  |dd      j                          d d d        y # 1 sw Y   y xY w)Nr  rS  r;  r  r  r   r  r   rw   r   r   r   r  rr   rG   rP  rO  )
rT   rU   rW   rX   r=   rd   r%  rY   r   ri   )r3   r]   r^   r  s       r+   test_shuffle_aggregate_defaultsr    s    
,,,s2,s2,s2,s2		
 %C ..#
.Cuen-D 
z	" ICTQA>FFHI I Is   *2B%%B.r  r   r  keysrr   r   c                2   t        j                  g ddz  g ddz  g ddz  g ddz  dg d      }t        j                  |d	      }|j	                  |      j                  | |
      }|j	                  |      j                  |       }t        ||       y )Nr  rO   r;  r  r  r   r  r   rw   r2   rT   rU   rW   rX   rY   	aggregater   )r  r  r3   r]   r^   actualr   s          r+   test_aggregate_medianr    s     ,,,r1,r1,r1,r1		
 %C .."
-C[[((n(MF{{4 **40Hfhr-   
group_keys)TFNlimit)NrG   rJ   c           
     P   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        |j                  d|       j                  |      |j                  d|       j                  |             t        |j                  d|       j                  j                  |      |j                  d|       j                  j                  |             t        |j                  ddg|       j                  |      |j                  ddg|       j                  |             y NrG   rG   rH   rH   rI   rJ   rI   rJ   rI   rJ   ro   rK   rL   )rc   rl  ru  r  ErH   rw   rc   r  )r  rl  )
rT   rU   r  nanrW   rX   r   rY   ffillrl  r  r  r   r^   s       r+   
test_ffillr    sS    
&&!RVVRVV,RVVQ'RVVQ'	

B ..
+C


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


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


C:*
5;;%;HS#J:6<<5<Ir-   c           
     P   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        |j                  d|       j                  |      |j                  d|       j                  |             t        |j                  d|       j                  j                  |      |j                  d|       j                  j                  |             t        |j                  ddg|       j                  |      |j                  ddg|       j                  |             y r  )
rT   rU   r  r  rW   rX   r   rY   bfillrl  r  s       r+   
test_bfillr  1  sS    
&&!RVVRVV,&&!RVVQ'&&!RVVQ'	

B ..
+C


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


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


C:*
5;;%;HS#J:6<<5<Ir-   ro   )rerunsc                    dgS r   r1   r   s    r+   r}   r}   P  r   r-   c                
    ddgS r   r1   r   s    r+   r}   r}   Q  r   r-   c                    | d   S r   r1   r   s    r+   r}   r}   R  r   r-   c                    | d   | d   gS r   r1   r   s    r+   r}   r}   S  r   r-   c                "    | d   dkD  | d   dkD  gS r   r1   r   s    r+   r}   r}   T  r   r-   c           
     B   |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rQt	         ||j                   | |      |      d   |       ||j                   | |      |      d   ||d             |dk7  rs|dv r|dkD  rt        j                  d       t	         ||j                   | |      |      ddg   |       ||j                   | |      |      ddg   ||d             |dv r ||j                   | |      |      |      j                         }t        |j                        }||   } ||j                   | |      |      ||d      j                         }	|	j                         }	t        |	j                        }|	|   }	t	        ||	       y t	         ||j                   | |      |      |       ||j                   | |      |      ||d             y y )NrG   c                &     t        | |      di |S rV  rW  rX  s      r+   r[  z4test_dataframe_aggregations_multilevel.<locals>.call[  r\  r-   r:  rO   r;  r  )rr   rs   r   r   r  r   rw   r   r^  r   rH   r  r"   z(https://github.com/dask/dask/issues/9509r   )rT   rU   rW   rX   r   rY   r=   ra  
sort_indexrG  r   ri   )
r   r,   rP  r_  r[  r]   r^   r   colsdddfs
             r+   &test_dataframe_aggregations_multilevelr  L  s/    >D' ,,,r1,r1,r1,r1		
 %C .."
-C &WS\5c:HEGCLt4S9#		
 9&9q=KKBCWS\5sCjA8LGCLt4c3Z@#		
 &ckk'#,Tk:HEPPRB"**%DDBGCLt4#	
 gi  ??$D$,,'D:Db$S[[D[98DKK4K8' !	; r-   c                    | d   S r   r1   r   s    r+   r}   r}     r   r-   c                    | d   | d   gS r   r1   r   s    r+   r}   r}     r   r-   c                "    | d   dkD  | d   dkD  gS r   r1   r   s    r+   r}   r}     r   r-   c           
     N   |dk(  }d }|dv ryt        j                  g ddz  g ddz  g ddz  d	g d
      }t        j                  |d      }t	         ||d   j                   | |      |      |       ||d   j                   | |      |      ||d      |dv       y)zp
    similar to ``test_dataframe_aggregations_multilevel``, but series do not
    support all groupby args.
    rG   c                &     t        | |      di |S rV  rW  rX  s      r+   r[  z1test_series_aggregations_multilevel.<locals>.call  r\  r-   r   Nr:  rO   r;  r  r   r   rs   rr   r   rw   r   r^  rH   r  >   r   r"   r)  rT   rU   rW   rX   r   rY   )r   rP  r,   r_  r[  r]   r^   s          r+   #test_series_aggregations_multilevelr    s     >D' ?"
,,,r1,r1,r1	

  C .."
-CSXgcl6AHWS\5		
 %88r-   c                    t        j                  g ddz  g ddz  g ddz  dg d      } t        j                  | d	      }t        j                  | d
	      }|j	                  ddg       |j	                  |d   |d   g       t        j                  t              5  |j	                  |d          d d d        t        j                  t              5  |j	                  |d   |d   g       d d d        t        j                  t              5  |j	                  |d   |d   g       d d d        t        j                  t              5  |j	                  |d   |d   g       d d d        t        j                  t              5  |j	                  |d   dg       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   fxY w# 1 sw Y   y xY w)Nr:  rO   r;  r  r   r	  r   rI   rw   rL   rr   rs   )rT   rU   rW   rX   rY   r=   rd   rh   )r]   ddf3ddf7s      r+   test_groupy_non_aligned_indexr    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%&' '   - -- -- -' 's<    F'F3F?GG'F03F<?GGG c                    t        j                  g ddz  g ddz  g ddz  dg d      } t        j                  | d	      } | d
   }|j	                  |       |j	                  ||g       t        j                  t              5  |j	                  d       d d d        t        j                  t              5  |j	                  |dg       d d d        t        j                  t              5  |j	                  |        d d d        t        j                  t              5  |j	                  || g       d d d        y # 1 sw Y   xY w# 1 sw Y   ~xY w# 1 sw Y   WxY w# 1 sw Y   y xY w)Nr:  rO   r;  r  r   r	  r   rI   rw   rr   r  )	rT   rU   rW   rX   rY   r=   rd   re   r%  )r   r  s     r+    test_groupy_series_wrong_grouperr    s2   	,r1,r1,r1	

  
B 
	*B
3A IIaLIIq!f 
x	  			% 
x	  			1e* 
z	" 			" 
z	" 			1b'     s0   D>9E
.E!E">E
EE"E+)rG   rJ   r  )rG   ro   r  c                   t        j                  t        j                  d      dz  t        j                  d      d      }t        j                  ||       }|j                  d|dk(        j                  j                  ||      }|j                  |k(  sJ t        ||j                  d      j                  j                                y )NrS  rO   rQ   rR   rG   r^  )rO  rP  )rT   rU   r  arangeonesrW   rX   rY   rS   r   rx   r   )rx   rO  rP  r   r^   r	  s         r+   test_hash_groupby_aggregater    s     
BIIcNR/bggclC	DB
..[
)C[[IN[466::9 ; F ***fbjjo''++-.r-   c                    t        j                  t        j                  d      dz  t        j                  d      g ddz  d      } t        j                  | d      }|j                  ddgd	
      j                  j                  d      }| j                  ddg      j                  j                         }t        ||d	       y )NrS  rO   r  r  rR   rS   zrw   rR   rS   Fr^  rJ   rP  r<  )rT   rU   r  r  r  rW   rX   rY   r  r   r   )r   r^   r	  r   s       r+   #test_split_out_multi_column_groupbyr     s    	iinr!?R;OP
B ..
,C[[#s%[02277!7DFzz3*%'',,.HfhE2r-   c                    t        j                  t        j                  g dg dd      d      } | j	                  d      j                         j                  dk(  sJ | j	                  dd	      j                  d
      j                  dk(  sJ | j	                  dd	      j                  d
      j                  dk(  sJ t        j                  t              5  | j	                  dd
       d d d        y # 1 sw Y   y xY w)Nr  r  r  rH   rw   rc   rG   Fr^  r  rI   )
rW   rX   rT   rU   rY   r   rx   r=   rd   r4  r|   s    r+   test_groupby_split_out_numr  -  s    
..
<l;<!C ;;s!--222;;s;'++a+8DDIII;;s;'++a+8DDIII	y	! &C1%& & &s   C::Dc                 n   t        j                  t        j                  g dg dd      d      } t	        j
                  t              5  | j                  dd       d d d        t	        j
                  t              5  | j                  dd	       d d d        t	        j
                  t              5  | j                  dd
       d d d        t	        j
                  t              5  | j                  dd       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   WxY w# 1 sw Y   y xY w)Nr  r  r  rH   rw   rc   rG   )r7   )levelFr1  T)squeeze)rW   rX   rT   rU   r=   rd   r4  rY   r|   s    r+   test_groupby_not_supportedr   ;  s    
..
<l;<!C 
y	! !Ca !	y	! "Cq!"	y	! )C%()	y	! 'C&' '! !" ") )' 's0   D D5D*D+DDD(+D4c                 *   t        j                  g dg dd      } t        j                  | d      }t	        |j                  |j                        d   j                         | j                  | j                        d   j                                y )N)r  r  r  r  )rc   r   rI   rw   r   )rT   rU   rW   rX   r   rY   rc   r   r-  s     r+   test_groupby_numeric_columnr"  I  sf    	1i@	AB
..
+Cckk#%% #'')2::bdd+;A+>+B+B+DEr-   )rI      z?https://github.com/dask/dask/pull/11320#issuecomment-2293798597selrs   keyc                   t        j                  g ddz  g ddz  t        j                  j	                  d      t        j                  j	                  d      dg d      }t        j
                  |j                  g ddf<   t        j                  |d	
      }fd||fD        \  }}t         t        ||               t        ||                     y )Nr:  rK   r;  6   r   r   )iiir   rO   rw   c              3  F   K   | ]  }|j                             y wr0   r{   )r  r   r%  r$  s     r+   r  z"test_cumulative.<locals>.<genexpr>d  s     4QQYYs^C 4s   !)rT   rU   r  r  r  r  rD  rW   rX   r   r   )r   r%  r$  r   r^   r   r!  s    ``    r+   test_cumulativer)  P  s     
,q0,q0$$		
 %
B #%&&BGGNB
..
,C42s)4EArga "3'"d"3"56r-   c                    t        j                  dg di      } t        j                  | d      }t	        | j                  d      j                  j                         |j                  d      j                  j                                y )Naa)rG   rH   rG   rI   rJ   rG   rH   rI   rw   )rT   rU   rW   rX   r   rY   r+  r  r-  s     r+   /test_series_groupby_multi_character_column_namer,  h  s`    	t23	4B
..
+Cbjj!!((*CKK,=,@,@,G,G,IJr-   c            
        t        j                  t        j                  j	                  ddd      t        j                  j                  d      t        j                  j                  d      d      } t        j                  | d      }| | j                  dk     }||j                  dk     }|j                  |j                        }|j                  j                  |j                        }|j                         |j                         |j                  j                         |j                  d      |j                         |j                         |j                         |j                  d      g}|D ]4  }t        j                   t"              5  |j%                          d d d        6 d }|j                  | j                        }	 |	j&                  |fi t(        }
t+         |j&                  |fd	|
it(        |
        |	j                  j&                  |fi t(        }
t+         |j                  j&                  |fd	|
it(        |
       y # 1 sw Y   xY w)
Nr   rO   2   r   ro   rw         ?c                    | dz   S r   r1   rz  s    r+   add1z*test_groupby_unaligned_index.<locals>.add1  s    1ur-   r  )rT   rU   r  r  randintr  rW   rX   rs   rY   rr   r   r   r"   r   r=   rd   r%  ri   r   r   r   )r   r^   filtered	dfiltered	ddf_groupds_groupbadr[   r1  df_groupr   s              r+   test_groupby_unaligned_indexr9  n  s   	""1b"-$$	

B ..
+C"$$*~HCEECK I!!#%%(I{{""355)H 	A1	C  ]]:& 	KKM	 	 %Hx~~d5n5HoioodDD^DhOxzz77HikkF8F~FQ	 	s   II	c                    t        j                  g dg dg dd      } t        j                  t        j                  |       d      }|j	                  d      }|j                  d      j                         }t        j                  ddgdd	gd
dgdt        j                  ddg            }t        j                  ||       y )N)rG   rG   rJ   )rH   rI   rJ   )ro   rK   rL   )r  rl  ru  rG   rw   r  rH   rI   ro   rK   r   ru   )
rT   rU   rW   rX   rY   r   ri   Indexr   assert_frame_equal)r   r^   r5  r	  r   s        r+   test_groupby_string_labelr=    s    	iiiH	IB
..b)q
9CE"I  #++-F||AaV1a&11a&9IH &(+r-   opr  r  c                0   t        j                  t        t        d            t        j                  dd            }d|d<   d	|d
<   t        j                  |d      } t        |j                  dg      |              }|j                  ddd      } t        |j                  dg      |              }t        j                  ||      \  }}|j                         |j                         }}|j                  |      sJ |j                  |      sJ y)zaTest caching behavior of cumulative operations on grouped dataframes.

    Relates to #3756.
    aabbcc)rr   20100101rK   startperiodsru   rG   r  rH   twosrI   rw   rr   r  r  )r  rE  r   N)rT   rU   r  rV   
date_rangerW   rX   r   rY   renamer   ri   equals)	r>  r   r^   ddf0ddf1res0_ares1_ares0_bres1_bs	            r+   "test_groupby_dataframe_cum_cachingrO    s     
tH~bmm*a&P
B BvJBvJ
..
+C*73;;u%r*,D::ue<:=D+74<<&+-D \\$-NFF\\^T\\^FF==   ==   r-   c                    t        j                  g dg dd      } t        j                  | d      }|j	                  d      d   j                  dd	g      }| j	                  d      d   j                  dd	g      }t        ||       y )
Nr  rH   rI   rJ   ro   rq   rH   rw   rr   rs   r   r   r  r   rr   r	  r   s       r+   test_groupby_slice_agg_reducesrS    sq    
<l;<A
qa(AYYs^C $$eU^4Fyy~c"&&u~6Hfhr-   c                    t        j                  dg di      } t        j                  | d      }|j	                  d      d   j                  ddg      }| j	                  d      d   j                  ddg      }t        ||       y )Nrr   r  rH   rw   r   r   r  rR  s       r+   test_groupby_agg_grouper_singlerU    sq    
c<()A
qa(AYYs^C $$eU^4Fyy~c"&&u~6Hfhr-   slice_c                   t        j                  g dg dd      }t        j                  |d      }|j	                  d      |    j                  ddg      }|j	                  d      |    j                  ddg      }t        ||       y )Nr  rq   rH   rw   rr   r   r   r  )rV  r   rr   r	  r   s        r+   !test_groupby_agg_grouper_multiplerX    ss     	<l;<A
qa(AYYs^F#''7Fyy~f%))5%.9Hfhr-   r,   )r  r  r  r   r   r   r   r   r   r   r   r#   r$   r%   c                l   d }t        j                  g dg dt        j                  d      g dd      j	                  d      }t        j                  ||j                  j                               }t        j                  ||j                  j                         d	      } ||j                  dd
g      |       }| dv r|j                  t              } ||j                  dd
g      |       }t        ||        ||j                  dd
g      |       }t        ||       h d}| |v r.|j                  dd
g      j                  |       }t        ||        ||j                  d
dg      |       }| dv r|j                  t              } ||j                  d
dg      |       }t        ||        ||j                  d
dg      |       }t        ||       | |v r.|j                  d
dg      j                  |       }t        ||        ||j                  d      |       }| dv r|j                  t              } ||j                  d      |       }t        ||        ||j                  d      |       }t        ||       | |v r-|j                  d      j                  |       }t        ||       y y )Nc                &     t        | |      di |S rV  rW  rX  s      r+   r[  z5test_groupby_column_and_index_agg_funcs.<locals>.call  r\  r-   rG   rG   rG   rH   rH   rH   rG   rH   rG   rH   rG   rH   rK   )idxrr   rs   r   r]  rw   Frx   r_  rr   >   r   r   >	   r   r   r   r$   r   r%   r   r   r#   )rT   rU   r  r  r   rW   rX   rv   r"   rY   r   r   r   r   )r,   r[  r   r^   ddf_no_divsr   r	  aca_aggs           r+   'test_groupby_column_and_index_agg_funcsra    s~   0' 
%#1#		

 i  ..)9)9);
<C..1A1A1C%PK
 BJJs|,h7H?"??5)#++ucl+X6Fh+%%ucl3X>Fh VG 7$$eS\266x@(F#
 BJJU|,h7H?"??5)#++sEl+X6Fh+%%sEl3X>Fh 7$$c5\266x@(F#
 BJJu%x0H?"??5)#++e$h/Fh+%%e,h7Fh 7$$U+//9(F# r-   
group_argsr]  
apply_funcc                    t        j                  | j                        t        j                  | j                        z
  S r0   )r  r   r   r   )r  r7   s     r+   r}   r}   C  s%    266!((+;bggahh>O+O r-   c                ,   t        j                  g dg dt        j                  d      d      j	                  d      }t        j                  ||j                  j                               }t        j                  ||j                  j                         d      j                         } |j                  |       j                  |fd	d
it        } |j                  |       j                  |fd
|dt        }t        ||d       |j                  |j                  k(  sJ t        |j                         t        |j                         |j"                  z   k(  sJ  |j                  |       j                  |fd	d
it        } |j                  |       j                  |fd
|dt        }t        ||d       |j                  |j                  k(  sJ t        |j                         t        |j                         |j"                  z   kD  sJ y )Nr[  r\  rK   )r]  rr   rs   r]  rw   Fr^  r7   r   )r7   r  )check_divisions)rT   rU   r  r  r   rW   rX   rv   r"   clear_divisionsrY   r   r   r   r   r  r   rx   )rb  rc  r   r^   r_  r   r	  s          r+   #test_groupby_column_and_index_applyrh  @  s    
");"))A,O
i  ..)9)9);
<C..
((*o 
 ,rzz*%++JQQQ.QH +S[[$**-;F h6 ==F,,,,, v{{CHH ?@@@+rzz*%++JQQQ.QH 3[  ,22-;F h6   F$4$4444 v{{s;#3#34{7N7NNOOOr-   c                B    | j                         | j                         fS r0   r   r   r  s    r+   r}   r}   r  s    qwwy!%%'" r-   c                B    | j                         |j                         fS r0   r  s0s1s     r+   r}   r}   s  s    BFFHbffh' r-   c                    || z  S r0   r1   rm  s     r+   r}   r}   t  s
    27 r-   c                "    | j                         S r0   r  rk  s    r+   r}   r}   w  s    QUUW r-   c                "    | j                         S r0   r  rn  s    r+   r}   r}   w  s     r-   z#pandas_spec, dask_spec, check_dtypec                   t        j                  g ddz  g ddz  d      }t        j                  |d      }|j	                  d      j                  |       }|j	                  d      j                  |      }t        |||       y )	Nr   r   rG   rI   r  r   rs   rH   rw   r   r<  r  )pandas_spec	dask_specr=  r   r^   r   r	  s          r+   %test_dataframe_groupby_agg_custom_sumry  z  sl     
IM	A>	?B
..
+Czz#((5H[[''	2FfhK8r-   zpandas_spec, dask_specc                *   t        j                  g ddz  g ddz  d      }t        j                  |d      }|d   j	                  |d         j                  |       }|d   j	                  |d         j                  |      }t        ||d	
       y )Nru  rI   r  rv  rH   rw   rs   r   Fr<  r  )rw  rx  r   rr   r   r	  s         r+   #test_series_groupby_agg_custom_meanr{    s}     	9q=y1}=>A
qa(Av~~af%//<HsV^^AcF#--i8FfhE2r-   c                 L   t        j                  g ddz  g ddz  d      } t        j                  | d      }t        j                  dd d	       }t        j                  t              5  |j                  d
      j                  d|dgi       ddd       y# 1 sw Y   yxY w)z7for a single input column only unique names are allowedru  rI   r  rv  rH   rw   r   c                "    | j                         S r0   r  rk  s    r+   r}   zOtest_groupby_agg_custom__name_clash_with_internal_same_column.<locals>.<lambda>  s    quuw r-   c                "    | j                         S r0   r  rs  s    r+   r}   zOtest_groupby_agg_custom__name_clash_with_internal_same_column.<locals>.<lambda>  s    2668 r-   r   rs   N)
rT   rU   rW   rX   Aggregationr=   rd   r%  rY   r  )r   rr   r,   s      r+   =test_groupby_agg_custom__name_clash_with_internal_same_columnr    s    
9q=y1}=>A
qa(A~~e%68KLH	z	" ;			#  #%'8!9:; ; ;s   ,%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       }|j                  d      j                  |dd      }| j                  d      j                  ddd      }t        ||d       y)zEcustom aggregation functions can share the name of a builtin functionru  rI   r  r  )r   rs   r   rH   rw   r   c                B    | j                         | j                         fS r0   rj  rk  s    r+   r}   zTtest_groupby_agg_custom__name_clash_with_internal_different_column.<locals>.<lambda>  s    1779aeeg& r-   c                B    | j                         |j                         fS r0   r  rm  s     r+   r}   zTtest_groupby_agg_custom__name_clash_with_internal_different_column.<locals>.<lambda>  s    "&&(+ r-   c                    || z  S r0   r1   rm  s     r+   r}   zTtest_groupby_agg_custom__name_clash_with_internal_different_column.<locals>.<lambda>  s
    rBw r-   r   r  r   Fr<  N)rT   rU   rW   rX   r  rY   r  r   )r   rr   r,   r	  r   s        r+   Btest_groupby_agg_custom__name_clash_with_internal_different_columnr    s    
9q=y1}9q=QRA
qa(A ~~&+	H YYs^%%H5&ABFyy~''f5(ABHfhE2r-   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   j                  |d   |d   g      j                  |      }t        j                  ddgddgddgd      }|d   j                  |d   |d   g      j                  d      }t        ||       y )Nc                6    d } | j                   |fi t        S )Nc                |    | j                   d   \  }| j                   dd  D ]  \  }|j                  |d      } |gS )Nr   rG   )
fill_value)rD  add)r  r   rL  s      r+   implz=test_groupby_agg_custom__mode.<locals>.agg_mode.<locals>.impl  sG    VVAYFSqr
 /ggaAg./ 5Lr-   r{  )r  r  s     r+   agg_modez/test_groupby_agg_custom__mode.<locals>.agg_mode  s    	 qwwt.~..r-   custom_modec                2     | j                   d fi t        S )Nc                $    | j                         gS r0   )value_countsrk  s    r+   r}   zAtest_groupby_agg_custom__mode.<locals>.<lambda>.<locals>.<lambda>  s    Q^^%5$6 r-   r{  rk  s    r+   r}   z/test_groupby_agg_custom__mode.<locals>.<lambda>  s    '!''6I.I r-   c                &    | j                  d       S )Nc                (    | d   j                         S )Nr   )idxmax)rL  s    r+   r}   zAtest_groupby_agg_custom__mode.<locals>.<lambda>.<locals>.<lambda>  s    !A$++- r-   )r  rk  s    r+   r}   z/test_groupby_agg_custom__mode.<locals>.<lambda>  s    !%%/0 r-   )r   r   r   rG   rG   rI   )rJ   ro   rJ   rK   rK   )g0g1ccro   rw   r  r  r  r   rG   rJ   rK   r   )rW   r  rT   rU   rX   rY   r   r   )r  r,   r   rr   r  r   s         r+   test_groupby_agg_custom__moder    s    	/ ~~I0	H 	!A%!A%!A%	
	A 	qa(AtW__agqw/044X>F ||Aq6!Q1vFGH~%%x~x~&FGKKERHfhr-   c                   t        j                  g dg dd      }t        j                  |d      }|j	                  d      d   j                  |       }|j	                  d      d   j                  |       }t        ||       y )N)	rG   rH   rI   rG   rH   rI   rG   rH   rJ   )	gEgٿgV-gS㥫?gNbX9?gtVglgClgZd;Or  rJ   rw   rc   rl  r  )r   r]   r^   r  r   s        r+   test_groupby_select_column_aggr    ss    
,,,U	
C ..!
,C[[c"&&t,F{{3$((.Hfhr-   c               #     K   t        j                  d      5 } t        j                  ddt               |  d d d        y # 1 sw Y   y xY ww)NT)recordalwaysz!The default value of numeric_only)r   r   filterwarningsr?   )recs    r+   record_numeric_only_warningsr    sG     		 	 	- 9=	
 		  s   A A	AAAzworks in dask-exprc                   t        j                  g dg dg dd      }t        j                  |d      } t	        ||              } t	        ||              }t        ||       t               5 } t	        |j                  d      |              }d d d        t               5 } t	        |j                  d      |              }d d d        t              t              k(  sJ t        ||       t               5 } t	        |j                  d      j                  |              }d d d        t               5 } t	        |j                  d      j                  |              }d d d        t        |      t        |      k(  sJ t        ||       y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   TxY w)N)rG   rH   rG   r   )g      &@g      6@g     @@r  rH   rw   rR   )
rT   rU   rW   rX   r   r   r  rY   r  r  )r   r   r^   r   r	  rec_pdrec_dds          r+   test_std_object_dtyper    s   2 
IOBTU	VB
..
+C !wr4 "HWS$!Fh 
&	' 46172::c?D134	%	' 360S)4023v;#f+%%%h 
&	' 66372::c?,,d356	%	' 562S)++T245v;#f+%%%h4 43 36 65 5s0   /!F"!F:+F)7+F5FF&)F25F>c                     t        j                  dgdgd      } t        j                  | d      }t	        |j                  |d         j                         | j                  | d         j                                y )Nro   )r   rG   rH   rw   r   )rT   rU   rW   rX   r   rY   r   r-  s     r+   test_std_columns_intr  1  s_    	1#1#&	'B
..
+Cckk#a&!%%'BqE):)>)>)@Ar-   c                     t         j                  j                         j                  d d } t	        | j                  d      j                         | j                  d      j                                y )NrH   name)r   datasets
timeseries
partitionsr   rY   r   r   s    r+   test_timeseriesr  7  sO    		!	!	#	.	.r	2Bbjj $$&

6(:(>(>(@Ar-   	min_count)r   rG   rH   rI   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 cg c]  }t	        j
                  |d	       }}t        ||      D ]  \  }}t        |j                  d
      j                  |       |j                  d
      j                  |              t        |j                  d
      j                  |       |j                  d
      j                  |               y c c}w )N)rc   rc   rl  rH   rI   ro   rK   )ro   rJ   rN   )groupval1val2val3rJ   rw   r  )r  )rT   rU   r  r  rW   rX   zipr   rY   r   r%   )r  dfsr   ddfsr^   s        r+   test_with_min_countr  <  s,    	(AA!		
 	(BFFBFF+A!		
C$ 9<<"BNN21-<D<sD> 
CJJw##i#8KK $$y$9	
 	JJw$$y$9KK %%	%:	

 =s   Ec                   t        j                  g dg dd      }t        j                  |d      j	                  d      }|j	                  d      }d } |j                  d      j                  |fi t        }t        | |j                  d      j                  |fd|it                |j                  d| 	      j                  |fi t        }t        | |j                  d| 	      j                  |fd|it               y )
N)rG   rH   rH   rI   rQ  rq   rH   rw   rr   c                "    | j                         S r0   )copy)r   s    r+   r}   z)test_groupby_group_keys.<locals>.<lambda>c  s    QVVX r-   r  r  )	rT   rU   rW   rX   r   rY   r   r   r   )r  r   r^   r]   r   r   s         r+   test_groupby_group_keysr  ]  s    	L|<	=B
..
+
5
5c
:C
,,s
CD%s{{3%%d=n=Hh.C(..tU(UnUV<s{{3:{6<<TT^TH5CJ/55	
	
#1	
r-   r   r   )r8         @      @)r  23) rr   rs   c                B   d}d}t         j                  j                  ||      }t        j                  ||       }dgdz  dgdz  z   dgdz  z   |d	<   t        j                  |d
      }|j                  d	      j                         }|j                  d	      j                         }t        | t         j                        rR|j                         }|j                  j                  t        j                  d            |_        t        ||d       y t        ||       y )Nr  rI   r   r   rO   rG   ro   rH   r%  rw   OF)check_index)r  r  r  rT   rU   rW   rX   rY   r    rZ   ndarrayri   r   r   r  r   )r   rowsr  r   r   r^   r   r	  s           r+   test_groupby_covr  p  s    
 DD99??4&D	dG	,BbA37"aS1W,BuI
..
+Czz% $$&H[[##%F
 '2::&!..rxx}=(F6(F#r-   c                    t        j                  t        t        d            g dg dd      j	                  d      } t        j                  | d      }t        j                  ddgd	d
gd      j	                  d      }| j                  d      j                         }|j                  d      j                         }t        ||       t        ||       y )NrJ   r  rO   r  r  rO   r]  r  rg   r]  rH   rw   rG   r   rI   r  rg   r  )
rT   rU   rV   r   r   rW   rX   rY   idxminr   r]   r^   r   	result_pd	result_dds        r+   test_df_groupby_idxminr        
,,U1X@PQi  ..!
,C||q!f1v>?II'RHG$++-IG$++-Ii#h	"r-   skipnac                   t        j                  t        t        d            g dt        j
                  dt        j
                  dgd      j                  d      }t        j                  |d      }|j                  d	      j                  | 
      }t        j                         }| s(t        r"t        st        j                   t"        d      }n#| s!t        rt        j$                  t&        d      }|5  |j                  d	      j                  | 
      }d d d        | st        ry |5  t)        |       d d d        y # 1 sw Y   *xY w# 1 sw Y   y xY wNrJ   r  皙4@333333$@r  r]  rH   rw   r  r  all-NA valuesr8   encountered an NArT   rU   rV   r   r  r  r   rW   rX   rY   r  r:   r   r   r   r=   r>   r?   rd   r%  r   r  r]   r^   r  rB   r  s         r+   test_df_groupby_idxmin_skipnar    s   
,,a>!ffdBFFD1	
 i  ..!
,CG$++6+:I

 
 
"CmMll=@mmJ.AB	 ?KK(//v/>	?m	 ()Y'( (	? ?( (   8"E-EEEc                    t        j                  t        t        d            g dg dd      j	                  d      } t        j                  | d      }t        j                  dd	gdd	gd
      j	                  d      }| j                  d      j                         }|j                  d      j                         }t        ||       t        ||       y )NrJ   r  r  r  r]  rI   rw   rG   rH   r  r  )
rT   rU   rV   r   r   rW   rX   rY   r  r   r  s        r+   test_df_groupby_idxmaxr    r  r-   c                   t        j                  t        t        d            g dt        j
                  dt        j
                  dgd      j                  d      }t        j                  |d      }|j                  d	      j                  | 
      }t        j                         }| s(t        r"t        st        j                   t"        d      }n#| s!t        rt        j$                  t&        d      }|5  |j                  d	      j                  | 
      }d d d        | st        ry |5  t)        |       d d d        y # 1 sw Y   *xY w# 1 sw Y   y xY wr  rT   rU   rV   r   r  r  r   rW   rX   rY   r  r:   r   r   r   r=   r>   r?   rd   r%  r   r  s         r+   test_df_groupby_idxmax_skipnar    s   
,,a>!ffdBFFD1	
 i  ..!
,CG$++6+:I

 
 
"CmMll=@mmJ.AB	 ?KK(//v/>	?m	 ()Y'( (	? ?( (r  c                    t        j                  t        t        d            g dg dd      j	                  d      } t        j                  | d      }t        j                  ddgd	d
gd      j	                  d      j                         }| j                  d      d   j                         }|j                  d      d   j                         }t        ||       t        ||       y )NrJ   r  r  r  r]  rH   rw   rG   r   rI   r  r  rg   )rT   rU   rV   r   r   rW   rX   r  rY   r  r   r  s        r+   test_series_groupby_idxminr        
,,U1X@PQi  ..!
,C 	1vA78BB7KSSU  G$W-446IG$W-446Ii#h	"r-   c                   t        j                  t        t        d            g dt        j
                  dt        j
                  dgd      j                  d      }t        j                  |d      }|j                  d	      d
   j                  |       }t        j                         }| s(t        r"t        st        j                   t"        d      }n#| s!t        rt        j$                  t&        d      }|5  |j                  d	      d
   j                  |       }d d d        | st        ry |5  t)        |       d d d        y # 1 sw Y   *xY w# 1 sw Y   y xY wNrJ   r  r  r  r  r]  rH   rw   r  rg   r  r  r8   r  r  r  s         r+   !test_series_groupby_idxmin_skipnar    s    
,,a>!ffdBFFD1	
 i  ..!
,CG$W-44F4CI

 
 
"CmMll=@mmJ.AB	 HKK(1888G	Hm	 ()Y'( (	H H( (   ;%E	3E	EEc                    t        j                  t        t        d            g dg dd      j	                  d      } t        j                  | d      }t        j                  dd	gdd	gd
      j	                  d      j                         }| j                  d      d   j                         }|j                  d      d   j                         }t        ||       t        ||       y )NrJ   r  r  r  r]  rI   rw   rG   rH   r  r  rg   )rT   rU   rV   r   r   rW   rX   r  rY   r  r   r  s        r+   test_series_groupby_idxmaxr    r  r-   c                   t        j                  t        t        d            g dt        j
                  dt        j
                  dgd      j                  d      }t        j                  |d      }|j                  d	      d
   j                  |       }t        j                         }| s(t        r"t        st        j                   t"        d      }n#| s!t        rt        j$                  t&        d      }|5  |j                  d	      d
   j                  |       }d d d        | st        ry |5  t)        |       d d d        y # 1 sw Y   *xY w# 1 sw Y   y xY wr  r  r  s         r+   !test_series_groupby_idxmax_skipnar    s    
,,a>!ffdBFFD1	
 i  ..!
,CG$W-44F4CI

 
 
"CmMll=@mmJ.AB	 HKK(1888G	Hm	 ()Y'( (	H H( (r  	int_dtype)uint8int32int64c                   t         j                  j                  d      }t        j                  |j                  dd      |j                  dd      d|       }t        j                  |d      }|j                  d	      d
   j                         }|j                  d	      d
   j                         }t        |j                         |j                                y )N*   rI   rS  r   rO   )r  r  r  rw   r  r  )r  r  RandomStaterT   rU   r2  rW   rX   rY   uniquer   explode)r  rngr   r^   pd_gbdd_gbs         r+   test_groupby_uniquer  9  s     ))


#C	AC(Rc1JK
B
 ..
,CJJue$++-EKKu%,,.E emmou}}/r-   r   r  r  c                   t         j                  j                  d      }t        j                  |j                  dd      |j                  dd      |j                  dd      d|      }t        j                  |d	
      }|j                  |       j                  j                         }|j                  |       j                  j                         }t        ||       y )Nr  rI   rS  r  rJ   ro   )r  r  r  r  rH   rw   )r  r  r  rT   rU   r2  rW   rX   rY   r  r  r   )r   r  r  r   r^   r  r  s          r+   test_groupby_value_countsr  K  s     ))


#C	;;qs;+;;qs;+;;qs;+	

 
B ..
+CJJrN++-EKKO,,.EeUr-   c                 f   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      } | j                  d	      d
   j                         }t	        j
                  | d      }|j                  d	      d
   j                         }t        ||       y)z9Repro case for https://github.com/dask/dask/issues/10322.rO   ro   rK   rI   rG   rH   rJ   rQ   rR   rS   rw   N)rT   rU   rY   r  rW   rX   r   )r   countsr^   dcountss       r+   test_groupby_value_counts_10322r  ^  s    	QC!G#qcAg-qA37"aS1W,sQw6!q@	

B ZZ_S!..0F
..
+Ckk#s#002Gfgr-   c              #  D  K   t        j                         5 }d  d d d        d}| dk(  r|dz  }|s)J j                  D cg c]  }|j                   c}       d   j                  t
        u sJ dt        |d   j                        v sJ y # 1 sw Y   txY wc c}w w)NrG   r   r   )r=   r>   rV   messagecategoryr   rf   )r7   r  expected_lenrR   s       r+   groupby_axis_and_metar  l  s      
 6Lqy9V[[9!))99<":+---$F2J,>,>(???? 
 :s'   B B%B B;B BB c                 f   t        j                  g dg dd      } t        j                  | d      }t	        j
                  t              5  t        | j                  d      d   j                  d	      |j                  d      d   j                  d	             d d d        y # 1 sw Y   y xY w)
N	r   r   rG   rG   rH   rH   rI   rI   rI   rp   rq   rI   rw   rr   rs   rH   rD  )
rT   rU   rW   rX   r=   r>   r   r   rY   shiftr]   r^   s     r+   test_groupby_shift_seriesr
  z  s    
,,,,	
C ..!
,C	k	" 
KKS!'''2KKS!'''2	

 
 
s   AB''B0z'delayed not currently supported in herec            	        t        j                  g dg dg dd      }  t        j                  d              }t	        j
                  | d      }t        | j                  | j                        j                  d	      |j                  |j                        j                  |t        t        d
             t        j                  t              5  t        | j                  | j                        j                  d| j                  j                               |j                  |j                        j                  d|j                  j                                      d d d        y # 1 sw Y   y xY w)Nr  rp   )	r   r   r   r   r   rG   rG   rG   rG   r   c                      yr   r1   r1   r-   r+   r}   z/test_groupby_shift_lazy_input.<locals>.<lambda>  r   r-   rI   rw   rG   r  rq   )rD  r  )rD  r  )rT   rU   r   delayedrW   rX   r   rY   r   r  r  r=   r>   r   rs   r   )r]   delayed_periodsr^   s      r+   test_groupby_shift_lazy_inputr    s   
,,,,,	
C .dll9-/O
..!
,CCEE   +CEE  Ss?S T 
k	" 
KK$$Q35599;$GKK$$Q35599;$G	

 
 
s   BE//E8zignore:`meta` is not specifiedc                    t        d      D ]  } t        j                  t        d      g ddz  g ddz  d      }|j                  d      j	                         }t        j                  |d	      }t        |j                  d
      d   j                  d      |j                  d
      d   j                  d      d        y )NrO   <   )rH   rJ   rI   rG   rT  )NrO   r  N   (   r   rr   rK   rw   rs   r   rG   r   r   )
r   rT   rU   r   r   rW   rX   r   rY   r  )_r   r^   s      r+   +test_groupby_shift_within_partition_sortingr    s     2Y 
\\2Y!B&1B6
 \\#))+nnRQ/JJsOC &&q)KKS!''*	

r-   c                   t        j                  t        g dg d      t        j                  dd            }t	        j
                  |d	      }|j                  |j                        j                  d
d      }t        ||j                  |j                        j                  d
d|      d       |j                  d      j                  d
d      }t        ||j                  d      j                  d
d|      | dk7         y )NrG   rH   rI   rJ   ro   rK   )r   r   r   rG   rG   rG   rq   rA  rK   rB  ru   rI   rw   r  rD  freq)rD  r  r  F)
check_freqrs   rR  )
rT   rU   r  rF  rW   rX   rY   rv   r  r   )r3   r]   r^   	df_results       r+   test_groupby_shift_with_freqr    s    
,,!%78mm*a8C ..!
,C CII&,,Rc,BI CII$$Rc	$J
 C &&r&<ICr)D "V+r-   transformationc                "    | j                         S r0   r  rz  s    r+   r}   r}     s     r-   c                   t        j                  g ddz  t        j                  j	                  d      t        j                  j	                  d      t        j                  j	                  d      d      }t        j                  |d      }t        j                  t              5  t        |j                  d      j                  |       |j                  d      j                  |              t        |j                  d      d   j                  |       |j                  d      d   j                  |              d d d        y # 1 sw Y   y xY w)Nr  ro   r  r  rI   rc   rl  )rT   rU   r  r  r  rW   rX   r=   r>   r   r   rY   r  )r  r]   r^   s      r+   test_groupby_transform_funcsr!    s     ,,!$$$		
C ..a
 C	k	" 
KK&&~6KK&&~6	
 	KKS!++N;KKS!++N;	

 
 
s   &BEErO   indexednot_indexed)idsc                Z   t        j                  g ddz  t        j                  j	                  d      d      }|r|j                  d      }t        j                  ||       }t        j                  t              5  t        |j                  d      j                  d       |j                  d      j                  d              t        |j                  d      d   j                  d	       |j                  d      d   j                  d
              d d d        y # 1 sw Y   y xY w)Nr  r  rS  r  r  c                (    | | j                         z
  S r0   r   seriess    r+   r}   z;test_groupby_transform_ufunc_partitioning.<locals>.<lambda>      &6;;=:P r-   c                (    | | j                         z
  S r0   r   r'  s    r+   r}   z;test_groupby_transform_ufunc_partitioning.<locals>.<lambda>  r)  r-   rg   c                (    | | j                         z
  S r0   r   r'  s    r+   r}   z;test_groupby_transform_ufunc_partitioning.<locals>.<lambda>      v5 r-   c                (    | | j                         z
  S r0   r   r'  s    r+   r}   z;test_groupby_transform_ufunc_partitioning.<locals>.<lambda>	  r,  r-   )rT   rU   r  r  r  r   rW   rX   r=   r>   r   r   rY   r  )rx   r"  r]   r^   s       r+   )test_groupby_transform_ufunc_partitioningr.    s     ,,2!5		PS@TU
VCmmG$
..k
*C	k	" 
KK **+PQKK **+PQ	
 	KK )335 KK )335		

 
 
s   =BD!!D*zgrouping,aggc                D    | j                  d      j                  d      S N
category_2r   
category_1droprY   r   s    r+   r}   r}   	      rww|w4<<\J r-   c                "    | j                         S r0   r   r|  s    r+   r}   r}   	      
 r-   c                D    | j                  d      j                  d      S r0  r3  r   s    r+   r}   r}   	  r5  r-   c                $    | j                  d      S Nr   r   r|  s    r+   r}   r}   	       r-   c                (    | j                  ddg      S Nr2  r1  r{   r   s    r+   r}   r}   	      rzz<">? r-   c                "    | j                         S r0   r   r|  s    r+   r}   r}   	  r7  r-   c                (    | j                  ddg      S r>  r{   r   s    r+   r}   r}   	  r?  r-   c                $    | j                  d      S r:  r;  r|  s    r+   r}   r}   	  r<  r-   c                   t        j                  t        j                  t        d            t        j                  t        d            t        j
                  j                  d      d      }t        j                  |d      }t               5   | | |            }d d d        t        r!t        st        j                  t        d      nt        j                          }|5   | | |            }t#        |       d d d        t               5   | | |      d	         }d d d        |5   | | |      d	         }d d d        t#               y # 1 sw Y   xY w# 1 sw Y   bxY w# 1 sw Y   JxY w# 1 sw Y   :xY w)
NAABBCCABCABCrK   r  )r2  r1  rg   rH   observedr8   rg   )rT   rU   CategoricalrV   r  r  uniformrW   rX   r   r   r   r=   r>   r?   r:   r   r   )groupingr   r]   r^   r   observed_ctxr	  s          r+   #test_groupby_aggregate_categoricalsrK  	  sJ   , ,,..h8..h8YY&&A&.	
C ..a
 C 
$	% &x}%&
  	]*5##% 
 
 $Xc]#&(#$
 
$	% /x}W-./ 
 -Xc]7+,-fh%& &$ $
/ /- -s0   E$E E,-E8E E),E58Fr   c                V    | j                  t        t        j                  d            S NrG   r`  r   r   r  r   r|  s    r+   r}   r}   ?	      CGGGBFF34 r-   c                V    | j                  t        t        j                  d            S Nr  r`  rN  r|  s    r+   r}   r}   @	      CGGGBFF45 r-   c                V    | j                  t        t        j                  d            S rM  r   r   r  r   r|  s    r+   r}   r}   A	  rO  r-   c                V    | j                  t        t        j                  d            S rQ  rT  r|  s    r+   r}   r}   B	  rR  r-   c                N   t        j                  g dg dd      }t        j                  |d      }t	         | |j                  d             | |j                  d                   t	         | |j                  d      d          | |j                  d      d                y )Nro   rJ   rI   ro   rJ   rH   rI   rH   rG   rH   ro   rK   rN   rH   rK   rM   rq   rH   rw   rr   rs   r
  r   r]   r^   s      r+   'test_groupby_aggregate_partial_functionrZ  <	  s     ,,))	
C ..!
,C c#++c"#SS)9%:; c#++c"3'(#ckk#.>s.C*DEr-   c                V    | j                  t        t        j                  d            S NrG   )unexpected_argrN  r|  s    r+   r}   r}   X	      CGGGBFF1=> r-   c                V    | j                  t        t        j                  d            S r\  rT  r|  s    r+   r}   r}   Y	  r^  r-   c                   t        j                  g dg dd      }t        j                  |d      }t	        j
                  t        d      5   | |j                  d             d d d        t	        j
                  t        d      5   | |j                  d      d	          d d d        y # 1 sw Y   HxY w# 1 sw Y   y xY w)
NrW  rX  rq   rH   rw   zlsupports {'ddof'} keyword arguments, but got {'unexpected_arg'}|unexpected keyword argument 'unexpected_arg'r8   rr   rs   rT   rU   rW   rX   r=   rd   r4  rY   rY  s      r+   9test_groupby_aggregate_partial_function_unexpected_kwargsrb  U	  s     ,,))	
C ..!
,C	;
  	CKK 
;
 # 	CKKS!"# # # #   B.
B:.B7:Cc                T    | j                  t        t        j                  d            S Npositional_argrN  r|  s    r+   r}   r}   |	      CGGGBFF,<=> r-   c                T    | j                  t        t        j                  d            S re  rT  r|  s    r+   r}   r}   }	  rg  r-   c                   t        j                  g dg dd      }t        j                  |d      }t	        j
                  t        d      5   | |j                  d             d d d        t	        j
                  t        d      5   | |j                  d      d	          d d d        y # 1 sw Y   HxY w# 1 sw Y   y xY w)
NrW  rX  rq   rH   rw   zdoesn't support positional arguments|'Series' object cannot be interpreted as an integer|cannot convert the series to <class 'int'>r8   rr   rs   ra  rY  s      r+   7test_groupby_aggregate_partial_function_unexpected_argsrj  y	  s     ,,))	
C ..!
,C	:
  	CKK 
:
 # 	CKKS!"# # # #rc  dropnac                .   t        j                  g dg dd      }t        j                  |d      }|j	                  d|       j
                  j                         }|j	                  d|       j
                  j                         }t        ||       y )NrG   rH   rI   rJ   NNrL   rM   rJ   ro   rK   rI   rH   rG   r   r   )rr   erI   rw   rr   )rk  )rT   rU   rW   rX   rY   ro  r   r   )rk  r   r^   dask_result	pd_results        r+   test_groupby_dropna_pandasrr  	  sw    	,3KL
B ..
+C++c&+133779K

3v
.00446Ik9%r-   )FTNc                   t        j                  d      }t        j                  d      }|j                  g dddgdz  g dg dd	      }|d
   j                  d      |d<   |j	                  |d      }| W|j                  ||      j                  j                         }|j                  ||      j                  j                         }nX|j                  || |      j                  j                         }|j                  || |      j                  j                         }|dv r5|j                         }|j                  j                  |j                  _
        t        ||       y )Ncudf	dask_cudfrm  rG   r   rJ   rr   rs   NNro  fr   hrn  rr   rs   r   ro  r   r  r   rI   rw   r  )rk  r  r   r   )r=   importorskiprU   r   	from_cudfrY   ro  r   ri   rv   r  r   )	rk  r   r  rt  ru  r   r^   rp  cudf_results	            r+   test_groupby_dropna_cudfr~  	  s?    v&D##K0I	/Q!;)		

B gnnZ(BsG


ba

0C~kk"k<>>BBDjj
j;==AACkk"V
kKMMQQSjjFzjJLLPPR	Z!))+!,!2!2!7!7k;'r-   c                   t        j                  d      }t        j                  d       t        j                  g dg dg dd      }|j	                  |      } t        |      |       } t        |      |       }|j                  |      j                  d	      }|j                  |      j                  d	      }t        ||       y )
Nrt  ru  )rr   rs   r   r   ro  rw  r   rx  rG   rH   rI   rJ   ro   rK   rL   rM   )r8  r  g      @gffffff@      @gffffff@g@g!@r   r%  Tnumeric_only)	r=   r{  rT   rU   rX   r   rY   r   r   )r%  rt  r]   gdf
pd_grouper
gd_grouperr  gots           r+   test_groupby_grouper_dispatchr  	  s     v&D $
,,9)9	
C 

3
C&!#&3/J&!#&3/J[[$((d(;F
++j
!
%
%4
%
8Cfcr-   c                0   t        j                  d       t        j                  d      }t        j                  g dg dd      }t	        j
                  |d      }|j                  d      }d } |j                  d	| 
      j                  |fi t        } |j                  d	| 
      j                  |fd|it        } |j                  d	| 
      j                  |fd|j                  |      it        }t        ||       t        ||d       y )Nru  rt  r   )rJ   ro   rK   rL   rM   rN   rq   rH   rw   c                    | S r0   r1   rz  s    r+   r}   z)test_groupby_apply_cudf.<locals>.<lambda>
  s    Q r-   rr   r  r  Fr)  )r=   r{  rT   rU   rW   rX   
to_backendrY   r   r   r   )	r  rt  r   r^   dcdfr   res_pdres_ddres_dcs	            r+   test_groupby_apply_cudfr  	  s	    $v&D	.5GH	IB
..
+C>>&!DD9RZZ
Z399$Q.QF:S[[[4::+F <T\\#*\5;;##F+/=F ff ff%0r-   c                   t        j                  g dg dg dd      }|j                  ddgd|       j                  d	      }t	        j
                  |d
      }|j                  ddgd|       j                  d	      }t        ||       y )N)rr   Nrs   )rG   rH   N)g      @r  N)id1id2v1r  r  F)rk  r_  r   rG   )rT   rU   rY   r   rW   rX   r   )r_  r   r   r^   r  s        r+   test_groupby_dropna_with_aggr  
  s     
 =MN
B zz5%.TzBFFuMH
..Q
C[[%D[AEEeLFhr-   c                    t        j                  t        j                  t        d      t        d            t        j                  ddgg d      t        j
                  j                  d      d      } | j                  d	d
gd      j                  d      }t        j                  | d      }|j                  d	d
gd      j                  d      }t        ||       y )Nr  ABCDE)
categoriesrG   rH   r  r  cat_1cat_2value_1r  r  TrF  r   )rT   rU   rG  rV   r  r  rH  rY   r   rW   rX   r   )r   r   r^   r  s       r+   test_groupby_observed_with_aggr   
  s    	^^DJ4=I^^QFyAyy((a(0	

B zz7G,tz<@@GH
..Q
C[['7+d[;??FFhr-   c                    t        d      D  cg c]  } d }} t        d      D  cg c]  } d c} t        d      D  cg c]  } d c} z   }t        j                  ||d      }t        j                  |d      }t        |j                  d      j                  j                         |j                  d      j                  j                                y c c} w c c} w c c} w )	NrO   gE}]ro   rG   rH   )r$  rR   rw   r$  )	r   rT   rU   rW   rX   r   rY   rR   r   )r  rR   r$  r   r^   s        r+   test_rounding_negative_varr  /
  s    !&r+A+A+Ah
1
eAh"71"7
7C	c*	+B
..
+Cckk% ""&&("**U*;*=*=*A*A*CD 	,
"7s   	C	C	C rI   columnro  c                   t        j                  t        j                  d      g dddgdz  g dd      j	                  d      }|d   j                  d	      |d
<   t        j                  |d      }|dd
gk(  r(t        r"t        st        j                  t        d      }nt        j                         }|5  |j                  |d      j                   j#                  d      j%                         j'                         }|j                  |d      j                   j#                  |       j%                         j'                         }d d d        t)               y # 1 sw Y   xY w)NrM   )rG   r   r   rH   rG   rG   rH   r   r   rG   rJ   )dogcatr  r  r  r  r  birdr   r   r  ro  rI   rw   rs   rF  r8   Fr^  r  )rT   rU   r  r  fillnar   rW   rX   r   r   r=   r>   r?   r:   r   rY   rr   r   ri   rk  r   )rP  r  r   r^   rB   
result_so1r	  s          r+   !test_groupby_split_out_multiindexr  9
  s+    
1)Q!J		

 fQi  gnnZ(BsG
..
+C#smll=
;$$&	 

KKUK+--22Q2?GGIPPR 	
 KKUK+Qttit(WYVX	 	

 fj!

 

s   9BE!!E*backendpandasrt  c                   t        j                  |       }| dk(  r"t        j                  d      }|j                  }nt        j                  }t        j                  t
        j                        j                  }|dz  }|j                  t        j                  |t        j                  d      z  t        j                  d      g            j                  d      }|j                  |t        j                  d      t        j                  d      d      } ||d	
      }t        |j                  d      j!                         |j                  d      j!                         j#                  d             y )Nrt  ru  r/  ro   #   r  r  )rR   r  rS   rG   rw   rR   zsingle-threadedr   )r=   r{  r|  rW   rX   r  iinfouint64r   r\   concatenater  r   rU   r   rY   r   ri   )	r  data_sourceru  
data_framer   sqrtr(  r   r^   s	            r+   !test_groupby_large_ints_exceptionr  [
  s    %%g.K&''4	((
^^

((299

!
!C8D
ryy|+RYYr];<fWo  
		V"))B-biiPRmT	UB
RQ
'C


3C&&1B&Cr-   c                :   t        j                  g dddgdz  g dg dd      }t        j                  |d	      }|j	                  | |
      }|j	                  | |
      }t        ||      }t        ||      }t        |j                  |      }	t        |j                  |      }
|j                  d|i      }|j                  d|i      }|dk(  r/t               5 } |       j                  d      }d d d        t               5 } |       }d d d        t              t              k(  sJ t               t               5 } |
       j                  d      }d d d        t               5 } |	       }d d d        t        |      t        |      k(  sJ t        ||       t               5 }|j                  d      }d d d        t               5 }|}d d d        t        |      t        |      k(  sJ t        ||       y t               5 } |       }d d d        t               5 } |       }d d d        t              t              k(  sJ t               t               5 } |
       }d d d        t               5 } |	       }d d d        t        |      t        |      k(  sJ t        ||       t               5 }|}d d d        t               5 }|}d d d        t        |      t        |      k(  sJ t        ||       y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   {xY w# 1 sw Y   sxY w# 1 sw Y   @xY w# 1 sw Y   3xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w)Nrm  rG   r   rJ   rv  rn  ry  rI   rw   r^  ro  r   r   )rT   rU   rW   rX   rY   r   ro  r   r  r   r  r   )r   r   r_  r   r^   gbgb_pdresult_1result_1_pdresult_2result_2_pdresult_3result_3_pdr  r   r  r	  s                    r+   test_groupby_sort_argumentr  v
  sT   , 
/Q!;)		

B ..
+C	Rd	#BJJrJ%E r3H%%K rttS!H%''3'K vvsCj!H))S#J'K
f})+ 	5v"}++G4H	5)+ 	 vZF	 6{c&k)))&(#)+ 	5v"}++G4H	5)+ 	 vZF	 6{c&k)))&(#)+ 	3v"))'2H	3)+ 	vF	6{c&k)))&(#)+ 	%v"}H	%)+ 	 vZF	 6{c&k)))&(#)+ 	%v"}H	%)+ 	 vZF	 6{c&k)))&(#)+ 	#v"H	#)+ 	vF	6{c&k)))&(#Q	5 	5	  	 
	5 	5	  	 
	3 	3	 	
	% 	%	  	 
	% 	%	  	 
	# 	#	 	s   LLL.L+-L8MM&M%M,?M9>NNLLL(+L58MMMM),M69NNNc                ,   t        j                  g dg dd      }t        j                  |d      } | |j	                  d|            } | |j	                  d|            }t        ||       |r!t        |j                  |j                         y y )NrJ   rH   rG   rH   rI   rG   r  rQ   rI   rw   rR   r^  )rT   rU   rW   rX   rY   r   rv   )r   r_  r   r^   r	  r  s         r+   test_groupby_sort_argument_aggr  
  s}     
.5GH	IB
..
+CSt,-FBJJsJ./Ifi  	&,,	0 r-   c                    t        j                  g dg dd      } t        j                  | d      }t	        j
                  |j                  dd      d	
       t	        j
                  |j                  dd      d
       |j                  d      j                  d
       |j                  d      j                  dd
       |j                  dd      j                  ddd       y )Nr  r  rQ   rI   rw   rR   Tr^  rG   r  FrH   r   )rP  r3   )rT   rU   rW   rX   r   r   rY   r   r-  s     r+    test_groupby_sort_true_split_outr  
  s    	.5GH	IB
..
+C EE#++c+
%3EE#++c+
&!4KK1%KK!, KK$K##EQt#Lr-   
known_catsknownunknownordered_catsordered
unordererdrY   r  r  rF  
unobservedc           	        dv rt        j                  d       dk(  r%t        |t              rt        j                  d       dk(  rt        j                  d       dv r|dk7  rt        j                  d       d	v r|rt        j                  d
       dv rt        j                  d       t        j                  t        j                  t        d      t        d      |      t        j                  ddgg d|      t        j                  j                  d      d      }t        j                  |d      }| s@|d   j                  j                         |d<   |d   j                  j                         |d<   fd}|du rdv r|dk(  r|ddg   }|ddg   }t!         ||j#                  ||             ||j#                  ||                   y )N)r    r!   r"   z)Not implemented for DataFrameGroupBy yet.r   z'Can't calculate median over categoricalz7Can't deal with unobserved cats in median at the moment)r   r   r%   r  zGives zeros rather than nans.)r   r   z&Can't calculate observed with all nans)r   r%   z1Not implemented for category type with pandas 2.0r  r  )r  r  rG   rH   r  r  r  r  c                (     t        |       di |S rV  rW  )r}  rZ  r,   s     r+   r   z8test_groupby_aggregate_categorical_observed.<locals>.agg  s    %wsH%///r-   F)r   r   r  r  )r=   ra  rZ   rf   xfailrT   rU   rG  rV   r  r  rH  rW   rX   r  
as_unknownr   rY   )r  r  r,   rY   rF  r]   r^   r   s     `     r+   +test_groupby_aggregate_categorical_observedr  
  s    --?@8
7C 8=>8MN++70B34>!h<=?"HI
,,^^T
tG}l ^^QFy,Wyy((a(0	
C ..a
 C7|''224G7|''224G0
 u^!;7@R7I&'7I&'CKK(K34CKK(K34r-   c                 l   t        j                  dt        j                  d      t        j                  d      t        j                  d      gdd      } t        j                  | d      }t        |j                  d      j                  d      | j                  d      j                                y )	NrG   z
2019-12-31rH   r   rw   rs   Tr  )rT   rU   	TimestamprW   rX   r   rY   r    r	  s     r+   ,test_groupby_cov_non_numeric_grouping_columnr  "  s    
,,\*\*\*
 	

C ..!
,Cckk#"""5s{{37G7K7K7MNr-   c                 
   t        j                  g dg dd      } t        j                  | d      }t	        j
                  t              5  |j                  d       j                  d       d d d        y # 1 sw Y   y xY w)	Nr  r   )rr   NrG   rw   c                    | S r0   r1   rz  s    r+   r}   z<test_groupby_numeric_only_None_column_name.<locals>.<lambda>7  s    a r-   Fr  )	rT   rU   rW   rX   r=   rd   rh   rY   r   r-  s     r+   *test_groupby_numeric_only_None_column_namer  3  sa    	I_=	>B
..
+C	*	+ :K %%5%9: : :s   #A99Br3   c                   t        j                  g dg dg dd      }t        j                  |d      }|j	                  d      j                  t        j                  dd	
      t        j                  dt        t        j                  d      
            }|j	                  d      j                  | t        j                  dd	
      t        j                  dt        t        j                  d      
            }t        ||       y )Nr  )rG   rH   ro   rK   )rK   rI   rK   rL   r   rH   rw   rr   rs   r   )aggfuncr   rG   r`  rQ   )r3   rR   rS   )rT   rU   rW   rX   rY   r   NamedAggr   r  r   r   )r3   r   r^   r   r  s        r+   test_dataframe_named_aggr  :  s    		

B ..
+Czz#""
++c5
)
++c7266#:
; # H [[!!%
++c5
)
++c7266#:
; " F
 hr-   r`  c                4   t        j                  g dg dd      }t        j                  |d      }|j	                  d      j
                  j                  |d      }|j	                  d      j
                  j                  | |d	      }t        ||       y )
NrW  rX  rq   rH   rw   rr   r   rz  )r3   r   r   )rT   rU   rW   rX   rY   rs   r   r   )r3   r   r   r^   r   r  s         r+   test_series_named_aggr  Q  s     
))	

B ..
+Czz#  $$se$4H[[##>SE#RFhr-   rc   rl  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                         }|j	                  |       j
                  j                         }t        j                  |d	
      }|j	                  |       j
                  j                         }t        ||       y )N)a1b1T)r  NF)NNN)a3b3T)r  r  F)a5b5Trc   rl  ru  r   r   rI   rw   )
rT   rU   r   convert_dtypesrY   ru  r  rW   rX   r   )r   r   r   r^   r  s        r+   'test_empty_partitions_with_value_countsr  a  s     


  
B   zz"~,,.H
..
+C[[_++-Fhr-   c                    t        j                  t        j                  g dg dg dd      d      } t	        j
                  t              5  | j                  t        j                  d             d d d        t	        j
                  t              5  | j                  dt        j                  d	      g       d d d        y # 1 sw Y   SxY w# 1 sw Y   y xY w)
Nrr   rs   rr   r   r   r   r  )key1key2rg   rI   rw   r  r  r  )	rW   rX   rT   rU   r=   rd   rh   rY   Grouperr|   s    r+   test_groupby_with_pd_grouperr  z  s    
..
$o	R	
 	C 
*	+ ,BJJ6*+,	*	+ 6VRZZF3456 6, ,6 6s   &C(CCCz/ignore:Invalid value encountered:RuntimeWarning	operationrF  rE  c                F   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
      } ||j	                  d      d         }t        j                  |d      } ||j	                  d      d         }t        ||       y )Nr  r  r  r  r  r  rc   rl  r  rG   rI   rw   rT   rU   operatormethodcallerrY   rW   rX   r   r  r   callerr   r^   r  s         r+   1test_groupby_empty_partitions_with_rows_operationr    s     
4L4L4L4L4L4L4L4L4L

 c

B ""9a0Fbjjoc*+H
..
+CCKK$S)*Fhr-   c                D   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                  |       } ||j	                  d	      d
         }t        j                  |d      } ||j	                  d	      d
         }t        ||       y Na0r  b2r  r  r  r  r  rc   rl  r  rI   rw   r  r  s         r+    test_groupby_with_row_operationsr    s    	4L4L4L4L4L4L4L4L4L

 c

B ""9-Fbjjoc*+H
..
+CCKK$S)*Fhr-   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                  |       } ||j	                  d	|d	   j                  d      g      d
         }t        j                  |d      } ||j	                  d	|d	   j                  d      g      d
         }t        ||       y r  )	rT   rU   r  r  rY   eqrW   rX   r   r  s         r+   ,test_groupby_multi_index_with_row_operationsr    s    	4L4L4L4L4L4L4L4L4L

 c

B ""9-Fbjj#r#wzz$'7!89#>?H
..
+CCKKc#hkk$&7 89#>?Fhr-   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        |j                  d             d d d        y # 1 sw Y   y xY w)Nr  r  r  r  r  r  r  rc   rl  r  rG   rw   z
Column notr8   )	rT   rU   rW   rX   r=   rd   re   rV   rY   r-  s     r+   test_groupby_iter_failsr    s    	4L4L4L4L	
 c

B ..
+C	x|	4 S[[  s   A<<Br  r  	slice_keyrg   )rg   c                   t        j                  g dg dg dg dd      }t        j                  |d      }|j	                  |       |   j                         }|j	                  |       |   j                         }t        ||       y )Nr  r  r  )r  r  rg   rI   rI   rw   )rT   rU   rW   rX   rY   r   r   )r   r   r]   r^   r  r  s         r+   test_groupby_slice_getitemr    su     ,,##		
C ..!
,C[[_Y'--/F
++b/)
$
*
*
,Cfcr-   r  z(https://github.com/dask/dask/issues/9882r  r  )NTFc           	        t        j                  g dg dt        j                  ddd      g dd      }t        j                  |d	
      }|i nd|i}t        j                         }	  t        |j                  d      |       di |}d}|5   t        |j                  d      |       di |}|rt        |       d d d        y # t        $ r  t        j                  t        d      }d}Y cw xY w# 1 sw Y   y xY w)N)rJ   rJ   ro   ro   ro   )rG   rH   rI   rJ   rG   z
2015-01-01ro   1minr  )qr   r  rr   l)intsints2datesr   rI   rw   r  r  TzECannot convert|could not convert|does not support|agg function failedr8   Fr1   )rT   rU   rF  rW   rX   r:   r   r   rY   r4  r=   rd   r   )	r   r  r]   r^   rZ  rB   r   successful_computer	  s	            r+   #test_groupby_numeric_only_supportedr    s   2 ,,#$]]<H0		
C ..!
,C'Rnl-KF

 
 
"C
#573;;v.5??! 
 (3V,d3=f=h'	( (  # mmY
 ##( (s   +#C	 0C5	&C21C25C>c                &   t        j                  g dg dg dd      }t        j                  |d      }t	        j
                  t        d      }|i nd
|i}|5   t        |j                  d      |       di | d	d	d	       y	# 1 sw Y   y	xY w)zIThese should warn / error when numeric_only is set to its default / False)rG   rG   rH   )rI   rJ   rI   r   r  rI   rw   z/'numeric_only=False' is not implemented in Daskr8   Nr  rc   r1   )	rT   rU   rW   rX   r=   rd   rh   r   rY   )r   r  r   r^   rB   rZ  s         r+   )test_groupby_numeric_only_not_implementedr  6  s     
IIOL	MB
..
+C
--#TC  'Rnl-KF	 2'C $'1&12 2 2s   "BB)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      } t	        |j                  d      |       d	      } t	        |j                  d      |       d	      }t        ||       y )
Nr  r  r   r  rH   rw   rc   Tr  )rT   rU   rW   rX   r   rY   r   )r   r   r^   
ddf_result
pdf_results        r+   test_groupby_numeric_only_truer  F  sk    0 
L|BVW	XB
..
+C0S)40dCJ/C$/TBJj*%r-   c                   t        j                  g dg ddd      }t        st        j                  g d      |d<   t	        j
                  |d      } t        |j                  d      |       d	
      } t        |j                  d      |       d	
      }t        ||        t        |j                  d      |       d
      } t        |j                  d      |       d
      }t        ||       y )N)r8  r  r        @ro         @      @       @r  rG   )r   r  rc   	timedeltarH   rw   rc   Fr  T)	rT   rU   r   to_timedeltarW   rX   r   rY   r   )r   r   r^   	dd_resultrq  s        r+   (test_groupby_numeric_only_false_cov_corrr  e  s     
;+	

B  //*BC;
..
+C/C($/UCI.

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

3.DAIi#r-   c                    t        j                  g dddddt        j                  dddgt         j                  gt        d	d
      D cg c]  }t        d|d	       c}z   d	d      }t        j                  |d      }t        j                  t        d      }|5   t        |j                  d      |       d       d d d        |5   t        |j                  d      |       d       d d d        |5   t        |j                  d      |               d d d        |5   t        |j                  d      |               d d d        y c c}w # 1 sw Y   xY w# 1 sw Y   qxY w# 1 sw Y   RxY w# 1 sw Y   y xY w)Nr  r8  r  r  r  r  r  r  rG   rM   i  )r  r   dtrc   rH   rw   zdoes not supportr8   rc   Fr  )rT   rU   r  r  NaTr   r   rW   rX   r=   rd   r4  r   rY   )r   rL  r   r^   rB   s        r+   test_groupby_numeric_only_falser    sM   	+3S"&&#sC@66(E!QKHqhtQ2HH		

B ..
+C
--	);
<C	 <'C $'U;<	 ;&

3&E:; 
 *'C $')*	 )&

3&() ) I< <; ;* *) )s6   E#E	#E6!E(!!E4EE%(E14E=c                d   t        j                  g dt        j                  dgdz  t        j                  gz   ddg      d      }t        j                  |d      } t        |j                  d	|| 
      |             } t        |j                  d	|| 
      |             }t        ||       y )N)
r#        rG   rH   rI   rJ   ro   rK   rO   rG   rN   rH   )r   r  rq   rI   rw   rs   )rF  rk  )
rT   rU   rG  r  r  rW   rX   r   rY   r   )rk  rF  r   r   r^   r  r  s          r+    test_groupby_var_dropna_observedr"    s     
3sQw"&&'9q!fM	

B ..
+CQC(6JDQSIQC(6JDQSJi$r-   c            
         d} d}d}t        j                  t        j                  j	                  dd| t
              t        j                  t        j                  t        j                  |      z  t        j                  j                  | |z
              d      }t        j                  ||      }t        |j                  d	      d
   j                         |j                  d	      d
   j                                y )NrS  Z   rO   r   rH   )r   r  r  rw   rc   rl  )rT   rU   r  r  r2  boolappendr  zerosr  rW   rX   r   rY   r  )r   na_sizerx   r   r^   s        r+   +test_groupby_value_counts_all_na_partitionsr)    s    DGK	""1ad$"?266BHHW$55ryytg~7VW	

B ..
5CC**,


3))+r-   c                    t        j                  d       t        j                  t	        d      t        j
                  t        j                  gdz  dgdz  z   d      dgdz  d	gdz  z   d
gdz  z   d      } t        j                  | d      }t        rddi}ni } |j                  d      j                  dddd|} | j                  d      j                  dddd|}t        ||       y )NpyarrowrT  rO   r8  ro   zdouble[pyarrow]r  rr   rs   r   )rR   rS   r  rH   rw   r  )rS   r   r  )rS   r   )rS   r   rQ   r1   )r=   r{  rT   rU   r   r\   NArW   rX   r	   rY   r   r   )r   r^   additional_aggsr	  r   s        r+   test_agg_pyarrow_castsr.    s    
	"	rBEE7R<3%!)3;LMUQY#*cUQY6	

B ..
+C-%S[[!%% 
-+:F 'rzz'"&& 
-+:H fhr-   r0   )r   )
__future__r   r:   r  sysr   r   	functoolsr   numpyr  r  rT   r=   r   dask.dataframe	dataframerW   dask._compatibilityr   r   dask.dataframe._compatr   r	   r
   r   r   r   dask.dataframe._pyarrowr   dask.dataframe.backendsr   r  r   dask.dataframe.utilsr   r   
dask.utilsr   r)   markr  	AGG_FUNCSr   fixturer,   r4   contextmanagerrC   ra   rl   r   parametrizer   r   r   r   r   r   r
  r  r  r  r#  r'  r.  r5  rM  rc  r  r  r  r  r  r  r  r  r  r  r  r  r  r  flakyr  r  r  r  r  r  r  r   r"  skipifversion_infor)  r,  r9  r=  rO  rS  rU  rX  ra  r   r   rh  r  custom_mean
custom_sumry  r{  r  r  r  rV   r  r  r  r  r  r  r  arrayr  r  r  r  r  r  r  r  r  skip_with_pyarrow_stringsr  r  r  r  r
  r  r  r  r  r   r\   rankr!  r   r.  rK  rZ  rb  rj  rr  gpur~  r  r  r  r  r  r  r  r  r%   r   r  r  r  r  r  r  r   r  r  r  r  r  r  r  r;  r  ra  r  r  r  r  r  r"  r)  r.  r1   r-   r+   <module>rI     sq   "   
         ' "  6 4 ? C  
FLLkk7   
 		
FLLkk7   
 FLLkk7   
 FLLkk7   
 FLLkk7   
 

[.	` /<"E* y! " 
 
 /3   EF) G)!BL( %-	 T5M2
 3	
0# vy&9:- ;-` ').2.).&&R0 	~			 	#$	B	B<    /!BC  D 0 )*.&R 4-0yB 1yBx ]K$@A7L B7Lt "&*''+/(,.26( 
B4:)6: '/
 
J<

$
88.
5M2<6 A/q"g. / 06 $/5 058I& 3/3N!OP#Sz!23  4 Q   ':;,/ 0 <2 ':;,/ 0 <2 !%-	 q!f-D .	 DN %- q!f-$ .$N'D> 
3A/j1
/ 2 0 4
/
3&'F *  7*L   c3c
S#J GHsCj 12!BC7 D 3 I	7"K&RR
, *  7*L   )45! 6	
!2   C#c
SE#BC  D  *  7*L   &G$'	.G$T sElUGU'STVVRWWOP(P	 U
(PV bnn
"'	 R^^E#46IJ
 )
vk*E2
uZ($/
%;
3U;
	#Z'@!A5I	99 	
K=!
%;
3433;3*% P %/
  0
    
++##+O#P	
 	++##+O#P	
 	++##+O#P	
 	++##')?-.?+ $ 	
0 10 6BB
 l3
 4
@ ':; <$ hbhh/.Q$	$.#  D%=1( 2(4#  D%=1( 2(2#$ D%=1( 2(2#$ D%=1( 2(4 &&&AB0 C '0  u~67&AB C 8" 
@ 
@
 CD
 E
* <=
 >
(6 ("&&%H

2 U1b\(:;T5M	=7QR
 S <
4  K"	

 K'	

 @"	

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