
    Owg(              	          d dl Zd dlZd dlmZ d dl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  G d d      Z G d d	e      Z G d
 de      Zej,                  j/                  dddg      d        Zd Zej,                  j/                  dg d      d        Zd Zd Zd Zd Zd Zd Z ej,                  j/                  dejB                  gejB                  gejB                  ggejB                  gejB                  ggfejB                  gejB                  gejB                   ggejB                  gejD                  ggfejB                  gejB                   gejB                  ggejB                  gejD                  ggfejB                  gejB                   gejB                   ggejB                  gejB                   ggfg      d        Z#y)    N)groupby)group_cumprodgroup_cumsum
group_mean	group_sum	group_var)ensure_platform_int)isnac                   *    e Zd Zd Zd Zd Zd Zd Zy)GroupVarTestMixinc                    t         j                  j                  d      }t         j                  t        j                  d      z  j                  | j                        }t        j                  dd      }d|j                  d      j                  | j                        z  }t        j                  t        j                  d      d      j                  d	      }t        j                  |      j                  d
d      j                  dd      dz  d d t         j                  f   }|dz   }| j                  ||||       t        j                  ||| j                         sJ t#        j$                  ||       y )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           [/var/www/horilla/myenv/lib/python3.12/site-packages/pandas/tests/groupby/test_libgroupby.pytest_group_var_generic_1dz+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*		#vvv.{{3dii888
##FO<    c                 n   t         j                  j                  d      }t         j                  t        j                  d      z  j                  | j                        }t        j                  dd      }d|j                  d      j                  | j                        z  }t        j                  dd	      }t        j                  |j                  d
      dz  gg      }|dz   }| j                  ||||       t        j                  ||| j                        sJ t        j                  ||       y )Nr   r   r   r   r   r   r   r   r   r   )r   )r   r   r    r!   r"   r#   r   r$   arrayr)   r+   r,   r-   r.   r/   r0   s           r9   %test_group_var_generic_1d_flat_labelsz7GroupVarTestMixin.test_group_var_generic_1d_flat_labels%   s    yy$$Q'vv'//

;!7+dkk&)00<<!6*xx&**!*"4"9!: ;< 1*		#vvv.{{3dii888
##FO<r;   c                    t         j                  j                  d      }t         j                  t        j                  d      z  j                  | j                        }t        j                  dd      }d|j                  d      j                  | j                        z  }t        j                  t        j                  d      d      j                  d	      }t        j                  |j                  ddd      d
d      dz  }|dz   }| j                  ||||       t        j                  ||| j                        sJ t        j                   ||       y )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.   r/   r0   s           r9   $test_group_var_generic_2d_all_finitez6GroupVarTestMixin.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*		#vvv.{{3dii888
##FO<r;   c                    t         j                  j                  d      }t         j                  t        j                  d      z  j                  | j                        }t        j                  dd      }d|j                  d      j                  | j                        z  }t         j                  |d d df<   t        j                  t        j                  d      d	      j                  d
      }t        j                  |d d df   j                  ddd      j                  dd      dz  t         j                  t        j                  d      z  g      j                  j                  | j                        }|dz   }| j                  ||||       t        j                   ||d       t        j"                  ||       y )Nr   rA   r   r   r   r   rB   r   rC   r   r   r   r   rD   gƠ>r-   )r   r   r    r!   r"   r#   r   r$   r%   r&   vstackr(   r)   Tr+   r.   assert_almost_equalr/   r0   s           r9   "test_group_var_generic_2d_some_nanz4GroupVarTestMixin.test_group_var_generic_2d_some_nanD   sP   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*		#vvv.
sLw?
##FO<r;   c                    t        j                  t         j                  gg| j                        }t        j                  dgd      }dt        j                  d| j                        z  }t        j
                  dd      }| j                  ||||       |d   dk(  sJ |d   dk\  sJ t        j                  |d   d	       y )
Nr   r   r   gUUUժ?)r   r   r   r   r   r   g        )	r   r>   r!   r   r"   r$   r+   r.   rJ   )r1   r3   r4   r5   r6   s        r9   test_group_var_constantz)GroupVarTestMixin.test_group_var_constantY   s     hhz41#W-"RWWV4::%FF!6*		#vvv.ayA~~4yA~~
s4y#.r;   N)__name__
__module____qualname__r:   r?   rE   rK   rN    r;   r9   r   r      s    ="= ==*/r;   r   c                   B    e Zd ZdZ ee      Zej                  Z	dZ
d Zy)TestGroupVarFloat64Tgh㈵>c                    t         j                  j                  d      }t        j                  t         j                  gg| j
                        }t        j                  dgd      }|j                  d      dz   j                  | j
                        }d|_        t        j                  dd      }| j                  ||||       |d   dk(  sJ t        j                  |d	   d
d       y )Nr   r   r   r   @B l    J))rV   r   r   rM   gUUUUUU?gMb@?rG   )r   r   r    r>   r!   r   r#   shaper$   r+   r.   rJ   )r1   r2   r3   r4   r5   r6   s         r9   test_group_var_large_inputsz/TestGroupVarFloat64.test_group_var_large_inputso   s    yy$$Q'hhz41#W-++e$v-55djjA!%v.		#vvv.ayE!!!
s4y(@r;   N)rO   rP   rQ   __test__staticmethodr   r+   r   float64r   r-   rX   rR   r;   r9   rT   rT   h   s%    H	"DJJEDAr;   rT   c                   <    e Zd ZdZ ee      Zej                  Z	dZ
y)TestGroupVarFloat32Tg{Gz?N)rO   rP   rQ   rY   rZ   r   r+   r   float32r   r-   rR   r;   r9   r]   r]   ~   s    H	"DJJEDr;   r]   r   r^   r[   c           
         t        j                  t         j                  j                  d      j	                  d      |       }t        j                  g d      }t        j
                  d|       }t        j
                  t        |      t         j                        }t        t        j                  t        j                  d      t        j                  t         j                  d|f                     }t        j                  } ||||d d d f   |       d }t        j                   ||d d	        ||d	d
        ||d
d        g      }t        j                   ||       t        j"                  |t        j                  g dt         j                               t         j$                  |d d	  ||||d d d f   |       t         j$                  |d<   t        j                   ||       y )Nr      r   )      r`   )r      r   r   c                     t        |       j                         r$t        j                  t        j                  d      S | d   | j                         | j                         | d   gS )Nrc   r   )r
   allr   repeatr!   maxmin)groups    r9   _ohlcztest_group_ohlc.<locals>._ohlc   sH    ;??99RVVQ''a%))+uyy{E"I>>r;   ra   rb   )ra   ra      )r   r>   r   r    standard_normalr$   lenr   r	   rg   r&   diffr_
libgroupby
group_ohlcr.   rJ   r/   r!   )	r   objbinsr3   r4   r6   funcrk   expecteds	            r9   test_group_ohlcrw      sa   
((299((+;;B?u
MC88K D
((65
!CXXc#hbhh/F 299Q<q$w9P!QRF  Dfc!T'lF+?
 xxs2Aws1Ry)95RS?KLH3)"(((KLffCGfc!T'lF+&&HQK3)r;   c                 $   d}t        j                  dgdgdgdgg|      }t        j                  |      }t        j                  g dt         j                        }d} | |||||       t	        j
                   ||      |ddd	f   d
       y)a  
    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   rc   r   )r   r   r   r   Nr   )check_dtype)r   r>   
zeros_liker   r.   r/   )pd_opnp_opr   is_datetimelikedataanswerr6   ngroupss           r9   (_check_cython_group_transform_cumulativer      s     O88aS1#sQC(6D]]4 FXXl"''2FG	&$9dVAqD\uMr;   np_dtype)r   uint64r^   r[   c                     t        j                  |       j                  }t        t         j                  }}t        |||       y N)r   r   typer   cumsumr   )r   r   r{   r|   s       r9   "test_cython_group_transform_cumsumr      s1     HHX##E5E,UE5Ar;   c                  j    t         j                  } t        t         j                  }}t	        |||        y r   )r   r[   r   cumprodr   )r   r{   r|   s      r9   #test_cython_group_transform_cumprodr      s$    JJE "**5E,UE5Ar;   c            
         d} t        j                  g dt         j                        }d}t        j                  dgdgdgt         j                  gdggd      }t        j                  |      }|j                  t         j                         t        |||||        t        j                  ddd	t         j                  d
gd      }t        j                  |d d df   |       t        j                  |      }|j                  t         j                         t        |||||        t        j                  ddd	t         j                  dgd      }t        j                  |d d df   |       d} t        j                  t        j                  dd      gdz  d      d d d f   }t        j                  |d      }t        ||j                  d      |||        t        j                  t        j                  dd      t        j                  dd      t        j                  dd      t        j                  dd      t        j                  dd      g      }t        j                  |d d df   j                  d      |       y )NF)r   r   r   r   r   r   r   r   r   rc   r[   ra      r   r   Tnsr   m8[ns]r   )r   r>   r   r!   rz   fillr   r.   r/   r   timedelta64view)r}   r6   r   r~   actualrv   s         r9   !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vw@xxAq"&&"-Y?Hq!th7 O88R^^At,-1B1d7KD]]4w/F7+VWoNxxNN1d#NN1d#NN1d#NN1d#NN1d#	
H q!t 1 1( ;XFr;   c                  8   t        j                  dd      } t        j                  dgd      }t        j                  t        j                  dd      t        j                  d	d      t        j                  d
      gd      d d d f   j	                  d      j                  d      }t        j                  t        |      t         j                        }t        | |||d       t        j                  | d d df   t        j                  dgd             y )Nr=   r[   rW   r   r   r   r   r   r   rc   NaTr   Tr}   r   )r   r$   r>   r   r   r#   rn   r   r   r.   r/   r   r4   r~   r6   s       r9   #test_cython_group_mean_datetimeliker      s    XXF)4FXXqc)F
^^At$bnnQ&=r~~e?TU	
 T'	 
g			 	 XXc$irww/FvvtVTBq!tbhhs).LMr;   c            	      h   t        j                  dd      } t        j                  dd      }t        j                  dd      d d d f   }t        j                  dt         j                        }t        j                  t
        d      5  t        | |||d	d
       d d d        y # 1 sw Y   y xY w)Nr=   r[   r   r   r   r   	min_count)matchTr   )r}   r   )r   r$   r   pytestraisesAssertionErrorr   r   s       r9   &test_cython_group_mean_wrong_min_countr     s    XXF)4FXXaw'F88AY'40DXXarww'F	~[	9 T664QRST T Ts   B((B1c                  f   t        j                  dd      } t        j                  dgd      }t        j                  t        j                  d      t        j                  d      gd      d d d f   j	                  d      j                  d      }t        j                  t        |      t         j                        }t        | |||d	
       t        j                  | d d df   t        j                  t        j                  t        j                  |d   |d         d      d             y )Nr=   r[   r   r   r   r   r   r   Fr   r   r   )r   r$   r>   r   r   r#   rn   r   r   r.   r/   divideaddr   s       r9   :test_cython_group_mean_not_datetimelike_but_has_NaT_valuesr     s    XXF)4FXXqc)F
^^E"BNN5$9:	
 T'	 
g			 	 XXc$irww/FvvtVUCq!tbhhryyQa)A1EYWr;   c            	      v   t        j                  t         j                  t         j                  gt         j                  t         j                  ggd      } t        j                  ddgd      }t        j                  t         j                  dgddgddgddgdd	gd
t         j                  ggd      }t        j                  g dt         j                        }t        | |||d       t        j                  t         j                  dgdt         j                  ggd      }t        j                  | |       y )Nr[   r   r   r   g      ?g       @g      @g      @g      @r   )r   r   r   r   r   r   Fr   r   )r   r>   r!   infr   r   r.   r/   )r   r4   r~   r6   rv   s        r9   .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vvtVUCxx"&&!q"&&k2)DHr;   zvalues, outc                    t        j                  t         j                  gt         j                  ggd      }t        j                  ddgd      }t        j                  | d      }t        j                  g dt         j                        }t	        ||||d d       t        j                  |d      }t        j                  ||       y )Nr[   r   r   r   )r   r   r   Fr   )r   r>   r!   r   r   r.   r/   )r5   r3   r   r4   r~   r6   rv   s          r9   -test_cython_group_sum_Inf_at_begining_and_endr   4  s     XXx"&&*)<FXXq!fG,F88F),DXXirww/FffdFD%Hxx9-Hr;   )$numpyr   r   pandas._libsr   rq   pandas._libs.groupbyr   r   r   r   r   pandas.core.dtypes.commonr	   pandasr
   pandas._testing_testingr.   r   rT   r]   markparametrizerw   r   r   r   r   r   r   r   r   r   r!   r   rR   r;   r9   <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;   