gL i&ddlmZmZddlZddlZddlmZmZmZddl m Z m Z m Z m Z mZmZmZmZmZmZddlmZddlmZddlmZddlmZdZd Zej>jAd d d ejBd ggdZ"ej>jAdededdeeddedgdZ#ej>jAdddgdZ$ej>jAdededgdZ%ej>jAdededdgdZ&dZ'ej>jAd d!gd"gd#gd$gd%gd&gfd'gd(gd"gd)gd*gd&gfd+gd"gd)gd*gd&gd,gfd-gd(gd.gd/gd0gd,gfgd1Z(ej>jAd2d3d+gd4fd3d!gd4fd3d'gd4fd3d-gd4fd5d+gd6fd5d!gd4fd5d'gd7fd5d-gd8fgd9Z)ej>jAd2d:d+gd;fd:d'gd<fd:d!gd=fd:d-gd>fgd?Z*ej>jAd@d'ejVejVddddAdBdBdCdDg fd-ejVejVddddEdddFdGg fd+gdHfd!gdIfgdJZ,ej>jAd@d'ejVejVddddAdKdKdCdDg fd-ejVejVddddAdKdKdFdGg fd+gdLfd!gdMfgdNZ-dOZ.dPZ/ej>jAdQd-d'gdRZ0ej>jAdSdTdUgdVZ1ej>jAdSdTdUgdWZ2ej>jAdXdYdZgej>jAd[dTd+gd\fdTd!gd]fdTd-ejVdddd dd^dd_d`g fdTd'ejVddddd dd^dd_g fdUd+gdafdUd!gdafdUd-ejVddd dd^dd_d`dGg fdUd'ejVddd dd^dd_d`dGg fgdbZ3dcZ4ej>jAd[dTd+ejVdddd dd^dejVejVg fdTd!ejVddddd dd^dejVg fdTd-ejVejVddd dd^dejVejVg fdTd'ejVejVdddd dd^dejVg fdUd+ejVdd dd^dd_d_ejVejVg fdUd!ejVdd dd^dd_d_d_ejVg fdUd-ejVejVdd dd^dd_ejVejVg fdUd'ejVejVdd dd^dd_d_ejVg fgddZ5ej>jAd@d+gdefd!gdffd-ejVddgdhdidjdkdldmdng fd'ejVddgdd dd^dd_d`g fgdoZ6ej>jAdpdqdgdrZ7dsZ8dtZ9duZ:dvZ;dwZdzZ?ej>jAd{d|d}gd~Z@dZAdZBdZCej>jAde gdgdddgd^gddgfdd gd^dgdddgfgdgddgdfgddfe gdgdddgd^gddgfdd gd^dgdddgfd dgdd_gddd gfgd dfe gdgdddgd^gddgfdd gd^dgdddgfd dgdd_gddd gfgd d fe gdgdddgd^gddgfd gdgddgfdgd_gdd gfgddfe gdgdddgd^gddgfd gdgddgfdgd_gdd gfgddfe dgd^gdgd dfe dgd^gdgd dfe igfgd dfe dejVdgejVdd_gddgejVgddgfdejVgejVdgdddgfdejVdgejVdd_gdgdfgdd fg dZDej>jAddgd^gddgfdd gd^dgdddgfd dgdd_gddd gfgd:fdgd^gddgfdd gd^dgdddgfgdgddgdfgdfdgd^gddgfd gdgddgfdgd_gdd gfgdfgdZEdZFej>jAde gddgdgfdd gddgfgdgdfgddfe gddgdgfdd gddgfgdgdfgddfe gddgdgfdd gddgfd dgdd gfgd dfe gddgdgfdd gddgfd dgdd gfgd d fe gddgdgfd gdgfdgd gfgddfe gddgdgfd gdgfdgd gfgddfe dd gdgdgfdd gddgfgd dfe gdgd dfgdZGej>jAddgdgd gdgd^ggedddedddedddedddedddgdfdgddgdd gd dgdd^ggedddedd dedd dedd dedd dgd:fdgddggdgdgdgedddedd dedddedddedddgdfgdZHej>jAdddie jgdddgfddie jgdddgfgdZJej>jAddd gdZKdZLdZMdZNdZOej>jAdgddZPdZQej>jAddededgdZRdZSej>jAdedddTdfeddddfgej>jAddTejVdddd dd^dd_g fdUejVddd dd^dd_d`g fdejVddddd`dEddFg fgdZTdZUej>jexsed«ej>jAdddgdŢfddgdǢfdd gdȢfdd gdɢfgdʄZWd˄ZXej>jAdgd͢d΄ZYej>jAd2d5d+gdϢfd5d'gdТfd5d!gdѢfd5d-gdҢfd3d+gdѢfd3d'gdѢfd3d!gdѢfd3d-gdѢfgdӄZZej>jAddgd֢fdgdآfgdلZ[ej>jAdde\d۫de\d۫dddddgfde\d۫dne\d۫dddddgfde\d۫de\d۫dddddgfde\d۫de\d۫dddddgfde\d۫de\d۫dddddgfgdZ]ej>jAdgdd fedddd:fgdZ^dZ_ej>jAdddgdZ`ej>jAddgdfdgdfgdZadZbej>jAdddgdZcd Zdd Zeej>jAd dgd fd gd fgdZfdZgdZhdZidZjej>jAdgdej>jAdgdej>jAdd|d}gej>jAdd|d}gej>jAdgddZkdZlej>jAdgdej>jAdgdej>jAdgd gd!dejVd"ejVd#gejVejVejVejVgejVd$ejVd%d#dggdggejVd&d'ggd(Zmd)Znd*Zod+Zpd,Zqd-Zrd.Zsej>jAgd/d0dAdAejddd dgddejVd1d2dd3dd4dggd0dAdAejVdAdd dgddejVd1d2ddd3d5dggejVdd_d`dddgddejVgdzgd6zgdd`d`d`ejVejd^dddg ddejVgd zd7dgzejVgd^zzd4dgzgdd`d`d`ejVejd`dddg ddejVgd zd7dgzejVgd^zzd8dgzgdd`gd^zddejVgd zd7gd_zzgdd`dejVd`dd`gdd ejVd d7gd gdzzd7gzggd9Zud:Zvd;Zwd<Zxej>jAd=ddgej>jAd>d|d}gd?Zyej>jAd@eze{gdAZ|ej>jAd=ddgej>jAd>d|d}gej>jAd@eze{gdBZ}ej>jAdCgdDej>jAdEgdFdGZ~y(H)datetime timedeltaN)IS64is_platform_armis_platform_power) DataFrame DatetimeIndex MultiIndexSeries Timedelta Timestamp date_range period_range to_datetime to_timedelta) BaseIndexer)VariableOffsetWindowIndexer) BusinessDayctddddtjdgi}||jdj |jddj y)NBr min_periods)rnpnanrollingsum)dfs f/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/pandas/tests/window/test_rolling.pytest_doc_stringr""sP C!Q2661-. /BJJqMJJqaJ $$&c|tdj}|d|d|dd|ddd|ddd d }tjt| 5|d dddy#1swYyxYw) Nrrwindowrr'rTr'rcenterFz&window must be an integer 0 or greatermatch)rangerpytestraises ValueError)frame_or_seriescmsgs r!test_constructorr5)s{ a!))AaDQKQAQAd+QAe, 3C z - "s * A<<Bw@foorc|tdj}djddg}tjt |5||dddd}tjt |5|d| dddd }tjt |5|dd | dddy#1swYkxYw#1swYGxYw#1swYyxYw) Nr%|zwindow must be an integerz=passed window foo is not compatible with a datetimelike indexr+r&zmin_periods must be an integerrr(zcenter must be a booleanrr))r.rjoinr/r0r1)r2r6r3r4s r!test_invalid_constructorr<=s a!))A (( ' K  C z -   +C z -# "# %C z -- !,--##--s$ B>9 C ) C>C CCr'days3Dz 2015-12-25r%periodsrindexoffsetcttjdtddd}t j t d5|j|d jdddy#1swYyxYw) N 2015-12-24DrBfreqrDz(^step (not implemented|is not supported)r+r=step) rrarangerr/r0NotImplementedErrorrr)r'r s r! test_freq_window_not_implementedrQUsi  " r< B #M ) 6 "&&()))s "A33A<aggcovcorrcttdjdd}tjt d5t ||dddy#1swYyxYw)NrrrMzstep not implementedr+)rr.rr/r0rPgetattr)rRrolls r!&test_step_not_implemented_for_cov_corrrXlsV U1X  & &qq & 1D *2H Ics AA%cd}tdtj|itd|d}tjddgtjd d d }|j | j }td|itd|d}tj|||j d j }tj||y)NrGvaluerHrIrJrL?@;@r=r&r@) rrrOrappendrrtmassert_frame_equal)r'nr expected_dataresultexpecteds r!&test_constructor_with_timedelta_windowrfts A  "))A,qs; BIIsCj"))Cq*ABM ZZvZ & * * ,F - qs;H&(+zz$##%H&(+r#c d}tdtj|itd|d}tdtjtj dgtjdd d itd|d}|j |d j}|j |d jt| }tj||tj||y)NrGrZz 2017-08-08rIrJrLr\r]r^r=rr()raw) rrrOrr_rrrapplyr`ra)r'rhrbr reresult_roll_sumresult_roll_generics r!0test_constructor_timedelta_window_and_minperiodsrls A  "))A,qs; B "))RVVSM299S$+BCDqs;HjjAj>BBDO**F*BHHRUHV/84-x8r#c6|}tdgdi}tdgditdd}t|jd|d |}t|jd |d |j d }t j ||y) NArrrr=r2020r%rArLrrclosedr2DTdrop)rrrVr reset_indexr`ra)rrarithmetic_win_operators func_namedf_fixeddf_timerdres r!test_closed_fixedr{s(I#/0Ho.jQR6STGW6q9FwV;    &(+r#zclosed, window_selectionsboth)TTFFF)TTTFF)FTTTF)FFTTT)FFFTTleft)TFFFF)FTTFF)FFTTFright)FFFFTneither)FTFFF)FFTFF)FFFTFc j|}tdgditdd}td|Dcgc]#}t|dj||%c}itdd}|dk(rdd i}ni}t|j d |d d |di|}t j ||dycc}w)Nrn)r[r\r7r]@rpr%rArLsemddofrrsrT)rrrr*F check_dtype)rrrVilocrr`ra) rrwindow_selectionsrwrxrzsrekwargsrds r!%test_datetimelike_centered_selectionsrsb)I '( 610MG CTUa7wws|((+Y79UV+H E!WV4H F &(>Vs(B0 zwindow,closed,expected3s)r]r]r]2s)r]r7r7)r\r]r]r\r7r7ctdtdtdg}|gd|}|j||dj}|||}tj||y)Nz20130101 09:00:01z20130101 09:00:02)rrrrLTrrr*)r rrr` assert_equalr'rrrer2rDr rds r!,test_datetimelike_centered_offset_covers_allrsk& %&%&%& E % 0B ZZvdZ ; ? ? AFxu5HOOFH%r#rs)rrrrrrrr)rrrrrrrr)rrrrrrr)rrrrrrrrctgd}|dgdz|t}|||t}|j|d|j}t j ||y)N) 2020-01-01r 2020-01-02r 2020-01-03r 2020-01-04rrrDdtypeT)r*rr)r floatrrr`rrs r!+test_datetimelike_nonunique_index_centeringrsb   E !qU ;BxuEBH ZZtFZ ; ? ? AFOOFH%r#zclosed,expectedrG r) rrr=rrGr rr) rrr=rrGctgd}|td|t}|||t}|jd|j }t j ||y)N 2011-01-01r 2011-01-02rrz 2011-01-03 2011-01-04rz 2011-01-05z 2011-01-06rGrrsrr)r r.rrrr`r)rrrer2rDr rds r!test_variable_window_nonuniquer3s^   E r%u =BxuEBH ZZVZ , 0 0 2FOOFH%r#r) rrr=rrGrrrr) rrr=rrGrrrrrc tgd}|td|t}|||t}td}t ||}|j ||dj }tj||y)NrrGrrrCrrq) r r.rrrrrr`r)rrrer2rDr rEindexerrds r!%test_variable_offset_window_nonuniquerUsu   E r%u =BxuEBH ^F)fEG ZZAZ > B B DFOOFH%r#cttdtddd}|jddd j }tgd |j }t j||y) Nr=rrIstartrKrBrLrsrTr))??r)r r.rrmeanrDr`assert_series_equalrrdres r!!test_even_number_window_alignmentrys[uQxz 3PQRSA YYd$Y ? D D FFm1773H68,r#c pgd}td|itddt|}|rgd}ntjdd d d d d d g}t|dgtddt| dd|}|j t|dd||}|j }tj||y)N)rrrrrrrr binary_colrminrrL)UUUUUU?r皙?r@m?rg._x%I?rrrrrr)columnsrDr}r)r'rrrr*rN) rrlenrrrrr`ra)r*rNdatar rcrerrds r!test_closed_fixed_binary_colrs #D  t|%TK B L CS#xH |%]AST f H jj2wv1V$G\\^F&(+r#rrc&|}ttjdtddd}|j d|}t ||}ttj gdz|j}tj||y) Nr%2000rsrJrrD1DrrL) r rrOrrrVrrDr`r)rrrwrxserrWrdres r!test_closed_emptyrss)I biil*VQT*R SC ;;tF; +D %WT9 % 'Frvvhl#))4H68,r#funcrmaxctdgtdd}t|jdd|}t j |tt jg|j y) NrrrrAr10Dr}rrL) r rrVrr`rrrrD)rrrds r!test_closed_one_entryrsX qcFA!> ?C =WS[[v[6 = ?F66266(#))#DEr#c~tgdgddtdd}t|jdd d j d d |}t j gd|jgd}ttjdtjg|d }tj||y)N)rrr)r=rrrnrrr=rArrnF)sortrrr}r)rnN)arraysnames)rrDname) rrrVgroupbyrr from_arraysrDr rrr`r)rrrdexp_idxres r!test_closed_one_entry_groupbyrs 9 -+ CW Ce $S)11%1GF$$Y ,B+VGBFFArvv.gCHH68,r# input_dtypeintrzfunc,closed,expected) r[rrrrr=rr%r) r[rrrrrr=rr%rrrr) r[rrr=rr%rrrrcttjdj|t dd}t |j d||}t||j}tj||y)NrGrrArr@rrL) r rrOastyperrVrrDr`r)rrrrrerrds r!test_closed_min_max_datetimersn  YYr] ! !+ ., C =WS[[f[5t < >Fhcii0H68,r#c dttjdtdd}|j |j ddg}|j dd j}ttjd d d d dddg|j }tj||y)NrGrrArrr%rLr@r}rrrr=rr) r rrOrrurDrrrr`r)rrdres r!test_closed_unevenrs biim:fb+I JC ((Aq6*( +C [[f[ - 1 1 3Frvvq!Q1a3399EH68,r#c\ttjdtdd}|j d}tj ||j dd<t|jdd| |}t||j }tj||y) NrGrrArrr@r)rrrrL) r rrOrrrrDrVrr`r)rrrrerrds r!test_closed_min_max_minprs biim:fb+I JC **W C&&C "# KWS[[1V[Dd K MFhcii0H68,r#) rrrrr=rr%rrr) rrrr@ @@@@@rrrrrrrrcHttjdtdd}|j d|}t||j }|j }tj|||jd}tj||y) NrGrrArr@rrLr) r rrOrrrDmedianr`rquantile)rrrerrWrds r!test_closed_median_quantilersz biim:fb+I JC ;;tF; +Dhcii0H [[]F68, ]]3 F68,r#roller1scLt}tj|j}tj||tt g}tt gj|j}tj||y)NrL)rrrr`rar )rrerds r!tests_empty_df_rollingrsz{H [  ( , , .F&(+}R01H ]2. / 7 7 ? C C EF&(+r#chttjtjtjg}ttjdj d}|j }t j|||jd}t j||y)Nr=r皙?) r rrrOrrr`rr)rerWrds r!!test_empty_window_median_quantiler&survvrvvrvv./H "))A,  ' ' *D [[]F68, ]]3 F68,r#c`ttjg}|jddj }tdg}t j |||jddj }ttjg}t j ||y)Nrrrr[)r rrrrr`rxrdres r!test_missing_minp_zeror2s xA YYqaY ( , , .Fse}H68,YYqaY ( , , .FrvvhH68,r#cttjgdztgd}|j t ddj }td|j}tj||y)Nr)z 2017-01-01z 2017-01-04z 2017-01-06z 2017-01-07rL2drrr[) r rrr rr rrDr`rrs r!test_missing_minp_zero_variabler@sc 1 TU AYYyAY 6 : :  # #M =6AJ/3356&(+N 66s #C:9"C??Dcttdtdd}|j|}|dvrd}tgdgdd}nd}tgdgdd}tjt | 5|j d |d j}dddtj|y#1swY xYw) Nr=)ryrrDrrr)r\r\r\)r7r7r7r+rr)rr) rr.rr`rrrcountra)rr rr4rerds r!test_rolling_axis_countrgs qa1 2B  z *D |7?IJE?IJ # #M =GAJA>DDFG&(+GGs :#B<<Cchtjddtjddg}|jdt |j dj }t tjdtjtjdg}tj||y)Nrr=r%F)writerr) rarrayrsetflagsr rrr`r)arrrdres r!test_readonly_arrayr"ys{ ((Aq"&&!Q' (CLLuL C[  # ( ( *Frvvq"&&"&&!45H68,r#c |}ttddd|Dcic] }|dgdz c}}|dvr\d}tjt| 5|j j d | jj }dddnGd }tjt| 5|j d | j}dddtitddd| Dcic] }|dgdz c}tddd|Dcic] }|dgdz c}}tj|ycc}w#1swYtxYw#1swYxYwcc}wcc}w)Nz 2019-8-01z 2019-08-03rI)rKtzrrrrr+rsrz'Support for axis=1 in DataFrame.rolling)rBrKr$r\z 2019-8-02z 2019-8-03r7) rrr`rrTrrra)rtz_naive_fixturer$rr r4rdres r!test_rolling_datetimer'ss B ' \PRSTQC!GT B\!7  ' ' S A ATT\\$Z\8<<>@@F A A8  ' ' S A =ZZ:Z6::tj}t||tdzd}t j t |}t||d}|jdd|jdd d | d jd }|jd}|jd}t j t |tj}|stj|dd t||d }t!j"||y)NimrI)rK)DateColmetricr)T)inplace21Drr})r'rrrr*r*rr)rDr)rnowrrrr rr set_indexrrRrename _with_freqfloat64rr r`r) r* date_todayr?rr rdrDrcres r!test_rolling_window_as_stringr4sJ j*y~"=C HD 773t9 D tt4 5BLLDL) ZZu!F6Z R c%j  KK "E   T "EGGCIRZZ8M FF bqm5x@H68,r#ctgddg}|djdddj}tgdd }t j ||y) N)rrrrrarr=Tr)r*r)r\r7r7r7r\r)rrrr r`rr rdres r!test_min_periods1r9sN ?SE 2B W__Qt_ ; ? ? AF/c:H68,r#c|tdjddj}|tjtjdddg}t j ||y)Nr%r=rr])r.rrrrr`r)r2rdres r!#test_rolling_count_with_min_periodsr;sT U1X & . .qa . @ F F HFS#>?HOOFH%r#cdddtjdddg}gd}||jdd j}||}t j ||y) Nrrr=rr%r)r\r7r]r7r7r7r]rr)rrrrr`r)r2valuesexpected_countsrdres r!7test_rolling_count_default_min_periods_with_null_valuesr?s\Arvvq!Q 'F9OV $ , ,QA , > D D FF/HOOFH%r#zdf,expected,window,min_periodsrrr=)rr%rrrrrr\c|Dcgc]\}}t||}}}t||j||D]\}}tj||ycc}}wNrLr)rziprr`ra)r rer'rr=rDactuals r!test_iter_rolling_dataframerFscLGOO?FE &.OHO"**V**UV0& fh/0PAzexpected,windowrc  tgdgdtdddd}|Dcgc]!\}}t||j|df #}}}t||j |d D]\}}t j ||ycc}}w) Nrrr=rr%)rr%rrrz 2016-01-01r%rIrrBrKrnrrrrL)on)rrlocrDrr`ra)rer'r r=rDrEs r!test_iter_rolling_on_dataframerNs>   ,D  BLT8G &ucz 23H "**V**DE0& fh/0s&B c$tgdgdd}t|jdjd}dgddgdgfDcgc]}|j|dgf}}t ||D]\}}t j||ycc}w)N)rrrrAr6br6rrr)rlistrrrrDr`ra)r resultsidx expectedsrdres r!(test_iter_rolling_on_dataframe_unorderedrVKs y9 :B2::c?**1-.G01sQFQC.@Asqc"AIA30 fh/0BsB z ser,expected,window, min_periodsint64r-c|Dcgc]\}}t||}}}t||j||D]\}}tj||ycc}}wrC)r rDrr`r)rrer'rr=rDrEs r!test_iter_rolling_seriesrYTscFDLLvU+LHL#++f++*VW1& vx01MrGzexpected,expected_index,windowrrIrJrrrz 2020-01-05)rr=rcttdtddd}t||Dcgc]\}}t||}}}t||j |D]\}}t j ||ycc}}w)Nr%rrIrJrL)r r.rrDrr`r)reexpected_indexr'rr=rTrEs r!test_iter_rolling_datetimer\}sP q,PS!T UC8;8^7T&3vsvS!H #++f*=>1& vx01 sBzgrouping,_indexlevel)rrr^rrr_r_rbyX)r^)rr)rr)r=r)rrc d}tdtdigd}tdgdi|}d|vr|jdd }|jd i|j d j ||d }t j||y)Ncdt|dkr td|\}}|j|z S)Nrz The function needs two arguments)rr1r)argsrscales r! scaled_sumz4test_rolling_positional_argument..scaled_sums3 t9q=?@ @ uyy{U""r#rar%)rrrrrr)r[rr\rr7r`ignore)rerrorsr)r)rhrdr)rr.rurrrir`ra)grouping_indexrhrfr rerds r! test_rolling_positional_argumentrks(# eAh ?Bs$=>fMH x==X=> RZZ #( # + +A . 4 4ZSt 4 TF&(+r#addr[c ttdtdtdgj|}tdd|zddgi|}|j dj j d d d j}tdd d|}tdtjtjtjddddgi|}tj||y)Nz19700101 09:00:00z19700101 09:00:03z19700101 09:00:06rngVUUUUU%CrLrrr}r=rqrr)rBrKunitgUUUUUU%CgqqCgqq Cr[) r r as_unitrresampleffillrrrrrr`ra)rlrodtir rddatesres r!*test_rolling_numerical_accuracy_kahan_meanrus  ) * ) * ) *   gdm   !C't45 B D!))$v1)MRRT  *ACd KE "#$  H&(+r#ctgddg}|djdj}ttj tj ddddgd}t j||y) N)grh|@'1Zr[r[r[r[rrr=gsh|??rwr[r7)rrrr rrr`rr8s r!)test_rolling_numerical_accuracy_kahan_sumrxs] 6 FB W__Q  # # %Frvvrvvufc3?cJH68,r#cPtdddjtdg}tjj dj t |}td|i|}|jdj}tj||dgy) Nrr60srendrKrrrrL) rr_r rrandom default_rngrrrrr`ra)rDrr rds r!$test_rolling_numerical_accuracy_jumprs \|% H O O|n% E 99  # * *3u: 6D FD> /B ZZ  # # %F&"fX,/r#ctgdtdd}|jdj}t j ||y)N)g(@S ?ga2U0*3?rnrnz 1999-02-03z 1999-02-06rr)r rrrr`r)rrds r!,test_rolling_numerical_accuracy_small_valuesr sA -|4 AYYq\   F61%r#c tddd}ttd|tj}d|j d<|j dj}ttjtjtjtjd d d d d d g | }tj||y)Nz 2015-01-01rGrIrJ)rrDrgТrr%gk/@@@rL) rr r.rr2rrrrr`r)rtdsrdres r!(test_rolling_numerical_too_large_numbersrs |Rc :E U2Ye2:: >BBGGAJ ZZ]   !F FF FF FF FF       H68,r#)rrZ))rr7)rr\)rr\)rr\)rr\c>tdddggd}d|d<d}tjt|5|j ddd }dddt |}tddg||g||gdddg }tj ||y#1swYJxYw) Nrrr6rQr3)rDrr\r3rr+r'rrrL)rr`rrrrVra)rrZr r4rWrdres r! test_rolling_mixed_dtypes_axis_1r,s 1QFO BRVV}C:T4LQRH AC # #M =C!!<@@BC&(+ TT\\a\ 2 6 6 8 : :F&(+ CCs #C##C,)rDr'z2020-01-01 08:00z2020-01-01 08:08r{2minz2020-01-01 12:0030min1h)rr=rrctgd|}t|j|d|}t||}tj||y)N) rrrr=rr%rrrrLr}r)r rVrr`r)rDr'rr=rrdres r!test_rolling_period_indexrqsK2 +5 9B =WRZZvZ6 = ?FfE*H68,r#c|gd}|jddj}t|trt |dj }t t jgdgdzz}tj||y)NrArrrrg;f?) rr isinstancerr r=rrr`r)r2objrdres r!test_rolling_semrss ) $C [[[ * . . 0F&)$q (()rvvh"4!5!99:H68,r#zGH 38921)reason)r third_valuer=var)|Frrrrrstd)>gfoCrPp?r绹۞?r)rrrrrr)rrrrrrc tdd|ddddg}t|jd|}ttjg|z}t j ||t j |dk(|dk(y)Nl; rrr=rr rVrrrr`r)rrr=rrdres r!!test_rolling_var_numerical_issuesrsv "A{Aq!Q? @B )WRZZ]D ) +Frvvh'(H68,6Q;A 6r#c ttdtdtdtdtdgj|}tj|ddgg}t t jt jdd d d dd dd g t jt jd d d d d d d d g d|}t gdgdd|}|jdj}tj||y)Nz20130101 09:00:00z20130102 09:00:02z20130103 09:00:03z20130105 09:00:05z20130106 09:00:06rrng?gr\g6++1+5v>@J 66*##DbD)#2.1B1B121FF G K K MPU UU Ur#)r\r]rr])r[r\r]r)r\r]rr)r[r\r7r]ctddd}|td|}|td|ddd}|||}|||ddd}|j||d j} |j||d j} t j | |t j | |y) zV Ensure that a symmetrical inverted index return same result as non-inverted. rprrrJrLNr-Tr)rr.rrr`r) r'rrrer2rDdf_incdf_dec expected_inc expected_dec result_inc result_decs r!(test_rolling_decreasing_indices_centeredrs& vqt 4E U1XU 3F U1XU4R4[ 9F"859L"852;?LvdCGGIJvdCGGIJOOJ -OOJ -r#zwindow,expected1ns)r\r\r\r\3ns)r7r]r]r7ctddd}|gd|t}|||t}|j||dj}t j ||y) NrprrrJ)rrrrrTr)rrrrr`rrs r!)test_rolling_center_nanosecond_resolutionrsY vqu 5E U% @BxuEBH ZZvdZ ; ? ? AFOOFH%r#zmethod,expectedrgE@g a@gE@gCݽW@gf@gs@rg5@rg`UU"@rg1@g>@gU@gK@gV@ga@rg/e?g8j{ ?gLM?g4`i?g +TT?g?rg %bgOq& gzCen@gk=Cпg~~׿gf`8gݿcgd}tdtjt|dzi}Gddt}|d|}t |j ||}td|i}tj||y) z Make sure the (rare) branch of non-monotonic indices is covered by a test. output from 1.1.3 is assumed to be the expected output. Output of sum/mean has manually been verified. GH 36933. )TFTFTTTTr=rceZdZdZy)1test_rolling_non_monotonic..CustomIndexerc&tj|tj}tj|tj}t|D]6}|j|rd||<|dz||< |||<||j z||<8||fS)Nr-rr)remptyrWr. use_expanding window_size) self num_valuesrr*rrrNrr|rs r!get_window_boundszCtest_rolling_non_monotonic..CustomIndexer.get_window_boundsksHHZrxx8E((:RXX6C:& 2%%a( E!HUCF E!H!1!11CF  2#: r#N)__name__ __module__ __qualname__rrr#r! CustomIndexerrjs r#rr)rrN) rrrOrrrVrr`ra)rrerr rrrds r!test_rolling_non_monotonicr)s|GM HbiiM(:;q@A BB  GG 1WRZZ(& 1 3F(H-.H&(+r#roz 2001-01-01)rKrBc(tgd|}|j}d|jdd|j|j |}tt j t j dddg|}tj||y)NrIrLr[rrr) r copyrrrTrrr`assert_almost_equal)rDr'rrrdres r!!test_rolling_corr_timedelta_indexr~sr e,A AAFF1QK YYv  # #A &Frvvrvvq!Q/u=H68,r#c ndtjddtjggdd}t|}|jddj dd j }td gd it ddtjggdggd gd gddg}tj||y)Ng1g2ro)grouprrF)dropnarrr)r[r7r]r\r)rrrrr)rrr=rrrrL) rrrrrrr r`ra)rr rdres r!!test_groupby_rolling_nan_includedrsBFFD$7o ND 4B ZZZ . 6 6qa 6 H M M OF '(D"&& !? 3 o .D/  H&(+r#ctttjjdjd}|j }t |j d|}tj|||dz}t |j d|}tj||y)NrrGr=iP) r rr}r~rrVrr`r)rrser_copyrerds r!*test_rolling_skew_kurt_numerical_stabilityrs &&q)004 5CxxzH.ws{{1~v.0H3) +C ,WS[[^V , .F68,r#)rr=)r7g+X?r[gJ_9?)rgBʠg333333g >@ctgd}t|jd|}ttjgdz|z}t j ||y)N)i-rrrr=rirr=r)rr=rrdres r!(test_rolling_skew_kurt_large_value_rangersQ ,-A *WQYYq\6 * ,FrvvhlV+,H68,r#ctjtd5tt dj dddddy#1swYyxYw)Nz!method must be 'table' or 'singler+rr8)r)r/r0r1r r.rrr#r!test_invalid_methodrsB z)L M2uQx  5 1222 &A  A1dctddd}|tdd|}|jdd j}|tj dd g|}t j|||jddd jdd j}tddd }|tj d d g|}t j||y)Nrrrr{rrrLr}rrr-z-1dr=) rr.rrrrr`rr)r'r2rTrrdres r!.test_rolling_descending_date_order_with_offsetrs <\ EC %1+S 1C [[f[ - 1 1 3F1~S9HOOFH% XXdd^ # #D # 8 < < >F <\ FC1~S9HOOFH%r#ctgd}|jdj}ttjtjddg}t j ||ddt j |dk(|dk(y)N)rr%r%r%r=UUUUUU?rV瞯<atolrtol)r rrrrr`rrs r!,test_rolling_var_floating_artifact_precisionrsk|A YYq\   Frvvrvvua01H68'H6Q;A 6r#ctgd}|jdj}ttjddg}t j ||ddy)N)Q؎>g 4PSȡ>rrg[^>>rr)r rrrrr`rrs r!test_rolling_std_small_valuesrsR  AYYq\   Frvv{K89H68'Hr#zstart, exp_values)Q?X9v?rgI +?gˡE?)MbP?rg~jtX?<# n?c,tdddtjddtjtjtjtjtjtjddg}|ddddtjtjddgz}t|tt |t ||z }|j |djd d j}tj||y) NrrMb`?Mb?{Gzt?皙?rg= ףp=?rLr%rr) rrrrRr.rrrrr`ra)r exp_valuesr r=rerds r!3test_rolling_mean_all_nan_window_floating_artifactsrs     FF   FF FF FF FF FF FF    B&        F5F e 345HWWUV_ $ $QA $ 6 ; ; =F&(+r#ctdddtjtjtjg}|jddj }tgd}t j ||y)Nrrrr=rr)rg{Gz?gQ?g9v?rr[)rrrrrr`rar8s r!2test_rolling_sum_all_nan_window_floating_artifactsrs[ E5%@ AB ZZqZ ) - - /FABH&(+r#cttd}|jdj}ttj g}t j||y)Nrr)r r.rrrrr`rrs r!test_rolling_zero_windowr#sFuQxA YYq\   FrvvhH68,r#czttdtddd|}ttjgdztdddd|}d}t j t | 5|jdd j}dddt j|d y#1swY"xYw)Nr%rGrrr-rrrr+rrFr) rr.rrr`rrrrra)float_numpy_dtyper rer4rds r!test_rolling_float_dtyper+s qb" 6>O PBvvhlr2q!12H BC # #M =-AA&**,-&(>--s ."B11B:cttjdjddt dj dddd d d d d ddd }d}t jt|5|jdddj}dddttdddtdddtdddtdddtdddtdddtdddtdddtdddtdddd d}t j|y#1swYxYw)N(rrG abcdefghijrfloat16float32r2int8int16int32uint8uint16uint32uint64) r6rQr3defghrjrr+rrrrr=r%rrrr-) rrrOreshaperRrr`rrrrr.rars r!test_rolling_numeric_dtypesr8sB 299R=((B/l9K L S S  B BC # #M =C1!!<@@BCq"b!q"b!q"b!q"b!q"b!q"b!q"b!q"b!q"b!q"b! H&(+#CCs 1#D99E)rr=rGr)rraveragepct ascending test_data)default duplicatesnansc d}|dk(r9ttjjdj|}n|dk(r:ttjjdj d|}no|dk(rjttjjdj dd d tj tj tj g|}j|jfd }|j|j }tj||y) Nrrr)rrr=rr\??cF|jjdS)Nrrrr-)rankr)rrrrs r!ztest_rank..ps!!&&C9&EJJ2Nr#r$) r rr}r~choicerinfrrir%r`r) r'rrrrlengthrrerds ``` r! test_rankr*]s FI"))//299&AB l ""))//299!VDE f &&q)00dD"&&"&&266':F  {{6"((NH[[ % %V % RF68,r#cd}d}td|d}ttjj dj||zj |df|}|j gd d }tj|gd d }tj|jtj|y) NrGr%20100101rrJrr-rL)r!rr"rr)2K) rrrr}r~rr percentiler`rr=r)rowcolrTr df_quantile np_percentiles r!#test_rolling_quantile_np_percentiler5ws C C Z3 7C  a ''c 2::C9ES B++/a+8KMM"l;M;--rxx /FGr#r)r[rg?rr interpolation)linearlowerhighernearestmidpointr)r\r7r]rrrr)g @r\r]rrr7rrrrrg333333?gffffff?g333333?cLt|}|j||}|jdj||jd}t j |rt j |sJyt st j|g|gddsJy||k(sJy)Nrrr-gHz>r)rr)r r expandingrrisnanrallclose)rr6rrq1q2s r!+test_rolling_quantile_interpolation_optionsrBs& t A Hm ,B  # , ,X} E J J2 NB xx|xx||;;tbTA> >>8O8r#ctjd}t|}d}tjt |5|j t|djdddddy#1swYyxYw) Nr%z(Interpolation 'invalid' is not supportedr+rrrinvalid)r6) rrOr r/r0r1rrr)rrr4s r!test_invalid_quantile_valuerEsh 99Qc tgd}d}tjt|5|j dj ddddd}tjt|5|j dj ddddd}tjt |5|j dj d dddy#1swYxYw#1swY\xYw#1swYyxYw) N)r[rrg?r\z#quantile value -0.1 not in \[0, 1\]r+r=gz#quantile value 10.0 not in \[0, 1\]g$@zmust be real number, not strr8)r r/r0r1rr TypeError)rr4s r!test_rolling_quantile_paramrHs * +C 1C z -& A%& 2C z -& A%& )C y ,' A&''&&&&''s#!C!1!C-7!C9!C*-C69Dc tgd}|jddj}ttjgdz}t j |||jddjd}tdgdz}t j ||ttjtjdd dgjdd j}tj|d sJy) N)r\r7r]rrrrr%r)rr[r=rr)r rrrrr`rr>)valsrdres r!test_rolling_std_1obsrKs + ,D \\!\ + / / 1Frvvhl#H68, \\!\ + / /Q / 7Fseai H68, RVVRVVQ1- . 6 6qa 6 H L L NF 88F1I  r#c>tgd}|jdj}tj|ddj sJ|j dj}tj|ddj sJy)N)ge>R?Rz12?rMrMrMr=r&r)span)r rrrisfiniteallewmrPs r!test_rolling_std_neg_sqrtrRs   A  !A ;;qu  ! ! ## # 1 A ;;qu  ! ! ## #r#ctjtd5tt dj dddddy#1swYyxYw)Nzstep must be an integerr+rrr8rMr/r0r1rr.rrr#r!test_step_not_integer_raisesrUsB z)B C3%(##AE#2333rctjtd5tt dj dddddy#1swYyxYw)Nzstep must be >= 0r+rrr-rMrTrr#r!test_step_not_positive_raisesrWsB z)< =0%(##AB#/000r)r=r'rrerr.g@@g@D@UUUUUU?gUUUUUU8@)rrrrrgUUUUUU@ct|}t|}|j||j}tj||tj|dk(|dk(|j||j }tj|t j|tj|dk(|dk(y)Nrr)r rrr`rrrsqrt)r=r'rresr result_var result_stds r!'test_rolling_var_same_value_count_logicr^sdhH BF <@@BJ:x08q=*/:F <@@BJ:rwwx'898q=*/:r#ctgd}|jd}|j}|dddk(jsJ|j }|dddk(jsJy)NrXrrrrrrr=rr)r rrrPrr[rrds r!(test_rolling_mean_sum_floating_artifactsrc9sl ) *B 1 A VVXF 23K1  ! ! ## # UUWF 23K1  ! ! ## #r#ctgd}|jd}|j}|dddk(jsJ|j }|dddk(jsJy)Nr`rrr)r rrrPrras r!)test_rolling_skew_kurt_floating_artifactsrfDsl ) *B 1 A VVXF 23K1  ! ! ## # VVXF 23K2  " " $$ $r#c|}tdgddd}|djt|d<|jdd}t ||}||}|rdd gngd}||j |gj d jt}t|j|k(sJtj||y) Nrrr=rr3r numeric_onlyr6rQTrt) rrobjectrrVrRrvrrRrr`ra) rwrikernelr roprdrres r!test_numeric_only_framermOs %F !11- .BgnnV$BsGjjj*G & !B \ *F(sCjoG'{x(44$4?FFuMH   !W ,, ,&(+r#rkuse_argctgdddd}|djt|d<|r|fnd}|jdd}t ||}||d |i}|rd d gngd}||jt } |r| fnd} | jdd} t | |} | | d |i} t j|| y) Nr@rr=rr3rrrrir6rQ)rrrjrrVrr`ra)rkrirnr argrrlrdrdf2arg2rolling2op2res r! test_numeric_only_corr_cov_frameru_s 3 4BgnnV$BsG2%Cjjj*G & !B  0< 0F)sCjoG W+  U #CC6"D{{1!{,H (F #CD4|4H&(+r#rc|}tdg|}|jdd}t||}|r<|tur4d|d}t j t |5||dddy||}|j|gjd jt} tj|| y#1swYyxYw) Nrr-rrRolling. does not implement numeric_onlyr+rhTrt) r rrVrjr/r0rPrRrvrrr`r) rwrirrkrrrlr4rdres r!test_numeric_only_seriesryus&F !E "Ckk!k+G & !B @A ]].c : * L ) * *.77F8$00d0;BB5I vx0  * *s  CC ctgd|}|r|fnd}|jdd}t||}|r;|tur3d|d}t j t | 5||d |idddy||d |i} |jt} |r| fnd} | jdd} t| |} | | d |i}tj| |y#1swYyxYw) Nr@r-rrrrrwrxr+ri) r rrVrjr/r0rPrrr`r)rkrnrirrrprrlr4rdser2rrrsrtres r!!test_numeric_only_corr_cov_seriesr|s % (C3&Ckk!k+G & !B @A ]].c : 0  /, / 0 0S4|4zz% !wr<<q<1h'8<8 vx0 0 0s ! CCro)rmsusnsr$)NUTCz Europe/Praguec ^tdtditddd|}|jdj }|j j ||_|jdj }|j j d|_tj||tdd d| }td |}d |jd <|jtd j}tdd || }td |} d | jd <| jtd j} t|} t| } | j j d| _tj| | y)Nrnr%z 2013-01-01r)rKrBr$rLrz 2023-01-01z 2023-01-10)ror$rrrr>) rr.rrrrDrpr`rar rr r) ror$rzsum_in_nanosecssum_in_microsecs ref_dates ref_seriesref_max_seriesrtseries max_seriesref_dfr s r!-test_rolling_timedelta_window_non_nanosecondsrsb eAhz,T1QSTGood+//1OMM))$/GMt,002-33;;DA/+;<<DRHI+JJOOA'' q(9:>>@N |\ DE AU #FFKKN q 12668J ~ &F : Bxx%BH&"%r#)rrnumpyrr/ pandas.compatrrrpandasrr r r r r rrrrpandas._testing_testingr`pandas.api.indexersrpandas.core.indexers.objectsrpandas.tseries.offsetsrr"r5mark parametrizerr<rQrXrfrlr{rrrrrrrrrrrrrrrrrrrr rrr"r'r4r9r;r?rFrNrVrYr\ from_tuplesrkrurxrrrrrrrrrxfailrrrrrrrrrrrrrrrrrrrrr*r5rBrErHrKrRrUrWr(r^rcrfrmrurrjryr|rrr#r!rs     +D.'(sE8288QC=9:-;-. qq #\15k!n   )  )01I1$5ya7H#IJ,K,&I1$5ya7H$#OP9Q9",$ 10001    21111    11112    22222   ?),Z?[,Z?6 w( v' v' y/* w( v' v' y/*  & &" w01 v/0 v/0 y23 &&0 "&&"&&!Q2r2r2>? RVVRVVQ1aAr1=> 67 56 &&2 "&&"&&!Q2r2r2>? RVVRVVQ1b"b"a@A 67 56 &&6 -,4Iv#67-8-%0F1F%0 -1 -(89 9: 89  BFFAq!Q1aA>? Aq!Q1a;< 9: 89  BFFAq!Q1aA>? Aq!Q1a;<   - : -- "&&!Q1aArvvrvvFG Aq!Q1a@A  BFFBFFAq!Q1bffbffMN Aq!Q1bffEF "&&!Q1aArvvrvvFG Aq!Q1a@A  BFFBFFAq!Q1bffbffMN Aq!Q1bffEF  - - 23 ?@ RVVQS#sCc3GH "&&!S!Q1aA67  - -D!9- ,. , - --2,$,$-,<D%=1-2-,-&&$ II6 7s!%s+1vQF+aV4 y19=     II6 7s!%s+1vQF+aV41vQF+aV4     II6 7s!%s+1vQF+aV41vQF+aV4     II6 7s!%s+s!%s+s!%s+     II6 7s!%s+s!%s+s!%s+     !A3' ("a6 !A3' ("a3 Bxj!T* QN"&&!Q@ AuBFF8,qc2266{"&&!51v>2661~RVVQN;YG    m@CH0ICH0s!%s+1vQF+aV41vQF+aV4    s!%s+1vQF+aV4 y19=    s!%s+s!%s+s!%s+    #:0;:0"0& 9 cA3Z1a&1a&)Iy+A B    9 cA3Z1a&1a&)Iy+A B   9 cA3Z1a&1a&)QFQF+; <   9 cA3Z1a&1a&)QFQF+; <   qcA3Z1#sqcA3Z@!QG  qcA3Z1#sqcA3Z@!QG AA3*1v1v&67A> ' "B1-9 B1C B1$S1#sQC! %<=<=<=<=<=    S1a&1a&1a&1a& 1<=<=<=<=<=    S1a&)Y :<=<=<=<=<=    /"%L 1M%L 1aL "J " "8t   3K "J " "8d    ",#",&c +,,,D- 0&-0N ,  ,,,  [ & 5L(MN, , , 17IPU V  (.@w     Aq!Q1a01 Aq!Q1a01 Aq!Q2r23-.--,*, % ,- FG ,- FG 7 72$j#WX VY V w,- v+, v+, y./ w,- v+, v+, y./  . .( $% $%&& e e     5\3e dC4 N  5\4utT4u M e e    e #e #$"$$  G03h,i3h,B ! LsA 6=--,,FF#34-5- /0 12--2 At9- &. &7 I 23 ./$,$,N,- ?",J>2#<=u .tUm4&GH-I5/>3 -* H %=>I +0 bffc2663' ( bffc3,  c  ? $S ' $*3 0 3RAq! , VVR!T1eQ 7  RQ1 - VVR!Qfa 8  VVQ1aA & VVHqL+ +  1aAq! 4 VVHqLE1: %1 4qz A  1aAq! 4 VVHqLE1: %1 4{ B  FQJ VVHqLE7Q; &  1bffaA & VVQ !q (E7 2  K+.^;_.^;6$% , FE?3T5M2,34,(3-0 11 1 FE?3T5M23-011341*!89=>&?:&r#