gL i? ddlZddlZddlmZddlmZddlmcm Z ddl m Z m Z mZmZddlmZddlmZej*j,gZej0dZej5ej*j7eej8edk(xredej8 ej:d d g d Zej:digdigdigdigdigdigdddigdigdddigg dZe j@dej*jCdGddZ"e j@dGddZ#e j@ddZ$e j@ddZ%e j@dej*jLej*jCdGddZ'e j@dd Z(y)!N)is_platform_arm)NumbaUtilError) DataFrameSeriesoption_context to_datetime)Versionnumbaz0.61z&Segfaults on ARM platforms with numba )reasonsingletable)paramsc|jS)z3method keyword in rolling/expanding/ewm constructorparamrequests d/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/pandas/tests/window/test_numba.pymethodrs ==summeanmedianmaxminvarddofstdc|jSNrrs r$arithmetic_numba_supported_operatorsr!"s ==rignorecXeZdZejj dddgdZejj deejdeddddejejdd d d g ddddejejdd d d g ejejdd ddddddg gje edd e d ddejdddd ge d ddejdddd ggdZejj deejde edd gdZejj dddgdZejj ddd ddgdiggdZdZy) TestEnginejitTFc:d}|rddl}|j|}|||d} d} ttd} | j d||j || d| d } | j d||j |d | d } t j| | y) NcNd}|D]}||z } tj||zS)Nrnpr)xargsarg_sumargs rfz0TestEngine.test_numba_vs_cython_apply..f9s2G 3 771:' 'rrnogilparallelnopython r4)centerstepr T)r+engine engine_kwargsrawcython)r8r+r:r r%rrangerollingapplytmassert_series_equal)selfr%r0r1r2r6r7r.r r9r+sresultexpecteds rtest_numba_vs_cython_applyz%TestEngine.test_numba_vs_cython_apply7s (   ! A"'X8T  59 1V$7== D 4> 99QvD99?? hTt@  vx0rdatafoo)namer5r4c|\}}|||d} |jd|} t| |dd| d|} t| |dddi|} tj| | y) Nr/rKr7r r8r9r8r;)r>getattrr@ assert_equal) rBrGr0r1r2r!r7rkwargsr9rollrDrEs r$test_numba_vs_cython_rolling_methodsz/TestEngine.test_numba_vs_cython_rolling_methodsPs{2>"'X8T ||AD|)&v& - ;A )74(CCFC )rc|\}}|||d}ttjd}|j} t | |dd|d|} t | |dddi|} t j | | y)Nr/rHr rSr8r;rT)rr)eye expandingrUr@rV) rBrGr0r1r2r!rrWr9expandrDrEs r&test_numba_vs_cython_expanding_methodsz1TestEngine.test_numba_vs_cython_expanding_methodsts >"'X8T #!(( - ;A +766*E(EfE )rc0d}d}|r&ddl}|j|}|j|}|||d} ttdj d|} | j |d| d } | j |d d } t j| | | j |d| d } | j |d d } t j| | | j |d| d } | j |d d } t j| | y) Nc2tj|dzS)NrJr(r*s rfunc_1z+TestEngine.test_cache_apply..func_1s771:> !rc2tj|dzS)NrH)r)rras rfunc_2z+TestEngine.test_cache_apply..func_2s66!9q= rrr/r5r4rRr T)r8r9r:r;r8r:r<) rBr%r0r1r2r7rbrdr r9rXrDrEs rtest_cache_applyzTestEngine.test_cache_applys  " !  YYv&FYYv&F"'X8T eBi (((6 7-T ::fX4:@ vx0 7-T ::fX4:@ vx0 7-T ::fX4:@ vx0rzwindow,window_kwargsr>r)window min_periodsr\chd}|||d}tdgdi} t| |d d|i|j|dd|d } tdgd i} tj| | t| |d d|i|j|dd|d } tdgd i} tj| | y)Nc2tj||zSr r)r)valuesr*s raddz,TestEngine.test_dont_cache_args..adds66&>A% %rr2r0r1valuerrrrTr )rP)r:r8r9r+?rrrrr3@rtrtrT)rrUr?r@assert_frame_equal) rBrg window_kwargsr0r1r2rrmr9dfrDrEs rtest_dont_cache_argszTestEngine.test_dont_cache_argss &&.8T + ,$V$DFDmDJJ T'TK g78 fh/$V$DFDmDJJ T'TK g78 fh/rcdddfd}d}tdgdi}|jdj|dd| }tdgd i}tj||dd}|jdj|dd| }tdgd i}tj||y) NFTczzSr rT)r*r0r2r1s rfuncz6TestEngine.test_dont_cache_engine_kwargs..funcs8#h. .rrnrorprPr )r:r8r9rsrqrr>r?r@ru) rBr{r9rwrDrEr0r2r1s @@@rtest_dont_cache_engine_kwargsz(TestEngine.test_dont_cache_engine_kwargss /&.8T + ,A$$ d7-% g78 fh/%-8T A$$ d7-% g78 fh/rN)__name__ __module__ __qualname__pytestmark parametrizerFrr)r[naninfTrr=rYr^rfrxr}rTrrr$r$3s [[UT5M21310 [[ fbffQi 1aAq!<1aAq!<VVRVVQ1aAq!<  a 58% ( BB1a3 4 BBAq!4 5  *! *( [[6266!9%veAhU'CD * * [[UT5M2!13!1F [[ 1Q7 8 "  00,0rr$c eZdZejj dddgddgejj ddd gd Zejj dd d gddgejj ddd gd Zejj dddgejj ddd gdZejj dddgdZ y)TestEWMgrouperc|Sr rTras rzTestEWM.arc$|jdSNAgroupbyras rrzTestEWM.199S>rNoner)idsrrrctgdtdd}tjtd5t ||j d|d dddy#1swYyxYw) NabrrrJrBzengine must be eithermatchrrcomrMr8rr=rraises ValueErrorrUewmrBrrrws rtest_invalid_enginezTestEWM.test_invalid_engines` 1aA B ]]:-D E D 5GGBKOOO,f 5U C D D Ds *A((A1c|Sr rTras rrzTestEWM.rrc$|jdSrrras rrzTestEWM.rrctgdtdd}tjtd5t ||j d|dd d i dddy#1swYyxYw) NrrJrzcython engine does notrrrrr;r2TrSrrs rtest_invalid_engine_kwargsz"TestEWM.test_invalid_engine_kwargssf 1aA B ]]:-E F  5GGBKOOO,f 5 D/A    s -A++A4ctdtdi}|dk(rd}n gd|d<d}|dk(rd }||jd || } |||d } t| |d | } t| |d} t j | | y)NrrJrc|Sr rTras rrz.TestEWM.test_cython_vs_numba..rrrc$|jdSrrras rrz.TestEWM.test_cython_vs_numba.. #rrTrr)radjust ignore_nar/r rSr;r)rr=rrUr@ru) rBrrr0r1r2rrrwrr9rDrEs rtest_cython_vs_numbazTestEWM.test_cython_vs_numbas U1X ' f !G*BsG.G U?Fbkoo#f oJ"'X8T %f%WMR'73'x8 fh/rctdgdi}|dk(rd}n d}gd|d<d}tgd }||j|d || } |||d } | jd | } | jd} t j | | y)Nr)rrrPrPr4r4rc|Sr rTras rrz4TestEWM.test_cython_vs_numba_times..rrc$|jdSrrras rrz4TestEWM.test_cython_vs_numba_times..rr)rrrrrrrz23 days) 2020-01-01rz 2020-01-02z 2020-01-10z 2020-02-23z 2020-01-03T)halfliferrtimesr/r rSr;r)rrrrr@ru) rBrr0r1r2rrwrrrr9rDrEs rtest_cython_vs_numba_timesz"TestEWM.test_cython_vs_numba_times s/0 1 f !G.G4BsG   bkoodiu #(X8T  F8888, fh/rN) r~rrrrrrrrrrTrrrrs% [[K!9:@S [[X7D8D  [[K!9:@S [[X78 [[Y(;< [[X708=0& [[Y(;<0=0rrc,d}ttd}tdd5|jdj |dd}ddd|jdj |dd}t j |y#1swYCxYw)Nc2tj|dzS)Nr4r(ras rr.z!test_use_global_config..f1swwqzA~rr5zcompute.use_numbaTr4rer )rr=rr>r?r@rA)r.rCrDrEs rtest_use_global_configr/s uRyA +T 2>1##Ad#=>yy|!!!G!>H8V,>>s $B  Bctjtd5tt dj dj dddidddddy#1swYyxYw) Nz"numba does not support kwargs withrrPc|Sr rTras rrz.test_invalid_kwargs_nopython..?sarrr T)rWr8r:)rrrrr=r>r?rTrrtest_invalid_kwargs_nopythonr;sZ ~-Q R uQx  #)) ad *    s :AA(ceZdZdZdZdZdZdZdZe jjde jde jd e jd ge jjd d d gdZy)TestTableMethodcd}tjtd5tt dj ddj |dd dddy#1swYyxYw) Nc6tj|ddzSNraxisrPrkras rr.z7TestTableMethod.test_table_series_valueerror..fI66!!$q( (rz1method='table' not applicable for Series objects.rrPr )rr Tre)rrrrr=r>r?)rBr.s rtest_table_series_valueerrorz,TestTableMethod.test_table_series_valueerrorHse )]] Q   58  $ $Qw $ 7 = ='t >    s 8A  A)c|\}}|||d} ttjd} | jdd|d|} |dvr=t j t |d 5t| |d | d d |dddy| jdd |d|} t| |d | d d |} t| |d | d d |}tj| |y#1swYyxYw)Nr/rKr4r rrrrhr7rr not supportedrr r9r8r rT) rr)r[r>rrNotImplementedErrorrUr@ru)rBrr0r1r2r!r7rrWr9rw roll_table roll_singlerDrEs r!test_table_method_rolling_methodsz1TestTableMethod.test_table_method_rolling_methodsSs>"'X8T rvvay !ZZ'!RVZW ^ #2VHN:ST + F+"/CI   **(14%K1WZ0+G?EF4w{F3+G?EH  ! !&( 3  s "CC!c"|||d}d}ttjd}|jdd|d|j |d|d } |jdd |d|j |d|d } t j | | y) Nr/c6tj|ddzSrrkras rr.z:TestTableMethod.test_table_method_rolling_apply..fvrrrKr4r rrTr r:r9r8r )rr)r[r>r?r@ru) rBrr0r1r2r7r9r.rwrDrEs rtest_table_method_rolling_applyz/TestTableMethod.test_table_method_rolling_applyss"'X8T  )rvvay ! gDad %t=% I :: hTqt %t=% I  fh/rcd}tgdgdgdgdg}|jddd| j|d d }tgd gdgdgdgdd|}tj||y)Nctjd|jdf}|ddddf|dddfzjd|dddfjz |ddddf<|S)NrPr4rr)r)onesshaper)r*arrs r weighted_meanzNTestTableMethod.test_table_method_rolling_weighted_mean..weighted_meansl''1aggaj/*CArrE(Qq!tW,11q19AadGKKMIC2A2JJr)rPr4g333333?)r4rKg?)rKrJg?)rJrHgffffff?r4r r)rrhr7Tr r:r8)rrrtrr)g?rtrr)gk} @gk}@rr)g1?rIrrr|)rBr7rrwrDrEs r'test_table_method_rolling_weighted_meanz7TestTableMethod.test_table_method_rolling_weighted_means   [+{K LAg14HNN tGO )"    D& fh/rc|||d}d}ttjd}|jd|j |d|d}|jd |j |d|d} t j || y) Nr/c6tj|ddzSrrkras rr.z.frrrKr rrTr rr )rr)r[r\r?r@ru) rBrr0r1r2r9r.rwrDrEs r!test_table_method_expanding_applyz1TestTableMethod.test_table_method_expanding_applys"'X8T  )rvvay !W48>> 4}W? <"'X8T rvvay !||7|> ^ #2VHN:ST - f-"/CI   LLtLDM2W\62+G?EF6w}f5+G?EH  ! !&( 3  s CCrGrK)r4rK)rKr4rrrc|||d}t|}t|jdd|||d} t|jdd|||d} tj| | y)Nr/rPr )rrrr rr )rrUrr@ru) rBrGrrr0r1r2r9rwrDrEs rtest_table_method_ewmz%TestTableMethod.test_table_method_ewms|#(X8T t_JAgDA6J' N7266at6DfM'  fh/rN)r~rrrrrrrrrrrr)r[rrrTrrrrCs 4@ 00( 040 [[VfbffQi'"''&/%RS [[X7 08T 0rrctdgdi}tjd5|jj dj t jdddddy#1swYyxYw)Ncol1)rPr4rKrJrHFr4Tr r)rr@assert_produces_warningrr>r?r)prod)rws rtest_npfunc_no_warningsrs^ FO, -B # #E *D   d7 CDDDs rsJ )()) 'kk$$ % G$  KK!!"gfo5K/:K78I8I7JK'*+,    2           wH%i0i0&i0XwI0I0I0Xw--w  wH%C0C0&C0LwDDr