
    bMh                     :&   d dl m Z mZ d dlZd dlZd dlmZmZmZ d dl	m
Z
mZ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                             d
dd ej!        dg          g          d             Z"ej                             d ed           ed          d e edd           ed                    g          d             Z#ej                             dddg          d             Z$ej                             d ed           ed          g          d             Z%ej                             d ed           ed          dg          d             Z&d Z'e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 d/g d0g d,gfg          d1             Z(ej                             d2d3d+g d4fd3d!g d4fd3d'g d4fd3d-g d4fd5d+g d6fd5d!g d4fd5d'g d7fd5d-g d8fg          d9             Z)ej                             d2d:d+g d;fd:d'g d<fd:d!g d=fd:d-g d>fg          d?             Z*ej                             d@d'ej+        ej+        ddddAdBdBdCdDg
fd-ej+        ej+        ddddEdddFdGg
fd+g dHfd!g dIfg          dJ             Z,ej                             d@d'ej+        ej+        ddddAdKdKdCdDg
fd-ej+        ej+        ddddAdKdKdFdGg
fd+g dLfd!g dMfg          dN             Z-dO Z.dP Z/ej                             dQd-d'g          dR             Z0ej                             dSdTdUg          dV             Z1ej                             dSdTdUg          dW             Z2ej                             dXdYdZg          ej                             d[dTd+g d\fdTd!g d]fdTd-ej+        d d dddd^dd_d`g
fdTd'ej+        d d d dddd^dd_g
fdUd+g dafdUd!g dafdUd-ej+        d dddd^dd_d`dGg
fdUd'ej+        d dddd^dd_d`dGg
fg          db                         Z3dc Z4ej                             d[dTd+ej+        d d dddd^dej+        ej+        g
fdTd!ej+        d d d dddd^dej+        g
fdTd-ej+        ej+        d dddd^dej+        ej+        g
fdTd'ej+        ej+        d d dddd^dej+        g
fdUd+ej+        dddd^dd_d_ej+        ej+        g
fdUd!ej+        dddd^dd_d_d_ej+        g
fdUd-ej+        ej+        dddd^dd_ej+        ej+        g
fdUd'ej+        ej+        dddd^dd_d_ej+        g
fg          dd             Z5ej                             d@d+g defd!g dffd-ej+        d dgdhdidjdkdldmdng
fd'ej+        d dgdddd^dd_d`g
fg          do             Z6ej                             dpdqdg          dr             Z7ds Z8dt Z9du Z:dv Z;dw Z<dx Z=dy Z>dz Z?ej                             d{d|d}g          d~             Z@d ZAd ZBd ZCej                             d e
g 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 e
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 e
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 e
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 e
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 e
dgd^gd          g ddf e
dgd^gd          g ddf e
            i g fgddf e
dej+        dgej+        dd_gd          dgej+        gdd gfdej+        gej+        dgdd dgfdej+        dgej+        dd_gdg dfgddfg	          d             ZDe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             ZEd ZFe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             ZGe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             ZHej                             ddd i ejI        g dddg          fddi ejI        g dddg          fg          d             ZJej                             dddg          d             ZKd ZLd ZMd ZNd ZOej                             dg d          d             ZPd ZQej                             dd ed           ed          g          d             ZRd ZSej                             d edddT          df eddd          dfg          ej                             ddTej+        d d dddd^dd_g	fdUej+        d dddd^dd_d`g	fdej+        d dddd`dEddFg	fg          d                         ZTd ZUej        V                     e            p	 e            d¦          ej                             dddg dŢfddg dǢfddg dȢfddg dɢfg          dʄ                         ZWd˄ ZXej                             dg d͢          d΄             ZYej                             d2d5d+g dϢfd5d'g dТfd5d!g dѢfd5d-g dҢfd3d+g dѢfd3d'g dѢfd3d!g dѢfd3d-g dѢfg          dӄ             ZZej                             ddg d֢fdg dآfg          dل             Z[ej                             dd e\dۦ          d e\dۦ          dddddgfd e\dۦ          dn e\dۦ          dddddgfd e\dۦ          d e\dۦ          dddddgfd e\dۦ          d e\dۦ          dddddgfd e\dۦ          d e\dۦ          dddddgfg          d             Z]ej                             dg ddf eddd          d:fg          d             Z^d  Z_ej                             dddg          d             Z`ej                             ddg dfdg dfg          d             Zad Zbej                             dddg          d             Zcd	 Zdd
 Zeej                             ddg dfdg dfg          d             Zfd Zgd Zhd Zid Zjej                             dg d          ej                             dg d          ej                             dd|d}g          ej                             dd|d}g          ej                             dg d          d                                                             Zkd Zlej                             dg d          ej                             dg d          ej                             dg d g d!dej+        d"ej+        d#gej+        ej+        ej+        ej+        gej+        d$ej+        d%d#dggdggej+        d&d'gg          d(                                     Zmd) Znd* Zod+ Zpd, Zqd- Zrd. Zsej                             g d/d0dAdAejt        ddddgddej+        d1d2d d3d d4dggd0dAdAej+        dAdddgddej+        d1d2d d d3d5dggej+        dd_d`dddgddej+        gdz  g d6z   gdd`d`d`ej+        ejt        d^dddg
ddej+        gdz  d7d gz   ej+        gd^z  z   d4d gz   gdd`d`d`ej+        ejt        d`dddg
ddej+        gdz  d7d gz   ej+        gd^z  z   d8d gz   gdd`gd^z  ddej+        gdz  d7gd_z  z   gdd`dej+        d`dd`gddej+        dd7gdgdz  z   d7gz   gg          d9             Zud: Zvd; Zwd< Zxej                             d=ddg          ej                             d>d|d}g          d?                         Zyej                             d@eze{g          dA             Z|ej                             d=ddg          ej                             d>d|d}g          ej                             d@eze{g          dB                                     Z}ej                             dCg dD          ej                             dEg dF          dG                         Z~dS (H      )datetime	timedeltaN)IS64is_platform_armis_platform_power)
	DataFrameDatetimeIndex
MultiIndexSeries	Timedelta	Timestamp
date_rangeperiod_rangeto_datetimeto_timedelta)BaseIndexer)VariableOffsetWindowIndexer)BusinessDayc                      t          ddddt          j        dgi          } |  |                     d                                           |                     dd                                           d S )NBr            min_periods)r   npnanrollingsum)dfs    `/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/pandas/tests/window/test_rolling.pytest_doc_stringr"   "   sj    	C!Q261-.	/	/BBJJqMMJJqaJ  $$&&&&&    c                 B    | t          d                    j        } |d            |d            |dd            |ddd            |ddd	           d
}t          j        t          |          5   |d           d d d            d S # 1 swxY w Y   d S )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_constructorr5   )   s
    	a!!)A AaDDDAQKKKKAQAAQAd++++AQAe,,,, 3C	z	-	-	-  	"                 s   ;BBBw       @foor   c                     | t          d                    j        }d                    ddg          }t          j        t
          |          5   ||           d d d            n# 1 swxY w Y   d}t          j        t
          |          5   |d|	           d d d            n# 1 swxY w Y   d
}t          j        t
          |          5   |dd|           d d d            d S # 1 swxY w Y   d S )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/   r0   r1   )r2   r6   r3   r4   s       r!   test_invalid_constructorr<   =   s    	a!!)A
(('K	
 C 
z	-	-	-  	               +C	z	-	-	- # #	""""# # # # # # # # # # # # # # # %C	z	-	-	- - -	!,,,,- - - - - - - - - - - - - - - - - -s6   A))A-0A-B++B/2B/C//C36C3r'      days3Dz
2015-12-25r%   periodsr   indexoffsetc                 &   t          t          j        d          t          ddd                    }t	          j        t          d          5  |                    | d	                                           d d d            d S # 1 swxY w Y   d S )
N
   
2015-12-24DrB   freqrD   z(^step (not implemented|is not supported)r+   r=   step)	r   r   aranger   r/   r0   NotImplementedErrorr   r   )r'   r    s     r!    test_freq_window_not_implementedrQ   U   s     

	"r<<<
 
 
B 
#M
 
 
 ) ) 	

6
""&&((() ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )s   *BB
B
aggcovcorrc                     t          t          d                                        dd          }t          j        t
          d          5   t          ||                        d d d            d S # 1 swxY w Y   d S )Nr   r   rM   zstep not implementedr+   )r   r.   r   r/   r0   rP   getattr)rR   rolls     r!   &test_step_not_implemented_for_cov_corrrX   l   s     U1XX&&qq&11D	*2H	I	I	I  c                 s   A33A7:A7c                    d}t          dt          j        |          it          d|d                    }t          j        ddgt          j        d	d
d                    }|                    |                                           }t          d|it          d|d                    }t          j        ||           |                    d                                          }t          j        ||           d S )NrG   valuerH   rI   rJ   rL                 ?      @      ;@r=   r&   r@   )	r   r   rO   r   appendr   r   tmassert_frame_equal)r'   nr    expected_dataresultexpecteds         r!   &test_constructor_with_timedelta_windowrf   t   s     	A		")A,,qs;;;
 
 
B IsCj")Cq*A*AB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                    }|                    | d                                          }|                    | d                              t          |          }t          j
        ||           t          j
        ||           d S )NrG   rZ   z
2017-08-08rI   rJ   rL   r\   r]   r^   r=   r   r(   )raw)r   r   rO   r   r_   r   r   r   applyr`   ra   )r'   rh   rb   r    re   result_roll_sumresult_roll_generics          r!   0test_constructor_timedelta_window_and_minperiodsrl      s	    	A		")A,,qs;;;
 
 
B 	")RVSM29S$+B+BCCDqs;;;  H jjAj>>BBDDO**F*BBHHRUHVV/8444-x88888r#   c                    |}t          dg di          }t          dg dit          dd                    } t          |                    d| d	          |                      } t          |                    d
| d	          |                                          d          }t          j        ||           d S )NAr   r   r   r=   r   2020r%   rA   rL   r   r   closedr   2DTdrop)r   r   rV   r   reset_indexr`   ra   )rr   arithmetic_win_operators	func_namedf_fixeddf_timerd   re   s          r!   test_closed_fixedr{      s    (I#/00Hooo.jQR6S6S6STTTGW6q9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           	      V   |t          dg dit          dd                    t          dfd|D             it          dd                    }dk    rd	d
i}ni } t                              d| dd                    di |}t	          j        ||d           d S )Nrn   )r[   r\   r7   r]         @rp   r%   rA   rL   c                 b    g | ]+} t          d          j        |                               ,S )rn   )rV   iloc).0srz   rx   s     r!   
<listcomp>z9test_datetimelike_centered_selections.<locals>.<listcomp>   s8    UUUa7wws|(+Y7799UUUr#   semddofr   rs   r   T)rr   r   r*   Fcheck_dtype )r   r   rV   r   r`   ra   )rr   window_selectionsrw   re   kwargsrd   rz   rx   s         @@r!   %test_datetimelike_centered_selectionsr      s   b )I	'''(
610M0M0M  G 	UUUUUCTUUUV+++  H
 E!WV4HH    	 F
 &(>>>>>>r#   zwindow,closed,expected3s)r]   r]   r]   2s)r]   r7   r7   )r\   r]   r]   r\   r7   r7   c                    t          d          t          d          t          d          g} |g d|          }|                    | |d                                          } |||          }t          j        ||           d S )Nz20130101 09:00:01z20130101 09:00:02)r   r   r   rL   Trr   r*   )r   r   r   r`   assert_equalr'   rr   re   r2   rD   r    rd   s          r!   ,test_datetimelike_centered_offset_covers_allr      s    & 	%&&%&&%&&E
 
%	0	0	0BZZvdZ;;??AAFxu555HOFH%%%%%r#   rs   )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                    }|                    | d|                                          }t	          j        ||           d S )N)
2020-01-01r   
2020-01-02r   
2020-01-03r   
2020-01-04r   r      rD   dtypeT)r*   rr   )r	   floatr   r   r`   r   r   s          r!   +test_datetimelike_nonunique_index_centeringr     s     		
 		
 		
 E 
!qU	;	;	;BxuEBBBHZZtFZ;;??AAFOFH%%%%%r#   zclosed,expectedrG            	      r   )
r   r   r=   r   rG   r      r   r      )
r   r   r=   r   rG                  c                 
   t          g d          } |t          d          |t                    } |||t                    }|                    d|                                           }t          j        ||           d S )N

2011-01-01r   
2011-01-02r   r   z
2011-01-03
2011-01-04r   z
2011-01-05z
2011-01-06rG   r   rs   rr   )r	   r.   r   r   r   r`   r   )rr   re   r2   rD   r    rd   s         r!   test_variable_window_nonuniquer   3  s     	
 	
 	
 E 
r%u	=	=	=BxuEBBBHZZVZ,,0022FOFH%%%%%r#   r   )
r   r   r=   r   rG   r   r      r   r   )
r   r   r=   r   rG   r   r   r   r   r   c                 L   t          g d          } |t          d          |t                    } |||t                    }t          d          }t	          ||          }|                    || d                                          }t          j        ||           d S )Nr   rG   r   r   rC   r   rq   )	r	   r.   r   r   r   r   r   r`   r   )rr   re   r2   rD   r    rE   indexerrd   s           r!   %test_variable_offset_window_nonuniquer   U  s     	
 	
 	
 E 
r%u	=	=	=BxuEBBBH^^F)fEEEGZZAZ>>BBDDFOFH%%%%%r#   c                     t          t          d          t          ddd                    } |                     ddd	                                          }t          g d
| j                  }t          j        ||           d S )Nr=   r   rI   startrK   rB   rL   rs   r   Tr)   )      ?      ?r   )r   r.   r   r   meanrD   r`   assert_series_equalr   rd   re   s      r!   !test_even_number_window_alignmentr   y  s    uQxxz3PQRRRSSSA
 YYd$Y??DDFFFmmm17333H68,,,,,r#   c                    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 |         }|                    t          |          dd| |          }|                                }t          j        ||           d S )N)r   r   r   r   r   r   r   r   
binary_colr   minr   rL   )UUUUUU?r   皙?r   @m?r   g._x%I?r   r   r   r   r   r   )columnsrD   r}   r   )r'   rr   r   r*   rN   )	r   r   lenr   r   r   r   r`   ra   )r*   rN   datar    rc   re   r   rd   s           r!   test_closed_fixed_binary_colr     s
   ###D		t|%TKKK
 
 
B
  ILLLCS#xH|%]ASASTTT   ff	H jj2wwv1V$   G \\^^F&(+++++r#   rr   c                 @   |}t          t          j        d          t          ddd                    }|                    d|           } t          ||                      }t          t          j        gdz  |j                  }t          j	        ||           d S )	Nr%   2000rs   rJ   r   rD   1Dr   rL   )
r   r   rO   r   r   rV   r   rD   r`   r   )rr   rw   rx   serrW   rd   re   s          r!   test_closed_emptyr     s     )I
bill*VQT*R*R*R
S
S
SC;;tF;++D%WT9%%''Frvhl#)444H68,,,,,r#   funcr   maxc                 
   t          dgt          dd                    } t          |                    dd          |                       }t	          j        |t          t          j        g|j        	                     d S )
Nr   r   r   rA   r   10Dr}   r   rL   )	r   r   rV   r   r`   r   r   r   rD   )r   r   rd   s      r!   test_closed_one_entryr     sx     qcFA!>!>!>
?
?
?C=WS[[v[66==??F6626(#)#D#D#DEEEEEr#   c                    t          g dg ddt          dd                    } t          |                    dd	
          d                             dd          |                       }t          j        g d|j        gd          }t          t          j
        dt          j
        g|d          }t          j        ||           d S )N)r   r   r   )r=   r   r   rn   r   r   r=   rA   r   rn   F)sortr   r   r}   r   )rn   N)arraysnames)r   rD   name)r   r   rV   groupbyr   r
   from_arraysrD   r   r   r   r`   r   )r   r   rd   exp_idxre   s        r!   test_closed_one_entry_groupbyr     s     99999--+++  CWCe$$S)11%1GG   F $YYY	,B+VVVGBFArv.gCHHHH68,,,,,r#   input_dtypeintr   zfunc,closed,expected)
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   r   c                 @   t          t          j        d                              |           t	          dd                    } t          |                    d|          |                      }t          ||j                  }t          j	        ||           d S )NrG   r   rA   r   r@   r   rL   )
r   r   rO   astyper   rV   r   rD   r`   r   )r   r   rr   re   r   rd   s         r!   test_closed_min_max_datetimer     s      Yr]]!!+..,,,  C
 =WS[[f[55t<<>>Fhci000H68,,,,,r#   c            
      |   t          t          j        d          t          dd                    } |                     | j        ddg                   } |                     dd	
                                          }t          t          j        dddddddg| j                  }t          j
        ||           d S )NrG   r   rA   r   r   r%   rL   r@   r}   r   r   r   r=   r   r   )r   r   rO   r   ru   rD   r   r   r   r`   r   )r   rd   re   s      r!   test_closed_unevenr     s    
bimm:fb+I+I+I
J
J
JC ((Aq6*(
+
+C[[f[--1133Frvq!Q1a339EEEH68,,,,,r#   c                 ~   t          t          j        d          t          dd                    }|                    d          }t          j        ||j        dd          <    t          |                    dd|	          |                       }t          ||j        
          }t          j
        ||           d S )NrG   r   rA   r   r   r@   r   )r   rr   rL   )r   r   rO   r   r   r   rD   rV   r   r`   r   )r   rr   re   r   rd   s        r!   test_closed_min_max_minpr     s     bimm:fb+I+I+I
J
J
JC
**W

C&C	"##KWS[[1V[DDdKKMMFhci00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                 j   t          t          j        d          t          dd                    }|                    d|           }t          ||j                  }|                                }t          j        ||           |	                    d          }t          j        ||           d S )	NrG   r   rA   r   r@   r   rL   r   )
r   r   rO   r   r   rD   medianr`   r   quantile)rr   re   r   rW   rd   s        r!   test_closed_median_quantiler     s     bimm:fb+I+I+I
J
J
JC;;tF;++Dhci000H[[]]F68,,,]]3F68,,,,,r#   roller1sc                    t                      }t                                          |                                           }t          j        ||           t          t          g                     }t          t          g                                         |                                           }t          j        ||           d S )NrL   )r   r   r   r`   ra   r	   )r   re   rd   s      r!   tests_empty_df_rollingr     s     {{H[[  ((,,..F&(+++ }R00111H]2..///77??CCEEF&(+++++r#   c                  t   t          t          j        t          j        t          j        g          } t          t          j        d                                        d          }|                                }t          j        ||            |                    d          }t          j        ||            d S )Nr=   r   皙?)	r   r   r   rO   r   r   r`   r   r   )re   rW   rd   s      r!   !test_empty_window_median_quantiler   &  s    rvrvrv.//H")A,,''**D[[]]F68,,,]]3F68,,,,,r#   c                     t          t          j        g          } |                     dd                                          }t          dg          }t          j        ||           |                     dd                                          }t          t          j        g          }t          j        ||           d S )Nr   r   r   r[   )r   r   r   r   r   r`   r   xrd   re   s      r!   test_missing_minp_zeror   2  s     	xAYYqaY((,,..Fse}}H68,,, YYqaY((,,..FrvhH68,,,,,r#   c                  $   t          t          j        gdz  t          g d                    } |                     t          d          d                                          }t          d| j                  }t          j	        ||           d S )Nr   )z
2017-01-01z
2017-01-04z
2017-01-06z
2017-01-07rL   2dr   r   r[   )
r   r   r   r	   r   r   r   rD   r`   r   r   s      r!   test_missing_minp_zero_variabler  @  s    	1TTTUU	 	 	A YYyAY66::<<Fc)))H68,,,,,r#   c                  <   t          j        ddgg dgddg          } t          t          j        d          |           }|                    d	                                          }t          j        |j	        |j	                   |j
        j        g d
k    sJ d S )Nrn   r   )CrI   E12r   )rG   r   r   r=   )Nr  r  )r
   from_productr   r   onesr   rS   r`   assert_index_equalr   rD   r   )colsr    rd   s      r!   test_multi_index_namesr  K  s    "S#J#@c
SSSD	277##T	2	2	2BZZ]]  F&."*555<!1!1!1111111r#   c                    t          t          j        d                    }|                    |           }|dk    r)d}t          d t	          d          D                       }n*d}t          t          j        gdz  dgd	z  z   gd
z            }t          j        t          |          5  |	                    d|           
                                }d d d            n# 1 swxY w Y   t          j        ||           d S )N)rG   r   r   'The 'axis' keyword in DataFrame.rollingc                 >    i | ]}|t           j        gd z  dgdz  z   S )r   r]   r   )r   r   r   is     r!   
<dictcomp>z)test_rolling_axis_sum.<locals>.<dictcomp>\  s-    MMMaa"&A	!9MMMr#   r   5Support for axis=1 in DataFrame.rolling is deprecatedr   r]   r   rG   r+   r=   axis)r   r   r  _get_axis_numberr.   r   r`   assert_produces_warningFutureWarningr   r   ra   
axis_framer    r  r4   re   rd   s         r!   test_rolling_axis_sumr  U  s3   	278$$	%	%Bz**Dqyy7MM599MMMNN FrvhlcURZ782=>>		#M	=	=	= 6 6AJ//33556 6 6 6 6 6 6 6 6 6 6 6 6 6 6&(+++++s   +*C!!C%(C%c                    t          t          d          t          d          d          }|                    |           }|dv rd}t          g dg dd          }nd}t          g dg dd          }t          j        t
          |	          5  |                    d
| d                                          }d d d            n# 1 swxY w Y   t          j        ||           d S )Nr=   )r   yr   rD   r  r   r  )r\   r\   r\   )r7   r7   r7   r+   r   r   )r  r   )	r   r.   r  r`   r  r  r   countra   r  s         r!   test_rolling_axis_countr#  g  s?   	qa11	2	2Bz**D|7???IIJJE???IIJJ		#M	=	=	= G GAJA>>DDFFG G G G G G G G G G G G G G G&(+++++s   +C		CCc                  n   t          j        ddt           j        ddg          } |                     d           t	          |                               d                                          }t	          t           j        dt           j        t           j        dg          }t          j        ||           d S )Nr   r=   r%   F)writer   r   )	r   arrayr   setflagsr   r   r   r`   r   )arrrd   re   s      r!   test_readonly_arrayr)  y  s    
(Aq"&!Q'
(
(CLLuLC[[  ##((**Frvq"&"&!455H68,,,,,r#   c           
         |}t          d t          ddd|          D                       }| dv rid}t          j        t          |          5  |j                            d	| 
                                          j        }d d d            n# 1 swxY w Y   n^d}t          j        t          |          5  |                    d	| 
                                          }d d d            n# 1 swxY w Y   t          i d t          ddd|          D             d t          ddd|          D                       }t          j        ||           d S )Nc                     i | ]	}|d gdz  
S )r   r   r   r  s     r!   r  z)test_rolling_datetime.<locals>.<dictcomp>  s     TTTQC!GTTTr#   z	2019-8-01z
2019-08-03rI   )rK   tzr!  r  r+   rs   r  z'Support for axis=1 in DataFrame.rollingc                     i | ]	}|d gdz  
S )r\   r   r   r  s     r!   r  z)test_rolling_datetime.<locals>.<dictcomp>  0        C519  r#   r   )rB   rK   r,  c                     i | ]	}|d gdz  
S )r7   r   r   r  s     r!   r  z)test_rolling_datetime.<locals>.<dictcomp>  r.  r#   z	2019-8-02z	2019-8-03)	r   r   r`   r  r  Tr   r   ra   )r  tz_naive_fixturer,  r    r4   rd   re   s          r!   test_rolling_datetimer2    s   	B	TTZ\PRSSSTTT
 
B \!!7'SAAA 	A 	AT\\$Z\88<<>>@F	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 8'SAAA 	= 	=ZZ:Z66::<<F	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=		
 #KLLL  		

 #K32NNN  		
 H &(+++++s$   4BBB7*C--C14C1r*   TFc                    t          j                    }t          ||t          d          z   d          }t	          j        t          |                    }t          ||d          }|                    dd           |	                    dd	d
|           d         
                    d          }|                    d          }|                    d           }t	          j        t          |          t          j                  }| st          j        |d d	<   t          ||d          }t!          j        ||           d S )Nim  rI   )rK   )DateColmetricr4  T)inplace21Dr   r}   )r'   r   rr   r*   r5  r   r   )rD   r   )r   nowr   r   r   r  r   r   	set_indexr   rR   rename
_with_freqfloat64r   r   r`   r   )	r*   
date_todayr?   r   r    rd   rD   rc   re   s	            r!   test_rolling_window_as_stringr?    s$    Jj*y~~"=CHHHD73t99D	tt44	5	5BLLDL)))ZZu!F6ZRR	c%jj  KK	""ET""EGCIIRZ888M #Fbqbm5x@@@H68,,,,,r#   c                      t          g ddg          } | d                             ddd                                          }t          g dd	          }t	          j        ||           d S )
N)r   r   r   r   r   ar
  r=   Tr   )r*   r   )r\   r7   r7   r7   r\   r   )r   r   r   r   r`   r   r    rd   re   s      r!   test_min_periods1rD    ss    	???SE	2	2	2BW__Qt_;;??AAF///c:::H68,,,,,r#   c                      | t          d                                        dd                                          } | t          j        t          j        dddg          }t          j        ||           d S )Nr%   r=   r   r]   )r.   r   r"  r   r   r`   r   )r2   rd   re   s      r!   #test_rolling_count_with_min_periodsrF    sl    _U1XX&&..qa.@@FFHHFS#>??HOFH%%%%%r#   c                     dddt           j        dddg}g d} | |                              dd	                                          } | |          }t	          j        ||           d S )
Nr   r   r=   r   r%   r   )r\   r7   r]   r7   r7   r7   r]   r   r   )r   r   r   r"  r`   r   )r2   valuesexpected_countsrd   re   s        r!   7test_rolling_count_default_min_periods_with_null_valuesrJ    sz    Arvq!Q'F999O _V$$,,QA,>>DDFFF//HOFH%%%%%r#   zdf,expected,window,min_periodsr   r   r=   )r   r%   r   r   r   r   r   r\   c                     d |D             }t          ||                     ||                    D ]\  }}t          j        ||           d S )Nc                 6    g | ]\  }}t          ||           S rL   )r   r   rH  rD   s      r!   r   z/test_iter_rolling_dataframe.<locals>.<listcomp>  s)    OOO?FE	&...OOOr#   r   )zipr   r`   ra   )r    re   r'   r   actuals        r!   test_iter_rolling_dataframerS    sg    L POhOOOH"**V**U*UVV 0 0&
fh////0 0r#   zexpected,windowr   c           	          t          g dg dt          ddd          d          fd| D             } t          |                     |d	
                    D ]\  } }t	          j        ||            d S )Nr   r   r=   r   r%   )r   r%   r   r   r   z
2016-01-01r%   rI   r   rB   rK   rn   r   r  c                 R    g | ]#\  }}t          |j        |d f                   $S )r  rL   )r   loc)r   rH  rD   r    s      r!   r   z2test_iter_rolling_on_dataframe.<locals>.<listcomp>D  sB       8G	&ucz 2333  r#   r  )on)r   r   rQ  r   r`   ra   )re   r'   rR  r    s      @r!   test_iter_rolling_on_dataframer[    s    > 
  ,DDD	
 	

 
B   KS  H  "**V**D*DEE 0 0&
fh////0 0r#   c                     t          g dg dd          t                              d                              d                    } fddgddgdgfD             }t	          | |          D ]\  }}t          j        ||           d S )	N)r   r   r   rL  rA  brA  r   c                 0    g | ]}j         |d gf         S )r   )r   )r   idxr    s     r!   r   z<test_iter_rolling_on_dataframe_unordered.<locals>.<listcomp>O  s&    AAAsqc"AAAr#   r   r   )r   listr   r   rQ  r`   ra   )results	expectedsrd   re   r    s       @r!   (test_iter_rolling_on_dataframe_unorderedrd  K  s    	yyy99	:	:B2::c??**1--..GAAAAsQFQC.@AAAI33 0 0
fh////0 0r#   z ser,expected,window, min_periodsint64r8  c                     d |D             }t          ||                     ||                    D ]\  }}t          j        ||           d S )Nc                 6    g | ]\  }}t          ||           S rO  r   rP  s      r!   r   z,test_iter_rolling_series.<locals>.<listcomp>w  s)    LLLvU+++LLLr#   r   )rQ  r   r`   r   )r   re   r'   r   rR  s        r!   test_iter_rolling_seriesri  T  sg    F ML8LLLH#++f++*V*VWW 1 1&
vx00001 1r#   zexpected,expected_index,windowr   rI   rJ   r   r   r   z
2020-01-05)r   r=   r   c                    t          t          d          t          ddd                    }d t          | |          D             } t          | |                    |                    D ]\  } }t          j        ||            d S )Nr%   r   rI   rV  rL   c                 6    g | ]\  }}t          ||           S rO  rh  )r   rH  r`  s      r!   r   z.test_iter_rolling_datetime.<locals>.<listcomp>  s6       &3vsvS!!!  r#   )r   r.   r   rQ  r   r`   r   )re   expected_indexr'   r   rR  s        r!   test_iter_rolling_datetimerm  }  s    P q,PS!T!T!T
U
U
UC 7:8^7T7T  H  #++f*=*=>> 1 1&
vx00001 1r#   zgrouping,_indexlevel)r   r   ro  r   r   rp  rp  r	  byX)ro  )r   r   )r   r   )r=   r   )r   r   c                 F   d }t          dt          d          ig d          }t          dg di|          }d| v r|                    dd	          } |j        di |                     d
                              ||d          }t          j        ||           d S )Nc                  ~    t          |           dk     rt          d          | \  }}|                                |z  S )Nr   z The function needs two arguments)r   r1   r   )argsr&  scales      r!   
scaled_sumz4test_rolling_positional_argument.<locals>.scaled_sum  s<    t99q==?@@@uyy{{U""r#   rr  r%   )r   r   r   r   r   r   )r[   r   r\   r   r7   rq  ignore)r   errorsr   )r   )rh   ru  r   )r   r.   ru   r   r   ri   r`   ra   )grouping_indexrh   rw  r    re   rd   s          r!    test_rolling_positional_argumentr|    s    (# # # 
eAhh	?	?	?Bs$=$=$=>fMMMHx==X=>>RZ##(##++A..44ZSt4TTF&(+++++r#   addr[   c           
      .   t          t          d          t          d          t          d          g                              |          }t          dd| z   ddgi|          }|                    d                                                              d	d
d                                          }t          ddd|          }t          dt          j
        t          j
        t          j
        ddddgi|          }t          j        ||           d S )Nz19700101 09:00:00z19700101 09:00:03z19700101 09:00:06rn   gVUUUUU%C       rL   r   r   r}   r=   rq   r   r   )rB   rK   unitgUUUUUU%CgqqCgqqCr[   )r	   r   as_unitr   resampleffillr   r   r   r   r   r`   ra   )r}  r  dtir    rd   datesre   s          r!   *test_rolling_numerical_accuracy_kahan_meanr    s2    )**)**)**	
  gdmm  
	!C't45
 
 
B
 	D!!))$v1)MMRRTT  *ACdKKKE"#$
	
   H &(+++++r#   c                     t          g ddg          } | d                             d                                          }t          t          j        t          j        ddddgd          }t          j        ||           d S )	N)grh|@'1Zr[   r[   r[   r[   r   r
  r=   gsh|??r  r[   rB  )r   r   r   r   r   r   r`   r   rC  s      r!   )test_rolling_numerical_accuracy_kahan_sumr    sz    	666	F	F	FBW__Q##%%Frvrvufc3?cJJJH68,,,,,r#   c                     t          ddd                              t          dg                    } t          j                            d                              t          |                     }t          d|i|           }|                    d          	                                }t          j        ||dg                    d S )	Nr   r   60sr   endrK   r   r   r   rL   )r   r_   r	   r   randomdefault_rngr   r   r   r   r`   ra   )rD   r   r    rd   s       r!   $test_rolling_numerical_accuracy_jumpr    s    \|%HHHOO|n%% E 9  ##**3u::66D	FD>	/	/	/BZZ##%%F&"fX,/////r#   c                      t          g dt          dd                    } |                     d                                          }t	          j        ||            d S )N)g(@S ?ga2U0*3?r  r  z
1999-02-03z
1999-02-06r   r   )r   r   r   r   r`   r   )r   rd   s     r!   ,test_rolling_numerical_accuracy_small_valuesr  
  sb    ---|44	 	 	A YYq\\  F61%%%%%r#   c                     t          ddd          } t          t          d          | t          j                  }d|j        d<   |                    d                                          }t          t          j        t          j        t          j        t          j        d	d	d	d
ddg
|           }t          j
        ||           d S )Nz
2015-01-01rG   rI   rJ   )r   rD   r   gТr   r%   gk/      @      @      @rL   )r   r   r.   r   r=  r   r   r   r   r`   r   )r  dsrd   re   s       r!   (test_rolling_numerical_too_large_numbersr    s    |Rc:::E	U2YYe2:	>	>	>BBGAJZZ]]!!FFFFF	
   H 68,,,,,r#   )r   rZ   ))r   r7   )r   r\   )r   r\   )r   r\   )r   r\   c                 j   t          dddgg d          }d|d<   d}t          j        t          |          5  |                    ddd	          }d d d            n# 1 swxY w Y    t          ||                       }t          ddg||g||gdddg
          }t          j        ||           d S )Nr   r   rA  r^  r3   )rD   r   r\   r3   r  r+   r'   r   r  rL   )r   r`   r  r  r   rV   ra   )r   rZ   r    r4   rW   rd   re   s          r!    test_rolling_mixed_dtypes_axis_1r  ,  s    
1QFOOO	<	<	<BBsG
AC		#M	=	=	= ; ;zzz::; ; ; ; ; ; ; ; ; ; ; ; ; ; ; WT4  ""FCju~UENCC!f  H &(+++++s   AA"%A"c                      t          ddddt          j        t          j        t          j        gdddt          j        t          j        t          j        t          j        gdddt          j        dt          j        dgg          } d}t          j        t
          |          5  |                     ddd	                                          }d d d            n# 1 swxY w Y   t          g d
g dg dg          }t          j        ||           d S )Nr   r   r   r   r  r+   r   r   r  )r[   r\   r]   r  r  r  r  )r[   r\   r]   r]   r]   r]   r]   )r[   r7   r   r   r  r  r  )	r   r   r   r`   r  r  r   r   ra   r    r4   rd   re   s       r!   test_rolling_axis_one_with_nanr  ?  sO   	1a01bfbfbfbf51bfa+	

 
B BC		#M	=	=	= K K1!)DDHHJJK K K K K K K K K K K K K K K/////////	
 H &(+++++s   +CCCrZ   testz
2019-12-31z1 days 06:05:01.00003c                 D   t          dddgi          }| |d<   d}t          j        t          |          5  |                    ddd                                          }d d d            n# 1 swxY w Y   t          ddd	gi          }t          j        ||           d S )
NrA  r   r   r^  r  r+   r  r\   r7   )r   r`   r  r  r   r   ra   )rZ   r    r4   rd   re   s        r!   &test_rolling_axis_1_non_numeric_dtypesr  U  s     
C!Q=	!	!BBsG
AC		#M	=	=	= C C1!!<<@@BBC C C C C C C C C C C C C C C#Sz*++H&(+++++s   +A--A14A1c                     t          dd gddgddgd          } t          dt          j        gddgd	d
gd          }d}t          j        t
          |          5  |                     ddd                                          }d d d            n# 1 swxY w Y   t          j        ||           | j	                            dd                                          j	        }t          j        ||           d S )Nr   r   r%   r   r   rW  r\   r  g      &@      *@r  r+   r   )r   r'   r  )r   r'   )
r   r   r   r`   r  r  r   r   ra   r0  )r    re   r4   rd   s       r!   test_rolling_on_df_transposedr  d  s@   	!T!Qq!f==	>	>BRV}C:T4LQQRRH
AC		#M	=	=	= C C!!<<@@BBC C C C C C C C C C C C C C C&(+++T\\a\226688:F&(+++++s   +BBB)rD   r'   z2020-01-01 08:00z2020-01-01 08:08r  2minz2020-01-01 12:0030min1h)r   rH  r   r   c                     t          g d|           } t          |                    |d          |                      }t          ||           }t          j        ||           d S )N)	r   r   r   r=   r   r%   r   r   r   rL   r}   r   )r   rV   r   r`   r   )rD   r'   r   rH  r  rd   re   s          r!   test_rolling_period_indexr  q  so    2 
+++5	9	9	9B=WRZZvZ66==??FfE***H68,,,,,r#   c                 <    | g d          }|                     dd                                          }t          |t                    rt	          |d         j                  }t	          t          j        gdgdz  z             }t          j	        ||           d S )NrL  r   r   r   r   g;f?)
r   r   
isinstancer   r   rH  r   r   r`   r   )r2   objrd   re   s       r!   test_rolling_semr    s    
/)))
$
$C[[[**..00F&)$$ *q	())rvh"4!5!99::H68,,,,,r#   zGH 38921)reason)r   third_valuerH  var)|Fr   r   r   r   r   std) >gfoCr   Pp?r  绹۞?r   )r  r   r   r   r   r   )r  r  r   r  r  r   c           	      &   t          dd|ddddg          } t          |                    d          |                       }t          t          j        g|z             }t          j        ||           t          j        |dk    |dk               d S )Nl   ;r   r   r=   r   r   rV   r   r   r   r`   r   )r   r  rH  r  rd   re   s         r!   !test_rolling_var_numerical_issuesr    s     
"A{Aq!Q?	@	@B)WRZZ]]D))++Frvh'((H68,,, 6Q;A66666r#   c                 P   t          t          d          t          d          t          d          t          d          t          d          g                              |           }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|          }|                    d          	                                }t          j        ||           d S )Nz20130101 09:00:00z20130102 09:00:02z20130103 09:00:03z20130105 09:00:05z20130106 09:00:06r   rn   g?g      r\   g6<AԿg     ?g?)r   rn   rL   )r   r   r   r   r=   )r   r   r   r   r=   3dr&   )r	   r   r  r
   r  r   r   r   r   rT   r`   ra   )r  r  miexpr    ress         r!   ,test_timeoffset_as_window_parameter_for_corrr    sX   
)**)**)**)**)**	
  gdmm  
	 #Sz!2	3	3B
 "#"" "#"""	
 	
4 7  C< 
ooOOO4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	          |                    d	          |                       } t	          |                    d	          |                       }t          j        |j        ddd         dd
         |j        dd         z
                                            dk     sJ dS )zf
    Make sure that decreasing indices give the same results as increasing indices.

    GH 36933
    rH  irG   r   Nr-   rL   r%   r&   r   g-q=)	r   r   rO   rD   rV   r   absrH  r   )r  r    
df_reverse
increasing
decreasings        r!   test_rolling_decreasing_indicesr    s     
HbiR00A56	7	7BHbl44R4&89$$B$PPPJ61--v6688J>++1+55v>>@@J6*#DDbD)#2#.1B1221FFGGKKMMPUUUUUUUr#   )r\   r]   r  r]   )r[   r\   r]   r  )r\   r]   r  r  )r[   r\   r7   r]   c                    t          ddd          } |t          d          |          } |t          d          |ddd                   } |||          } |||ddd                   }|                    | |d	                                          }	|                    | |d	                                          }
t	          j        |	|           t	          j        |
|           dS )
zV
    Ensure that a symmetrical inverted index return same result as non-inverted.
    rp   r   r   rJ   rL   Nr-   Tr   )r   r.   r   r   r`   r   )r'   rr   re   r2   rD   df_incdf_decexpected_incexpected_dec
result_inc
result_decs              r!   (test_rolling_decreasing_indices_centeredr    s    & vqt444E_U1XXU333F_U1XXU44R4[999F"?85999L"?852;???LvdCCGGIIJvdCCGGIIJOJ---OJ-----r#   zwindow,expected1ns)r\   r\   r\   r\   3ns)r7   r]   r]   r7   c                     t          ddd          } |g d|t                    } |||t                    }|                    | |d                                          }t	          j        ||           d S )	Nrp   r   r  rJ   )r   r   r   r   r   Tr   )r   r   r   r   r`   r   r   s          r!   )test_rolling_center_nanosecond_resolutionr    s     vqu555E	U%	@	@	@BxuEBBBHZZvdZ;;??AAFOFH%%%%%r#   zmethod,expectedr   g     E@g
a@g     E@gCݽW@g     f@g     s@r   g     5@r  g`UU"@r  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                 V   g d}t          dt          j        t          |                    dz  i          } G d dt                    } |d|          } t          |                    |          |                       }t          d|i          }t          j        ||           dS )	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.
    )TFTFTTTTrH  r   c                       e Zd Zd ZdS )1test_rolling_non_monotonic.<locals>.CustomIndexerc                    t          j        |t           j                  }t          j        |t           j                  }t          |          D ]/}| j        |         rd||<   |dz   ||<   |||<   || j        z   ||<   0||fS )Nr8  r   r   )r   emptyre  r.   use_expandingwindow_size)	self
num_valuesr   r*   rr   rN   r   r  r  s	            r!   get_window_boundszCtest_rolling_non_monotonic.<locals>.CustomIndexer.get_window_boundsk  s    HZrx888E(:RX666C:&& 2 2%a( 2 E!HUCFF E!H!11CFF#:r#   N)__name__
__module____qualname__r  r   r#   r!   CustomIndexerr  j  s#        
	 
	 
	 
	 
	r#   r  r   )r  r  N)	r   r   rO   r   r   rV   r   r`   ra   )r  re   r  r    r  r   rd   s          r!   test_rolling_non_monotonicr  )  s    | GFFM	HbiM(:(:;;q@A	B	BB        mGGGG1WRZZ((&1133F(H-..H&(+++++r#   ro   z
2001-01-01)rK   rB   c                 :   t          g d|           }|                                }d|j        dd<   |                    |                              |          }t          t
          j        t
          j        dddg|           }t          j        ||           d S )NrU  rL   r[   r   r   r   )	r   copyr   r   rT   r   r   r`   assert_almost_equal)rD   r'   r   r   rd   re   s         r!   !test_rolling_corr_timedelta_indexr  ~  s     	e,,,A	AAF1Q3KYYv##A&&Frvrvq!Q/u===H68,,,,,r#   c            	         dt           j        ddt           j        gg dd} t          |           }|                    dd                              dd	                                          }t          d
g dit          ddt           j        gg dgg dg dgdd g                    }t          j        ||           d S )Ng1g2ro   )groupr   r  F)dropnar   r   r   )r[   r7   r]   r\   r   )r   r   r   r   r   )r   r   r=   r   r   r	  rL   )	r   r   r   r   r   r   r
   r`   ra   )r   r    rd   re   s       r!   !test_groupby_rolling_nan_includedr    s    BFD$7oooNND	4BZZZ..66qa6HHMMOOF	'''( D"&!???3__ooo.D/
 
 
  H &(+++++r#   c                    t          t          j                            d                              d                    }|                                } t          |                    d          |                       }t          j        ||           |dz   } t          |                    d          |                       }t          j        ||           d S )Nr   rG   r=   iP  )	r   r   r  r  r  rV   r   r`   r   )r  r   ser_copyre   rd   s        r!   *test_rolling_skew_kurt_numerical_stabilityr    s     &&q))0044
5
5CxxzzH.ws{{1~~v..00H3)))
+C,WS[[^^V,,..F68,,,,,r#   )r  rH  )r7   g+X?r[   gJ_9?)r   gBʠg333333g >@c                     t          g d          } t          |                    d          |                       }t          t          j        gdz  |z             }t          j        ||           d S )N)i- r   r   r   r=   r   i  r   r=   r  )r  rH  r   rd   re   s        r!   (test_rolling_skew_kurt_large_value_ranger    sl     	,,,--A*WQYYq\\6**,,FrvhlV+,,H68,,,,,r#   c                      t          j        t          d          5  t          t	          d                                        dd           d d d            d S # 1 swxY w Y   d S )Nz!method must be 'table' or 'singler+   r   r8   )r  )r/   r0   r1   r   r.   r   r   r#   r!   test_invalid_methodr    s    	z)L	M	M	M 2 2uQxx  5 1112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2   2AA"A1dc                     t          ddd          } |t          dd          |          }|                    dd	                                          } |t          j        dd
g|          }t          j        ||           |j        d d d                             dd	                                          }t          ddd          } |t          j        dd
g|          }t          j        ||           d S )Nr   r   r  r  r   r   rL   r}   r   r   r-   z-1dr=   )	r   r.   r   r   r   r   r`   r   r   )r'   r2   r`  r  rd   re   s         r!   .test_rolling_descending_date_order_with_offsetr    s     <\
E
E
EC
/%1++S
1
1
1C[[f[--1133F1~S999HOFH%%%Xddd^##D#88<<>>F
<\
F
F
FC1~S999HOFH%%%%%r#   c                  .   t          g d          } |                     d                                          }t          t          j        t          j        ddg          }t          j        ||dd           t          j        |dk    |dk               d S )N)r   r%   r%   r%   r=   UUUUUU?r   V瞯<atolrtol)r   r   r  r   r   r`   r   r   s      r!   ,test_rolling_var_floating_artifact_precisionr     s    |||AYYq\\Frvrvua011H68'HHHH 6Q;A66666r#   c                      t          g d          } |                     d                                          }t          t          j        ddg          }t          j        ||dd           d S )N)Q؎>g 4PSȡ>r  r   g[^>>r  r  )r   r   r  r   r   r`   r   r   s      r!   test_rolling_std_small_valuesr    ss    	
 	
 	
	 	A YYq\\Frv{K899H68'HHHHH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          }|ddddt          j        t          j        ddgz   }t          |t          t	          | t          |          | z                       	          }|j        | d                              d
d                                          }t          j
        ||           d S )Nr  r  Mb`?Mb?{Gzt?皙?r  g=
ףp=?rL   r%   r   r   )r   r   r   ra  r.   r   r   r   r   r`   ra   )r   
exp_valuesr    rH  re   rd   s         r!   3test_rolling_mean_all_nan_window_floating_artifactsr    s     
FFFFFFF	

 
B& 

	 	F 5Fe 34455  H WUVV_$$QA$66;;==F&(+++++r#   c                  
   t          dddt          j        t          j        t          j        g          } |                     dd                                          }t          g d          }t          j        ||           d S )Nr	  r
  r  r=   r   r   )r	  g{Gz?gQ?g9v?r  r[   )r   r   r   r   r   r`   ra   rC  s      r!   2test_rolling_sum_all_nan_window_floating_artifactsr    sp    	E5%@	A	ABZZqZ))--//FAAABBH&(+++++r#   c                      t          t          d                    } |                     d                                          }t          t          j        g          }t          j        ||           d S )Nr   r   )r   r.   r   r   r   r   r`   r   r   s      r!   test_rolling_zero_windowr  #  sZ    uQxxAYYq\\FrvhH68,,,,,r#   c                    t          t          d          t          dd          d|           }t          t          j        gdz  t          ddd          d|           }d}t	          j        t          |	          5  |                    dd
                                          }d d d            n# 1 swxY w Y   t	          j	        ||d           d S )Nr%   rG   r   r   r8  r   r   r  r+   r   r  Fr   )
r   r.   r   r   r`   r  r  r   r   ra   )float_numpy_dtyper    re   r4   rd   s        r!   test_rolling_float_dtyper  +  s   	qb"66>O	P	P	PBvhlr2q!1!122  H BC		#M	=	=	= - -AA&&**,,- - - - - - - - - - - - - - -&(>>>>>>s   >*B44B8;B8c                     t          t          j        d                              dd          t	          d                                        dddd	d
dddddd
          } d}t          j        t          |          5  | 	                    ddd          
                                }d d d            n# 1 swxY w Y   t          t          ddd          t          ddd          t          ddd          t          ddd          t          ddd          t          ddd          t          ddd          t          ddd          t          ddd          t          ddd          d
d          }t          j        ||           d S )N(   r   rG   
abcdefghijr
  float16float32r=  int8int16int32uint8uint16uint32uint64)
rA  r^  r3   defghr  jr  r+   r   r   r  r   r=   r%   r   r   r   r8  )r   r   rO   reshapera  r   r`   r  r  r   r   r.   ra   r  s       r!   test_rolling_numeric_dtypesr)  8  s   	29R==((B//l9K9K	L	L	L	S	S	
 	

 
B BC		#M	=	=	= C C1!!<<@@BBC C C C C C C C C C C C C C Cq"b!!q"b!!q"b!!q"b!!q"b!!q"b!!q"b!!q"b!!q"b!!q"b!!	
 	
   H &(+++++s    +B77B;>B;)r   r=   rG   r   )r   r   averagepct	ascending	test_data)default
duplicatesnansc           
         d}|dk    rAt          t          j                            d                              |                    }n|dk    rBt          t          j                            d                              d|                    }nl|dk    rft          t          j                            d                              dd	d
t          j        t          j        t          j         g|                    }|                    |                               fd          }|                    |           	                              }t          j        ||           d S )Nr   r.  r   )r   r/  r=   r0  r\         ?      ?c                 J    |                                j        d         S )Nr  r+  r,  r-   )rankr   )r   r,  r  r+  s    r!   <lambda>ztest_rank.<locals>.<lambda>p  s!    !&&C9&EEJ2N r#   r5  )r   r   r  r  choicer   infr   ri   r6  r`   r   )	r'   r  r+  r,  r-  lengthr   re   rd   s	    ```     r!   	test_rankr;  ]  sV    FI")//2299&AABBB	l	"	"")//2299!VDDEEE	f		&&q))00dD"&"&26':F 
 
 
 {{6""((NNNNNN H [[  %%V	%RRF68,,,,,r#   c                     d} d}t          d| d          }t          t          j                            d                              | |z                                | df          |          }|                    g d	d
          }t          j        |g dd
          }t          j	        |j
        t          j        |                     d S )NrG   r%   20100101r   rJ   r   r-   rL   )r2  r   r3  r   r  )   2   K   )r   r   r   r  r  r(  r   
percentiler`   r  rH  r&  )rowcolr`  r    df_quantilenp_percentiles         r!   #test_rolling_quantile_np_percentilerF  w  s     C
C
Z3
7
7
7C	
	a  ''c	22::C9EES
 
 
B ++///a+88KM"lll;;;M;-rx/F/FGGGGGr#   r   )r[   r   g?r   r   interpolation)linearlowerhighernearestmidpointr   )r\   r7   r]   r   r  r  r  )g       @r\   r]   r   r  r7   r  r  r  r   r   g333333?gffffff?g333333?c                 l   t          |          }|                    | |          }|                    d                              | |          j        d         }t	          j        |          rt	          j        |          sJ d S t          st	          j        |g|gdd          sJ d S ||k    sJ d S )Nr   r   r-   gHz>r   )r  r  )r   r   	expandingr   r   isnanr   allclose)r   rG  r   r   q1q2s         r!   +test_rolling_quantile_interpolation_optionsrS    s    & 	tA	
Hm	,	,B	
	#	#	,	,X}	E	E	J2	NB	x|| x|| 	;tbTA>>>>>>>>888888r#   c                  *   t          j        d          } t          |           }d}t          j        t
          |          5  |                    t          |           d                              dd           d d d            d S # 1 swxY w Y   d S )	Nr%   z(Interpolation 'invalid' is not supportedr+   r   r   r   invalid)rG  )	r   rO   r   r/   r0   r1   r   r   r   )r   r   r4   s      r!   test_invalid_quantile_valuerV    s    9Q<<DtA
4C	z	-	-	- S S			#d))	++44S	4RRRS S S S S S S S S S S S S S S S S Ss   :BBBc                  X   t          g d          } d}t          j        t          |          5  |                     d                              d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  |                     d                              d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  |                     d                              d	           d d d            d S # 1 swxY w Y   d S )
N)r[   r   r   g?r\   z#quantile value -0.1 not in \[0, 1\]r+   r=   gz#quantile value 10.0 not in \[0, 1\]g      $@zmust be real number, not strr8   )r   r/   r0   r1   r   r   	TypeError)r   r4   s     r!   test_rolling_quantile_paramrY    s   
***
+
+C
1C	z	-	-	- & &A%%%& & & & & & & & & & & & & & & 2C	z	-	-	- & &A%%%& & & & & & & & & & & & & & & )C	y	,	,	, ' 'A&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 's5   )A$$A(+A()CCC))DD#&D#c                  Z   t          g d          } |                     dd                                          }t          t          j        gdz            }t          j        ||           |                     dd                              d          }t          dgdz            }t          j        ||           t          t          j        t          j        dd	dg                              dd
                                          }t          j        |d
                   sJ d S )N)r\   r7   r]   r   r  r   r   r%   r   )r   r[   r=   r   r   )r   r   r  r   r   r`   r   rO  )valsrd   re   s      r!   test_rolling_std_1obsr\    s   +++,,D\\!\++//11Frvhl##H68,,,\\!\++//Q/77Fseai  H68,,,RVRVQ1-..66qa6HHLLNNF8F1Ir#   c                     t          g d          } |                     d                                          }t          j        |dd                                                    sJ |                     d                                          }t          j        |dd                                                    sJ d S )N)ge>R?Rz12?r^  r^  r^  r=   r&   r   )span)r   r   r  r   isfiniteallewmr]  s     r!   test_rolling_std_neg_sqrtrc    s    
 		
 	
 	
	 	A 	
			!!A;qu!!#####	1A;qu!!#######r#   c                      t          j        t          d          5  t          t	          d                                        dd           d d d            d S # 1 swxY w Y   d S )Nzstep must be an integerr+   r   r   r8   rM   r/   r0   r1   r   r.   r   r   r#   r!   test_step_not_integer_raisesrf    s    	z)B	C	C	C 3 3%((##AE#2223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3r  c                      t          j        t          d          5  t          t	          d                                        dd           d d d            d S # 1 swxY w Y   d S )Nzstep must be >= 0r+   r   r   r-   rM   re  r   r#   r!   test_step_not_positive_raisesrh    s    	z)<	=	=	= 0 0%((##AB#///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0r  )rH  r'   r   re   r   r?  g@@g     @D@UUUUUU?gUUUUUU8@)r   r   r  r   r  gUUUUUU@c                    t          |          }t          |           }|                    ||                                          }t          j        ||           t          j        |dk    |dk               |                    ||                                          }t          j        |t          j        |                     t          j        |dk    |dk               d S )Nr   r   )r   r   r  r`   r   r  r   sqrt)rH  r'   r   re   sr
result_var
result_stds          r!   'test_rolling_var_same_value_count_logicro    s    d hH	B F<<@@BBJ :x0008q=*/::: F<<@@BBJ:rwx'8'89998q=*/:::::r#   c                  *   t          g d          } |                     d          }|                                }|dd          dk                                    sJ |                                }|dd          dk                                    sJ d S )Nri  r   r   r   r   r   r   r=   r   r   )r   r   r   ra  r   rl  rrd   s      r!   (test_rolling_mean_sum_floating_artifactsrt  9  s     
)))	*	*B


1AVVXXF233K1!!#####UUWWF233K1!!#######r#   c                  *   t          g d          } |                     d          }|                                }|dd          dk                                    sJ |                                }|dd          dk                                    sJ d S )Nrq  r   r   r   )r   r   r  ra  r  rr  s      r!   )test_rolling_skew_kurt_floating_artifactsrw  D  s     
)))	*	*B


1AVVXXF233K1!!#####VVXXF233K2""$$$$$$$r#   c                    | }t          dgddd          }|d                             t                    |d<   |                    dd          }t	          ||          } ||          }|rdd	gng d}||                             |g                              d
                              t                    }t          |j	                  |k    sJ t          j        ||           d S )Nr   r   r=   r  r3   r   numeric_onlyrA  r^  Trt   )r   r   objectr   rV   rR   rv   r   ra  r   r`   ra   )	rw   rz  kernelr    r   oprd   r   re   s	            r!   test_numeric_only_framer~  O  s    %F	!11--	.	.BgnnV$$BsGjjj**G	&	!	!BR\***F(=sCjjoooG'{x((44$4??FFuMMH !!W,,,,&(+++++r#   r|  use_argc                    t          g dddd          }|d                             t                    |d<   |r|fnd}|                    dd          }t	          ||           } ||d	|i}|rd
dgng d}||                             t
                    }	|r|	fnd}
|	                    dd          }t	          ||           } ||
d	|i}t          j        ||           d S )NrK  r   r=   r  r3   r   r   r   rz  rA  r^  )r   r   r{  r   rV   r   r`   ra   )r|  rz  r  r    argr   r}  rd   r   df2arg2rolling2op2re   s                 r!    test_numeric_only_corr_cov_framer  _  s    
33	4	4BgnnV$$BsG
"2%%Cjjj**G	&	!	!BR0<00F )=sCjjoooG
W+

U
#
#C$C66"D{{1!{,,H
(F
#
#CsD4|44H&(+++++r#   r   c                    | }t          dg|          }|                    dd          }t          ||          }|rQ|t          u rHd| d}t	          j        t          |          5   ||           d d d            d S # 1 swxY w Y   d S  ||          }|                    |g                              d	
          	                    t                    }	t          j        ||	           d S )Nr   r8  r   r   Rolling.  does not implement numeric_onlyr+   ry  Trt   )r   r   rV   r{  r/   r0   rP   rR   rv   r   r   r`   r   )
rw   rz  r   r|  r   r   r}  r4   rd   re   s
             r!   test_numeric_only_seriesr  u  sM    &F
!E
"
"
"Ckk!k++G	&	!	!B 1AAAA].c::: 	* 	*BL))))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* ...77F8$$00d0;;BB5II
vx00000s   (BB	Bc                     t          g d|          }|r|fnd}|                    dd          }t          ||           }|rM|t          u rDd|  d}t	          j        t          |	          5   ||d
|i d d d            d S # 1 swxY w Y   d S  ||d
|i}	|                    t                    }
|r|
fnd}|
                    dd          }t          ||           } ||d
|i}t          j
        |	|           d S )NrK  r8  r   r   r   r   r  r  r+   rz  )r   r   rV   r{  r/   r0   rP   r   r   r`   r   )r|  r  rz  r   r   r  r   r}  r4   rd   ser2r  r  r  re   s                  r!   !test_numeric_only_corr_cov_seriesr    s   
 %
(
(
(C
#3&&Ckk!k++G	&	!	!B 1AAAA].c::: 	0 	0B/,///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 S4|44zz%  !)wwr<<q<11h''38<88
vx00000s   .	BBBr  )r   msusnsr,  )NUTCzEurope/Praguec           	         t          dt          d          it          ddd|                    }|                    d                                          }|j                            |           |_        |                    d                                          }|j                            d          |_        t          j        ||           t          dd	d|
          }t          d|          }d|j
        d<   |                    t          d                                                    }t          dd	| |
          }t          d|          }	d|	j
        d<   |	                    t          d                                                    }
t          |          }t          |
          }|j                            d          |_        t          j        ||           d S )Nrn   r%   z
2013-01-01r   )rK   rB   r,  rL   r  z
2023-01-01z
2023-01-10)r  r,  r   r   r   r>   )r   r.   r   r   r   rD   r  r`   ra   r   r   r   r   )r  r,  rz   sum_in_nanosecssum_in_microsecs	ref_dates
ref_seriesref_max_seriesr  series
max_seriesref_dfr    s                r!   -test_rolling_timedelta_window_non_nanosecondsr    s    	eAhhz,T1QSTTT  G ood++//11OM))$//GMt,,0022-3;;DAA/+;<<< <DRHHHI+++JJOA''	q(9(9(9::>>@@N|\DDDEAU###FFKN	q 1 1 1226688J~&&F	:		Bx%%BH&"%%%%%r#   )r   r   numpyr   r/   pandas.compatr   r   r   pandasr   r	   r
   r   r   r   r   r   r   r   pandas._testing_testingr`   pandas.api.indexersr   pandas.core.indexers.objectsr   pandas.tseries.offsetsr   r"   r5   markparametrizer&  r<   rQ   rX   rf   rl   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r#  r)  r2  r?  rD  rF  rJ  rS  r[  rd  ri  rm  from_tuplesr|  r  r  r  r  r  r  r  r  r  r  r  xfailr  r  r  r  r  r   r  r  r  r  r  r  r  r   r  r  r  r  r  r)  r;  rF  rS  rV  rY  r\  rc  rf  rh  r9  ro  rt  rw  r~  r  r   r{  r  r  r  r   r#   r!   <module>r     s"         
                                            + + + + + + D D D D D D . . . . . .' ' '  ( sE828QC==9::- - ;:-. 	q	q##*\1555kk!nn	
 	
 	
	
 
	) 	)
 
	) 00  10 II1$5$5$5yya7H7H7H#IJJ, , KJ,& II1$5$5$5yya7H7H7H$#OPP9 9 QP9", , ,$  111000000000111		
 222111111111111		
 111111111111222		
 222222222222222		
?), ,Z? ?[, ,Z?6 	w(	v'	v'	y///*	w(	v'	v'	y///*	 & & &" 	w0001	v///0	v///0	y2223	 & & &0 	"&"&!Q2r2r2>?	RVRVQ1aAr1=>	6667	5556	 & & &2 	"&"&!Q2r2r2>?	RVRVQ1b"b"a@A	6667	5556	 & & &6- - -, , ,4 Iv#677- - 87- %00F F 10F %00- - 10- (899	999:	8889		BFAq!Q1aA>?	Aq!Q1a;<	999:	8889		BFAq!Q1aA>?	Aq!Q1a;<	 	- 	-  :9	-- - - 	"&!Q1aArvrvFG	Aq!Q1a@A		BFBFAq!Q1bfbfMN	Aq!Q1bfEF	"&!Q1aArvrvFG	Aq!Q1a@A		BFBFAq!Q1bfbfMN	Aq!Q1bfEF	 - - - 	2223	???@	RVQS#sCc3GH	"&!S!Q1aA67	 
- 
- 
- D!9--, , .-,	- 	- 	-- - -- - -2 2 2, , ,$, , ,$- - -, , ,< D%=11- - 21-,- - -& & && & & $ IIIIIII6677s!%%s+1vQF++aV4 yyyyy11999=
 		
 IIIIIII6677s!%%s+1vQF++aV41vQF++aV4
 		
 IIIIIII6677s!%%s+1vQF++aV41vQF++aV4
 		
 IIIIIII6677s!%%s+s!%%s+s!%%s+
 		
 IIIIIII6677s!%%s+s!%%s+s!%%s+
 		
 
!A3''	(	("a6	!A3''	(	("a3	Bxj!T*IQN"&!Q@@AAuBF8,,qc226{"&!551v>261~RVQN;;YYYG
 		
m@C CH0 0IC CH0  s!%%s+1vQF++aV41vQF++aV4
 	
 s!%%s+1vQF++aV4 yyyyy11999=
 	
 s!%%s+s!%%s+s!%%s+
 	
# :0 0; :0"0 0 0 & F999cA3Z1a&1a&)IIIyyy+AB		
 F999cA3Z1a&1a&)IIIyyy+AB		
 F999cA3Z1a&1a&)QFQF+;<		
 F999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1 1C   B1 $ S1#sQC!%
<===
<===
<===
<===
<=== 
	
 S1a&1a&1a&1a&1
<===
<===
<===
<===
<=== 
	
 S1a&)))YYY			:
<===
<===
<===
<===
<=== 
	
/"% %L	1 	1M% %L	1  aL"J"888t  	
 3K"J"888d  	
 ", ,# ",& c
++, , ,+,D- - -	0 	0 	0& & &- - -0 NNN , ,	 ,, , ,, [[&&5L(M(MN , ,	 ,
, 
, 
,  L17IPUVVV	

 L(.@w   		
  	Aq!Q1a01	Aq!Q1a01	Aq!Q2r23 - -  .-- - - O,**,,    %	,,,-	FFFG	,,,-	FFFG	 7 7 	 72$ 2$ 2$j #W#W#WXXV V YXV 	w,,,-	v+++,	v+++,	y.../	w,,,-	v+++,	v+++,	y.../	 . . .( 	$$$%	$$$% & & &  ee		
 U5\\3edC4N	

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

 ee		
 e#e#$"$$		
G03 3h, ,i3 3h,B 	!	LsA	6	6	6= - - -, , ,, FF#344- - 54- 	///0	1112 - - -2 2 2
 At9--& & .-&7 7 7I I I 	
2223	
.../ $, $, $,N, , ,- - -
? 
? 
?", ", ",J >>>22#<#<#<==u..tUm44&G&G&GHH- - IH 54 /. >= 32
-*H H H  %=%=%=>>III  
+++000	bfc263'	(	bfc3,		c     ?> $S S S' ' '  $ $ $*3 3 3
0 0 0
 333 RAq!,VR!T1eQ7		
 RQ1-VR!Qfa8		
 VQ1aA&VHqL++++		
 1aAq!4VHqLE1:%14qzA		
 1aAq!4VHqLE1:%14{B		
 FQJVHqLE7Q;&		
 1bfaA&VQ!q(E72		
K+. .^; ;_. .^;6$ $ $% % %, , ,  FE?33T5M22, , 32 43,( 3-001 1 101  FE?33T5M223-001 1 10 32 431* !8!8!899===>>& & ?> :9& & &r#   