
    MhR>                     \	   S SK rS SKrS SKJrJrJrJrJr  S SK	J
r  S SKJrJr  S SKJrJrJr  S SKJr  S rS rS rS	 r\R2                  R5                  S
S\SSSSSSSSS\R8                  /
0 4S\R:                  SSSSSSSSS\R8                  /
0 4S\R<                  SSSSSSSSS\R8                  /
0 4S\R>                  SSSSSSSSS\R8                  /
SS04S\R@                  SSSS S!S"SSS#\R8                  /
SS04S$\RB                  SSSSSSSSS%\R8                  /
0 4/5      S& 5       r"S' r#\R2                  R5                  S(S)SSSS*SS+SS\R8                  \R8                  /
4S,SSSS-S.S/SS\R8                  \R8                  /
4/5      S0 5       r$\R2                  R5                  S1S2/ S3Q/S4/ S5Q//5      S6 5       r%S7 r&S8 r'S9 r(\R2                  R5                  S:S/ S;Q4S</ S=Q4/5      \R2                  R5                  S>S$/ 4S?S#/4/5      S@ 5       5       r)\R2                  R5                  SA\\\/5      \R2                  R5                  SB/ SCQ5      \R2                  R5                  SDSS/S S/SE.SSF/S S/SE.S/SG-  \R8                  SSF\R8                  /\*" \+" SHSG5      5      -   SE./5      SI 5       5       5       r,\R2                  R5                  SJSSS /S/4SSFS S/SSF/4SFSS /S/4SFSFS S/SFSF/4SKSL\+" SL5      \*" \+" SKSL5      5      SL/SK-  -   4SLSK\+" SK5      SK/SK-  4S S \RZ                  " / 5      \RZ                  " / 5      4SS \RZ                  " / 5      \RZ                  " / 5      4S SS /S /4/	5      SM 5       r.\R2                  R5                  SN\" / SOQ/ SPQSQ.5      SF\" / SRQ\R^                  " / SPQ\+" SS5      /STS/SU9SV\R`                  SW94\" \R8                  SSF\R8                  /\*" \+" SHSX5      5      -   S/SY-  SF/SZ-  -   \+" SX5      S[.5      SL\" / S\Q\R^                  " S/SY-  SF/SZ-  -   \+" SX5      /STS/SU9SV\R`                  SW94/5      S] 5       r1\R2                  R5                  S^/ S_Q5      \R2                  R5                  SB/ S`Q5      Sa 5       5       r2Sb r3Sc r4g)d    N)	DataFrame
MultiIndexSeriesconcat
date_range)BaseIndexerFixedForwardWindowIndexer)ExpandingIndexerFixedWindowIndexerVariableOffsetWindowIndexer)BusinessDayc                       " S S[         5      n U " 5       n[        R                  " [        SS9   [	        [        S5      5      R                  U5        S S S 5        g ! , (       d  f       g = f)Nc                       \ rS rSrS rSrg)8test_bad_get_window_bounds_signature.<locals>.BadIndexer   c                     g N )selfs    W/var/www/html/env/lib/python3.13/site-packages/pandas/tests/window/test_base_indexer.pyget_window_boundsJtest_bad_get_window_bounds_signature.<locals>.BadIndexer.get_window_bounds   s        r   N__name__
__module____qualname____firstlineno__r   __static_attributes__r   r   r   
BadIndexerr      s    	r   r    zBadIndexer does not implementmatch   )r   pytestraises
ValueErrorr   rangerolling)r    indexers     r   $test_bad_get_window_bounds_signaturer*      sJ    [  lG	z)H	IuQx  ) 
J	I	Is   $A
A+c                      [        [        S5      5      n [        5       nU R                  U5      R	                  5       nU R                  5       R	                  5       n[        R                  " X#5        g )N
   )r   r'   r
   r(   mean	expandingtmassert_series_equal)sr)   resultexpecteds       r   test_expanding_indexerr4   #   sQ    uRyA GYYw$$&F{{}!!#H6,r   c                      / SQn [        S[        S5      05      n " S S[        5      nU" SU S9nUR                  U5      R	                  5       n[        S/ SQ05      n[
        R                  " XE5        g )	NTFTFTvaluesr#   c                       \ rS rSrS rSrg)3test_indexer_constructor_arg.<locals>.CustomIndexer0   c                 "   [         R                  " U[         R                  S9n[         R                  " U[         R                  S9n[        U5       H8  nU R                  U   (       a  SXh'   US-   Xx'   M$  XU'   XR
                  -   Xx'   M:     Xg4$ Ndtyper      )npemptyint64r'   use_expandingwindow_size	r   
num_valuesmin_periodscenterclosedstepstartendis	            r   r   Etest_indexer_constructor_arg.<locals>.CustomIndexer.get_window_bounds1   sz    HHZrxx8E((:RXX6C:&%%a( EHUCF !H!1!11CF ' :r   r   Nr   r   r   r   CustomIndexerr9   0   s    
	r   rO   r?   rD   rC   )              ?      @rS         $@r   r'   r   r(   sumr/   assert_frame_equal)rC   dfrO   r)   r2   r3   s         r   test_indexer_constructor_argrY   +   si    4M	HeAh'	(B  GGZZ $$&F($>?@H&+r   c                      [        S[        S5      05      n  " S S[        5      nU" SS9nU R                  USSSSS	9R	                  5       n[        S/ S
Q05      n[
        R                  " X45        g )Nr7   r#   c                       \ rS rSrS rSrg)8test_indexer_accepts_rolling_args.<locals>.CustomIndexerF   c                 2   [         R                  " U[         R                  S9n[         R                  " U[         R                  S9n[        U5       H@  nU(       a"  US:X  a  US:X  a  US:X  a  US:X  a
  SXh'   XU'   M,  XU'   XR                  -   Xx'   MB     Xg4$ )Nr=   r?   both   r   )r@   rA   rB   r'   rD   rE   s	            r   r   Jtest_indexer_accepts_rolling_args.<locals>.CustomIndexer.get_window_boundsG   s    HHZrxx8E((:RXX6C:&#q(&(	Q EH'F !H!1!11CF ' :r   r   Nr   r   r   r   rO   r\   F   s    	r   rO   r?   rD   Tr_   )rH   rG   rI   rJ   )rQ   rR   rT   rS         @rU   )rX   rO   r)   r2   r3   s        r   !test_indexer_accepts_rolling_argsrd   C   su    	HeAh'	(B & *GZZ!F  	ce  ($>?@H&+r   zfunc,np_func,expected,np_kwargscountrS          @minrQ   rR   rc         @      @       @max      Y@      "@stdgK@gDmK@g!?J@g'e?ddofr?   varg[{@@g[{@g[{Ħ@g      ?mediang      !@c                 z  ^^ [         R                  " S5      nSUS'   [        SS9nSn[        R                  " [
        US9   U " U5      R                  USS	9n	[        X5      " 5         S S S 5        S
n[        R                  " [
        US9   U " U5      R                  USS9n	[        X5      " 5         S S S 5        U " U5      R                  USUS9n	[        X5      " 5       n
U " U5      S S U2   n[        R                  " X5        U " U	R                  UU4S j5      5      n[        R                  " X5        US:X  a  SOS nU " U5      R                  X|S9n[        X5      " 5       nU " UR                  UU4S j5      5      n[        R                  " X5        g ! , (       d  f       GN8= f! , (       d  f       N= f)NrT   rl   r#      rb   z.Forward-looking windows can't have center=Truer!   T)windowrH   zAForward-looking windows don't support setting the closed argumentright)rt   rI   r`   rt   rG   rJ   c                    > T" U 40 TD6$ r   r   xnp_func	np_kwargss    r   <lambda>-test_rolling_forward_window.<locals>.<lambda>   s    8OY8Or   re   r   rt   rG   c                    > T" U 40 TD6$ r   r   rx   s    r   r|   r}      s    9Pi9Pr   )r@   aranger	   r$   r%   r&   r(   getattrr/   assert_equalapply)frame_or_seriesfuncrz   r3   r{   rJ   r7   r)   r"   r(   r2   	expected2rG   rolling3result3	expected3s     ` `           r   test_rolling_forward_windowr   a   sx   r YYt_FF1I'A6G<E	z	/!&)111N  
0 PE	z	/!&)111Q  
0 f%--W!RV-WGW#%F x(40HOOF%  .O PQIOOF& w!DKv&..g.WHh%'G/P QRIOOG'; 
0	/
 
0	/s   'F'F,
F),
F:c                 .   [         R                  " S5      nSUS'   [        SS9nU " U5      R                  USUS9nUR	                  5       nU " SSS	S
SSSS[         R
                  [         R
                  /
5      S S U2   n[        R                  " XV5        g )NrT   rl   r#   rb   rs   rv   rQ   go@g\QJ@g@gv-@gA@)r@   r   r	   r(   skewnanr/   r   )r   rJ   r7   r)   r(   r2   r3   s          r   test_rolling_forward_skewnessr      s    YYt_FF1I'A6Gf%--W!RV-WG\\^FFFFF	
 fH OOF%r   zfunc,expectedcovg     @X@g     @Wcorrg?gh"?g1=c                    [         R                  " S5      R                  SS5      nUS-  nSUS'   [         R                  " X#/SS9n[	        SS	9n[        U5      R                  USS
9n[        X`5      " 5       R                  [        S 5      S4S4   nUR                  SS9n[        U5      R                  SS9nUR                  Ul        [        R                  " Xq5        g )Nr,   r?   r`   d   )r#   r   )axisrs   rb   r~   r   T)drop)r@   r   reshapeconcatenater	   r   r(   r   locslicereset_indexr   namer/   r   )r   r3   values1values2r7   r)   r(   r2   s           r   test_rolling_forward_cov_corrr      s    , iim##B*GkGGDM^^W.Q7F'A6G''wA'FGW#%))5;*:A*=>FT*Fh+++6HKKHMOOF%r   zclosed,expected_dataru   )
rQ   rR   rf   rS   ri         (@rh   ri   rj   rm   left)
rQ   rQ   rR   rf         @rm   r   rh   ri   rj   c                     [        SSS9n[        [        S5      US9n[        S5      n[	        X$S9nUR                  XPS9R                  5       n[        XS9n[        R                  " Xg5        g )N2020r,   periods)indexr?   r   offset)rI   )	r   r   r'   r   r   r(   rV   r/   rW   )rI   expected_datar   rX   r   r)   r2   r3   s           r   &test_non_fixed_variable_window_indexerr      sd     vr*E	59E	*B^F)EGZZZ/335F4H&+r   c                      [         R                  " [        SS9   [        S[	        S5      S9  S S S 5        g ! , (       d  f       g = f)Nzindex must be a DatetimeIndex.r!   foor?   r   )r$   r%   r&   r   r   r   r   r   (test_variableoffsetwindowindexer_not_dtir     s,    	z)I	J#%AG 
K	J	Js	   7
Ac                      [        SSS9n [        R                  " [        SS9   [	        U SS9  S S S 5        g ! , (       d  f       g = f)Nr   r,   r   z(offset must be a DateOffset-like object.r!   r   r   )r   r$   r%   r&   r   )idxs    r   +test_variableoffsetwindowindexer_not_offsetr     s4    
VR
(C	z)S	T##e< 
U	T	Ts	   8
Ac                     [        S/ SQ05      n[        SS9nUR                  USU S9R                  5       n[        S/ SQ05      S S U 2   n[        R
                  " X45        g )Nb)NNN   r`   rb   r   rv   )rQ   rQ   rR   rR   )r   r	   r(   re   r/   rW   )rJ   rX   r)   r2   r3   s        r    test_fixed_forward_indexer_countr     s`    	C./	0B'A6GZZwADZAGGIF#345ff=H&+r   )	end_valuer7   )rQ   r?   r?   rs   r`   r   )rQ   r?   r   rs   r?   )r   argsquantilec                    ^   " U 4S jS[         5      n/ SQn[        S[        S5      05      nU" SUS9n[        UR	                  U5      U5      " U6 n[        SU05      n	[
        R                  " X5        g )Nc                   "   > \ rS rSrU 4S jrSrg)0test_indexer_quantile_sum.<locals>.CustomIndexeri+  c                 8  > [         R                  " U[         R                  S9n[         R                  " U[         R                  S9n[        U5       HB  nU R                  U   (       a  SXh'   [        UT	-   S5      Xx'   M.  XU'   XR                  -   Xx'   MD     Xg4$ r<   )r@   rA   rB   r'   rC   rk   rD   )
r   rF   rG   rH   rI   rJ   rK   rL   rM   r   s
            r   r   Btest_indexer_quantile_sum.<locals>.CustomIndexer.get_window_bounds,  s    HHZrxx8E((:RXX6C:&%%a( EH Y2CF !H!1!11CF ' :r   r   Nr   )r   s   r   rO   r   +  s    
	 
	r   rO   r6   r7   r#   r?   rP   )r   r   r'   r   r(   r/   rW   )
r   r7   r   r   rO   rC   rX   r)   r2   r3   s
   `         r   test_indexer_quantile_sumr   %  sl      5M	HeAh'	(BGGRZZ($/6F(F+,H&+r   indexer_classrD   )r?   r`      df_data)ar   r`         c                     [        U5      nSnU " US9nUR                  n[        U5       HE  nUR                  S5      S   R	                  USS9R                  5         UR                  U:X  a  ME   e   g )Nrs   rb   r   r   r?   r~   )r   rD   r'   groupbyr(   r-   )r   rD   r   rX   
num_trialsr)   original_window_sizerM   s           r   0test_indexers_are_reusable_after_groupby_rollingr   A  sv      
7	BJ4G"..:


3$$G$CHHJ""&:::: r   z5window_size, num_values, expected_start, expected_endr#   r   c           	      ,   [        U S9nUR                  XS9u  pg[        R                  " U[        R
                  " US S U2   5      SS9  [        R                  " U[        R
                  " US S U2   5      SS9  [        U5      [        U5      :X  d   eg )Nrb   )rF   rJ   F)check_dtype)r	   r   r/   assert_numpy_array_equalr@   arraylen)rD   rF   expected_startexpected_endrJ   r)   rK   rL   s           r   !test_fixed_forward_indexer_boundsr   Z  s    $ (K@G**j*LJErxxvv./U RXXl6T6.B%CQVWu:S!!!r   zdf, window_size, expected)r   r?   r`   )r?   r`   r`   )r   r   )r   g      ?rf   rs   r   )namesr   )r   r   r>      r      )r   r   c)@r   g      @r   r   g      @rh   r   g      )@g      *@g      +@g      ,@g      -@g      .@g      /@g      0@g     0@g      1@c                     [        US9nU R                  S5      S   R                  USS9R                  5       n[        R
                  " XB5        g )Nrb   r   r   r?   r~   )r	   r   r(   r-   r/   r0   )rX   rD   r3   r)   r2   s        r   0test_rolling_groupby_with_fixed_forward_specificr   v  sH    l (K@GZZ_S!))a)HMMOF6,r   
group_keys)	)r?   )r?   r`   )r`   r?   )r?   r?   r`   )r?   r`   r?   )r?   r?   r`   r`   )r?   r`   rs   r`   rs   )r?   r?   r`   r?   r?   r`   r?   r?   r`   r?   r?   r`   )r?   r`   rs   r?   r`   rs   r?   r`   rs   r?   r`   rs   r?   r`   rs   )r?   r`   rs   r   r#         c                     [        [        R                  " [        U 5      5      [        R                  " [        U 5      [        R                  S9S-   [        R                  " [        U 5      [        R                  S9S.5      n[        US9nUR                  S5      S   R                  USS9R                  5       nSS	/UR                  l        UR                  S5      / SQ   n[        U VVVs/ s HV  u  pgUR                  [!        [        U5      5       Vs/ s H$  nUS   R"                  XU-    R                  SS
9PM&     snS9PMX     snnn5      n	U	R%                  SS	/5      S   n	[&        R(                  " XI5        g s  snf s  snnnf )Nr=      )r   r   r   rb   r   r   r?   r~   r   )	min_count)r   )r   r@   r   listr   r   float64rB   r	   r   r(   rV   r   r   r   assignr'   iloc	set_indexr/   r0   )
r   rD   rX   r)   r2   groups_grM   manuals
             r   ,test_rolling_groupby_with_fixed_forward_manyr     s`   " 
$z*+3z?"**=B3z?"((;	

B (K@GZZ_S!))a)HLLNFsFLLZZ__-F 	
  HH #3q6]* cFKKO48818E*   	

F sCj)#.F6*	
s   1)F	+F	F	F	c                      " S S[         5      n U " 5       n[        S5      R                  U5      nSn[        R                  " [
        US9   UR                  5         S S S 5        [        R                  " [
        US9   [        [        U5      5        S S S 5        [        R                  " [
        US9   UR                  SS9  S S S 5        [        R                  " [
        US9   UR                  SS9  S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Nb= f! , (       d  f       g = f)Nc                       \ rS rSrS rSrg)4test_unequal_start_end_bounds.<locals>.CustomIndexeri  c                 `    [         R                  " S/5      [         R                  " SS/5      4$ Nr?   r`   r@   r   r   rF   rG   rH   rI   rJ   s         r   r   Ftest_unequal_start_end_bounds.<locals>.CustomIndexer.get_window_bounds  s$    88QC="((Aq6"222r   r   Nr   r   r   r   rO   r     s    	3r   rO   r?   rK   r!   Tpairwiser   r   r(   r$   r%   r&   r-   nextiterr   r   rO   r)   rollr"   s       r   test_unequal_start_end_boundsr     s    3 3 oG!9W%DE	z	/		 
0 
z	/T$Z 
0 
z	/		4	  
0 
z	/$ 
0	/ 
0	/ 
0	/ 
0	/ 
0	/s0   C>>D4D %D1>
D
D 
D.1
D?c                      " S S[         5      n U " 5       n[        SS/5      R                  U5      nSn[        R                  " [
        US9   UR                  5         S S S 5        [        R                  " [
        US9   [        [        U5      5        S S S 5        [        R                  " [
        US9   UR                  SS9  S S S 5        [        R                  " [
        US9   UR                  SS9  S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Nb= f! , (       d  f       g = f)Nc                       \ rS rSrS rSrg)4test_unequal_bounds_to_object.<locals>.CustomIndexeri  c                 ^    [         R                  " S/5      [         R                  " S/5      4$ r   r   r   s         r   r   Ftest_unequal_bounds_to_object.<locals>.CustomIndexer.get_window_bounds  s!    88QC="((A3-//r   r   Nr   r   r   r   rO   r     s    	0r   rO   r?   zstart and endr!   Tr   r   r   s       r   test_unequal_bounds_to_objectr     s    0 0 oG1a&>!!'*DE	z	/		 
0 
z	/T$Z 
0 
z	/		4	  
0 
z	/$ 
0	/ 
0	/ 
0	/ 
0	/ 
0	/s0   D  D6D"'D3 
D
D"
D03
E)5numpyr@   r$   pandasr   r   r   r   r   pandas._testing_testingr/   pandas.api.indexersr   r	   pandas.core.indexers.objectsr
   r   r   pandas.tseries.offsetsr   r*   r4   rY   rd   markparametrizer   r   rg   rk   rn   rp   rq   r   r   r   r   r   r   r   r   r   r'   r   r   r   from_arraysr   r   r   r   r   r   r   r   <module>r     s        /*-,0,< %	#S#sCc3RVVLbQ	c3S#sCbffMrRFF#sE5%c3G		
 FF QK	
$ FF QK	
$ II#sCc3S"&&A		
W14j'(k4j'(T&2 	c3c5#sBFFBFFKL"$"	
*&+*&  	EF	CD,,H=, q"34r;L6MN )XrNZ#<O+PQ, R,0 (*CEUV 
3!fAq6"!fAq6"cBhbffaBFF3d5B<6HHI
; 4
; ;	
AsQC	
A1v1v	
AsQC	
A1v1v	
Bb	4a-q89	Qa1#'"	
Arxx|RXXb\*	
Arxx|RXXb\*	
AsQC
""  II67 ,,iq-B3PT+Vjj			
 &&!Q/$uQ|2DDqA38+r ( !,,S1WsRx'r3C; jj3$	
03h-i3h- 
 (>?+ @+> * r   