1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
U
®ý°dw>ã@sddlZddlZddlmZmZmZmZmZddl    m
Z ddl m Z mZddlmZmZmZddlmZdd„Zdd    „Zd
d „Zd d „Zej ddedddddddddejg
ifdejdddddddddejg
ifdejdddddddddejg
ifdejddddddddd ejg
d!d"ifd#ej dddd$d%d&ddd'ejg
d!d"ifd(ej!ddddddddd)ejg
ifg¡d*d+„ƒZ"d,d-„Z#ej d.d/dddd0dd1ddejejg
fd2dddd3d4d5ddejejg
fg¡d6d7„ƒZ$ej d8d9dddddd:ddddg
gd;ddddd<dd<dddg
gg¡d=d>„ƒZ%d?d@„Z&ej dAd"dd"d"dBdCgfdDdd"ddBd"gfg¡ej dEd(gfdFd'gfg¡dGdH„ƒƒZ'ej dIeeeg¡ej dJd"dCdKg¡ej dLd"d"gdd"gdMœd"dCgdd"gdMœd"gdNejd"dCejge(e)dOdNƒƒdMœg¡dPdQ„ƒƒƒZ*ej dRd"d"dgd"gfd"dCdd"gd"dCgfdCd"dgd"gfdCdCdd"gdCdCgfdSdKe)dKƒe(e)dSdKƒƒdKgdSfdKdSe)dSƒdSgdSfdde +g¡e +g¡fd"de +g¡e +g¡fdd"dgdgfg    ¡dTdU„ƒZ,ej dVedd"dCgd"dCdCgdWœƒdCeddXdgej-d"dCdCge)dBƒgdYdgdZd[ej.d\feejd"dCejge(e)dOd]ƒƒd"gd^dCgd_e)d]ƒd`œƒdKedadadbd<d<dcdd:dddedfdgdhdidjdkdldmgej-d"gd^dCgd_e)d]ƒgdYdgdZd[ej.d\fg¡dndo„ƒZ/ej dpdqdrdsdtdudvdwdxdyg    ¡ej dJd"dCdBdOdSdzd{g¡d|d}„ƒƒZ0d~d„Z1d€d„Z2dS)‚éN)Ú    DataFrameÚ
MultiIndexÚSeriesÚconcatÚ
date_range)Ú BaseIndexerÚFixedForwardWindowIndexer)ÚExpandingIndexerÚFixedWindowIndexerÚVariableOffsetWindowIndexer)Ú BusinessDayc    CsFGdd„dtƒ}|ƒ}tjtddttdƒƒ |¡W5QRXdS)Nc@seZdZdd„ZdS)z8test_bad_get_window_bounds_signature.<locals>.BadIndexercSsdS©N©)Úselfrrú\d:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\pandas/tests/window/test_base_indexer.pyÚget_window_boundsszJtest_bad_get_window_bounds_signature.<locals>.BadIndexer.get_window_boundsN©Ú__name__Ú
__module__Ú __qualname__rrrrrÚ
BadIndexersrzBadIndexer does not implement©Úmatché)rÚpytestÚraisesÚ
ValueErrorrÚrangeÚrolling)rÚindexerrrrÚ$test_bad_get_window_bounds_signaturesr cCs<ttdƒƒ}tƒ}| |¡ ¡}| ¡ ¡}t ||¡dS)Né
)rrr    rÚmeanZ    expandingÚtmÚassert_series_equal)ÚsrÚresultÚexpectedrrrÚtest_expanding_indexer#s
  r(cCsndddddg}tdtdƒiƒ}Gdd„dtƒ}|d|d}| |¡ ¡}tdd    d
d d d giƒ}t ||¡dS) NTFÚvaluesrc@seZdZdd„ZdS)z3test_indexer_constructor_arg.<locals>.CustomIndexerc    Ssltj|tjd}tj|tjd}t|ƒD]:}|j|rLd||<|d||<q(|||<||j||<q(||fS©N©Údtyperé)ÚnpÚemptyÚint64rÚ use_expandingÚ window_size©    rÚ
num_valuesÚ min_periodsÚcenterÚclosedÚstepÚstartÚendÚirrrr1s 
zEtest_indexer_constructor_arg.<locals>.CustomIndexer.get_window_boundsNrrrrrÚ CustomIndexer0sr<r-©r2r1ççð?ç@ç$@©rrrrÚsumr#Úassert_frame_equal)r1Údfr<rr&r'rrrÚtest_indexer_constructor_arg+s rFcCshtdtdƒiƒ}Gdd„dtƒ}|dd}|j|ddddd     ¡}tdd
d d d dgiƒ}t ||¡dS)Nr)rc@seZdZdd„ZdS)z8test_indexer_accepts_rolling_args.<locals>.CustomIndexerc    Ss‚tj|tjd}tj|tjd}t|ƒD]P}|rb|dkrb|dkrb|dkrb|dkrbd||<|||<q(|||<||j||<q(||fS)Nr+r-Úbothér)r.r/r0rr2r3rrrrGs$ ÿþýüû
zJtest_indexer_accepts_rolling_args.<locals>.CustomIndexer.get_window_boundsNrrrrrr<Fsr<r-©r2TrG)r6r5r7r8r>r?rAr@ç@rB)rEr<rr&r'rrrÚ!test_indexer_accepts_rolling_argsCs
ÿ
rKzfunc,np_func,expected,np_kwargsÚcountr@g@Úminr>r?rJg@g@g @ÚmaxçY@g"@Ústdg–û·ÛK@gþDéû¾mK@gµ!µ?þJ@gß'Üež æ?Zddofr-Úvarg[{Ÿªª@¨@g[{Ÿªª‚§@g[{ŸªªÄ¦@gà?Úmediang!@c    sNt d¡}d|d<tdd}d}tjt|d$||ƒj|dd    }    t|    |ƒƒW5QRXd
}tjt|d$||ƒj|d d }    t|    |ƒƒW5QRX||ƒj|d |d}    t|    |ƒƒ}
||ƒdd|…}t     |
|¡||     
‡‡fdd„¡ƒ} t     |
| ¡|dkrdnd} ||ƒj|| d} t| |ƒƒ}||  
‡‡fdd„¡ƒ}t     ||¡dS)NrArOrérIz.Forward-looking windows can't have center=TruerT)Úwindowr6zAForward-looking windows don't support setting the closed argumentÚright)rTr7rH©rTr5r8cs ˆ|fˆŽSr r©Úx©Únp_funcÚ    np_kwargsrrÚ<lambda>²óz-test_rolling_forward_window.<locals>.<lambda>rLr©rTr5cs ˆ|fˆŽSr rrWrYrrr\¼r]) r.ÚarangerrrrrÚgetattrr#Ú assert_equalÚapply)Úframe_or_seriesÚfuncrZr'r[r8r)rrrr&Z    expected2r5Zrolling3Zresult3Z    expected3rrYrÚtest_rolling_forward_windowas,9
 
    rec Csrt d¡}d|d<tdd}||ƒj|d|d}| ¡}|ddd    d
d d ddtjtjg
ƒdd|…}t ||¡dS) NrArOrrIrSrVr>g ÅoòÛ@gê\QJÖ@gúòì£Ó@g§v†©-Õ@gA€ Û@)r.r_rrZskewÚnanr#ra)rcr8r)rrr&r'rrrÚtest_rolling_forward_skewnessÀs*
 
öÿ órgz func,expectedÚcovg@X@g@WÀÚcorrgîá°óÚë?g¥hÆ"¥ª’?g¡´1=ë¿cCs¢t d¡ dd¡}|d}d|d<tj||gdd}tdd    }t|ƒj|dd
}t||ƒƒjt    dƒdfd f}|j
d d }t |ƒj
d d }|j |_ t  ||¡dS)Nr!éÿÿÿÿr-rHéd)rr)ZaxisrSrIr^rT)Zdrop)r.r_ZreshapeZ concatenaterrrr`ÚlocÚsliceZ reset_indexrÚnamer#ra)rdr'Zvalues1Zvalues2r)rrr&rrrÚtest_rolling_forward_cov_corrÙs
 rozclosed,expected_datarUg(@Úleftg@cCs^tddd}ttdƒ|d}tdƒ}t||d}|j||d ¡}t||d}t ||¡dS)NZ2020r!)Zperiods)Úindexr-)rqÚoffset)r7)    rrrr r rrCr#rD)r7Z expected_datarqrErrrr&r'rrrÚ&test_non_fixed_variable_window_indexerþs   rscCs`tdddddgiƒ}tdd}|j|d|d ¡}tdddddgiƒdd|…}t ||¡dS)    NÚbérHrIrrVr>r?)rrrrLr#rD)r8rErr&r'rrrÚ test_fixed_forward_indexer_counts
 
rv)Ú    end_valuer)rSrHrj)rdÚargsZquantilec
snG‡fdd„dtƒ}dddddg}tdtdƒiƒ}|d|d}t| |¡|ƒ|Ž}td|iƒ}    t ||    ¡dS)    NcseZdZ‡fdd„ZdS)z0test_indexer_quantile_sum.<locals>.CustomIndexerc    srtj|tjd}tj|tjd}t|ƒD]@}|j|rRd||<t|ˆdƒ||<q(|||<||j||<q(||fSr*)r.r/r0rr1rNr2r3©rwrrrs 
zBtest_indexer_quantile_sum.<locals>.CustomIndexer.get_window_boundsNrrryrrr<sr<TFr)rr-r=)rrrr`rr#rD)
rwr)rdrxr<r1rErr&r'rryrÚtest_indexer_quantile_sums   rzÚ indexer_classr2é Údf_data)ÚartéécCsXt|ƒ}d}||d}|j}t|ƒD].}| d¡dj|dd ¡|j|ks$t‚q$dS)NrSrIr~rtr-r^)rr2rÚgroupbyrr"ÚAssertionError)r{r2r}rEZ
num_trialsrZoriginal_window_sizer;rrrÚ0test_indexers_are_reusable_after_groupby_rolling4s
 rƒz5window_size, num_values, expected_start, expected_endrcCstt|d}|j||d\}}tj|t |dd|…¡ddtj|t |dd|…¡ddt|ƒt|ƒkspt‚dS)NrI)r4r8F)Z check_dtype)rrr#Zassert_numpy_array_equalr.ÚarrayÚlenr‚)r2r4Zexpected_startZ expected_endr8rr9r:rrrÚ!test_fixed_forward_indexer_boundsMs
ÿ r†zdf, window_size, expected)rtr~gø?r~)Únamesrt)rqrnr,érué )rtr~ÚcgÍÌÌÌÌÌ @g@g@g)@g*@g+@g,@g-@g.@g/@g0@g€0@g1@cCs6t|d}| d¡dj|dd ¡}t ||¡dS)NrIr~rtr-r^)rrrr"r#r$)rEr2r'rr&rrrÚ0test_rolling_groupby_with_fixed_forward_specificis6
r‹Ú
group_keys)r-)r-rH)rHr-)r-r-rH)r-rHr-)r-r-rHrH)r-rHrSrHrS) r-r-rHr-r-rHr-r-rHr-r-rH)r-rHrSr-rHrSr-rHrSr-rHrSr-rHrSéécs¼tt t|ƒ¡tjt|ƒtjddtjt|ƒtjddœƒ}tˆd}|     d¡dj
|dd  ¡}dd    g|j _ |     d¡ddd    g}t‡fd
d „|Dƒƒ}| dd    g¡d}t ||¡dS) Nr+é)r~rtrŠrIr~rtr-r^rŠcs4g|],\}‰ˆj‡‡fdd„ttˆƒƒDƒd‘qS)cs*g|]"}ˆdj||ˆ…jdd‘qS)rtr-)Z    min_count)ZilocrC)Ú.0r;)Úgr2rrÚ
<listcomp>ÅsÿzKtest_rolling_groupby_with_fixed_forward_many.<locals>.<listcomp>.<listcomp>)rt)Zassignrr…)rÚ_rI)r‘rr’Ãs ú 
þÿz@test_rolling_groupby_with_fixed_forward_many.<locals>.<listcomp>)rr.r„Úlistr_r…Úfloat64r0rrrrCrqr‡rZ    set_indexr#r$)rŒr2rErr&ÚgroupsZmanualrrIrÚ,test_rolling_groupby_with_fixed_forward_many¤s" ýÿ
 
ùÿ r—c    CsÀGdd„dtƒ}|ƒ}tdƒ |¡}d}tjt|d| ¡W5QRXtjt|dtt|ƒƒW5QRXtjt|d|j    ddW5QRXtjt|d|j
ddW5QRXdS)Nc@seZdZdd„ZdS)z4test_unequal_start_end_bounds.<locals>.CustomIndexercSst dg¡t ddg¡fS©Nr-rH©r.r„©rr4r5r6r7r8rrrrÔszFtest_unequal_start_end_bounds.<locals>.CustomIndexer.get_window_boundsNrrrrrr<Ósr<r-r9rT©Úpairwise© rrrrrrr"ÚnextÚiterrirh©r<rZrollrrrrÚtest_unequal_start_end_boundsÒsr¡c    CsÄGdd„dtƒ}|ƒ}tddgƒ |¡}d}tjt|d| ¡W5QRXtjt|dtt|ƒƒW5QRXtjt|d|j    ddW5QRXtjt|d|j
ddW5QRXdS)Nc@seZdZdd„ZdS)z4test_unequal_bounds_to_object.<locals>.CustomIndexercSst dg¡t dg¡fSr˜r™ršrrrrêszFtest_unequal_bounds_to_object.<locals>.CustomIndexer.get_window_boundsNrrrrrr<ésr<r-z start and endrTr›rr rrrÚtest_unequal_bounds_to_objectçsr¢)3Únumpyr.rZpandasrrrrrZpandas._testingZ_testingr#Zpandas.api.indexersrrZpandas.core.indexers.objectsr    r
r Zpandas.tseries.offsetsr r r(rFrKÚmarkZ parametrizer…rfrMrNrPrQrRrergrorsrvrzr”rrƒr„r†Z from_arraysr•r‹r—r¡r¢rrrrÚ<module>sp  
 "üö ñö ñüÕþ5
*öþþþ
þþ
 
    "ÿ ÿ(ýþ "÷þ
üý ýÿîÿç÷õþ4
÷þ