gL i( ddlZddlZddlmZddlmZmZm Z m Z m Z ddl m Z ddlmZddlmZGddZGdd eZGd d eZej,j/d d dgdZdZej,j/dgddZdZdZdZdZdZdZ ej,j/dejBgejBgejBggejBgejBggfejBgejBgejB ggejBgejDggfejBgejB gejBggejBgejDggfejBgejB gejB ggejBgejB ggfgdZ#y)N)groupby) group_cumprod group_cumsum group_mean group_sum group_var)ensure_platform_int)isnac*eZdZdZdZdZdZdZy)GroupVarTestMixinctjjd}tjtjdzj |j }tjdd}d|jdj |j z}tjtjddj d }tj|jd d jd d dzddtjf}|dz}|j||||tj|||j sJt#j$||y)Nrint64dtype )r)intp)rrForderr)axisddofr)nprandom default_rngnanonesastyperzerostilearangesqueezereshapestdnewaxisalgoallclosertoltmassert_numpy_array_equalselfprngoutcountsvalueslabels expected_outexpected_countss j/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/pandas/tests/groupby/test_libgroupby.pytest_group_var_generic_1dz+GroupVarTestMixin.test_group_var_generic_1dsyy$$Q'vv'// ;!7+dkk'*11$**==1t,33F; JJv  & &vS & 9 = =11 = MQR R RZZ- !1* #vvv.{{3 dii888 ##FO<cntjjd}tjtjdzj |j }tjdd}d|jdj |j z}tjdd }tj|jd dzgg}|dz}|j||||tj|||jsJtj||y) Nrrrrrrrrrr)r)rrr r!r"r#rr$arrayr)r+r,r-r.r/r0s r9%test_group_var_generic_1d_flat_labelsz7GroupVarTestMixin.test_group_var_generic_1d_flat_labels%syy$$Q'vv'// ;!7+dkk&)00<<!6*xx&**!*"4"9!: ;<  1* #vvv.{{3 dii888 ##FOr-)rrr r!r"r#rr$r%r&vstackr(r)Tr+r.assert_almost_equalr/r0s r9"test_group_var_generic_2d_some_nanz4GroupVarTestMixin.test_group_var_generic_2d_some_nanDsPyy$$Q'vv'// ;!7+dkk'*11$**==vvq!t 1t,33F;yyq!t $$Q$599qq9IQN#  !FF4::   !1* #vvv. sLw? ##FOr!rr"r$r+r.rJ)r1r3r4r5r6s r9test_group_var_constantz)GroupVarTestMixin.test_group_var_constantYshhz41#W-"RWWV4::%FF!6* #vvv.ayA~~4yA~~ s4y#.r;N)__name__ __module__ __qualname__r:r?rErKrNr;r9r r s="= ==* /r;r cBeZdZdZeeZejZ dZ dZ y)TestGroupVarFloat64Tgh㈵>ctjjd}tjtjgg|j }tjdgd}|jddzj |j }d|_tjdd}|j|||||ddk(sJtj|d d d y) Nrrrr@BlJ))rVrrrMgUUUUUU?gMb@?rG) rrr r>r!rr#shaper$r+r.rJ)r1r2r3r4r5r6s r9test_group_var_large_inputsz/TestGroupVarFloat64.test_group_var_large_inputsosyy$$Q'hhz41#W-++e$v-55djjA! %v. #vvv.ayE!!! s4y(@r;N) rOrPrQ__test__ staticmethodrr+rfloat64rr-rXrRr;r9rTrThs%H  "D JJE D Ar;rTc<eZdZdZeeZejZ dZ y)TestGroupVarFloat32Tg{Gz?N) rOrPrQrYrZrr+rfloat32rr-rRr;r9r]r]~sH  "D JJE Dr;r]rr^r[c tjtjjdj d|}tjgd}tj d|}tj t |tj}ttjtjdtjtjd|f}tj}||||dddf|d}tj||dd ||d d ||d dg}tj ||tj"|tjgd tjtj$|dd ||||dddf|tj$|d<tj ||y) Nrr) r`)rrrct|jr$tjtjdS|d|j |j |dgS)Nrcr)r allrrepeatr!maxmin)groups r9_ohlcztest_group_ohlc.._ohlcsH ;?? 99RVVQ' 'a%))+uyy{E"I>>r;rarb)rara)rr>rr standard_normalr$lenrr rgr&diffr_ libgroupby group_ohlcr.rJr/r!) robjbinsr3r4r6funcrkexpecteds r9test_group_ohlcrwsa ((299((+;;B?u MC 88K D ((65 !C XXc#hbhh /F 299Q<q$w9P!Q RF  Dfc!T'lF+? xxs2Aws1Ry)95RS?KLH3)"(((KLffCGfc!T'lF+&&HQK3)r;c$d}tjdgdgdgdgg|}tj|}tjgdtj}d}||||||t j |||ddd fd 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. Frrrrcr)rrrrNr) check_dtype)rr> zeros_likerr.r/)pd_opnp_opris_datetimelikedataanswerr6ngroupss r9(_check_cython_group_transform_cumulativersO 88aS1#sQC( 6D ]]4 F XXl"'' 2FG &$9d VAqD\uMr;np_dtype)ruint64r^r[ctj|j}ttj}}t |||yN)rrtypercumsumr)rrr{r|s r9"test_cython_group_transform_cumsumrs1 HHX  # #E5E,UE5Ar;cjtj}ttj}}t |||yr)rr[rcumprodr)rr{r|s r9#test_cython_group_transform_cumprodrs$ JJE "**5E,UE5Ar;c d}tjgdtj}d}tjdgdgdgtjgdggd}tj|}|j tjt |||||tjddd tjd gd}tj|ddd f|tj|}|j tjt|||||tjddd tjd gd}tj|ddd f|d }tjtjddgdzddddf}tj|d}t||jd|||tjtjddtjddtjddtjddtjddg}tj|ddd fjd|y)NF)rrrrrrrrrrcr[rarrTnsrm8[ns]r) rr>rr!rzfillrr.r/r timedelta64view)r}r6rr~actualrvs r9!test_cython_group_transform_algosrsOXXoRWW 5FG 88aS1#sRVVHqc2) DD ]]4 F KK&$AxxAq"&&"-Y?Hq!t h7 ]]4 F KKvw@xxAq"&&"-Y?Hq!t h7O 88R^^At,-1 B1d7 KD ]]4w /F7+VWoNxx NN1d # NN1d # NN1d # NN1d # NN1d #  Hq!t 1 1( ;XFr;c8tjdd}tjdgd}tjtjddtjd dtjd gd dddfj dj d}tjt |tj}t||||d tj|dddftjdgdy)Nr=r[rWrrrrrrrcNaTrTr}r) rr$r>rrr#rnrrr.r/rr4r~r6s r9#test_cython_group_mean_datetimelikers XXF) 4F XXqc )F  ^^At $bnnQ&=r~~e?T U  T'  g    XXc$irww /FvvtVTBq!t bhhs).LMr;c htjdd}tjdd}tjdddddf}tjdtj}tjt d5t ||||d d dddy#1swYyxYw) Nr=r[rrrr min_count)matchTr)r}r)rr$rpytestraisesAssertionErrorrrs r9&test_cython_group_mean_wrong_min_countrs XXF) 4F XXaw 'F 88AY '4 0D XXarww 'F ~[ 9T664QRSTTTs B((B1c ftjdd}tjdgd}tjtjdtjdgddddfj dj d}tjt |tj}t||||d tj|dddftjtjtj|d|d d dy) Nr=r[rrrrrrFrrr) rr$r>rrr#rnrrr.r/divideaddrs r9:test_cython_group_mean_not_datetimelike_but_has_NaT_valuesr s XXF) 4F XXqc )F  ^^E "BNN5$9 :  T'  g    XXc$irww /FvvtVUCq!t bhhryyQa)A1EYWr;c vtjtjtjgtjtjggd}tjddgd}tjtjdgddgddgddgdd gd tjggd}tjgd tj}t ||||d tjtjdgdtjggd}t j||y)Nr[rrrg?g@g@g@g@r)rrrrrrFrr)rr>r!infrrr.r/)rr4r~r6rvs r9.test_cython_group_mean_Inf_at_begining_and_endr s XX'"&&"&&)9:) LF XXq!fG ,F 88 &&#c S#Jc S#JBFF T DXX( 8FvvtVUCxx"&&!q"&&k2)DHr;z values, outctjtjgtjggd}tjddgd}tj|d}tjgdtj}t ||||ddtj|d}t j ||y)Nr[rrr)rrrFr)rr>r!rrr.r/)r5r3rr4r~r6rvs r9-test_cython_group_sum_Inf_at_begining_and_endr4sXXx"&&*) rs .:R/R/jA+A,+9i"89*:*6N2%NOBPBB#GLN$T(( 66(RVVHrvvh '266(RVVH)=> 66(RVVHwi (BFF8bffX*>? 66(bffWIx (BFF8bffX*>? 66(bffWIy )RVVHwi+@A r;