
    Mh(              	          S SK rS SKrS SKJr  S SKJrJrJ	r	J
r
Jr  S SKJr  S SKJr  S SKJr   " S S5      r " S S	\5      r " S
 S\5      r\R,                  R/                  SSS/5      S 5       rS r\R,                  R/                  S/ SQ5      S 5       rS rS rS rS rS rS r \R,                  R/                  S\RB                  /\RB                  /\RB                  //\RB                  /\RB                  //4\RB                  /\RB                  /\RB                  * //\RB                  /\RD                  //4\RB                  /\RB                  * /\RB                  //\RB                  /\RD                  //4\RB                  /\RB                  * /\RB                  * //\RB                  /\RB                  * //4/5      S 5       r#g)    N)groupby)group_cumprodgroup_cumsum
group_mean	group_sum	group_var)ensure_platform_int)isnac                   2    \ rS rSrS rS rS rS rS rSr	g)	GroupVarTestMixin   c                    [         R                  R                  S5      n[         R                  [         R                  " S5      -  R                  U R                  5      n[         R                  " SSS9nSUR                  S5      R                  U R                  5      -  n[         R                  " [         R                  " S5      S5      R                  S	5      n[         R                  " U5      R                  S
SS9R                  SSS9S-  S S 2[         R                  4   nUS-   nU R                  X#XE5        [         R                  " X&U R                   5      (       d   e["        R$                  " X75        g )N         r   int64dtype
   )   r   )   intp)r   r   Forderr   )axisddofr   )nprandomdefault_rngnanonesastyper   zerostilearangesqueezereshapestdnewaxisalgoallclosertoltmassert_numpy_array_equalselfprngoutcountsvalueslabelsexpected_outexpected_countss           V/var/www/html/env/lib/python3.13/site-packages/pandas/tests/groupby/test_libgroupby.pytest_group_var_generic_1d+GroupVarTestMixin.test_group_var_generic_1d   s   yy$$Q'vv'//

;!7+dkk'*11$**==1t,33F; JJv&&vS&9==11=MQRR
RZZ- !1*		#v.{{3dii8888
##F<    c                 j   [         R                  R                  S5      n[         R                  [         R                  " S5      -  R                  U R                  5      n[         R                  " SSS9nSUR                  S5      R                  U R                  5      -  n[         R                  " SS	S9n[         R                  " UR                  SS
9S-  //5      nUS-   nU R                  X#XE5        [         R                  " X&U R                  5      (       d   e[        R                  " X75        g )Nr   r   r   r   r   r   r   r   r   r   )r   )r   r    r!   r"   r#   r$   r   r%   arrayr*   r,   r-   r.   r/   r0   r1   s           r:   %test_group_var_generic_1d_flat_labels7GroupVarTestMixin.test_group_var_generic_1d_flat_labels%   s    yy$$Q'vv'//

;!7+dkk&)00<<!6*xx&**!*"4"9!: ;< 1*		#v.{{3dii8888
##F<r=   c                    [         R                  R                  S5      n[         R                  [         R                  " S5      -  R                  U R                  5      n[         R                  " SSS9nSUR                  S5      R                  U R                  5      -  n[         R                  " [         R                  " S5      S5      R                  S	5      n[         R                  " UR                  SSS5      S
SS9S-  nUS-   nU R                  X#XE5        [         R                  " X&U R                  5      (       d   e[        R                   " X75        g )Nr   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)   r,   r-   r.   r/   r0   r1   s           r:   $test_group_var_generic_2d_all_finite6GroupVarTestMixin.test_group_var_generic_2d_all_finite5   s    yy$$Q'vv'//

;!7+dkk'*11$**==1t,33F;vvfnnQ15AAF!K 1*		#v.{{3dii8888
##F<r=   c                 z   [         R                  R                  S5      n[         R                  [         R                  " S5      -  R                  U R                  5      n[         R                  " SSS9nSUR                  S5      R                  U R                  5      -  n[         R                  US S 2S4'   [         R                  " [         R                  " S5      S	5      R                  S
5      n[         R                  " US S 2S4   R                  SSSS9R                  SSS9S-  [         R                  [         R                  " S5      -  /5      R                  R                  U R                  5      nUS-   nU R                  X#XE5        [        R                   " X&SS9  [        R"                  " X75        g )Nr   rD   r   r   r   r   rE   r   rF   r   r   r   r   rG   gƠ>r.   )r   r    r!   r"   r#   r$   r   r%   r&   r'   vstackr)   r*   Tr,   r/   assert_almost_equalr0   r1   s           r:   "test_group_var_generic_2d_some_nan4GroupVarTestMixin.test_group_var_generic_2d_some_nanD   sH   yy$$Q'vv'//

;!7+dkk'*11$**==vvq!t1t,33F;yyq!t$$Q$599qq9IQN#

 !FF4:: 	 !1*		#v.
sw?
##F<r=   c                    [         R                  " [         R                  //U R                  S9n[         R                  " S/SS9nS[         R                  " SU R                  S9-  n[         R
                  " SSS9nU R                  XX45        US   S:X  d   eUS   S:  d   e[        R                  " US   S	5        g )
Nr   r   r   gUUUժ?)r   r   r   r   r   r   g        )	r   r@   r"   r   r#   r%   r,   r/   rN   )r2   r4   r5   r6   r7   s        r:   test_group_var_constant)GroupVarTestMixin.test_group_var_constantY   s     hhz41#W-"RWWV4::%FF!6*		#v.ayA~~4yA~~
s4y#.r=    N)
__name__
__module____qualname____firstlineno__r;   rA   rH   rO   rS   __static_attributes__rU   r=   r:   r   r      s    ="= ==*/r=   r   c                   J    \ rS rSrSr\" \5      r\R                  r
SrS rSrg)TestGroupVarFloat64h   Tgh㈵>c                    [         R                  R                  S5      n[         R                  " [         R                  //U R
                  S9n[         R                  " S/SS9nUR                  S5      S-   R                  U R
                  5      nSUl        [         R                  " SSS9nU R                  X#XE5        US   S:X  d   e[        R                  " US	   S
SS9  g )Nr   r   r   r   @B l    J))r_   r   r   rR   gUUUUUU?gMb@?rK   )r   r    r!   r@   r"   r   r$   shaper%   r,   r/   rN   )r2   r3   r4   r5   r6   r7   s         r:   test_group_var_large_inputs/TestGroupVarFloat64.test_group_var_large_inputso   s    yy$$Q'hhz41#W-++e$v-55djjA!%v.		#v.ayE!!!
s4y(@r=   rU   N)rV   rW   rX   rY   __test__staticmethodr   r,   r   float64r   r.   ra   rZ   rU   r=   r:   r\   r\   h   s%    H	"DJJEDAr=   r\   c                   D    \ rS rSrSr\" \5      r\R                  r
SrSrg)TestGroupVarFloat32~   Tg{Gz?rU   N)rV   rW   rX   rY   rc   rd   r   r,   r   float32r   r.   rZ   rU   r=   r:   rg   rg   ~   s    H	"DJJEDr=   rg   r   ri   re   c           
         [         R                  " [         R                  R                  S5      R	                  S5      U S9n[         R                  " / SQ5      n[         R
                  " SU 5      n[         R
                  " [        U5      [         R                  S9n[        [         R                  " [         R                  " S5      [         R                  " [         R                  SU4   5      5      5      n[        R                  nU" X4US S 2S 4   U5        S n[         R                  " U" US S	 5      U" US	S
 5      U" US
S  5      /5      n[        R                   " X85        [        R"                  " U[         R                  " / SQ[         R                  S95        [         R$                  US S	& U" X4US S 2S 4   U5        [         R$                  US'   [        R                   " X85        g )Nr      r   )      rk   )r      r   r   c                     [        U 5      R                  5       (       a%  [        R                  " [        R                  S5      $ U S   U R                  5       U R                  5       U S   /$ )Nrn   r   )r
   allr   repeatr"   maxmin)groups    r:   _ohlctest_group_ohlc.<locals>._ohlc   sK    ;??99RVVQ''a%))+uyy{E"I>>r=   rl   rm   )rl   rl      )r   r@   r    r!   standard_normalr%   lenr   r	   rr   r'   diffr_
libgroupby
group_ohlcr/   rN   r0   r"   )	r   objbinsr4   r5   r7   funcrv   expecteds	            r:   test_group_ohlcr      sY   
((299((+;;B?u
MC88K D
((65
!CXXc#hbhh/F 299Q<q$w9P!QRF  Dc!T'lF+?
 xxs2Aws1Ry)95RS?KLH3)"(((KLffCGc!T'lF+&&HQK3)r=   c                    Sn[         R                  " S/S/S/S//US9n[         R                  " U5      n[         R                  " / SQ[         R                  S9nSnU " XTXgU5        [        R
                  " U" U5      USS2S	4   SS
9  g)z
Check a group transform that executes a cumulative function.

Parameters
----------
pd_op : callable
    The pandas cumulative function.
np_op : callable
    The analogous one in NumPy.
dtype : type
    The specified dtype of the data.
Fr   r   r   rn   r   )r   r   r   r   Nr   )check_dtype)r   r@   
zeros_liker   r/   r0   )pd_opnp_opr   is_datetimelikedataanswerr7   ngroupss           r:   (_check_cython_group_transform_cumulativer      s{     O88aS1#sQC(6D]]4 FXXl"''2FG	&9dVAqD\uMr=   np_dtype)r   uint64ri   re   c                     [         R                  " U 5      R                  n[        [         R                  p2[        X#U5        g N)r   r   typer   cumsumr   )r   r   r   r   s       r:   "test_cython_group_transform_cumsumr      s-     HHX##E5,U5Ar=   c                  f    [         R                  n [        [         R                  p![	        XU 5        g r   )r   re   r   cumprodr   )r   r   r   s      r:   #test_cython_group_transform_cumprodr      s     JJE "**5,U5Ar=   c            
         Sn [         R                  " / SQ[         R                  S9nSn[         R                  " S/S/S/[         R                  /S//SS9n[         R                  " U5      nUR                  [         R                  5        [        XCXU 5        [         R                  " SSS	[         R                  S
/SS9n[        R                  " US S 2S4   U5        [         R                  " U5      nUR                  [         R                  5        [        XCXU 5        [         R                  " SSS	[         R                  S/SS9n[        R                  " US S 2S4   U5        Sn [         R                  " [         R                  " SS5      /S-  SS9S S 2S 4   n[         R                  " USS9n[        XCR                  S5      XU 5        [         R                  " [         R                  " SS5      [         R                  " SS5      [         R                  " SS5      [         R                  " SS5      [         R                  " SS5      /5      n[        R                  " US S 2S4   R                  S5      U5        g )NF)r   r   r   r   r   r   r   r   r   rn   re   rl      r   r   Tnsr   m8[ns]r   )r   r@   r   r"   r   fillr   r/   r0   r   timedelta64view)r   r7   r   r   actualr   s         r:   !test_cython_group_transform_algosr      s   O XXoRWW5FG88aS1#sRVVHqc2)DD]]4 F
KK&AxxAq"&&"-Y?Hq!th7]]4 F
KKv@xxAq"&&"-Y?Hq!th7 O88R^^At,-1B1d7KD]]4w/F7+VoNxxNN1d#NN1d#NN1d#NN1d#NN1d#	
H q!t 1 1( ;XFr=   c                  "   [         R                  " SSS9n [         R                  " S/SS9n[         R                  " [         R                  " SS5      [         R                  " S	S5      [         R                  " S
5      /SS9S S 2S 4   R	                  S5      R                  S5      n[         R                  " [        U5      [         R                  S9n[        XX#SS9  [        R                  " U S S 2S4   [         R                  " S/SS95        g )Nr?   re   r`   r   r   r   r   r   r   rn   NaTr   Tr   r   )r   r%   r@   r   r   r$   rz   r   r   r/   r0   r   r5   r   r7   s       r:   #test_cython_group_mean_datetimeliker      s    XXF)4FXXqc)F
^^At$bnnQ&=r~~e?TU	
 T'	 
g			 	 XXc$irww/FvtTBq!tbhhs).LMr=   c            
      T   [         R                  " SSS9n [         R                  " SSS9n[         R                  " SSS9S S 2S 4   n[         R                  " S[         R                  S9n[        R                  " [
        SS9   [        XX#S	S
S9  S S S 5        g ! , (       d  f       g = f)Nr?   re   r   r   r   r   	min_count)matchTr   )r   r   )r   r%   r   pytestraisesAssertionErrorr   r   s       r:   &test_cython_group_mean_wrong_min_countr     sx    XXF)4FXXaw'F88AY'40DXXarww'F	~[	964QRS 
:	9	9s   B
B'c                  R   [         R                  " SSS9n [         R                  " S/SS9n[         R                  " [         R                  " S5      [         R                  " S5      /SS9S S 2S 4   R	                  S5      R                  S5      n[         R                  " [        U5      [         R                  S9n[        XX#S	S
9  [        R                  " U S S 2S4   [         R                  " [         R                  " [         R                  " US   US   5      S5      SS95        g )Nr?   re   r   r   r   r   r   r   Fr   r   r   )r   r%   r@   r   r   r$   rz   r   r   r/   r0   divideaddr   s       r:   :test_cython_group_mean_not_datetimelike_but_has_NaT_valuesr     s    XXF)4FXXqc)F
^^E"BNN5$9:	
 T'	 
g			 	 XXc$irww/FvtUCq!tbhhryyQa)A1EYWr=   c            	      Z   [         R                  " [         R                  [         R                  /[         R                  [         R                  //SS9n [         R                  " SS/SS9n[         R                  " [         R                  S/SS/SS/SS/SS	/S
[         R                  //SS9n[         R                  " / SQ[         R                  S9n[        XX#SS9  [         R                  " [         R                  S/S[         R                  //SS9n[        R                  " U U5        g )Nre   r   r   r   g      ?g       @g      @g      @g      @r   )r   r   r   r   r   r   Fr   r   )r   r@   r"   infr   r   r/   r0   )r   r5   r   r7   r   s        r:   .test_cython_group_mean_Inf_at_begining_and_endr      s    XX'"&&"&&)9:)LFXXq!fG,F88
&&#c
S#Jc
S#JBFFTD XX(8FvtUCxx"&&!q"&&k2)DHr=   zvalues, outc           	         [         R                  " [         R                  /[         R                  //SS9n[         R                  " SS/SS9n[         R                  " U SS9n[         R                  " / SQ[         R                  S9n[	        X#XES SS9  [         R                  " USS9n[
        R                  " UU5        g )Nre   r   r   r   )r   r   r   Fr   )r   r@   r"   r   r   r/   r0   )r6   r4   r   r5   r   r7   r   s          r:   -test_cython_group_sum_Inf_at_begining_and_endr   4  s     XXx"&&*)<FXXq!fG,F88F),DXXirww/FfdD%Hxx9-Hr=   )$numpyr   r   pandas._libsr   r}   pandas._libs.groupbyr   r   r   r   r   pandas.core.dtypes.commonr	   pandasr
   pandas._testing_testingr/   r   r\   rg   markparametrizer   r   r   r   r   r   r   r   r   r   r"   r   rU   r=   r:   <module>r      s     .  :  R/ R/jA+ A,+  9i"89* :*6N2 %NOB PBB#GLN$T(( 66(RVVHrvvh	'266(RVVH)=>66(RVVHwi	(BFF8bffX*>?66(bffWIx	(BFF8bffX*>?66(bffWIy	)RVVHwi+@A	r=   