
    Gohd                     `   d dl Z d dlZd dlm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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 ej<                  j?                  d	d
dg      ej<                  j?                  dg dg dg dg dg dg dg dg dg dg dg dg dej@                  ej@                  ej@                  gg      d               Z!d Z"ej<                  j?                  dd
dg      d        Z#ej<                  j?                  dd
dg      ej<                  j?                  dg dg dejH                  ejH                  ejH                  gdejH                  dgdejH                  dgdejH                  dgg      d                Z%ej<                  j?                  d!d"d# ejL                  dge'$       ejL                  ejH                  gd%$      fd&d" ejL                  ejH                  gd%$       ejL                  dge'$      fd&d& ejL                  ejH                  gd%$       ejL                  ejH                  gd%$      fd#d% ejL                  ejH                  gd%$       ejL                  ejH                  gd%$      fg      d'        Z(ej<                  j?                  dd
dg      ej<                  j?                  d(g d)      d*               Z)ej<                  j?                  d+d
ejH                  ej@                  gdfd
ejH                  d,ej@                  gdfdejH                  ejT                  gdfdejH                  dejT                  gdfg      d-        Z+ej<                  j?                  dd
dg      d.        Z,ej<                  j?                  dd
dg      d/        Z-ej<                  j?                  d0d1d2g      d3        Z.ej<                  j?                  d0d1d2g      d4        Z/ej<                  j?                  d5d1d d6gd,d7gd,d6gd8fd2d,d7gd d6gd d7gd8fg      ej<                  j?                  d9ddg      d:               Z0ej<                  j?                  d ed;       ed<      fd=g      ej<                  j?                  d>g d?      d@               Z1ej<                  j?                  d0dAdBg      dC        Z2dD Z3dE Z4dF Z5dG Z6dH Z7dI Z8dJ Z9dK Z:dL Z;dM Z<ej<                  j?                  dNdOdPg      dQ        Z=ej<                  j?                  dNdOdPg      dR        Z>dS Z?ej<                  j?                  dNdOdPg      dNe@fdT       ZAej<                  j?                  d(g dU      dV        ZBdW ZCej<                  j?                  dNg dX      dY        ZDej<                  j?                  dNdOdPg      dZ        ZEej<                  j?                  d[d d,g      ej<                  j?                  d\ddg      d]               ZFej<                  j?                  d[d d,g      d^        ZGd_ ZHej<                  j                  ej<                  j?                  d`ddg      ej<                  j?                  daddg      ej<                  j?                  dbddg      ej<                  j?                  dcddg      ej<                  j?                  dddegdedfgg      dg                                           ZJdh ZKdi ZLdj ZMdk ZNej<                  j?                  dlg dm edn      ejT                   edn      gd ed,g ej                  dogdpq      dr      fg dm ej                  dsd,d,      ejT                   ej                  dsd,d,      gd ed,g ej                  dogdpq      dr      fg dt ej                  dsd,d,      ejT                   ej                  dsd,d,      ejT                   ej                  dsd,d,      gd ed6d6g ej                  dodugdpq      dr      fg dv ej                  dsd,d,      ejT                   ej                  dsd,d,      ejT                   ej                  dsd,d,      gd ed6d,g ej                  dodugdpq      dr      fg      dw        ZQdx ZRdy ZSdz ZTd{ ZUej<                  j?                  d[d d|g      d}        ZVd~ ZWd ZXej<                  j?                  d(g d      ej<                  j?                  ddAdd,d,dd6d7dgifdBdd,d6dd6ddgifdOdd,d,dd6d7dgifdPdd,d6dd6ddgifdd,d6dd6d6dgddfg      d               ZYd ZZej<                  j?                  ddej                  fdej                  fdej                  fdej                  fdej                  fdej                  fdOej                  fdPej                  fdAd fdBd fdej                  f ej                  deZ ej                  d            g      d        Zfej<                  j?                  dg dd,ejH                  d6d,ejH                  d6d,ejH                  d6g	dg dg ddg      ej<                  j?                  dg d      d               Zgej<                  j?                  dg d      ej<                  j?                  dd d,g      ej<                  j?                  dddg      ej<                  j?                  d`ddg      d                             Zhd Ziy)    N)ascii_lowercase)iNaT)pandas_dtype)na_value_for_dtype)	DataFrame
MultiIndexSeries	Timestamp
date_rangeisna)get_groupby_method_args)_test_decoratorsagg_funcanyallvals)foobarbaz)r    r   )r   r   r            )r   r   r   r   r   r   )      ?       @      @)r           r   )r   r   r   )TTT)TFF)FFFc                 f   t        dgdz  dgdz  z   |dz  d      } t        t        |      |      }| rt        t	        |            r|dk(  rd}t        |gdz  dgt        j                  ddgd	
            } t        |j                  d	      |      |       }t        j                  ||       y )Nar   br   )keyvalr   Fr$   r#   namecolumnsindexskipna)
r   getattrbuiltinsr   r   pdIndexgroupbytmassert_frame_equal)r+   r   r   dfexpexpectedresults          /var/www/html/wine-match-dev/backend/winematch-backend/venv/lib/python3.12/site-packages/pandas/tests/groupby/test_reductions.pytest_groupby_bool_aggsr8      s    ( 
C519uqy0B	CB &'(H
%d
+C #d4j/h%&7		E7"((C:E*JH 2WRZZ&1@F&(+    c                  ,   t        g ddt        j                  dgdt        j                  dggg d      } t        ddgd	dggd
dgddg      }d|j                  _        | j                  d      j                         }t        j                  ||       y )N)r   r   r   r   r   r   r   ABCr(   TFr=   r>   r'   r<   )	r   npnanr)   r&   r0   r   r1   r2   r3   r5   r6   s      r7   test_anyrC   ?   s    		BFFE*Q,>?
B 
t}%Sz!QH HNNZZ_  "F&(+r9   bool_agg_funcc                     t        ddggddg      }|j                  dg      } t        ||              }|j                  t	        j
                  dg            }t        j                  ||       y )NTr!   r?   r   )r   r0   r,   set_axisr@   arrayr1   r2   )rD   r3   grp_byr6   r5   s        r7    test_bool_aggs_dup_column_labelsrI   L   sb     
T4L>C:	6BZZ_F+WV]+-F{{288QC=)H&(+r9   dataFTc                     t        |d      } t        ||       |      }t        |t        j                  dg      d      }|j	                  g d      j                  | |      }t        j                  ||       y )Nbooleandtyper*   r   r)   rN   r   )r	   r,   r@   rG   r0   aggr1   assert_series_equal)rD   r+   rJ   serexpected_datar5   r6   s          r7   test_masked_kleene_logicrT   W   sk     Y
'C 0GC/v>Mm288QC=	JH[[#''f'EF68,r9   zdtype1,dtype2,exp_col1,exp_col2floatFloat64rM   rL   Int64c                 T   dt         j                  g}t        t        j                  ||       t        j                  ||      d      }|j                  ddg      j                  dd      }t        ||dt        j                  dg            }t        j                  ||       y )	Nr   rM   )col1col2r   r   Fr*   r)   )	r@   rA   r   r.   rG   r0   rP   r1   r2   )dtype1dtype2exp_col1exp_col2rJ   r3   r6   r5   s           r7   test_masked_mixed_typesr`   p   s    > =D	$f-rxxF7ST
B ZZA##E%#8F(H=RXXqc]SH&(+r9   rN   )rW   rV   rL   c                     |t         j                  dg|      }d}|s| dk(  rt         j                  } ||gt        j                  dg      d      }|j	                  ddg      j                  | |      }t        j                  ||       y )Nr   rM   Tr   rL   rO   r*   )r.   NAr@   rG   r0   rP   r1   assert_equal)rD   rN   r+   frame_or_seriesobjexpected_resr5   r6   s           r7   test_masked_bool_aggs_skipnarg      sz     255!*E
2CLmu,uu~RXXqc])TH[[!Q $$]6$BFOOFH%r9   zbool_agg_func,data,expected_resr   c                      ||t               }|j                  dgt        |      z        j                  |       } ||gt	        j
                  dg      d      }t        j                  ||       y )NrM   r   boolrO   )objectr0   lenrP   r@   rG   r1   rc   )rD   rJ   rf   rd   re   r6   r5   s          r7   test_object_type_missing_valsrl      s[     $f
-C[[!s4y)--m<F~RXXqc]&QHOOFH%r9   c                     t        t        j                  gt              }t	        j
                  t        d      5  |j                  dg      j                  | d       d d d        y # 1 sw Y   y xY w)NrM   z boolean value of NA is ambiguousmatchr   Fr*   )	r	   r.   rb   rj   pytestraises	TypeErrorr0   rP   )rD   rR   s     r7   'test_object_NA_raises_with_skipna_falsers      sX     "%%
'C	y(J	K :QC]59: : :s   $A))A2c                     | t         u rddginddi} | di |dt        i} t        |j                  |j                        |             } | di |dt
        i}t        j                  ||       y )Nr(   r!   r&   rN    )r   rj   r,   r0   r)   ri   r1   rc   )rd   rD   kwargsre   r6   r5   s         r7   
test_emptyrw      sm     $3i#?i#fc]F

1F
1&
1C;WS[[+];=F44t4HOOFH%r9   howidxminidxmaxc                    |t         u s|t        u ry d|v rt        j                  nt        j                  } ||      j
                  } ||      j                  }t        g d||||gd|      }|j                  d      } t        ||              }t        dddgit        j                  dd	gd|
            }t        j                  ||       y )Nint)r   r   r   r   r!   r"   rM   r!   r"   r   r   r   r&   rN   r[   )r|   rU   r@   iinfofinfominmaxr   r0   r,   r.   r/   r1   r2   )	rx   any_real_numpy_dtypeinfo	min_value	max_valuer3   gbr6   r5   s	            r7   test_idxmin_idxmax_extremesr      s     s"&:e&C 44288"((D)*..I)*..I	)Y	9!MN"
B 
CBWRF	q!fRXXq!f3>RSH &(+r9   c                 \   t        j                  |      j                  }t        j                  |      j                  }t	        t        t        j                  t        dd      d      d      t        t         j                  |t         j                  ||t         j                  |t         j                  t         j                  t         j                  g
|      d      }|j                  d      }| rd nt        }d	| d
}t        j                  ||      5   t        ||      |       }	d d d        | rddddt         j                  g}
nt         j                  }
t	        d|
it        j                  t        dd      dd            }t        j                   	|       y # 1 sw Y   wxY w)Nr      r   )repeatsintprM   r}   r!   z!The behavior of DataFrameGroupBy.z with all-NA valuesrn   r*   r      r"   r~   r[   )r@   r   r   r   r   r	   repeatrangerA   r0   FutureWarningr1   assert_produces_warningr,   r.   r/   r2   )r+   rx   float_numpy_dtyper   r   r3   r   warnmsgr6   valuesr5   s               r7   "test_idxmin_idxmax_extremes_skipnar      sW    *+//I*+//I			%1+q9HFFFFFFFFFFFF (	

B( 
CB4}D-cU2E
FC		#	#D	4 1!S!01Q1bff%	fRXXeAqk6JH &(+1 1s   F""F+zfunc, valuesr   r   )c_intc_floatc_datenumeric_onlyc                    t        g dg dg dg dd      }t        j                  |d         |d<   |d   j                  j	                  d      |d<   |d   |d   j
                  d	   z
  |d
<   |d   j                  j                  d      |d<   |d   j                  d      |d<   |d   j                  d      |d<    t        |j                  d      |       |      }t        |t        j                  ddgd            }|r|j                  dg      }n|d   |d<   |d   |d
<   |d   |d<   |d   |d<   |d   |d<   t        j                  ||       y )Nr<   r<   r=   r=   r   r   r   r   )gGz@g=
ףp=@gRQ @g?)2019201820162017)r&   r   r   r   r   z
US/Pacific	c_date_tzr   c_timedeltaWc_periodr   rW   	c_Integerr   rV   
c_Floatingr&   r   r<   r=   r%   r[   r?   )r   r.   to_datetimedttz_localizeiloc	to_periodastyper,   r0   r/   dropr1   r2   )funcr   r   r3   r6   r5   s         r7   $test_idxmin_idxmax_returns_int_typesr     si    
(!/6		

B >>"X,/BxLloo11,?B{O8r(|'8'8';;B}\__..s3BzNk((1B{O)}++I6B|.WRZZ'.LIFrxxc
'HIH==(=4 ( 2"*8"4'1$W-H[%i0H\&(+r9   z2011-01-15 12:50:28.502376z2011-01-20 12:50:28.593448)l    m;-Ll    m;-Lmethod)countr   r   firstlastc                 D   t        ddg|d      }|j                  d      } t        ||              }| dk(  rd}n*| dk(  r|d   }n| dk(  r|d   }n t        |d	   |              }t        d	|git        j                  dgd
            }t        j                  ||       y )Nr   r}   r!   r   r   r   r   r   r"   r%   r[   )r   r0   r,   r.   r/   r1   r2   )r   rJ   r3   groupedr6   expected_valuer5   s          r7   2test_groupby_non_arithmetic_agg_int_like_precisionr   0  s     
!Qd+	,BjjoG%WWf%'F	7	a	6	a1C&13#/0!38OPH&(+r9   r   r   c           
         t        t        |             }t        g d|d|dt        j                  t        j                  g|d|dt        j                  t        j                  gd|       }|j                  d|      }t        ||      } ||      }g d	g d
g dg dd||f   }	|j                  |	   j                  d      }
|r|
j                         }
t        j                  ||
       y )N)r   r   r   r   r   r   r         @r!   r"   crM   r!   )sortr*   )r   r   r   )r   r   r   )r   r      )r   r   r   ))r   T)r   F)r   T)r   F)r   r   r   r@   rA   r0   r,   r   	set_index
sort_indexr1   r2   )any_real_nullable_dtyper   r+   rx   na_valuer3   r   r   r6   ilocsr5   s              r7   test_first_last_skipnar   N  s     ",/F"GHH	#C3?C3?	

 &
B 
Cd	#BRF6"F ##!"	
 
6kE wwu~'',H&&(&(+r9   c                  ,   t        t        j                  j                  d      j	                  d      g d      } g d| d<   | j                  d      }d}t        j                  t        |      5  |j                  d	
      }d d d        | j                  d d d	d f   j                  d	
      }j                  j                  d	      }t        j                  ||   |j                  d             t        dd      | d<   | j                  d      }d}t!        j"                  t$        |      5  t        j                  t        |      5  |j                  d	
       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nr   )
   r   )r<   r=   r>   Dr?   )
r   r   r   r   r   r   r   r   r   r   r<   z1DataFrameGroupBy.idxmax with axis=1 is deprecatedrn   r   axisz
2016-01-01r   periodsEz>'>' not supported between instances of 'Timestamp' and 'float')r   r@   randomdefault_rngstandard_normalr0   r1   r   r   rz   r   r)   get_level_valuesrQ   	droplevelr   rp   rq   rr   )r3   r   warn_msgresaltindexergb2r   s           r7   test_idxmin_idxmax_axis1r   j  sO   	
		a 009CW
B -BsG	CBBH		#	#M	B  iiQi  ''!QR%.

Q

'Cii((+G3w<s);<r2BsG
**S/C
JC	y	, ''XF 	JJAJ	    	 	 s0   1E22F
E>!F
2E;>F	F

Fc                  |    t        g dg dd      } | j                  d      d   j                         d   dk(  sJ y )N)r<   r<   r<   r<   r<   )ij  i  io  i`  l    @~ )userconnectionsr   r   r<   l    ,fL )r   r0   mean)r3   s    r7   test_groupby_mean_no_overflowr     sD    	-I	

B ::fm,113C8<OOOOr9   c                  F   t        t        j                  t        d            ddgdz  d      } | j	                  d      d   j                         }t        t        j                  ddg      dt        j                  ddgd	      
      }t        j                  ||       y )Nr   r<   r=   r   )timecatr   r   r   r%   r&   r)   )
r   r.   to_timedeltar   r0   r   r	   r/   r1   rQ   r3   r6   r5   s      r7   test_mean_on_timedeltar     s    	BOOE"I6SzA~N	OBZZv&++-F
AfBHHc3Ze4TH 68,r9   c                     t         j                  j                  d      j                  d      } t         j                  | d d d<   t        |       }t         j                  j                  d      j                  ddd      j                  t              }t         j                  |d d d<   |j                  |      j                         }d}t        j                  t        |      5  |j                  |      j                  t         j                        }d d d        t        j                   |       t        t         j                  j                  d      j                  d	            }d}t        j                  t        |      5  |j                  |      j                  t         j                        }d d d        |j                  |      j                         }t        j                   |       y # 1 sw Y   xY w# 1 sw Y   KxY w)
Nr     r   2   size   zusing DataFrameGroupBy.medianrn   )r   r   )r@   r   r   r   rA   r   integersr   rU   r0   medianr1   r   r   rP   	nanmedianr2   )arrr3   labelsr6   r   r4   rsxps           r7   test_cython_medianr     s}   
))


"
2
24
8CvvC!H	3BYY""1%..q"4.@GGNF66F4R4LZZ&&(F
)C		#	#M	= 3jj $$R\\23&#&	299((+;;IF	GB
)C		#	#M	= /ZZ##BII./	F		"	"	$B"b!3 3/ /s   &/G4/H 4G= H	c                 v   t        t        j                  j                  d      j	                  ddd            }t        ddd      }t        j                  |d   |      }|j                  ||       j                         }|j                  ||       j                  d       }t        j                  ||       y )	Nr   r   ,     7   r   observedc                 "    | j                         S )N)r   xs    r7   <lambda>z(test_median_empty_bins.<locals>.<lambda>  s     r9   )r   r@   r   r   r   r   r.   cutr0   r   rP   r1   r2   )r   r3   grpsbinsr6   r5   s         r7   test_median_empty_binsr     s    	299((+44QC@	ABB?D66"Q%DZZxZ0779Fzz$z2667KLH&(+r9   c                  b   t        g dg dddgz  d      } | j                  d      j                         }d|v sJ | j                  d      j                  d	      }d|v sJ | j                  d      j                         }d|v sJ | j                  d      j                  d	      }d|v sJ y )
N)   r     r  r   r   mama)nniissr  r  Fr   )r   r0   r   r   )aar6   s     r7   test_max_min_non_numericr	    s    	*,a6(lS	TBZZ!!#F6>>ZZ!!u!5F6>>ZZ!!#F6>>ZZ!!u!5F6>>r9   c                    t        g dg dg dd      }|j                          | s'|r$t        |j                  j                        dk(  sJ 	 |j                  d      }|dg   j                         }t        j                  g dd	      }t        dg d
i|      }t        j                  ||       |dg   j                         }t        j                  g dd	      }t        dg di|      }t        j                  ||       y )N)r   r   r   r   r   )r   r   r   r   F)r!   r"   r   der;   r   r<   r>   r   r%   )r"   r  r  r[   )r!   r   r  )r   _consolidate_inplacerk   _mgrblocksr0   r   r.   r/   r1   r2   r   )using_array_managerusing_infer_stringr3   r   r6   eir5   s          r7   $test_max_min_object_multiple_columnsr    s    
 
 ,*	

B +=s277>>"a'DD1	CBY]]_F	)#	&B#/r:H&(+Y]]_F	)#	&B#/r:H&(+r9   c                  L   t        j                  t        g d      d      j                  j                  } t        t        j                  dt        j                  gg d| d      }|j                  dd	      d
   j                         d
   }t        j                  t        ddgd
      d      j                  j                  }t        j                  ||       |j                  d      d
   j                         }d|j                  _        t        j                  ||       y )N)
2019-05-09r  r  z%Y-%m-%d)format1)r   r   r   r   r"   Fas_indexr   r  r%   )r.   r   r	   r   dater   r@   rA   r0   r   r1   rQ   r)   r&   )datesr3   r6   r5   s       r7   test_min_date_with_nansr    s    NN9::b 
 
"&&#rvv.YUK	LBZZeZ,S1557<F~~l+#6zb  68,ZZ_S!%%'FHNN68,r9   c                  D   t        dt        g      } t        j                  ddgt        j                        }| j                  |      }|j                  d      }t        ddit        j                        }t        j                  ||d       |j                  d      }t        dt        it        j                        }t        j                  ||d       |j                  d      }t        dt        j                  i      }t        j                  ||d       y )Nr   rM   r   	min_countTcheck_exactr   )r	   r   r@   rG   int64r0   r   r1   rQ   r   rA   )rR   r#   r   r6   r5   s        r7   test_max_inatr#    s    
!T
C
((Aq6
*C	S	BVVaV Fq!fBHH-H68>VVaV Fq$irxx0H68> VVaV Fq"&&k"H68>r9   c                  ^   t        dt        dt        dz   g      } | j                  g d      }|j                  d      }t        t        j
                  t        j
                  t        dz   d      }|j                  j                  t              |_        t        j                  ||d       y )Nr   r   )r   r   r   r   r  r   Tr   )r	   r   r0   r   r@   rA   r)   r   r|   r1   rQ   )rR   r   r6   r5   s       r7   test_max_inat_not_all_nar%    s     !T1dQh'
(C	\	"BVVaV F "&&RVVq9:H^^**3/HN68>r9   r   r   r   c                    ddg}t        j                  ddd      }t        ||d      } t        |j	                  d      d   |              }t        j
                  ddgd	      }t        ||d
      }t        j                  ||       y )Nr   r   2020Yr   freqr}   r!   r"   r%   r)   r&   )	r.   period_ranger   r,   r0   r/   r	   r1   rQ   r   groupsr   r3   r6   idxr5   s          r7   $test_groupby_aggregate_period_columnr0    s~     VFoofac:G	g.	/B0WRZZ_S)402F
((Aq6
$CgSs3H68,r9   c                    ddg}t        j                  ddd      }t        ||d      } t        |j	                  d      |              }t        j
                  ddgd      }t        d	|i|
      }t        j                  ||       y )Nr   r   r'  r(  r)  r}   r!   r%   r"   r[   )r.   r,  r   r,   r0   r/   r1   r2   r-  s          r7   #test_groupby_aggregate_period_framer2  ,  s{     VFoofac:G	g.	/B+WRZZ_d+-F
((Aq6
$C#ws3H&(+r9   c                     t        g dt        d      t        j                  gdz  d      j	                  t
              } | j                  d      j                         }t        ddgdd	gt        j                  t        j                  gd      j                  d      j	                  t
              }t        j                  ||       t        g dt        d      t        d      d      j	                  t
              } | j                  d      j                         }t        ddgdd	gd
dgd      j                  d      j	                  t
              }t        j                  ||       y )Nr   abcdr   )r#   rY   rZ   r#   r<   r=   r!   r   r   r   )r   listr@   rA   r   rj   r0   r   r   r1   r2   r   r   s      r7   #test_aggregate_numeric_object_dtyper6  :  s&    
$d6lRVVHqLQ
fVn  ZZ""$F#Jc
RVVRVV<LM	
 
5		  &(+ 
$d6lE!HM
fVn  ZZ""$F3*sCj1a&IJ	5		 
 &(+r9   c                 l   t        dgd      j                  j                         }t        dg|d      }|j	                  d      j                  d| i      }t        ddgit        j                  dgd      	      }|d   j                  |j                        |d<   t        j                  ||       y )
Nr"   categoryrM   i  r<   r=   r<   r=   r%   r[   )r	   r   
as_orderedr   r0   rP   r.   r/   r   rN   r1   r2   )r   dsr3   r6   r5   s        r7   %test_aggregate_categorical_lost_indexr<  X  s     
Z	(	,	,	7	7	9B	$b)	*BZZ_  #t-F#uRXXtf3-GHH SM((2HSM&(+r9   )rW   Int32rV   Float32rL   c                 t   | dk(  rd}n
| dk(  rd}nd}t        ddg||dz   gd      }|d	   j                  |       |d	<   |j                  d
      }|j                         }|j                  d d j                  d
      }t        j                  ||       |j                         }|j                  dd  j                  d
      }t        j                  ||       |j                  d      }t        d	t        j                  gi|j                  |       }	t        j                  ||	       |j                  d      }
t        j                  |
|	       t        g d|t        j                  |dz   gd      }|d	   j                  |       |d	<   |j                  d
      }|j                         }t        j                  ||       |j                         }t        j                  ||       |j                  d      }t        j                  ||	       |j                  d      }t        j                  ||	       y )NrW   l   .D3 rL   r   r   r   r   )idtsrA  r@  r   r  rO   )r   r   r   d   )r   r   r0   r   r   r   r1   r2   r   r.   rb   r)   )rN   rA  r3   r   r6   r5   res_maxexpected_maxresult2	expected2res_max2df2r   result3res_max3result4res_max4s                    r7   test_groupby_min_max_nullablerM  f  s    	)		1a&R!V5	6B$xu%BtH	D	BVVXFwwr{$$T*H&(+ffhG7712;((.L'<0ffqf!G4"%%/uMI'9-vvv"H(I. 9RQ,?@
ACD	  'CI
++d
CggiG'8,wwyH(L1ggg$G'9-www%H(I.r9   c            	      R   t        j                  dgdz  ddg      } t        | t        j                  t	        j
                  dt        j                              d      }|j                  dd	      }|j                         }t        j                  ddg| j                  d
      }t        dt        j                  dt         j                  gd      i|      }t        j                  ||       |j                         }d|j                  d<   t        j                  ||       y )Nr   r   r   )
categoriesrM   r9  r<   Fr   rN   r&   r=   UInt64r[   	   )r   r   )r.   Categoricalr   rG   r@   arangeuint64r0   r   CategoricalIndexrN   rb   r1   r2   r   r   )r   r3   r   r   r/  r5   s         r7   (test_min_max_nullable_uint64_empty_grouprW    s    
..!rq!f
5C	288BIIb		,J#KL	MB	C%	(B
&&(C


q!fCIIC
@C#rxxBEE
(CDCPH#x(
&&(CHMM$#x(r9   )r   r   r   r   c                    t        t        j                  dgt        d      d      t        j                  dgddgd      dd      } t	        |j                  d	d
      |              }t        j                  ddgd	d      }t        t        j                  dd gddgd      dd gd|      }t        j                  ||       y )Nr<   ABT)rO  orderedr   r   g?)rY   rZ   valuerY   Fr   r=   )rJ   r&   rZ  )rZ   r[  r[   )	r   r.   rS  r5  r,   r0   rV  r1   r2   )r   r3   r6   r/  r5   s        r7    test_groupby_min_max_categoricalr\    s     
NNC5T$ZNNNA3Aq64H	

B ?WRZZZ7>@F


C:FD
ICNNAt9!QN4[	
 H &(+r9   c           	          |}t        dgddd|      j                  d d } t        |j                  d      |              }t        ddg|t	        j
                  g |d            }t        j                  ||       y )	Nr!   r   rM   r   r"   r   rP  )r(   rN   r)   )r   r   r,   r0   r.   r/   r1   r2   )r   string_dtype_no_objectrN   r3   r6   r5   s         r7   test_min_empty_string_dtyper_    sx     #E	#Ss35	A	F	Fr	JB+WRZZ_d+-Fc
%rxx%c/RH &(+r9   r  test_seriesc                    |dk(  ry | }|dv ri }n|dv rd|i}n|dv ri }nd|i}|t         j                  }}|dv rd}|dk(  rd	nd
}ny|dv rA|r3|dk(  r.|j                  dk(  r|j                  t         j                  u rd}nd}|dk(  rdnd}n4|dv rdt        j
                  }}n|dkD  rt         j                  }n|dk(  rd}t        dgt         j                  gd|      }|r|d   n|}	t        ||	      }
|	j                  |d         }t        ||      }|dv r6d| d| d}t        j                  t        |      5   ||
i | d d d        y  ||
i |}t        j                  dgd|       }|s|dk(  r|s|dk(  rd nd}t        ||||!      }nt        d|i||"      }t        j                   ||       y # 1 sw Y   y xY w)#Ncorrwith)r   r   ry   rz   r   r   stdvar)kurtr  )r   nuniquequantilesemr   )r   r   ri   r   FT)r   rf  r   r   pyarrowrW   r"  r   r   )ry   rz   float64sumr   r   r}   rM   r"   r!   )	r   r   re  prodrg  rh  skewrc  rd  zdtype 'z' does not support operation ''rn   r~   )r)   rN   r&   rO   )r.   rb   storager   r@   rA   r   r   r0   r,   rp   rq   rr   r/   r	   r1   rc   )r^  reduction_funcr  r`  rN   rv   expected_dtyper   r3   re   argsr   r   r   r6   r)   r&   r5   s                     r7   test_string_dtype_all_nars    s    #"E 	 	 	8	#y)	J	Jy)%*BEENN'"0E"9t	7	7 &(*"%%'$N$N,6A	/	/)2BFF	Q	5	 	#beeW-U	;B "S'bC">37D	RW	BR(F 
 
 w<^<LAN]]9C0 	$D#F#	$T$V$FHHcUE2En.&>V+Ct.^RVWc>2%~VOOFH%	$s   <	F88Gc                 6   | }t        dgt        j                  gd|      }|j                  d      }|j	                  |      }|dk(  rdnt        j                  }t        d|it        j
                  dgd|	      |
      }t        j                  ||       y )Nr   r}   rM   r!   r  r   r   r"   r~   rO   )r   r.   rb   r0   rk  r/   r1   r2   )r^  r  rN   r3   r   r6   r[  r5   s           r7   test_string_dtype_empty_sumru  !  s     #E	#beeW-U	;B	CBVViV(Fq.BbeeE	eBHHcUEB%H &(+r9   c            	      ~   t        g dg dt        t        j                  t        j                  dg      g dd      } | j	                  d      }|dg   j                         }|d   j                         j                         }t        j                  ||       |d   j                         j                         rJ y )N)z-04-23z-05-06z-05-07)z2013-04-23 00:00:00z2013-05-06 00:00:00z2013-05-07 00:00:00OE)zlog080001.logzlog.logxlsx)z
Unnamed: 0DateappFilery  r{  )r   r	   r@   rA   r0   r   to_framer1   r2   r   r   )r3   r   rr  s       r7   test_max_nan_bugr~  /  s    	8
 2662664018		

B 
F	B
F8A
6
!!#A!Qy~~##%%%%r9   r   dropnar  with_nankeysjoejimc           	         d}d}t        dd      }t        t        j                  j	                  d      j                  t        t              |      t        j                  j	                  d      j                  ||      t        j                  j	                  d      j                  d||      d      }|r{|j                  dt        i      }d |j                  d	d d
df<   d |j                  dd ddf<   d |j                  dd ddf<   d |j                  dd ddf<   d |j                  dd ddf<   |j                         }	|j                  |||       }
|
d   j                  |      }|j                  |||       }
|
d   j                  t         j                  |      }|s|j#                  d      }|rt%        j&                  ||d       nt%        j(                  ||d       t%        j(                  ||	       y )NrB  r   z
2015-08-23r   r   r   )r  r  julier  r   r   r  r   %   r           rR  )r  r   r  T)r   F)check_names)r   r   r@   r   r   choicer5  r   r   r   rU   loccopyr0   rf  applyr	   reset_indexr1   rQ   r2   )r   r  r  r  r  nmdaysr3   original_dfgrleftrights                r7   test_series_groupby_nuniquer  C  s    	A
AlB/D	99((+2243H!L99((+224;YY**1-66q!Q?	

B YY'(#qu"ue|#qu"ue|!%qu"ug~!%qu"ug~!%qu"ug~'')K	D8$	7Bg;f-D	D8$	7BwKfnnV<E!!t!,
tU>
dEu="k*r9   c                  N   t        t        d      t        d      t        d      d      } t        t        d      g dg dd      }| j                  dd	
      j                         }t	        j
                  ||       t        d      |_        d|j                  _        |j                  d      }| j                  d      j                         }t	        j
                  ||       | j                  dd i      j                  d      j                  d	      }t	        j
                  ||       t        dgdz  dgdz  dt        d            }d|j                  _        | j                  dd i      j                  d      j                         }t	        j
                  ||       y )Nabbaccabxaccabbacxr;   abc)r   r   r   )r   r   r   r<   Fr  r?   r   r  r   r   )r=   r>   r[   )
r   r5  r0   rf  r1   r2   r)   r&   r   replacerB   s      r7   test_nuniquer  k  sP   	hd8n4>R	SBtE{KLHZZeZ,446F&(+ %[HNHNN}}S})HZZ_$$&F&(+ ZZd$,,S1999GF&(+ sQwaS1W5T%[IHHNNZZd$,,S199;F&(+r9   c                  .   t        g dg dg dg dg dgg d      } | j                  dd	g      d
   j                         }t        j                  | j
                  | j                  g      }t        dgdz  d
|      }t        j                  ||       y )N)rB  r   Alice)   r   Bob)i,  r   Charlie)ipr   Dan)r   r   Edith)amountr@  r&   r?   r@  r  r&   r   r   r   )
r   r0   rf  r   from_arraysr@  r  r	   r1   rQ   )rJ   r6   r)   r5   s       r7   test_nunique_with_objectr    s    	
 )	D \\4*+F3;;=F""DGGT[[#9:EqcAgF%8H68,r9   c                      t        dt              } | j                  d      j                         }t        dd      }t	        j
                  ||       y )Nr&   r~   r   levelr"  )r	   rj   r0   rf  r1   rQ   )rJ   r6   r5   s      r7   test_nunique_with_empty_seriesr    sC    vV,D\\\"**,F61H68,r9   c                     t        t        d      t        d      t        d      gg dd      j                  d      } | j                  t	        j
                  d            d	   j                         }| j                  t	        j
                  d            d	   j                  t        j                        }t        j                  ||       y )
Nz2016-06-28 09:35:35z2016-06-28 16:09:30z2016-06-28 16:46:28)r  23)r   rJ   r   h)r*  rJ   )r   r
   r   r0   r.   Grouperrf  r  r	   r1   rQ   testr6   r5   s      r7   test_nunique_with_timegrouperr    s     /0/0/0
 $	
	 i 	 \\"**#./7??AF||BJJC01&9??OH68,r9   zkey, data, dropna, expected)r   r   r   z
2019-01-01r   r#   r%   r+  i  )r   r   r   yr  r  )r   r   r   r   r  c                     t        | |d      }|j                  dg      d   j                  |      }t        j                  ||       y )N)r#   rJ   r#   rJ   r  )r   r0   rf  r1   rQ   )r#   rJ   r  r5   r3   r6   s         r7   test_nunique_with_NaTr    sG    V 
3-	.BZZ (000?F68,r9   c                     t        g dt        j                  dgd            } | j                  g d      j	                         }t        dgt        j                  dg      | j                  	      }t        j                  ||       y )
N)r   r   r   r<   level_0r%   r?   r   r   r   )r)   r(   )
r   r.   r/   r0   rf  r@   rG   r(   r1   r2   r  s      r7   )test_nunique_preserves_column_level_namesr    s`    Y#Y(GHD\\)$,,.F!BHHaSM4<<HH&(+r9   c                      t        t        dd      dg      } | j                  g d      d   j                  d      }t	        g dd      }t        j                  ||       y )	Nz
2008-12-31z
2009-01-02r  r?   )r   r   r   rf  )r   r   r   r%   )r   r   r0   	transformr	   r1   rQ   r   s      r7   $test_nunique_transform_with_datetimer    sQ    	:lL9F8	LBZZ	"6*44Y?Fif-H68,r9   c                     t        dg      j                  d      }|d d }|j                  ||       }|j                         }| rt        g |d d d      }nt        dg|d      }t	        j
                  ||       y )Nr   r8  r   r   r"  rO   )r	   r   r0   rf  r1   rQ   )r   r   rR   r   r6   r5   s         r7   test_empty_categoricalr    sw    
!+

Z
(C
bq'C	S8	,BZZ\F"CG7;1#S868,r9   c                      t        ddt        j                  dg      } | j                  g d      }d}t	        j
                  t        |      5  |j                  t        j                        }d d d        d}t	        j
                  t        |      5  |j                  t        j                        }d d d        |j                         }t	        j                  |       t	        j                  |       y # 1 sw Y   xY w# 1 sw Y   RxY w)Nr   r   r   )r   r   r   r   zusing SeriesGroupBy.sumrn   zusing np.sum)r	   r@   rA   r0   r1   r   r   rP   r-   rk  r  rQ   )sr   r   r6   rE  r5   s         r7   test_intercept_builtin_sumr    s    S"&&#&'Aii%G
#C		#	#M	= +X\\*+ C		#	#M	= .---. {{}H68,7H-+ +. .s    C8 D8DDr   c           	      B   d}d}t         j                  }t        j                  |||||||gd      }t	        g d|d      }|j                  d      j                  |       }| d	k(  rTt	        d
t        j                  g dd      it        j                  g dd            }t        j                  ||       y t	        d
t        j                  t        j                  gdz  d      it        j                  g dd            }t        j                  ||       y )NTFrL   rM   )r   r   r   r   r   r   r   r9  r<   r  r   r=   )r   r   r   rW   r   r%   r[   r   )r@   rA   r.   rG   r   r0   rk  r/   r1   r2   rb   )r  r"   r!   nadfgr3   r6   r5   s           r7   !test_groupby_sum_mincount_booleanr    s    AA	B
((Aq"b!Q*)
<C	.S9	:BZZ_  9 5FA~"((9G45((93/
 	fh/"((BEE7Q;g67((93/
 	fh/r9   c                     t        g dg dg ddd      } | j                  d      }t        j                  g ddd      }|d   j	                  d	      }t        t        j                  gd
z  d|d      }t        j                  ||       |j	                  d	      }t        t        j                  gd
z  t        j                  gd
z  dd|      }t        j                  ||       y )N)r   r   r   r   rW   rM   r!   r~   r"   r   r  r   )rN   r)   r&   )r"   r   )rN   r)   )
r   r0   r.   r/   rk  r	   rb   r1   rQ   r2   )r3   r   r/  r6   r5   s        r7   0test_groupby_sum_below_mincount_nullable_integerr  %  s    	C7	SBjjoG
((93g
6CS\*Fruugk#FH68,[[1[%Fw{"%%1=WTWXH&(+r9   c                     t        g dt        j                  d      t        j                  d      t        j                  d      t        j                  gd      } t        j                  d      }| j	                  d      }|j                         }t        d	||git        j                  d
dgd            }t        j                  ||       |d	   j                         }t        j                  ||d	          |d	   j                  d      }t        |t        j                  gdd	|j                        }t        j                  ||       y )N)r   r   r   r   1d2d3dr}   r   )r  r!   r"   r   r   r%   r[   r  zm8[ns])rN   r&   r)   )r   r.   	TimedeltaNaTr0   rk  r/   r1   r2   rQ   r	   r)   )r3   td3r   r   r5   s        r7   #test_groupby_sum_timedelta_with_natr  4  s    	,,t$bll4&8",,t:LbffU	

B ,,A
C	CB
&&(C#Sz*"((Aq62LMH#x(
S'++-C3.
S'+++
"CsBFFm8#X^^TH3)r9   )int8int16int32r"  float32rj  rU  zmethod,datar3   r}   r   r   r"  )r3   out_typec                    t        ddddddddddddg      }|j                  j                  |       |d<   d|vrg |d<   d|v r|d   }n| }|d	   }t        |      }|j                  j                  |      |d<   |j                  d
d       |j	                  d
      } t        ||      |d    }t        j                  ||       y )Nr   r}   r   r   r   r"   rr  r  r3   r!   T)inplace)r   r"   r   r   r0   r,   r1   r2   )	rN   r   rJ   r3   r  r4   df_outgrpdts	            r7   %test_groupby_non_arithmetic_agg_typesr  L  s     
q	+11-=QQ?OP
B ddkk% BsGTVT
#
t*Cs^F((//(+F3K
S$'::c?DftF|,A!V$r9   c                  "    ddl m}  || ddi|S )Nr   )rh  ddofr   )scipy.statsrh  )rr  rv   rh  s      r7   	scipy_semr  t  s    '1'''r9   z	op,targopr   r   rc  rd  rk  rl  c                      | j                   d   S )Nr   r   r   s    r7   r   r     s    AFF1I r9   c                      | j                   d   S )Nr  r   s    r7   r   r     s    166": r9   rh  scipy)marksc                     t        t        j                  j                  d      j	                  d            }t        j                  j                  d      j                  ddd      j                  t              } t        |j                  |      |              }| dv rd nt        }d|  }t        j                  ||      5  |j                  |      j                  |      }d d d        t        j                  |       y # 1 sw Y    xY w)	Nr   r   r   r   r   )r   r   r   rh  zusing DataFrameGroupBy.rn   )r   r@   r   r   r   r   r   rU   r,   r0   r   r1   r   rP   r2   )optargopr3   r   r6   r   r   r5   s           r7   test_ops_generalr  z  s    $ 
299((+;;DA	BBYY""1%..q"4.@GGNF,WRZZ',.F::4D#B4
(C		#	#D	4 2::f%))&12&(+2 2s   !DDr   )	r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   r   r   function)r   r   rd  c                 "   |dk(  rdnd}t        j                  |gdz  t              }t        j                  g ddd	      }t        d
|i|      j                  d      }t        | d      j                  d      } t        ||             }t        j                  ||       |j                  |      }t        j                  ||       |j                  |g      }t        j                  d
|fg      |_        t        j                  ||       y )Nrd  g      ?g      ?r   rM   r   r!   rW   r~   r"   r[   rV   )r@   rG   rU   r.   r/   r   r   r0   r,   r1   r2   rP   r   from_tuplesr(   )r   r  outputr   r/  r5   r.  r6   s           r7   ,test_apply_to_nullable_integer_returns_floatr    s     %S3F
((F8a<u
-C
((93g
6C#s3/66yAHvW-55c:F&WVX&(F&(+ZZ!F&(+ZZ
#F!--X.?@H&(+r9   r  )
rk  rl  r   r   r   r   rm  rc  rd  rh  r   r+   c                 l    t        dg      }dk(  r|}d}n|j                  }d}t        j                  t        |      5  |j                  d|      }d d d         dk(  rd t                     }|j                  d      j                   fd	      }	|r|	j                  
      }	t        j                  ||	       y  t                      }|j                  d      j                   fd      }	|r|	j                  
      }	t        j                  ||	       y # 1 sw Y   xY w)Nr   zAThe 'axis' keyword in DataFrame.groupby is deprecated and will bez+DataFrame.groupby with axis=1 is deprecatedrn   )r  r   r   rm  r*   r  c                 ,     t        |             S )N)r   r+   r,   )r  r   r  r+   s    r7   r   z3test_regression_allowlist_methods.<locals>.<lambda>  s    ngan$v> r9   r   c                 *     t        |             S )Nr   r  )r  r   r  s    r7   r   z3test_regression_allowlist_methods.<locals>.<lambda>  s    .'!R.d:S r9   )
r   Tr1   r   r   r0   r,   r  r   r2   )
r  r   r+   r   	raw_frameframer   r   r6   r5   s
   ```       r7   !test_regression_allowlist_methodsr    s   , 1#IqyQ;		#	#M	= ?--ad->? 
V|%"%V4==q=)//>
 ***5H
fh/%"%'==q=)//0ST***5H
fh/#? ?s   D**D3c                  (   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ddgddgddgddgddgg} t        | ddgd      }|j                  dg      j                         j                         }t        dgdgdd      }t	        j
                  ||       y )Nr   r  )   r   r  r        r   r   +   r   /   r  X   r<   r=   r"  )r(   rN   l   N+R@r9  rM   )r   r0   rl  r  r1   r2   )rJ   r3   r6   r5   s       r7   "test_groupby_prod_with_int64_dtyper    s     
B	
B	
B	
B	
A	
B	
B	
A	
A	
B	
A	
B	
B	
BD  
4#s7	;BZZ##%113Fs*<)=>gNH&(+r9   )jr-   datetimer   stringr   numpyr@   rp   pandas._libs.tslibsr   pandas.core.dtypes.commonr   pandas.core.dtypes.missingr   pandasr.   r   r   r	   r
   r   r   pandas._testing_testingr1   pandas.tests.groupbyr   pandas.utilr   tdmarkparametrizerA   r8   rC   rI   rb   rT   rG   ri   r`   rg   r  rl   rs   rw   r   r   r   r   r   r   r   r   r   r   r	  r  r  r#  r%  r0  r2  r6  strr<  rM  rW  r\  r_  rs  ru  r~  slowr  r  r  r  r  r/   r  r  r  r  r  r  r  r  r  r  r  r   r   rc  rd  rk  rl  r   r   r   param
skip_if_nor  r  r  r  ru   r9   r7   <module>r     s     "   $ 2 9    8 . eU^4
	 $,% 5&,"
, 5%.9, :, 5%.9
	ruu	u	ruud	ruue

-
 :
- % BHHdV4(BHHbeeWI.		
 BHHbeeWI.BHHdV4(		
 BHHbeeWI.BHHbeeWI.		
 BHHbeeWI.BHHbeeWI.		
':	,;:	, 5%.9"AB	& C :	& %	'	266"D)	&	rvv&.	&& 5%.9: :: 5%.9& :& 8 45, 6,( 8 45%, 6%,P 	aVA1a&IJ	aVA1a&IJ $7, 8,@ 
 2323	
 	/	 #KL, M	,& & 12, 3,64P-",,",>-$?(? %0
- 1
- %0
, 1
,,< %0
, 
, 1
, "UV,/ W,/^)" !@A, B,, %0, 1, q!f-u6R& 7 .R&j q!f-
, .
,&( %/E4=1dE]3dE]35'E5>!:;+ < 4 4 2 0 +D,2-&--" ! |$bffi.EFA3hbhhu59G		
 RWWT1a "&&'"''$1*=>A3hbhhu59G		
 &a#a#a# Aq63*5!AO	
 &a#a#a# Aq63*5!AO	
3%(R-S(R-,-
-." q"g.0 /0,,*0 P 	4*!!,<=>?	$qq)+;<=>	aa(*:;<=	aa(*:;<=	*!!,<=7ST	%	%6( 		299							%&	%&	"''UI]R]]7-CD"	,#"	,  -RUUAq"%%Aruua8	
 !'9:	 %>?, @	,(  !Q(D%=1$/0 0 2 )$0@,r9   