
    .iS                     )   d dl m Z mZ d dlZd dlZd dlmZ d dlmZ d dl	m
Z
mZmZmZmZmZmZmZ d dlmZ d dlmZ d dlmZ d dlmZ d	 Zd
 Zej:                  j=                  ddd ej>                  dg      g      d        Z ej:                  j=                  d ed       ed      d e edd       ed            g      d        Z!ej:                  j=                  dddg      d        Z"ej:                  j=                  d ed       ed      g      d        Z#ej:                  j=                  d ed       ed      dg      d        Z$d  Z%ej:                  j=                  d!d"g d#g d$g d%g d&g d'gfd(g d)g d#g d*g d+g d'gfd,g d#g d*g d+g d'g d-gfd.g d)g d/g d0g d1g d-gfg      d2        Z&ej:                  j=                  d3d4d,g d5fd4d"g d5fd4d(g d5fd4d.g d5fd6d,g d7fd6d"g d5fd6d(g d8fd6d.g d9fg      d:        Z'ej:                  j=                  d3d;d,g d<fd;d(g d=fd;d"g d>fd;d.g d?fg      d@        Z(ej:                  j=                  dAd(ejR                  ejR                  ddddBdCdCdDdEg
fd.ejR                  ejR                  ddddFdddGdHg
fd,g dIfd"g dJfg      dK        Z*ej:                  j=                  dAd(ejR                  ejR                  ddddBdLdLdDdEg
fd.ejR                  ejR                  ddddBdLdLdGdHg
fd,g dMfd"g dNfg      dO        Z+dP Z,dQ Z-ej:                  j=                  dRd.d(g      dS        Z.ej:                  j=                  dTdUdVg      dW        Z/ej:                  j=                  dTdUdVg      dX        Z0ej:                  j=                  dYdZd[g      ej:                  j=                  d\dUd,g d]fdUd"g d^fdUd.ejR                  d d dddd_dd`dag
fdUd(ejR                  d d d dddd_dd`g
fdVd,g dbfdVd"g dbfdVd.ejR                  d dddd_dd`dadHg
fdVd(ejR                  d dddd_dd`dadHg
fg      dc               Z1dd Z2ej:                  j=                  d\dUd,ejR                  d d dddd_dejR                  ejR                  g
fdUd"ejR                  d d d dddd_dejR                  g
fdUd.ejR                  ejR                  d dddd_dejR                  ejR                  g
fdUd(ejR                  ejR                  d d dddd_dejR                  g
fdVd,ejR                  dddd_dd`d`ejR                  ejR                  g
fdVd"ejR                  dddd_dd`d`d`ejR                  g
fdVd.ejR                  ejR                  dddd_dd`ejR                  ejR                  g
fdVd(ejR                  ejR                  dddd_dd`d`ejR                  g
fg      de        Z3ej:                  j=                  dAd,g dffd"g dgfd.ejR                  d dhdidjdkdldmdndog
fd(ejR                  d dhdddd_dd`dag
fg      dp        Z4ej:                  j=                  dqdrdg      ds        Z5dt Z6du Z7dv Z8dw Z9dx Z:dy Z;dz Z<d{ Z=d| Z>d} Z?d~ Z@d ZAej:                  j=                  dg dg dddgd_gdd gfddgd_dgdd dgfg dg ddg dfgddfg dg dddgd_gdd gfddgd_dgdd dgfddgdd`gdddgfgddfg dg dddgd_gdd gfddgd_dgdd dgfddgdd`gdddgfgddfg dg dddgd_gdd gfdgdgddgfdgd`gddgfgddfg dg dddgd_gdd gfdgdgddgfdgd`gddgfgdd fdgd_gdg ddfdgd_gdg ddfdi g fgddfdejR                  dgejR                  dd`gddgejR                  gdd gfdejR                  gejR                  dgdd dgfdejR                  dgejR                  dd`gdg dfgddfg	      d        ZBej:                  j=                  ddgd_gdd gfddgd_dgdd dgfddgdd`gdddgfgd;fdgd_gdd gfddgd_dgdd dgfg dg ddg dfgdfdgd_gdd gfdgdgddgfdgd`gddgfgdfg      d        ZCd ZDej:                  j=                  d eg d      dgd gfddgd dgfg dg dfgddf eg d      dgd gfddgd dgfg dg dfgddf eg d      dgd gfddgd dgfddgddgfgddf eg d      dgd gfddgd dgfddgddgfgddf eg d      dgd gfdgdgfdgdgfgdd f eg d      dgd gfdgdgfdgdgfgddf eddg      dgd gfddgd dgfgdd f eg d      g ddfg      d        ZEej:                  j=                  dd gdgdgdgd_gg eddd       eddd       eddd       eddd       eddd      gdfd gd dgddgddgdd_gg eddd       eddd       eddd       eddd       eddd      gd;fd gd dgg dg dg dg eddd       eddd       eddd       eddd       eddd      gdfg      d        ZFej:                  j=                  ddd i ej                  g dddg      fddi ej                  g dddg      fg      d        ZHej:                  j=                  dddg      d        ZId ZJd ZKd ZLd ZMej:                  j=                  d edddU      df eddd      dfg      ej:                  j=                  ddUejR                  d d dddd_dd`g	fdVejR                  d dddd_dd`dag	fdejR                  d ddddadFddGg	fg      d               ZNd ZOej:                  j=                  ddg dddg dfdg dddg dfdg dddg dfdg dddg dfdg dddg dfdg dddg dfdg d¢d`dg dâfg      dĄ        ZPdń ZQej:                  j=                  dg dǢ      dȄ        ZRej:                  j=                  d3d6d,g dɢfd6d(g dʢfd6d"g dˢfd6d.g d̢fd4d,g dˢfd4d(g dˢfd4d"g dˢfd4d.g dˢfg      d̈́        ZSej:                  j=                  ddg dТfdg dҢfg      dӄ        ZTej:                  j=                  dd eUdի      d eUdի      dddddgfd eUdի      do eUdի      dddddgfd eUdի      d eUdի      dddddgfd eUdի      d eUdի      dddddgfd eUdի      d eUdի      dddddgfg      d        ZVej:                  j=                  dg ddf eddd      d;fg      d        ZWej:                  j=                  dg dd eUdի       eUdի      ddddddސd dg
fdejR                  dejR                  dejR                  d ejR                  dejR                  g
d eUdի      gdBz  fg dd eUdի       eUdի      ddddސd dddg
fdejR                  dejR                  dejR                  d ejR                  dejR                  g
d eUdի      gdBz  fg      d        ZXej:                  j=                  dg ddg dfdejR                  dejR                  dejR                  d ejR                  dejR                  g
dg dfg ddg dfdejR                  dejR                  dejR                  d ejR                  dejR                  g
dg dfg      d	        ZYd
 ZZej:                  j=                  dddg      d        Z[ej:                  j=                  ddg dejR                  gdz  g dz   fdg dejR                  gdz  g dz   fdg dejR                  gdz  g dz   fdg dejR                  gdz  g dz   fg      d        Z\ej:                  j=                  dddg      d        Z]d Z^d Z_d Z`d Zaej:                  j=                  ddg dfdg dfg      d        Zbd Zcd Zdej:                  j=                  dg d      ej:                  j=                  dg d       ej:                  j=                  d!d"d#g      ej:                  j=                  d$g d%      d&                             Zeej:                  j=                  dg d      ej:                  j=                  d$g d'      d(               Zfd) Zgej:                  j=                  d*g d+      ej:                  j=                  d,g d-      ej:                  j=                  d.g d/g d0dejR                  d1ejR                  d2gejR                  ejR                  ejR                  ejR                  gejR                  d3ejR                  d4d2dhgdhgejR                  d5d6gg      d7                      Zhd8 Zid9 Zjd: Zkd; Zld< Zmd= Znej:                  j=                  g d>d?dBdBej                  ddddgddejR                  d@dAd dBd dCdggd?dBdBejR                  dBdddgddejR                  d@dAd d dBdDdggejR                  dd`dadddgddejR                  gdz  g dEz   gddadadaejR                  ej                  d_dddg
ddejR                  gdz  dFd gz   ejR                  gd_z  z   dCd gz   gddadadaejR                  ej                  dadddg
ddejR                  gdz  dFd gz   ejR                  gd_z  z   dGd gz   gddagd_z  ddejR                  gdz  dFgd`z  z   gddadejR                  daddagddejR                  ddFgdgdz  z   dFgz   gg      dH        ZpdI ZqdJ ZrdK Zsej:                  j=                  dLddg      ej:                  j=                  dMd"d#g      dN               Ztej:                  j=                  dOeuevg      dP        Zwej:                  j=                  dLddg      ej:                  j=                  dMd"d#g      ej:                  j=                  dOeuevg      dQ                      Zxej:                  j=                  dRg dS      dT        Zy G dU dVe      Zz G dW dX      Z{y(Y      )datetime	timedeltaN)IS64)Pandas4Warning)	DataFrameDatetimeIndex
MultiIndexSeries	Timedelta	Timestamp
date_rangeperiod_range)BaseIndexer)VariableOffsetWindowIndexer)BusinessDayc                      t        ddddt        j                  dgi      } |  | j                  d      j	                          | j                  dd      j	                          y )NBr            min_periods)r   npnanrollingsum)dfs    ^/var/www/app/trading-bot/venv/lib/python3.12/site-packages/pandas/tests/window/test_rolling.pytest_doc_stringr      sP    	C!Q2661-.	/BJJqMJJqaJ $$&    c                     | t        d            j                  } |d        |d        |dd        |ddd        |ddd	       d
}t        j                  t        |      5   |d       d d d        y # 1 sw Y   y xY w)N   r   r   windowr   r$   r   Tr$   r   centerFz&window must be an integer 0 or greatermatch)ranger   pytestraises
ValueError)frame_or_seriescmsgs      r   test_constructorr2   &   s{     	a!))A aDQKQAQAd+QAe, 3C	z	- 	"  s   *	A<<Bw       @foor   c                     | t        d            j                  }dj                  ddg      }t        j                  t
        |      5   ||       d d d        d}t        j                  t
        |      5   |d|	       d d d        d
}t        j                  t
        |      5   |dd|       d d d        y # 1 sw Y   kxY w# 1 sw Y   GxY w# 1 sw Y   y xY w)Nr"   |zwindow must be an integerz=passed window foo is not compatible with a datetimelike indexr(   r#   zmin_periods must be an integerr   r%   zcenter must be a booleanr   r&   )r+   r   joinr,   r-   r.   )r/   r3   r0   r1   s       r   test_invalid_constructorr9   :   s     	a!))A
(('K	
C 
z	- 	 +C	z	- #	"# %C	z	- -	!,- - # #- -s$   

B>9C
)C>C
CCr$      days3Dz
2015-12-25r"   periodsr   indexoffsetc                     t        t        j                  d      t        ddd            }t	        j
                  t        d      5  |j                  | d	      j                          d d d        y # 1 sw Y   y xY w)
N
   
2015-12-24Dr?   freqrA   z(^step (not implemented|is not supported)r(   r:   step)	r   r   aranger   r,   r-   NotImplementedErrorr   r   )r$   r   s     r    test_freq_window_not_implementedrN   R   si     

		"r<
B 
#M
 ) 	

6
"&&() ) )s   "A33A<aggcovcorrc                     t        t        d            j                  dd      }t        j                  t
        d      5   t        ||               d d d        y # 1 sw Y   y xY w)Nr   r   rJ   zstep not implementedr(   )r   r+   r   r,   r-   rM   getattr)rO   rolls     r   &test_step_not_implemented_for_cov_corrrU   i   sV     U1X&&qq&1D	*2H	I c  s   AA%c                    d}t        dt        j                  |      it        d|d            }t        j                  ddgt        j                  d	d
d            }|j                  |       j                         }t        d|it        d|d            }t        j                  ||       |j                  d      j                         }t        j                  ||       y )NrD   valuerE   rF   rG   rI                 ?      @      ;@r:   r#   r=   )	r   r   rL   r   appendr   r   tmassert_frame_equal)r$   nr   expected_dataresultexpecteds         r   &test_constructor_with_timedelta_windowrc   q   s     	A		"))A,qs;
B IIsCj"))Cq*ABMZZvZ&**,F	- qs;H &(+zz$##%H&(+r    c                    d}t        dt        j                  |      it        d|d            }t        dt        j                  t        j
                  dgt        j                  dd	d
            it        d|d            }|j                  | d      j                         }|j                  | d      j                  t        |      }t        j                  ||       t        j                  ||       y )NrD   rW   z
2017-08-08rF   rG   rI   rY   rZ   r[   r:   r   r%   )raw)r   r   rL   r   r\   r   r   r   applyr]   r^   )r$   re   r_   r   rb   result_roll_sumresult_roll_generics          r   0test_constructor_timedelta_window_and_minperiodsri      s     	A		"))A,qs;
B 	"))RVVSM299S$+BCDqs;H jjAj>BBDO**F*BHHRUHV/84-x8r    c                 6   |}t        dg di      }t        dg dit        dd            } t        |j                  d| d	      |             } t        |j                  d
| d	      |             j	                  d      }t        j                  ||       y )NAr   r   r   r:   r   2020r"   r>   rI   r   r   closedr   2DTdrop)r   r   rS   r   reset_indexr]   r^   )ro   arithmetic_win_operators	func_namedf_fixeddf_timera   rb   s          r   test_closed_fixedrx      s    (I#/0Ho.jQR6STGW6q9 FwV;  	 
 &(+r    zclosed, window_selectionsboth)TTFFF)TTTFF)FTTTF)FFTTT)FFFTTleft)TFFFF)FTTFF)FFTTFright)FFFFTneither)FTFFF)FFTFF)FFFTFc                 P   |}t        dg dit        dd            }t        d|D cg c]#  } t        |d   j                  |   |             % c}it        dd            } t        |j	                  d| dd	
      |             }t        j                  ||d       y c c}w )Nrk   )rX   rY   r4   rZ         @rm   r"   r>   rI   rp   r   T)ro   r   r'   F)check_dtype)r   r   rS   ilocr   r]   r^   )ro   window_selectionsrt   ru   rw   srb   ra   s           r   %test_datetimelike_centered_selectionsr      s    b )I	'(
610MG 	CTUa7wws|((+Y79UV+H
WV4H F
 &(> Vs   (B#
zwindow,closed,expected3s)rZ   rZ   rZ   2s)rZ   r4   r4   )rY   rZ   rZ   rY   r4   r4   c                     t        d      t        d      t        d      g} |g d|      }|j                  | |d      j                         } |||      }t        j                  ||       y )Nz20130101 09:00:01z20130101 09:00:02)r   r   r   rI   Tro   r'   )r   r   r   r]   assert_equalr$   ro   rb   r/   rA   r   ra   s          r   ,test_datetimelike_centered_offset_covers_allr      sk    & 	%&%&%&E
 
%	0BZZvdZ;??AFxu5HOOFH%r    rp   )r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   )r   r      r   r   r   r   r   )r   r   r   r   r   r   r   r   c                     t        g d      } |dgdz  |t              } |||t              }|j                  | d|      j                         }t	        j
                  ||       y )N)
2020-01-01r   
2020-01-02r   
2020-01-03r   
2020-01-04r   r      rA   dtypeT)r'   ro   )r   floatr   r   r]   r   r   s          r   +test_datetimelike_nonunique_index_centeringr   
  sb     		
E 
!qU	;BxuEBHZZtFZ;??AFOOFH%r    zclosed,expectedrD            	      r   )
r   r   r:   r   rD   r      r   r      )
r   r   r:   r   rD                  c                     t        g d      } |t        d      |t              } |||t              }|j                  d|       j	                         }t        j                  ||       y )N

2011-01-01r   
2011-01-02r   r   z
2011-01-03
2011-01-04r   z
2011-01-05z
2011-01-06rD   r   rp   ro   )r   r+   r   r   r   r]   r   )ro   rb   r/   rA   r   ra   s         r   test_variable_window_nonuniquer   +  s^     	
E 
r%u	=BxuEBHZZVZ,002FOOFH%r    r   )
r   r   r:   r   rD   r   r      r   r   )
r   r   r:   r   rD   r   r   r   r   r   c                    t        g d      } |t        d      |t              } |||t              }t        d      }t	        ||      }|j                  || d      j                         }t        j                  ||       y )Nr   rD   r   r   r@   r   rn   )	r   r+   r   r   r   r   r   r]   r   )ro   rb   r/   rA   r   rB   indexerra   s           r   %test_variable_offset_window_nonuniquer   M  su     	
E 
r%u	=BxuEBH^F)fEGZZAZ>BBDFOOFH%r    c                      t        t        d      t        ddd            } | j                  ddd	      j	                         }t        g d
| j
                        }t        j                  ||       y )Nr:   r   rF   startrH   r?   rI   rp   r   Tr&   )      ?      ?r   )r
   r+   r   r   meanrA   r]   assert_series_equalr   ra   rb   s      r   !test_even_number_window_alignmentr   q  s[    uQxz3PQRSA
 YYd$Y?DDFFm1773H68,r    c                 p   g d}t        d|it        ddt        |                  }| rg d}nt        j                  dd	d
d	dd	dg}t        |dgt        ddt        |                  d d |   }|j                  t        |      dd| |      }|j                         }t        j                  ||       y )N)r   r   r   r   r   r   r   r   
binary_colr   minr   rI   )UUUUUU?r   皙?r   @m?r   g._x%I?r   r   r   r   r   r   )columnsrA   rz   r   )r$   ro   r   r'   rK   )	r   r   lenr   r   r   r   r]   r^   )r'   rK   datar   r`   rb   r   ra   s           r   test_closed_fixed_binary_colr     s    #D		t|%TK
B
 LCS#xH|%]AST f	H jj2wv1V$  G \\^F&(+r    ro   c                 &   |}t        t        j                  d      t        ddd            }|j	                  d|       } t        ||             }t        t        j                  gdz  |j                        }t        j                  ||       y )	Nr"   2000rp   rG   r   rA   1Dr   rI   )
r
   r   rL   r   r   rS   r   rA   r]   r   )ro   rt   ru   serrT   ra   rb   s          r   test_closed_emptyr     ss     )I
biil*VQT*R
SC;;tF;+D%WT9%'Frvvhl#))4H68,r    funcr   maxc                     t        dgt        dd            } t        |j                  dd      |              }t	        j
                  |t        t        j                  g|j                  	             y )
Nr   r   r   r>   r   10Drz   r   rI   )	r
   r   rS   r   r]   r   r   r   rA   )r   r   ra   s      r   test_closed_one_entryr     sX     qcFA!>
?C=WS[[v[6=?F66266(#))#DEr    c                 ~   t        g dg ddt        dd            } t        |j                  dd	
      d   j	                  dd      |              }t        j                  g d|j                  gd      }t        t        j                  dt        j                  g|d      }t        j                  ||       y )N)r   r   r   )r:   r   r   rk   r   r   r:   r>   r   rk   F)sortr   r   rz   r   )rk   N)arraysnames)r   rA   name)r   r   rS   groupbyr   r	   from_arraysrA   r
   r   r   r]   r   )r   r   ra   exp_idxrb   s        r   test_closed_one_entry_groupbyr     s     9-+CWCe$S)11%1G F $$Y		,B+VGBFFArvv.gCHH68,r    input_dtypeintr   zfunc,closed,expected)
rX   r   r   r   r   r:   r   r"   r      )
rX   r   r   r   r   r   r:   r   r"   r   r   r   r   )
rX   r   r   r:   r   r"   r   r   r   r   c                    t        t        j                  d      j                  |       t	        dd            } t        |j                  d|      |             }t        ||j                        }t        j                  ||       y )NrD   r   r>   r   r=   r   rI   )
r
   r   rL   astyper   rS   r   rA   r]   r   )r   r   ro   rb   r   ra   s         r   test_closed_min_max_datetimer     sn      YYr]!!+.,C
 =WS[[f[5t<>Fhcii0H68,r    c            
      d   t        t        j                  d      t        dd            } | j	                  | j
                  ddg         } | j                  dd	
      j                         }t        t        j                  dddddddg| j
                        }t        j                  ||       y )NrD   r   r>   r   r   r"   rI   r=   rz   r   r   r   r:   r   r   )r
   r   rL   r   rr   rA   r   r   r   r]   r   )r   ra   rb   s      r   test_closed_unevenr     s    
biim:fb+I
JC ((Aq6*(
+C[[f[-113Frvvq!Q1a3399EH68,r    c                 \   t        t        j                  d      t        dd            }|j	                  d      }t        j
                  ||j                  dd  <    t        |j                  dd|	      |              }t        ||j                  
      }t        j                  ||       y )NrD   r   r>   r   r   r=   r   )r   ro   rI   )r
   r   rL   r   r   r   rA   rS   r   r]   r   )r   ro   rb   r   ra   s        r   test_closed_min_max_minpr     s     biim:fb+I
JC
**W
C&&C		"#KWS[[1V[DdKMFhcii0H68,r    )
r   r   r   r   r:   r   r"   r   r   r   )
r   r   r   r         @      @      @      @      @      @r   r   r   r   r   r   r   r   c                 H   t        t        j                  d      t        dd            }|j	                  d|       }t        ||j
                        }|j                         }t        j                  ||       |j                  d      }t        j                  ||       y )	NrD   r   r>   r   r=   r   rI   r   )
r
   r   rL   r   r   rA   medianr]   r   quantile)ro   rb   r   rT   ra   s        r   test_closed_median_quantiler     sz     biim:fb+I
JC;;tF;+Dhcii0H[[]F68,]]3F68,r    roller1sc                 L   t               }t               j                  |       j                         }t        j                  ||       t        t        g             }t        t        g             j                  |       j                         }t        j                  ||       y )NrI   )r   r   r   r]   r^   r   )r   rb   ra   s      r   tests_empty_df_rollingr     sz     {H[  (,,.F&(+ }R01H]2./77?CCEF&(+r    c                  h   t        t        j                  t        j                  t        j                  g      } t        t        j                  d            j	                  d      }|j                         }t        j                  ||        |j                  d      }t        j                  ||        y )Nr:   r   皙?)	r
   r   r   rL   r   r   r]   r   r   )rb   rT   ra   s      r   !test_empty_window_median_quantiler     su    rvvrvvrvv./H"))A,''*D[[]F68,]]3F68,r    c                  `   t        t        j                  g      } | j                  dd      j	                         }t        dg      }t        j                  ||       | j                  dd      j	                         }t        t        j                  g      }t        j                  ||       y )Nr   r   r   rX   )r
   r   r   r   r   r]   r   xra   rb   s      r   test_missing_minp_zeror   *  s     	xAYYqaY(,,.Fse}H68, YYqaY(,,.FrvvhH68,r    c                     t        t        j                  gdz  t        g d            } | j	                  t        d      d      j                         }t        d| j                        }t        j                  ||       y )Nr   )z
2017-01-01z
2017-01-04z
2017-01-06z
2017-01-07rI   rp   r   r   rX   )
r
   r   r   r   r   r   r   rA   r]   r   r   s      r   test_missing_minp_zero_variabler   8  sc    	1TU	A YYyAY6::<Fc)H68,r    c                  N   t        j                  ddgg dgddg      } t        t        j                  d      |       }|j                  d	      j                         }t        j                  |j                  |j                         |j                  j                  g d
k(  sJ y )Nrk   r   )CrF   E12r   )rD   r   r   r:   )Nr   r   )r	   from_productr   r   onesr   rP   r]   assert_index_equalr   rA   r   )colsr   ra   s      r   test_multi_index_namesr  C  s}    ""S#J#@c
SD	2777#T	2BZZ] F&.."**5<<!1111r    c            	      ,   t        t        j                  d            } t        t        d      D ci c]  }|t        j                  gdz  dgdz  z     c}      }| j                  d      j                         }t        j                  ||       y c c}w )N)rD   r   r   r   rZ   r   r:   )	r   r   r   r+   r   r   r   r]   r^   )r   irb   ra   s       r   test_rolling_axis_sumr  M  st    	2778$	%BuRyI!!bffX\SEAI55IJHZZ] F&(+ Js   #Bc                      t        t        d      t        d      d      } t        g dg dd      }| j                  dd      j                         }t	        j
                  ||       y )Nr:   )r   yr   r   r   r   )r   r+   r   countr]   r^   )r   rb   ra   s      r   test_rolling_axis_countr
  U  sS    	qa1	2B_EFHZZqZ)//1F&(+r    c                  h   t        j                  ddt         j                  ddg      } | j                  d       t	        |       j                  d      j                         }t	        t         j                  dt         j                  t         j                  dg      }t        j                  ||       y )Nr   r:   r"   F)writer   r   )	r   arrayr   setflagsr
   r   r   r]   r   )arrra   rb   s      r   test_readonly_arrayr  ^  s{    
((Aq"&&!Q'
(CLLuLC[  #((*Frvvq"&&"&&!45H68,r    c           	         | }t        t        ddd|      D ci c]	  }|dgdz   c}      }|j                  j                  d      j	                         j                  }t        i t        ddd|      D ci c]	  }|d	gdz   c}t        d
dd|      D ci c]	  }|dgdz   c}      }t        j                  ||       y c c}w c c}w c c}w )Nz	2019-8-01z
2019-08-03rF   )rH   tzr   r   rp   )r?   rH   r  rY   z	2019-8-02z	2019-8-03r4   )r   r   Tr   r   r]   r^   )tz_naive_fixturer  r  r   ra   rb   s         r   test_rolling_datetimer  g  s    	B	'\PRSTQC!GT
B TT\\$##%''F		
 $KL C519		
 $K32N C519		
H &(+! 	Us   C8C
C
c                 >   t        j                         }t        ||t        d      z   d      }t	        j
                  t        |            }t        ||d      }|j                  dd       |j                  dd	d
|       d   j                  d      }|j                  d      }|j                  d       }t	        j
                  t        |      t        j                        }| st        j                  |d d	 t        ||d      }t!        j"                  ||       y )Nim  rF   )rH   )DateColmetricr  T)inplace21Dr   rz   )r$   r   ro   r'   r  r   r   )rA   r   )r   nowr   r   r   r   r   r   	set_indexr   rO   rename
_with_freqfloat64r   r
   r]   r   )	r'   
date_todayr<   r   r   ra   rA   r`   rb   s	            r   test_rolling_window_as_stringr"  ~  s    Jj*y~"=CHD773t9D	tt4	5BLLDL)ZZu!F6ZR	c%j  KK	"ET"EGGCIRZZ8MFFbqm5x@H68,r    c                      t        g ddg      } | d   j                  ddd      j                         }t        g dd	      }t	        j
                  ||       y )
N)r   r   r   r   r   ar   r:   Tr   )r'   r   )rY   r4   r4   r4   rY   r   )r   r   r   r
   r]   r   r   ra   rb   s      r   test_min_periods1r'    sN    	?SE	2BW__Qt_;??AF/c:H68,r    c                      | t        d            j                  dd      j                         } | t        j                  t        j                  dddg      }t        j                  ||       y )Nr"   r:   r   rZ   )r+   r   r	  r   r   r]   r   )r/   ra   rb   s      r   #test_rolling_count_with_min_periodsr)    sT    U1X&..qa.@FFHFS#>?HOOFH%r    c                     dddt         j                  dddg}g d} | |      j                  dd	      j                         } | |      }t	        j
                  ||       y )
Nr   r   r:   r   r"   r   )rY   r4   rZ   r4   r4   r4   rZ   r   r   )r   r   r   r	  r]   r   )r/   valuesexpected_countsra   rb   s        r   7test_rolling_count_default_min_periods_with_null_valuesr-    s\    Arvvq!Q'F9O V$,,QA,>DDFF/HOOFH%r    zdf,expected,window,min_periodsr   r   r:   )r   r"   r   r   r   r   r   rY   c                     t        |       } |D cg c]  \  }}t        ||       }}}t        || j                  ||      d      D ]  \  }}t        j                  ||        y c c}}w )NrI   r   Fstrict)r   zipr   r]   r^   )r   rb   r$   r   r+  rA   	expectedsactuals           r   test_iter_rolling_dataframer6    sq    L 
2BGOPOVU6/PIP2::f+:>u 0& 	fh/0 Qs   A)zexpected,windowr   c           
      $   t        g dg dt        ddd      d      }| D cg c]!  \  }}t        ||j                  |df   	      # }}}t        ||j	                  |d
      d      D ]  \  } }t        j                  ||         y c c}}w )Nr   r   r:   r   r"   )r   r"   r   r   r   z
2016-01-01r"   rF   r   r?   rH   )rk   r   r   r   rI   )onFr1  )r   r   locr3  r   r]   r^   )rb   r$   r   r+  rA   r4  r5  s          r   test_iter_rolling_on_dataframer<    s    > 
  ,D	

B LT8G	&ucz 23I   	2::f:+EeT 0&
fh/0s   &Bc                  (   t        g dg dd      } t        | j                  d      j                  d            }dgddgdgfD cg c]  }| j                  |dgf    }}t        ||d	      D ]  \  }}t        j                  ||        y c c}w )
N)r   r  r   r/  r$  br$  r   r   r   Tr1  )r   listr   r   r   r3  r]   r^   )r   resultsidxr4  ra   rb   s         r   (test_iter_rolling_on_dataframe_unorderedrC  +  s    	y9	:B2::c?**1-.G01sQFQC.@Asqc"AIA4@ 0
fh/0 Bs   Bz ser,expected,window, min_periodsint64r  c                     |D cg c]  \  }}t        ||       }}}t        || j                  ||      d      D ]  \  }}t        j                  ||        y c c}}w )NrI   r   Tr1  )r
   r3  r   r]   r   )r   rb   r$   r   r+  rA   r4  r5  s           r   test_iter_rolling_seriesrF  4  sj    F EMM&%e,MIM3;;v;;? 1& 	vx01 Ns   Azexpected,expected_index,windowr   rF   rG   r   r   r   z
2020-01-05)r   r:   r   c                     t        t        d      t        ddd            }t        | |d      D cg c]  \  }}t        ||       }}}t        ||j	                  |      d      D ]  \  } }t        j                  ||         y c c}}w )Nr"   r   rF   r9  rI   Tr1  )r
   r+   r   r3  r   r]   r   )rb   expected_indexr$   r   r+  rB  r4  r5  s           r   test_iter_rolling_datetimerI  _  s    P q,PS!T
UC !>$GVS 	vS!I 
  	3;;v+>tL 1&
vx01s   B
zgrouping,_indexlevel)r   r   rK  r   r   rL  rL  r   byX)rK  )r   r   )r   r   )r:   r   )r   r   c                     d }t        dt        d      ig d      }t        dg di|      }d| v r|j                  dd	      } |j                  di | j	                  d
      j                  ||d      }t        j                  ||       y )Nc                  d    t        |       dk  rt        d      | \  }}|j                         |z  S )Nr   z The function needs two arguments)r   r.   r   )argsr  scales      r   
scaled_sumz4test_rolling_positional_argument.<locals>.scaled_sum  s3    t9q=?@@uyy{U""r    rN  r"   )r   r   r   r   r   r   )rX   r   rY   r   r4   rM  ignore)r   errorsr   )r   )re   rQ   )r   r+   rr   r   r   rf   r]   r^   )grouping_indexre   rS  r   rb   ra   s          r    test_rolling_positional_argumentrY    s    (# 
eAh	?Bs$=>fMHx==X=>RZZ#(#++A.44ZSt4TF&(+r    addrX   c           
         t        t        d      t        d      t        d      g      j                  |      }t        dd| z   ddgi|      }|j	                  d      j                         j                  d	d
d      j                         }t        ddd|      }t        dt        j                  t        j                  t        j                  ddddgi|      }t        j                  ||       y )Nz19700101 09:00:00z19700101 09:00:03z19700101 09:00:06rk   gVUUUUU%C       rI   r   r   rz   r:   rn   r   r   )r?   rH   unitgUUUUUU%CgqqCgqqCrX   )r   r   as_unitr   resampleffillr   r   r   r   r   r]   r^   )rZ  r]  dtir   ra   datesrb   s          r   *test_rolling_numerical_accuracy_kahan_meanrc    s     )*)*)*	
 gdm  
	!C't45
B
 	D!))$v1)MRRT  *ACdKE"#$
	
 H &(+r    c                      t        g ddg      } | d   j                  d      j                         }t        t        j
                  t        j
                  ddddgd      }t        j                  ||       y )	N)grh|@'1ZrX   rX   rX   rX   r   r   r:   gsh|??re  rX   r%  )r   r   r   r
   r   r   r]   r   r&  s      r   )test_rolling_numerical_accuracy_kahan_sumrf    s]    	6	FBW__Q##%Frvvrvvufc3?cJH68,r    c                  P   t        ddd      j                  t        dg            } t        j                  j                  d      j	                  t        |             }t        d|i|       }|j                  d      j                         }t        j                  ||dg          y )	Nr   r   60sr   endrH   r   r   r   rI   )r   r\   r   r   randomdefault_rngr   r   r   r   r]   r^   )rA   r   r   ra   s       r   $test_rolling_numerical_accuracy_jumprm    s    \|%HOO|n%E 99  #**3u:6D	FD>	/BZZ##%F&"fX,/r    c                      t        g dt        dd            } | j                  d      j                         }t	        j
                  ||        y )N)g(@S ?ga2U0*3?r\  r\  z
1999-02-03z
1999-02-06r   r   )r
   r   r   r   r]   r   )r   ra   s     r   ,test_rolling_numerical_accuracy_small_valuesro    sA    -|4	A YYq\ F61%r    c                     t        ddd      } t        t        d      | t        j                        }d|j
                  d<   |j                  d      j                         }t        t        j                  t        j                  t        j                  t        j                  d	d	d	d
ddg
|       }t        j                  ||       y )Nz
2015-01-01rD   rF   rG   )r   rA   r   gТr   r"   gk/      @      @      @rI   )r   r
   r+   r   r   r   r   r   r   r]   r   )rb  dsra   rb   s       r   (test_rolling_numerical_too_large_numbersru    s    |Rc:E	U2Ye2::	>BBGGAJZZ]!FFFFFFFFF	
 H 68,r    )rA   r$   z2020-01-01 08:00z2020-01-01 08:08ri  2minz2020-01-01 12:0030min1h)r   r+  r   r   c                     t        g d|       } t        |j                  |d      |             }t        ||       }t        j                  ||       y )N)	r   r   r   r:   r   r"   r   r   r   rI   rz   r   r
   rS   r   r]   r   )rA   r$   r   r+  rt  ra   rb   s          r   test_rolling_period_indexr{    sK    2 
+5	9B=WRZZvZ6=?FfE*H68,r    c                     | g d      }|j                  dd      j                         }t        |t              rt	        |d   j
                        }t	        t        j                  gdgdz  z         }t        j                  ||       y )Nr/  r   r   r   r   r   )
r   sem
isinstancer   r
   r+  r   r   r]   r   )r/   objra   rb   s       r   test_rolling_semr  .  sp    
)
$C[[[*..0F&)$q	(()rvvh#*+H68,r    )r   r+  r$   ddofexpected_valuesvar)   ;r   r   r   r:   r   r   )|Fr   r   r   r   r   std) >gfoCr   Pp?r  绹۞?r   )r  r   r   r   r:   r   r   )r  r   r   r   r   r   )r  r  r   r  r  r   )g     @g |Cg xbACg     ,@g     @)g i\DitCg ,ICg p'wCg$+H@)
rX   rX   g,`)M<gkZ5P<gMpۢj5rX   rX   g0A6g8nA0rX   )gK8=A +b9r  g1mib9g*14,r  r  )r   r*   r   r   r:   r   l    d(	 r   r   r   r  r   r:   r   r   )g'e?g?  ڷjAr  r  r  r  r  gM?g?g.jJ?c                 f   t        |      } t        |j                  |      |       |      }|j                         r4||j	                         |j                         dz    j                  d      }t        |      }t        j                  ||d       t        j                  |dk(  |dk(         y )	Nr#   r  r   Trq   gvo4atolr   )r
   rS   r   last_valid_indexfirst_valid_indexrs   r]   r   )r   r+  r$   r  r  tsra   rb   s           r   test_rolling_var_correctnessr  8  s    X 
B5WRZZvZ.54@F $$&)@)@)BQ)F

+4+
  	 o&H68%86Q;A6r    c                    t        t        d      t        d      t        d      t        d      t        d      g      j                  |       }t        j                  |ddgg      }t        t        j                  t        j                  dd	d
ddd
dd
g
t        j                  t        j                  d	dddd
dd
dg
d|      }t        g dg dd|      }|j                  d      j                         }t        j                  ||       y )Nz20130101 09:00:00z20130102 09:00:02z20130103 09:00:03z20130105 09:00:05z20130106 09:00:06r   rk   g?g      rY   g6<AԿg     ?g?)r   rk   rI   )r   r   r   r   r:   )r   r   r   r   r:   r=   r#   )r   r   r^  r	   r   r   r   r   r   rQ   r]   r^   )r]  ra  miexpr   ress         r   ,test_timeoffset_as_window_parameter_for_corrr    s   
)*)*)*)*)*	
 gdm  
	 	 #Sz!2	3B
 "#"" "#"""	
4 7C< 
O4
B
 **D*
!
&
&
(C#s#r    method)r  r   r   skewkurtr   r   c                    t        dt        j                  dd      dz  i      }t        d|d   ddd   i|j                  ddd         } t	        |j                  d	      |              } t	        |j                  d	      |              }t        j                  |j                  ddd   dd
 |j                  dd d       y)zf
    Make sure that decreasing indices give the same results as increasing indices.

    GH 36933
    r+  irD   r   Nr*   rI   r"   r#   r   g-q=r  )	r   r   rL   rA   rS   r   r]   assert_almost_equalr+  )r  r   
df_reverse
increasing
decreasings        r   test_rolling_decreasing_indicesr    s     
HbiiR0A56	7BHbl4R4&89$B$PJ61-v68J>++1+5v>@J$B$$j&7&7&;%r    )rY   rZ   rq  rZ   )rX   rY   rZ   rq  )rY   rZ   rr  rq  )rX   rY   r4   rZ   c                    t        ddd      } |t        d      |      } |t        d      |ddd         } |||      } |||ddd         }|j                  | |d	      j                         }	|j                  | |d	      j                         }
t	        j
                  |	|       t	        j
                  |
|       y)
zV
    Ensure that a symmetrical inverted index return same result as non-inverted.
    rm   r   r   rG   rI   Nr*   Tr   )r   r+   r   r   r]   r   )r$   ro   rb   r/   rA   df_incdf_decexpected_incexpected_dec
result_inc
result_decs              r   (test_rolling_decreasing_indices_centeredr    s    & vqt4EU1XU3FU1XU4R4[9F"859L"852;?LvdCGGIJvdCGGIJOOJ-OOJ-r    zwindow,expected1ns)rY   rY   rY   rY   3ns)r4   rZ   rZ   r4   c                     t        ddd      } |g d|t              } |||t              }|j                  | |d      j                         }t	        j
                  ||       y )	Nrm   r   r  rG   )r   r   r   r   r   Tr   )r   r   r   r   r]   r   r   s          r   )test_rolling_center_nanosecond_resolutionr    sY     vqu5E	U%	@BxuEBHZZvdZ;??AFOOFH%r    zmethod,expectedr   g     E@g
a@g     E@gCݽW@g     f@g     s@r   g     5@rr  g`UU"@g      *@g     1@g      >@g     U@g     K@g     V@g     a@r  g/e?g8j{?gLM?g4`i?g
+TT?g?r  g %bgOq&g zCen@gk=Cпg~~׿gf`8gݿc                    g d}t        dt        j                  t        |            dz  i      } G d dt              } |d|      } t        |j                  |      |              }t        d|i      }t        j                  ||       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+  r   c                       e Zd Zd Zy)1test_rolling_non_monotonic.<locals>.CustomIndexerc                 &   t        j                  |t         j                        }t        j                  |t         j                        }t        |      D ]6  }| j                  |   rd||<   |dz   ||<    |||<   || j
                  z   ||<   8 ||fS )Nr  r   r   )r   emptyrD  r+   use_expandingwindow_size)	self
num_valuesr   r'   ro   rK   r   rj  r  s	            r   get_window_boundszCtest_rolling_non_monotonic.<locals>.CustomIndexer.get_window_boundsK  s    HHZrxx8E((:RXX6C:& 2%%a( E!HUCF E!H!1!11CF2 #:r    N)__name__
__module____qualname__r  rV  r    r   CustomIndexerr  J  s    
	r    r  r   )r  r  N)	r   r   rL   r   r   rS   r   r]   r^   )r  rb   r  r   r  r   ra   s          r   test_rolling_non_monotonicr  	  s    | GM	HbiiM(:;q@A	BB  GG1WRZZ(&13F(H-.H&(+r    rl   z
2001-01-01)rH   r?   c                 (   t        g d|       }|j                         }d|j                  dd |j                  |      j	                  |      }t        t
        j                  t
        j                  dddg|       }t        j                  ||       y )Nr8  rI   rX   r   r   r   )	r
   copyr   r   rQ   r   r   r]   r  )rA   r$   r   r  ra   rb   s         r   !test_rolling_corr_timedelta_indexr  ^  sr     	e,A	AAFF1QKYYv##A&Frvvrvvq!Q/u=H68,r    zvalues,method,expected)
rY   r4   rZ   r~   rq  rr  rs         @      "@      $@firstrZ   r~   rq  rs  r  r  lastr  c                 <   t        |       } t        |j                  d      |             }t        |      }t        j                  ||       t        d| i      } t        |j                  d      |             }t        d|i      }t        j                  ||       y )Nr:   rk   r
   rS   r   r]   r  r   r+  r  rb   r   ra   s        r   test_rolling_first_lastr  o  s    6 	vA*WQYYq\6*,FhH68,3- A*WQYYq\6*,F#x)H68,r    )
rY   rY   rY   r4   rZ   r~   rq  rr  rs  r  )
rY   rY   rY   rZ   rZ   rq  rq  rs  rs  r  )
rY   rY   rZ   rZ   rq  rq  rs  rs  r  r  c                 D   t        |       } t        |j                  dd      |             }t        |      }t        j                  ||       t        d| i      } t        |j                  dd      |             }t        d|i      }t        j                  ||       y )Nr:   r   r   rk   r  r  s        r   test_rolling_first_last_no_minpr    s    6 	vA9WQYYqaY0&9;FhH68,3- A9WQYYqaY0&9;F#x)H68,r    c            	      n   dt         j                  ddt         j                  gg dd} t        |       }|j                  dd      j	                  dd	      j                         }t        d
g dit        ddt         j                  gg dgg dg dgdd g            }t        j                  ||       y )Ng1g2rl   )groupr   r  F)dropnar   r   r   )rX   r4   rZ   rY   r~   )r   r   r   r   r   )r   r   r:   r   r   r   rI   )	r   r   r   r   r   r   r	   r]   r^   )r   r   ra   rb   s       r   !test_groupby_rolling_nan_includedr    s    BFFD$7oND	4BZZZ.66qa6HMMOF	'( D"&&!?3o.D/
H &(+r    c                 t   t        t        j                  j                  d      j                  d            }|j	                         } t        |j                  d      |              }t        j                  ||       |dz   } t        |j                  d      |              }t        j                  ||       y )Nr   rD   r:   iP  )	r
   r   rk  rl  r  rS   r   r]   r   )r  r   ser_copyrb   ra   s        r   *test_rolling_skew_kurt_numerical_stabilityr    s     &&q)004
5CxxzH.ws{{1~v.0H3)
+C,WS[[^V,.F68,r    )r  r   r+  )i- r   r   r   r:   r   i  )r4   g+X?rX   gJ_9?)g    .Ag    .r   r   r:   r   r"   r   )gT׾g       rX   rX   rX   )r~   gBʠ333333g >@)r   r~   r  r  r  c                     t        |      } t        |j                  d      |              }t        |      }t        j                  ||       y )Nr   rz  )r  r   r+  r   ra   rb   s         r   (test_rolling_skew_kurt_large_value_ranger    s?    6 	tA*WQYYq\6*,Ff~H68,r    c                 b   d}d}d}t         j                  j                  d      }|j                  dd|      }t	        |d |       j                  |      }t	        |      j                  |      } t        ||              } t        ||              }	|	d | }
t        j                  ||
d	       y )
NrD      r   r   rX   g     @@)r;  rR  sizeT)check_exact)	r   rk  rl  normalr
   r   rS   r]   r   )r  len_smaller
len_biggerr  rngr   window_smallerwindow_biggerresult_smallerresult_biggerresult_bigger_trimmeds              r   'test_same_result_with_different_lengthsr    s     KJK
))


"C::#Sz::DD+./77DN4L((5M4W^V46N2GM624M),;7>+@dSr    c                      t        j                  t        d      5  t        t	        d            j                  dd       d d d        y # 1 sw Y   y xY w)Nz!method must be 'table' or 'singler(   r   r5   )r  )r,   r-   r.   r
   r+   r   rV  r    r   test_invalid_methodr    sB    	z)L	M 2uQx  5 12 2 2   &AAc                 0   d}t        j                  t        |      5  t        ddd      } | t	        dd      |	      }|j                  dd
      j                         }d d d         | t        j                  ddg	      }t        j                  |       j                  d d d   j                  dd
      j                         }t        ddd      } | t        j                  ddg|	      }t        j                  ||       y # 1 sw Y   xY w)Nz:'d' is deprecated and will be removed in a future version.r(   r   r   1dri  r   r   rI   rz   r   r   r*   r   z-1Dr:   )r]   assert_produces_warningr   r   r+   r   r   r   r   r   r   )r/   r1   rB  r  ra   rb   s         r   .test_rolling_descending_date_order_with_offsetr    s    
FC		#	#N#	> 8|DIeAqk5T&15578
 1~S9HOOFH%XXdd^##D#8<<>F
<\
FC1~S9HOOFH%8 8s   ADDc                     t        g d      } | j                  d      j                         }t        t        j                  t        j                  ddg      }t        j                  ||dd       t        j                  |dk(  |dk(         y )N)r   r"   r"   r"   r:   UUUUUU?r   V瞯<r  rtol)r
   r   r  r   r   r]   r   r   s      r   ,test_rolling_var_floating_artifact_precisionr  )  sk    |AYYq\Frvvrvvua01H68'H 6Q;A6r    c                      t        g d      } | j                  d      j                         }t        t        j                  ddg      }t        j                  ||dd       y )N)Q؎>g 4PSȡ>r  r   g[^>>r  r  )r
   r   r  r   r   r]   r   r   s      r   test_rolling_std_small_valuesr  4  sR    	
	A YYq\Frvv{K89H68'Hr    zstart, exp_values)Q?X9v?r  gI+?gˡE?)MbP?r  g~jtX?<#	n?c                 :   t        dddt        j                  ddt        j                  t        j                  t        j                  t        j                  t        j                  t        j                  ddg      }g |ddddt        j                  t        j                  dd}t        |t        t	        | t        |      | z               	      }|j                  | d  j                  d
d      j                         }t        j                  ||       y )Nr  r  Mb`?Mb?{Gzt?皙?r  g=
ףp=?rI   r"   r   r   )r   r   r   r@  r+   r   r   r   r   r]   r^   )r   
exp_valuesr   r+  rb   ra   s         r   3test_rolling_mean_all_nan_window_floating_artifactsr  B  s    
FFFFFFFFFFFFFF	

B&
	

 	
 		

 	
 	
 	
 	
 	
F 5Fe 345H WWUV_$$QA$6;;=F&(+r    c                     t        dddt        j                  t        j                  t        j                  g      } | j                  dd      j	                         }t        g d      }t        j                  ||       y )Nr  r  r  r:   r   r   )r  g{Gz?gQ?g9v?r  rX   )r   r   r   r   r   r]   r^   r&  s      r   2test_rolling_sum_all_nan_window_floating_artifactsr  q  s[    	E5%@	ABZZqZ)--/FABH&(+r    c                      t        t        d            } | j                  d      j                         }t        t        j
                  g      }t        j                  ||       y )Nr   r   )r
   r+   r   r   r   r   r]   r   r   s      r   test_rolling_zero_windowr  y  sF    uQxAYYq\FrvvhH68,r    )r   r:   rD   r   )r   r   averagepctTF	test_data)default
duplicatesnansc           
         d}|dk(  r9t        t        j                  j                  d      j                  |            }n|dk(  r:t        t        j                  j                  d      j	                  d|            }no|dk(  rjt        t        j                  j                  d      j	                  dd	d
t        j
                  t        j                  t        j                   g|            }j                  |       j                  fd      }|j                  |       j                        }t        j                  ||       y )Nr   r
  r   r   r  r:   r  rY         ?      ?c                 F    | j                        j                  d   S )Nr  r  	ascendingr*   )rankr   )r   r  r  r  s    r   <lambda>ztest_rank.<locals>.<lambda>  s!    !&&C9&EJJ2N r    r  )r
   r   rk  rl  choicer   infr   rf   r  r]   r   )	r$   r  r  r  r	  lengthr   rb   ra   s	    ```     r   	test_rankr    s   
 FI"))//299&AB	l	""))//299!VDE	f	&&q)00dD"&&"&&266':F
 {{6"((NH [[ %%V	%RF68,r    )r
  r  r  	precisionc           
         d}|dk(  r9t        t        j                  j                  d      j                  |            }n|dk(  r:t        t        j                  j                  d      j	                  d|            }n|dk(  rkt        t        j                  j                  d      j	                  dd	d
t        j
                  t        j                  t        j                   g|            }n"|dk(  rt        g dt        j                        }j                  |       j                  d       }|j                  |       j                         }t        j                  ||       y )Nr   r
  r   r  r  r:   r  rY   r  r  r  )
333333?g433333?333333?g433333??g?r   r   皙?r  )r   r   c                 "    | j                         S N)nunique)r   s    r   r  ztest_nunique.<locals>.<lambda>  s    199; r    )r
   r   rk  rl  r  r   r  r   r   rf   r"  r]   r   )r$   r	  r  r   rb   ra   s         r   test_nuniquer#    s    FI"))//299&AB	l	""))//299!VDE	f	&&q)00dD"&&"&&266':F

 
k	! **
  {{6"(()>?H[[ ((*F68,r    c                     d} d}t        d| d      }t        t        j                  j	                  d      j                  | |z        j                  | df      |      }|j                  g d	d
      }t        j                  |g dd
      }t        j                  |j                  t        j                  |             y )NrD   r"   20100101r   rG   r   r*   rI   )r  r   r  r   )axis)   2   K   )r   r   r   rk  rl  reshaper   
percentiler]   r  r+  r  )rowcolrB  r   df_quantilenp_percentiles         r   #test_rolling_quantile_np_percentiler0    s     C
C
Z3
7C	
		a ''c	2::C9ES
B ++/a+8KMM"l;M;--rxx/FGr    r   )rX   r   g?r   r   interpolation)linearlowerhighernearestmidpointr   )rY   r4   rZ   r~   rq  rr  rs  )r  rY   rZ   r~   rq  r4   rr  rs  r   r   r   r  gffffff?r  c                 L   t        |      }|j                  | |      }|j                  d      j                  | |      j                  d   }t	        j
                  |      rt	        j
                  |      sJ y t        st	        j                  |g|gdd      sJ y ||k(  sJ y )Nr   r   r*   gHz>r   )r  r  )r
   r   	expandingr   r   isnanr   allclose)r   r1  r   r   q1q2s         r   +test_rolling_quantile_interpolation_optionsr=    s    & 	tA	
Hm	,B	
	#	,	,X}	E	J	J2	NB	xx|xx||{{B4"E:::Rxxr    c                     t        j                  d      } t        |       }d}t        j                  t
        |      5  |j                  t        |       d      j                  dd       d d d        y # 1 sw Y   y xY w)	Nr"   z(Interpolation 'invalid' is not supportedr(   r   r   r   invalid)r1  )	r   rL   r
   r,   r-   r.   r   r   r   )r   r   r1   s      r   test_invalid_quantile_valuer@    sh    99Q<DtA
4C	z	- S			#d)	+44S	4RS S Ss   .A55A>c                  
   t        g d      } d}t        j                  t        |      5  | j	                  d      j                  d       d d d        d}t        j                  t        |      5  | j	                  d      j                  d       d d d        d}t        j                  t        |      5  | j	                  d      j                  d	       d d d        y # 1 sw Y   xY w# 1 sw Y   \xY w# 1 sw Y   y xY w)
N)rX   r   r   r  rY   z#quantile value -0.1 not in \[0, 1\]r(   r:   gz#quantile value 10.0 not in \[0, 1\]r  zmust be real number, not strr5   )r
   r,   r-   r.   r   r   	TypeError)r   r1   s     r   test_rolling_quantile_paramrC    s    
*
+C
1C	z	- &A%& 2C	z	- &A%& )C	y	, 'A&' '& && &' 's#   !C!1!C-7!C9!C*-C69Dc                      t        g d      } | j                  dd      j                         }t        t        j                  gdz        }t        j                  ||       | j                  dd      j                  d      }t        dgdz        }t        j                  ||       t        t        j                  t        j                  dd	dg      j                  dd
      j                         }t        j                  |d
         sJ y )N)rY   r4   rZ   r~   rq  r   r   r"   r   r  rX   r:   r   r   )r
   r   r  r   r   r]   r   r9  )valsra   rb   s      r   test_rolling_std_1obsrF    s    +,D\\!\+//1Frvvhl#H68,\\!\+//Q/7Fseai H68,RVVRVVQ1-.66qa6HLLNF88F1Ir    c                  >   t        g d      } | j                  d      j                         }t        j                  |dd        j                         sJ | j                  d      j                         }t        j                  |dd        j                         sJ y )N)ge>R?Rz12?rH  rH  rH  r:   r#   r   )span)r
   r   r  r   isfiniteallewmr>  s     r   test_rolling_std_neg_sqrtrM    s    
 		
	A 	
			!A;;qu!!###	1A;;qu!!###r    c                      t        j                  t        d      5  t        t	        d            j                  dd       d d d        y # 1 sw Y   y xY w)Nzstep must be an integerr(   r   r   r5   rJ   r,   r-   r.   r   r+   r   rV  r    r   test_step_not_integer_raisesrP  ,  sB    	z)B	C 3%(##AE#23 3 3r  c                      t        j                  t        d      5  t        t	        d            j                  dd       d d d        y # 1 sw Y   y xY w)Nzstep must be >= 0r(   r   r   r*   rJ   rO  rV  r    r   test_step_not_positive_raisesrR  1  sB    	z)<	= 0%(##AB#/0 0 0r  )r+  r$   r   rb   r   r(  g@@g     @D@UUUUUU?gUUUUUU8@)r   r   r  r   r  gUUUUUU@c                    t        |      }t        |       }|j                  ||      j                         }t        j                  ||       t        j                  |dk(  |dk(         |j                  ||      j                         }t        j                  |t        j                  |             t        j                  |dk(  |dk(         y )Nr   r   )r
   r   r  r]   r   r  r   sqrt)r+  r$   r   rb   sr
result_var
result_stds          r   'test_rolling_var_same_value_count_logicrY  6  s    d hH	B F<@@BJ :x08q=*/: F<@@BJ:rwwx'898q=*/:r    c                      t        g d      } | j                  d      }|j                         }|dd  dk(  j                         sJ |j	                         }|dd  dk(  j                         sJ y )NrS  r   r   r   r   r   r   r:   r   r   )r
   r   r   rK  r   )rV  rra   s      r   (test_rolling_mean_sum_floating_artifactsr]    sl     
)	*B


1AVVXF23K1!!###UUWF23K1!!###r    c            	         t        g d      } | j                  d      }|j                         }t        t        j                  t        j                  t        j                  ddddg      }t        j                  ||       |j                         }t        t        j                  t        j                  t        j                  ddddg      }t        j                  ||       y )	Nr[  r   g87c?r4   rX   gt﬩@r~   g      )r
   r   r  r   r   r]   r   r  )rV  r\  ra   rb   s       r   )test_rolling_skew_kurt_floating_artifactsr_    s     
)	*B


1AVVXFrvvrvvrvv/A3SQRH68,VVXFrvvrvvrvv/A3dSTH68,r    c                    | }t        dgddd      }|d   j                  t              |d<   |j                  dd      }t	        ||      } ||      }|rdd	gng d}||   j                  |g      j                  d
      j                  t              }t        |j                        |k(  sJ t        j                  ||       y )Nr   r   r:   r$  r?  r0   r0   r   numeric_onlyr$  r?  Trq   )r   r   objectr   rS   rO   rs   r   r@  r   r]   r^   )	rt   rc  kernelr   r   opra   r   rb   s	            r   test_numeric_only_framerg    s    %F	!11-	.BgnnV$BsGjjj*G	&	!B\*F(sCjoG'{x(44$4?FFuMH  !W,,,&(+r    re  use_argc                    t        g dddd      }|d   j                  t              |d<   |r|fnd}|j                  dd      }t	        ||       } ||d	|i}|rd
dgng d}||   j                  t
              }	|r|	fnd}
|	j                  dd      }t	        ||       } ||
d	|i}t        j                  ||       y )Nr.  r   r:   ra  r0   rV  r   r   rc  r$  r?  )r   r   rd  r   rS   r   r]   r^   )re  rc  rh  r   argr   rf  ra   r   df2arg2rolling2op2rb   s                 r    test_numeric_only_corr_cov_framero    s     
3	4BgnnV$BsG2%Cjjj*G	&	!B0<0F )sCjoG
W+

U
#CC6"D{{1!{,H
(F
#CD4|4H&(+r    r   c                    | }t        dg|      }|j                  dd      }t        ||      }|r<|t        u r4d| d}t	        j
                  t        |      5   ||       d d d        y  ||      }|j                  |g      j                  d	
      j                  t              }	t        j                  ||	       y # 1 sw Y   y xY w)Nr   r  r   r   Rolling.  does not implement numeric_onlyr(   rb  Trq   )r
   r   rS   rd  r,   r-   rM   rO   rs   r   r   r]   r   )
rt   rc  r   re  r   r   rf  r1   ra   rb   s
             r   test_numeric_only_seriesrs    s     &F
!E
"Ckk!k+G	&	!B @A]].c: 	*L)	* 	* .77F8$00d0;BB5I
vx0	* 	*s   
CCc                    t        g d|      }|r|fnd}|j                  dd      }t        ||       }|r;|t        u r3d|  d}t	        j
                  t        |	      5   ||d
|i d d d        y  ||d
|i}	|j                  t              }
|r|
fnd}|
j                  dd      }t        ||       } ||d
|i}t        j                  |	|       y # 1 sw Y   y xY w)Nr.  r  rV  r   r   r   rq  rr  r(   rc  )r
   r   rS   rd  r,   r-   rM   r   r   r]   r   )re  rh  rc  r   r   rj  r   rf  r1   ra   ser2rl  rm  rn  rb   s                  r   !test_numeric_only_corr_cov_seriesrv    s    
 %
(C3&Ckk!k+G	&	!B @A]].c: 	0/,/	0 	0 S4|4zz% !wr<<q<1h'8<8
vx0	0 	0s   !	CCr  )NUTCzEurope/Praguec           
      `   t        dt        d      it        ddd|d            }|j                  d      j	                         }|j
                  j                  |       |_        |j                  d      j	                         }|j
                  j                  d      |_        t        j                  ||       t        dd	d|
      }t        d|      }d|j                  d<   |j                  t        d            j                         }t        dd	| |
      }t        d|      }	d|	j                  d<   |	j                  t        d            j                         }
t        |      }t        |
      }|j
                  j                  d      |_        t        j                  ||       y )Nrk   r"   z
2013-01-01r   ns)rH   r?   r  r]  rI   z
2023-01-01z
2023-01-10)r]  r  r   r   r   r;   )r   r+   r   r   r   rA   r^  r]   r^   r
   r   r   r   )r]  r  rw   sum_in_nanosecssum_in_microsecs	ref_dates
ref_seriesref_max_seriesrb  series
max_seriesref_dfr   s                r   -test_rolling_timedelta_window_non_nanosecondsr    sd    	eAhD!NG ood+//1OMM))$/GMt,002-33;;DA/+;< <DRHI+JJOOA''	q(9:>>@N|\DEAU#FFKKN	q 12668J~&F	:	Bxx%BH&"%r    c                   (     e Zd Z fdZ	 ddZ xZS )PrescribedWindowIndexerc                 >    || _         || _        t        |           y r!  )_start_endsuper__init__)r  r   rj  	__class__s      r   r  z PrescribedWindowIndexer.__init__  s    	r    c                     |t        | j                        }t        j                  | j                  d|      }t        j                  | j                  d|      }||fS )Nr   )r   r  r   clipr  )r  r  r   r'   ro   rK   r   rj  s           r   r  z)PrescribedWindowIndexer.get_window_bounds  sN     T[[)JQ
3ggdiiJ/czr    )NNNNN)r  r  r  r  r  __classcell__)r  s   @r   r  r    s     QUr    r  c            
           e Zd Zej                  j                  dddg dfddg dfddg dfddg dfg      d        Zd	 Zy
)
TestMinMaxzis_max, has_nan, exp_listTF)
rZ   rq  r4   rq  rY   rq  rr  rs  r  r  )
rZ   r~   r4   r~   rY   r~   rr  rs  rs  r  )
rZ   r4   r4   rY   rY   rX   rX   rX   rs  rX   )
rZ   r4   r4   rY   rY   rY   rr  rr  rs  rY   c                    g d}t        g dg dg dd      }|rt        j                  |j                  |df<   t	        |d      }|j
                  j                  t        |j                  j                         |j                  j                                     }|r|j                         }n|j                         }t        j                  ||       y )N)r   r"   r   )
rq  r~   rZ   r4   rY   rX   rr  rs  r  r  )
r   r   r:   r   r   r   r"   r"   r   r:   )
r:   r   r   r"   r"   r   r   r   r   rD   r   r   rj  r   r%  )r   r   r   r;  r
   r   r   r  r   to_numpyrj  r   r   r]   r   )	r  is_maxhas_nanexp_listnan_idxr   rb   r\  ra   s	            r   test_minmaxzTestMinMax.test_minmax  s     J76
 &(ffBFF7F?#(0GGOO#BHH$5$5$79JK
 UUWFUUWF
vx0r    c                 ~   t        j                  t        d      t         j                        }|dz   }|d   |d<   |d   dz
  |d<   t	        |dz  ||d      }|j
                  j                  t        ||            }t        j                  t        d	      5  |j                          d d d        y # 1 sw Y   y xY w)
Nr"   r  r   r   r:   rY   r  z5Start/End ordering requirement is violated at index 3r(   )r   r  r+   rD  r   r   r   r  r,   r-   r.   r   )r  r   rj  r   r\  s        r   test_wrong_orderzTestMinMax.test_wrong_order7  s    q2aiQA8a<aeCHIGGOO3E3?@]]U
 	 EEG	 	 	s   B33B<N)r  r  r  r,   markparametrizer  r  rV  r    r   r  r    s\    [[#5LM4KLEMNDLM		
11,r    r  )|r   r   numpyr   r,   pandas.compatr   pandas.errorsr   pandasr   r   r	   r
   r   r   r   r   pandas._testing_testingr]   pandas.api.indexersr   pandas.core.indexers.objectsr   pandas.tseries.offsetsr   r   r2   r  r  r  r9   rN   rU   rc   ri   rx   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r
  r  r  r"  r'  r)  r-  r6  r<  rC  rF  rI  from_tuplesrY  rc  rf  rm  ro  ru  r{  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r#  r0  r=  r@  rC  rF  rM  rP  rR  r  rY  r]  r_  rg  ro  r   rd  rs  rv  r  r  r  rV  r    r   <module>r     sr  
   )	 	 	  + D .'( sE8288QC=9:- ;-. qq#\15k!n	
	
	)
	) 0 1 I1$5ya7H#IJ, K,& I1$5ya7H$#OP9 Q9",$  10001		
 21111		
 11112		
 22222		
?),Z?[,Z?, 	w(	v'	v'	y/*	w(	v'	v'	y/*	&&" 	w01	v/0	v/0	y23	&&0 	"&&"&&!Q2r2r2>?	RVVRVVQ1aAr1=>	67	56	&&2 	"&&"&&!Q2r2r2>?	RVVRVVQ1b"b"a@A	67	56	&&6-,4 Iv#67- 8- %0F 1F %0- 1- (89	9:	89		BFFAq!Q1aA>?	Aq!Q1a;<	9:	89		BFFAq!Q1aA>?	Aq!Q1a;<		- :	-- 	"&&!Q1aArvvrvvFG	Aq!Q1a@A		BFFBFFAq!Q1bffbffMN	Aq!Q1bffEF	"&&!Q1aArvvrvvFG	Aq!Q1a@A		BFFBFFAq!Q1bffbffMN	Aq!Q1bffEF	-- 	23	?@	RVVQS#sCc3GH	"&&!S!Q1aA67	
-
- D!9-, .,	---2,,-,.-,-&& $ ),s!%s+1vQF+aV4 y19=
 		
 ),s!%s+1vQF+aV41vQF+aV4
 		
 ),s!%s+1vQF+aV41vQF+aV4
 		
 ),s!%s+s!%s+s!%s+
 		
 ),s!%s+s!%s+s!%s+
 		
 s!	r1d+s!	r1a(	Rz1d#bffa.1~6uBFF8,qc2266{"&&!51v>2661~RVVQN;YG
 		
m@CH0ICH0  s!%s+1vQF+aV41vQF+aV4
 	
 s!%s+1vQF+aV4 y19=
 	
 s!%s+s!%s+s!%s+
 	
#:0;:0"0 & 9cA3Z1a&1a&)Iy+AB		
 9cA3Z1a&1a&)Iy+AB		
 9cA3Z1a&1a&)QFQF+;<		
 9cA3Z1a&1a&)QFQF+;<		
 
		qcA3Z1#sqcA3Z@!QG			qcA3Z1#sqcA3Z@!QG	AA3*1v1v&67A>	'	"B1-9 B1C B1 $ S1#sQC!%<=<=<=<=<= 
	
 S1a&1a&1a&1a&1<=<=<=<=<= 
	
 S1a&)Y	:<=<=<=<=<= 
	
/"%L
1M%L
1  aL"J""8t	
 3K"J""8d	
",#",& c
+, ,,D-	0&-0  17IPUV	

 (.@w 		
 	Aq!Q1a01	Aq!Q1a01	Aq!Q2r23-.-- ;	5q!=VW1?	
 
5q!=VW1?	
 8@	
  	!	
8 I	
gFIT7UIT72$j #WX Y" 	w,-	v+,	v+,	y./	w,-	v+,	v+,	y./	..( 	$%	$%&&  ee		
 5\3edC4N	

 5\4utT4uM	

 ee		
 e#e#$"$$		
G03h,i3h,B 	!	LsA	6=--  @5\5<c3S#sCP	
 "&&#rvvsBFFCbffM5\NR	
 @5\5<c3S#sDQ	
 "&&#rvvsBFFCbffM5\NR	
!2
-32
-  @>	
 "&&#rvvsBFFCbffM>	
 @?	
 "&&#rvvsBFFCbffM>	
!2
-32
-,, FF#34- 5-   )VVHqL99	
 )VVHqLAA	
 )VVHqL;;	
 )VVHqL77	
!2-32- FF#34T 5T&2
&$7I 	
23	
./%,%,P,- >2#<=u.&GH- I / > 3-* >2&TU - V 3 -FH  %=>I 
+0	bffc2663'	(	bffc3,		c ? "S'$*3
0
 3 RAq!,VVR!T1eQ7		
 RQ1-VVR!Qfa8		
 VVQ1aA&VVHqL++		
 1aAq!4VVHqLE1:%14qzA		
 1aAq!4VVHqLE1:%14{B		
 FQJVVHqLE7Q;&		
 1bffaA&VVQ!q(E72		
K+.^;_.^;6$
-,  FE?3T5M2, 3 4,( 3-01 11  FE?3T5M23-01 1 3 41* =>& ?&>k  , ,r    