
    OwgR>                     t	   d dl Zd dlZd dlmZmZmZmZmZ d dl	m
Z d dlmZmZ d dlmZmZmZ d dlmZ d Zd Zd Zd	 Zej2                  j5                  d
dedddddddddej8                  g
i fdej:                  dddddddddej8                  g
i fdej<                  dddddddddej8                  g
i fdej>                  dddddddddej8                  g
ddifdej@                  dddd d!d"ddd#ej8                  g
ddifd$ejB                  ddddddddd%ej8                  g
i fg      d&        Z"d' Z#ej2                  j5                  d(d)dddd*dd+ddej8                  ej8                  g
fd,dddd-d.d/ddej8                  ej8                  g
fg      d0        Z$ej2                  j5                  d1d2g d3gd4g d5gg      d6        Z%d7 Z&d8 Z'd9 Z(ej2                  j5                  d:dg d;fd<g d=fg      ej2                  j5                  d>d$g fd?d#gfg      d@               Z)ej2                  j5                  dAeeeg      ej2                  j5                  dBg dC      ej2                  j5                  dDddgd dgdEddFgd dgdEdgdGz  ej8                  ddFej8                  g e* e+dHdG            z   dEg      dI                      Z,ej2                  j5                  dJddd gdgfddFd dgddFgfdFdd gdgfdFdFd dgdFdFgfdKdL e+dL       e* e+dKdL            dLgdKz  z   fdLdK e+dK      dKgdKz  fd d  ejZ                  g        ejZ                  g       fdd  ejZ                  g        ejZ                  g       fd dd gd gfg	      dM        Z.ej2                  j5                  dN eg dOg dPdQ      dF eg dR ej^                  g dP e+dS      gdTdgU      dVej`                  W      f eej8                  ddFej8                  g e* e+dHdX            z   dgdYz  dFgdZz  z    e+dX      d[      dL eg d\ ej^                  dgdYz  dFgdZz  z    e+dX      gdTdgU      dVej`                  W      fg      d]        Z1ej2                  j5                  d^g d_      ej2                  j5                  dBg d`      da               Z2db Z3dc Z4y)d    N)	DataFrame
MultiIndexSeriesconcat
date_range)BaseIndexerFixedForwardWindowIndexer)ExpandingIndexerFixedWindowIndexerVariableOffsetWindowIndexer)BusinessDayc                       G d dt               }  |        }t        j                  t        d      5  t	        t        d            j                  |       d d d        y # 1 sw Y   y xY w)Nc                       e Zd Zd Zy)8test_bad_get_window_bounds_signature.<locals>.BadIndexerc                      y N )selfs    \/var/www/horilla/myenv/lib/python3.12/site-packages/pandas/tests/window/test_base_indexer.pyget_window_boundszJtest_bad_get_window_bounds_signature.<locals>.BadIndexer.get_window_bounds   s        N__name__
__module____qualname__r   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&      sR    [  lG	z)H	I *uQx  )* * *s   $AA(c                      t        t        d            } t               }| j                  |      j	                         }| j                         j	                         }t        j                  ||       y )N
   )r   r#   r
   r$   mean	expandingtmassert_series_equal)sr%   resultexpecteds       r   test_expanding_indexerr0   #   sS    uRyA GYYw$$&F{{}!!#H68,r   c                      g d} t        dt        d      i      } G d dt              } |d|       }|j                  |      j	                         }t        dg di      }t        j                  ||       y )	NTFTFTvaluesr   c                       e Zd Zd Zy)3test_indexer_constructor_arg.<locals>.CustomIndexerc                 &   t        j                  |t         j                        }t        j                  |t         j                        }t        |      D ]6  }| j                  |   rd||<   |dz   ||<    |||<   || j
                  z   ||<   8 ||fS Ndtyper      )npemptyint64r#   use_expandingwindow_size	r   
num_valuesmin_periodscenterclosedstepstartendis	            r   r   zEtest_indexer_constructor_arg.<locals>.CustomIndexer.get_window_bounds1   s    HHZrxx8E((:RXX6C:& 2%%a( E!HUCF E!H!1!11CF2 #:r   Nr   r   r   r   CustomIndexerr5   0   s    
	r   rI   r:   r?   r>   )              ?      @rM         $@r   r#   r   r$   sumr+   assert_frame_equal)r>   dfrI   r%   r.   r/   s         r   test_indexer_constructor_argrS   +   sk    4M	HeAh'	(B  GGZZ $$&F($>?@H&(+r   c                      t        dt        d      i      }  G d dt              } |d      }| j                  |dddd	      j	                         }t        dg d
i      }t        j                  ||       y )Nr3   r   c                       e Zd Zd Zy)8test_indexer_accepts_rolling_args.<locals>.CustomIndexerc                 .   t        j                  |t         j                        }t        j                  |t         j                        }t        |      D ]:  }|r|dk(  r|dk(  r|dk(  r|dk(  rd||<   |||<   $|||<   || j                  z   ||<   < ||fS )Nr8   r:   both   r   )r;   r<   r=   r#   r?   r@   s	            r   r   zJtest_indexer_accepts_rolling_args.<locals>.CustomIndexer.get_window_boundsG   s    HHZrxx8E((:RXX6C:& 2#q(&(	Q E!H'CF E!H!1!11CF2 #:r   Nr   r   r   r   rI   rV   F   s    	r   rI   r:   r?   TrX   )rC   rB   rD   rE   )rK   rL   rN   rM         @rO   )rR   rI   r%   r.   r/   s        r   !test_indexer_accepts_rolling_argsr\   C   sw    	HeAh'	(B & *GZZ!F  	ce  ($>?@H&(+r   zfunc,np_func,expected,np_kwargscountrM          @minrK   rL   r[         @      @       @max      Y@      "@stdgK@gDmK@g!?J@g'e?ddofr:   varg[{@@g[{@g[{Ħ@g      ?mediang      !@c                    t        j                  d      }d|d<   t        d      }d}t        j                  t
        |      5   | |      j                  |d	      }	 t        |	|              d d d        d
}t        j                  t
        |      5   | |      j                  |d      }	 t        |	|              d d d         | |      j                  |d|      }	 t        |	|             }
 | |      d d |   }t        j                  |
|        | |	j                  fd            }t        j                  |
|       |dk(  rdnd } | |      j                  ||      } t        ||             } | |j                  fd            }t        j                  ||       y # 1 sw Y   ?xY w# 1 sw Y   xY w)NrN   rd   r      rZ   z.Forward-looking windows can't have center=Truer   T)windowrC   zAForward-looking windows don't support setting the closed argumentright)rl   rD   rY   rl   rB   rE   c                      | fi S r   r   xnp_func	np_kwargss    r   <lambda>z-test_rolling_forward_window.<locals>.<lambda>   s    8OY8O r   r]   r   rl   rB   c                      | fi S r   r   rp   s    r   rt   z-test_rolling_forward_window.<locals>.<lambda>   s    9Pi9P r   )r;   aranger	   r    r!   r"   r$   getattrr+   assert_equalapply)frame_or_seriesfuncrr   r/   rs   rE   r3   r%   r   r$   r.   	expected2rB   rolling3result3	expected3s     ` `           r   test_rolling_forward_windowr   a   s   r YYt_FF1I'A6G<E	z	/ !!&)111N ! PE	z	/ !!&)111Q ! f%--W!RV-WG#WWd#%F x(40HOOFH%  .O PQIOOFI& w!DKv&..g;.WH%gh%'G/P QRIOOGY';! !
! !s   +F.+F;.F8;Gc                 8   t        j                  d      }d|d<   t        d      } | |      j                  |d|      }|j	                         } | ddd	d
ddddt         j
                  t         j
                  g
      d d |   }t        j                  ||       y )NrN   rd   r   rZ   rk   rn   rK   go@g\QJ@g@gv-@gA@)r;   rw   r	   r$   skewnanr+   ry   )r{   rE   r3   r%   r$   r.   r/   s          r   test_rolling_forward_skewnessr      s    YYt_FF1I'A6Gf%--W!RV-WG\\^FFFFF	
 fH OOFH%r   zfunc,expectedcovg     @X@g     @Wcorrg?gh"?g1=c                    t        j                  d      j                  dd      }|dz  }d|d<   t        j                  ||gd      }t	        d	      }t        |      j                  |d
      } t        ||              j                  t        d       dfdf   }|j                  d      }t        |      j                  d      }|j                  |_        t        j                  ||       y )Nr(   r:   rY   d   )r   r   )axisrk   rZ   ru   r   T)drop)r;   rw   reshapeconcatenater	   r   r$   rx   locslicereset_indexr   namer+   ry   )r|   r/   values1values2r3   r%   r$   r.   s           r   test_rolling_forward_cov_corrr      s    , iim##B*GkGGDM^^Wg.Q7F'A6G''wA'FG#WWd#%))5;*:A*=>FT*Fh+++6HKKHMOOFH%r   zclosed,expected_datarm   )
rK   rL   r^   rM   ra         (@r`   ra   rb   re   left)
rK   rK   rL   r^         @re   r   r`   ra   rb   c                    t        dd      }t        t        d      |      }t        d      }t	        ||      }|j                  ||       j                         }t        ||      }t        j                  ||       y )N2020r(   periods)indexr:   r   offset)rD   )	r   r   r#   r   r   r$   rP   r+   rQ   )rD   expected_datar   rR   r   r%   r.   r/   s           r   &test_non_fixed_variable_window_indexerr      sl     vr*E	59E	*B^F)fEGZZZ/335Fe4H&(+r   c                      t        j                  t        d      5  t        dt	        d             d d d        y # 1 sw Y   y xY w)Nzindex must be a DatetimeIndex.r   foor:   r   )r    r!   r"   r   r   r   r   r   (test_variableoffsetwindowindexer_not_dtir     s8    	z)I	J H#%AGH H Hs	   <Ac                      t        dd      } t        j                  t        d      5  t	        | d       d d d        y # 1 sw Y   y xY w)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     s<    
VR
(C	z)S	T =##e<= = =s   A  A	c                     t        dg di      }t        d      }|j                  |d|       j                         }t        dg di      d d |    }t	        j
                  ||       y )Nb)NNN   rY   rZ   r   rn   )rK   rK   rL   rL   )r   r	   r$   r]   r+   rQ   )rE   rR   r%   r.   r/   s        r    test_fixed_forward_indexer_countr     sb    	C./	0B'A6GZZwADZAGGIF#345ff=H&(+r   )	end_valuer3   )rK   r:   r:   rk   rY   r   )rK   r:   r   rk   r:   )r|   argsquantilec                       G  fddt               }g d}t        dt        d      i      } |d|      } t        |j	                  |      |      | }t        d|i      }	t        j                  ||	       y )Nc                       e Zd Z fdZy)0test_indexer_quantile_sum.<locals>.CustomIndexerc                 <   t        j                  |t         j                        }t        j                  |t         j                        }t        |      D ]@  }| j                  |   rd||<   t        |	z   d      ||<   *|||<   || j                  z   ||<   B ||fS r7   )r;   r<   r=   r#   r>   rc   r?   )
r   rA   rB   rC   rD   rE   rF   rG   rH   r   s
            r   r   zBtest_indexer_quantile_sum.<locals>.CustomIndexer.get_window_bounds,  s    HHZrxx8E((:RXX6C:& 2%%a( E!H Y2CF E!H!1!11CF2 #:r   Nr   )r   s   r   rI   r   +  s    
	r   rI   r2   r3   r   r:   rJ   )r   r   r#   rx   r$   r+   rQ   )
r   r3   r|   r   rI   r>   rR   r%   r.   r/   s
   `         r   test_indexer_quantile_sumr   %  sp      5M	HeAh'	(BGG/WRZZ($/6F(F+,H&(+r   indexer_classr?   )r:   rY      df_data)ar   rY         c                     t        |      }d} | |      }|j                  }t        |      D ]F  }|j                  d      d   j	                  |d      j                          |j                  |k(  rFJ  y )Nrk   rZ   r   r   r:   ru   )r   r?   r#   groupbyr$   r)   )r   r?   r   rR   
num_trialsr%   original_window_sizerH   s           r   0test_indexers_are_reusable_after_groupby_rollingr   A  s{      
7	BJ4G"..: ;


3$$G$CHHJ""&::::;r   z5window_size, num_values, expected_start, expected_endr   r   c           	      >   t        |       }|j                  ||      \  }}t        j                  |t	        j
                  |d d |         d       t        j                  |t	        j
                  |d d |         d       t        |      t        |      k(  sJ y )NrZ   )rA   rE   F)check_dtype)r	   r   r+   assert_numpy_array_equalr;   arraylen)r?   rA   expected_startexpected_endrE   r%   rF   rG   s           r   !test_fixed_forward_indexer_boundsr   Z  s    $ (K@G**jt*LJE3rxxvv./U RXXl6T6.B%CQVWu:S!!!r   zdf, window_size, expected)r   r:   rY   )r:   rY   rY   )r   r   )r   g      ?r^   rk   r   )namesr   )r   r   r9      r      )r   r   c)@r   g      @r   r   g      @r`   r   g      )@g      *@g      +@g      ,@g      -@g      .@g      /@g      0@g     0@g      1@c                     t        |      }| j                  d      d   j                  |d      j                         }t	        j
                  ||       y )NrZ   r   r   r:   ru   )r	   r   r$   r)   r+   r,   )rR   r?   r/   r%   r.   s        r   0test_rolling_groupby_with_fixed_forward_specificr   v  sJ    l (K@GZZ_S!))a)HMMOF68,r   
group_keys)	)r:   )r:   rY   )rY   r:   )r:   r:   rY   )r:   rY   r:   )r:   r:   rY   rY   )r:   rY   rk   rY   rk   )r:   r:   rY   r:   r:   rY   r:   r:   rY   r:   r:   rY   )r:   rY   rk   r:   rY   rk   r:   rY   rk   r:   rY   rk   r:   rY   rk   )r:   rY   rk   r   r         c                 6   t        t        j                  t        |             t        j                  t        |       t        j                        dz   t        j                  t        |       t        j                        d      }t        |      }|j                  d      d   j                  |d      j                         }dd	g|j                  _        |j                  d      g d   }t        |D cg c]Z  \  }}|j                  t!        t        |            D cg c]'  }|d   j"                  |||z    j                  d
      ) c}      \ c}}}      }	|	j%                  dd	g      d   }	t'        j(                  ||	       y c c}w c c}}}w )Nr8      )r   r   r   rZ   r   r   r:   ru   r   )	min_count)r   )r   r;   r   listrw   r   float64r=   r	   r   r$   rP   r   r   r   assignr#   iloc	set_indexr+   r,   )
r   r?   rR   r%   r.   groups_grH   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 	
 	
 1 HH #3q6] cFKKAO48818E  	

F sCj)#.F66*	
s   :)F#,F
FFc                  x    G d dt               }  |        }t        d      j                  |      }d}t        j                  t
        |      5  |j                          d d d        t        j                  t
        |      5  t        t        |             d d d        t        j                  t
        |      5  |j                  d       d d d        t        j                  t
        |      5  |j                  d       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   XxY w# 1 sw Y   y xY w)Nc                       e Zd Zd Zy)4test_unequal_start_end_bounds.<locals>.CustomIndexerc                 \    t        j                  dg      t        j                  ddg      fS Nr:   rY   r;   r   r   rA   rB   rC   rD   rE   s         r   r   zFtest_unequal_start_end_bounds.<locals>.CustomIndexer.get_window_bounds  s$    88QC="((Aq6"222r   Nr   r   r   r   rI   r     s    	3r   rI   r:   rF   r   Tpairwiser   r   r$   r    r!   r"   r)   nextiterr   r   rI   r%   rollr   s       r   test_unequal_start_end_boundsr     s    3 3 oG!9W%DE	z	/ 		 
z	/ T$Z 
z	/ !		4	 ! 
z	/  $     ! !   s0   DD:D$0D0DD!$D-0D9c                  |    G d dt               }  |        }t        ddg      j                  |      }d}t        j                  t
        |      5  |j                          d d d        t        j                  t
        |      5  t        t        |             d d d        t        j                  t
        |      5  |j                  d       d d d        t        j                  t
        |      5  |j                  d       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   XxY w# 1 sw Y   y xY w)Nc                       e Zd Zd Zy)4test_unequal_bounds_to_object.<locals>.CustomIndexerc                 Z    t        j                  dg      t        j                  dg      fS r   r   r   s         r   r   zFtest_unequal_bounds_to_object.<locals>.CustomIndexer.get_window_bounds  s!    88QC="((A3-//r   Nr   r   r   r   rI   r     s    	0r   rI   r:   zstart and endr   Tr   r   r   s       r   test_unequal_bounds_to_objectr     s    0 0 oG1a&>!!'*DE	z	/ 		 
z	/ T$Z 
z	/ !		4	 ! 
z	/  $     ! !   s0   DD<D&2D2DD#&D/2D;)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&   r0   rS   r\   markparametrizer   r   r_   rc   rf   rh   ri   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#'"	
Axrxx|XRXXb\*	
Axrxx|XRXXb\*	
AsQC
""  II67,j,,iq-B3PT+Vjj			
 &&!Q/$uQ|2DDqA38+r ( -j,,S1WsRx'r3C; jj3$	
03h-i3h- 
 (>?+ @+> * r   