
    .iC+                     
   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 ej&                  j)                  dddg       G d	 d
             Zd Zej&                  j)                  dddg      d        Zej&                  j)                  dej0                  ej2                  ej4                  ej6                  g      ej&                  j)                  deej8                  feej:                  fg      d               Zd Zd Z d Z!d Z"d Z#ej&                  j)                  dejH                  gejH                  gejH                  ggejH                  gejH                  ggfejH                  gejH                  gejH                   ggejH                  gejJ                  ggfejH                  gejH                   gejH                  ggejH                  gejJ                  ggfejH                  gejH                   gejH                   ggejH                  gejH                   ggfg      d        Z&ej&                  j)                  d ejN                  ej6                        jP                  ejH                  ggf ejN                  ej6                        jR                  ejH                   ggf ejT                   ejN                  ej6                        jR                   ejN                  ej6                        jP                  dz  z          e+ejH                   ejH                        ggf ejT                   ejN                  ej6                        jP                   ejN                  ej6                        jR                  dz  z          e+ejH                  ejH                         ggf ejT                   ejN                  ej6                        jP                   ejN                  ej6                        jP                  dz  z          e+ejH                  ejH                        ggf ejT                   ejN                  ej6                        jR                   ejN                  ej6                        jR                  dz  z          e+ejH                   ejH                         ggf ejT                  d ejN                  ej6                        jR                  dz  z          e+dejH                         ggf ejT                   ejN                  ej6                        jP                  dz          e+ejH                  d      ggfg      d        Z,y)    N)groupby)group_cumprodgroup_cumsum
group_mean	group_sum	group_var)ensure_platform_int)isnazdtype, rtol)float32g{Gz?)float64gh㈵>c                   *    e Zd Zd Zd Zd Zd Zd Zy)TestGroupVarc                    t         j                  j                  d      }t         j                  t        j                  d      z  j                  |      }t        j                  dd      }d|j                  d      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   }	t        ||||       t        j                  |||      sJ t        j                   ||	       y )N         r   int64dtype
   )   r   )   intp)r   r   Forderr   )axisddofr   )nprandomdefault_rngnanonesastypezerostilearangesqueezereshapestdnewaxisr   allclosetmassert_numpy_array_equal
selfr   rtolprngoutcountsvalueslabelsexpected_outexpected_countss
             b/var/www/app/trading-bot/venv/lib/python3.12/site-packages/pandas/tests/groupby/test_libgroupby.pytest_group_var_generic_1dz&TestGroupVar.test_group_var_generic_1d   s   yy$$Q'vv'//6!7+dkk'*11%881t,33F; JJv&&vS&9==11=MQRR
RZZ- !1*#vvv.{{3d333
##FO<    c                 &   t         j                  j                  d      }t         j                  t        j                  d      z  j                  |      }t        j                  dd      }d|j                  d      j                  |      z  }t        j                  dd	      }t        j                  |j                  d
      dz  gg      }|dz   }	t        ||||       t        j                  |||      sJ t        j                  ||	       y )Nr   r   r   r   r   r   r   r   r   r   )r   )r    r!   r"   r#   r$   r%   r&   arrayr+   r   r-   r.   r/   r0   s
             r:   %test_group_var_generic_1d_flat_labelsz2TestGroupVar.test_group_var_generic_1d_flat_labels&   s    yy$$Q'vv'//6!7+dkk&)0077!6*xx&**!*"4"9!: ;< 1*#vvv.{{3d333
##FO<r<   c                 l   t         j                  j                  d      }t         j                  t        j                  d      z  j                  |      }t        j                  dd      }d|j                  d      j                  |      z  }t        j                  t        j                  d      d      j                  d	      }t        j                  |j                  ddd      d
d      dz  }|dz   }	t        ||||       t        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/   r0   s
             r:   $test_group_var_generic_2d_all_finitez1TestGroupVar.test_group_var_generic_2d_all_finite6   s    yy$$Q'vv'//6!7+dkk'*11%881t,33F;vvfnnQ15AAF!K 1*#vvv.{{3d333
##FO<r<   c                 B   t         j                  j                  d      }t         j                  t        j                  d      z  j                  |      }t        j                  dd      }d|j                  d      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                  |      }|dz   }	t        ||||       t        j                  ||d       t        j                   ||	       y )Nr   rB   r   r   r   r   rC   r   rD   r   r   r   r   rE   gƠ>r2   )r    r!   r"   r#   r$   r%   r&   r'   r(   vstackr*   r+   Tr   r.   assert_almost_equalr/   r0   s
             r:   "test_group_var_generic_2d_some_nanz/TestGroupVar.test_group_var_generic_2d_some_nanE   s?   yy$$Q'vv'//6!7+dkk'*11%88vvq!t1t,33F;yyq!t$$Q$599qq9IQN#

 !FF5M 	 !1*#vvv.
sLw?
##FO<r<   c                 Z   t        j                  t         j                  gg|      }t        j                  dgd      }dt        j                  d|      z  }t        j                  dd      }t        ||||       |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.   rK   )r1   r   r2   r4   r5   r6   r7   s          r:   test_group_var_constantz$TestGroupVar.test_group_var_constantZ   s     hhz/1#W-"RWWV5%AA!6*#vvv.ayA~~4yA~~
s4y#.r<   N)__name__
__module____qualname__r;   r@   rF   rL   rO    r<   r:   r   r      s    ="= ==*/r<   r   c                     t         j                  } t         j                  j                  d      }t        j                  t         j
                  gg|       }t        j                  dgd      }|j                  d      dz   j                  |       }t        j                  dd      }t        ||||       |d   dk(  sJ t        j                  |d	   d
d       y )Nr   r   r   r   )@B r   l    J)rU   r   rN   gUUUUUU?gMb@?rH   )r    r   r!   r"   r?   r#   r%   r&   r   r.   rK   )r   r3   r4   r5   r6   r7   s         r:   test_group_var_large_inputsrV   i   s    JJE99  #D
((RVVH:U
+CXXqc)Fkk*%.66u=FXXe6*Fc666*!93t9hV<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   )      rX   )r      r   r   c                     t        |       j                         r$t        j                  t        j                  d      S | d   | j                         | j                         | d   gS )Nr[   r   )r
   allr    repeatr#   maxmin)groups    r:   _ohlcztest_group_ohlc.<locals>._ohlc   sH    ;??99RVVQ''a%))+uyy{E"I>>r<   rY   rZ   )rY   rY      )r    r?   r!   r"   standard_normalr&   lenr   r	   r_   r(   diffr_
libgroupby
group_ohlcr.   rK   r/   r#   )	r   objbinsr4   r5   r7   funcrc   expecteds	            r:   test_group_ohlcro   x   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<   zpd_op, np_opc                 $   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 )
NFr   r   r   r[   r   )r   r   r   r   r   )check_dtype)r    r?   
zeros_liker   r.   r/   )r   pd_opnp_opis_datetimelikedataanswerr7   ngroupss           r:   test_cython_group_transformry      s     O88aS1#sQC(6D]]4 FXXl"''2FG	&$9dVAqD\uMr<   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   r[   r   rY      r   r   Tnsr   m8[ns]r   )r    r?   r   r#   rr   fillr   r.   r/   r   timedelta64view)ru   r7   rx   rv   actualrn   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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   shaper   r   r   r   r   r|   r[   NaTr}   Tru   r   )r    r&   r?   r   r   r%   rf   r   r   r.   r/   r   r5   rv   r7   s       r:   #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   )ru   r   )r    r&   r   pytestraisesAssertionErrorr   r   s       r:   &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%   rf   r   r   r.   r/   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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      @r   )r   r   r   r   r   r   Fr   r   )r    r?   r#   infr   r   r.   r/   )r   r5   rv   r7   rn   s        r:   /test_cython_group_mean_Inf_at_beginning_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/   )r6   r4   r   r5   rv   r7   rn   s          r:   .test_cython_group_sum_Inf_at_beginning_and_endr     s     XXx"&&*)<FXXq!fG,F88F),DXXirww/FffdFD%Hxx9-Hr<   zvalues, expected_valuesy              ?r   g      "@y              @c                    t        j                  t        d      D cg c]  }| g c}      }t        j                  g dt         j                        }t        j                  dgd      }t        j                  || j                        }t        j
                  |      }t        ||||d d       t        j                  ||       y c c}w )Nr   )r   r   r   r   r   r   Fr   )	r    r?   ranger   r   rr   r   r.   r/   )r6   expected_values_rv   r7   r5   rn   r   s           r:   test_cython_group_sum_overflowr   .  s    B 88uQx0!fX01DXXirww/FXXqc)Fxxv||<H]]8$FffdFD%H1 1s   
C)-numpyr    r   pandas._libsr   ri   pandas._libs.groupbyr   r   r   r   r   pandas.core.dtypes.commonr	   pandasr
   pandas._testing_testingr.   markparametrizer   rV   ro   r   uint64r   r   cumsumcumprodry   r   r   r   r   r   r   r#   r   finfor`   ra   
complex128complexr   rS   r<   r:   <module>r      s     .  :   ):<M(NOR/ R/ PR/j= 9i"89* :*6 288RYY

BJJ"OP	ryy!	

#N QN#GLN$T(( 66(RVVHrvvh	'266(RVVH)=>66(RVVHwi	(BFF8bffX*>?66(bffWIx	(BFF8bffX*>?66(bffWIy	)RVVHwi+@A	" 	"**		!	!RVVH:.	"**		!	!bffWI;/BMM("((2::.22XRXXbjj5I5M5MPR5RRSrvvgrvv&'(	

 BMM("((2::.22XRXXbjj5I5M5MPR5RRSbffrvvg&'(	

 BMM("((2::.22XRXXbjj5I5M5MPR5RRSbffbff%&'	

 BMM("((2::.22XRXXbjj5I5M5MPR5RRSrvvgw'()	

 BMM# 4 8 82 ==>cBFF7#$%	

 BMM("((2::.22V;<bffc"#$	
/>2?>2r<   