
    dy                    r   d dl mZ d dlmZ d dlZd dlZd dlZd dl	m
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 ej                            d          ej                            d          gZ G d	 d
          Ze G d d                      Z G d d          Ze G d d                      ZdS )    )annotations)AnyN)Version)	DataArrayDatasetset_options)assert_allcloseassert_array_equalassert_equalassert_identicalhas_daskrequires_daskrequires_numbaggzerror:Mean of empty slicez&error:All-NaN (slice|axis) encounteredc            
      \
   e Zd Zej                            ddd          ej                            dddg          ej                            dg d          d>d                                    Zej                            ddd          d?d            Zed?d            Z	d?dZ
d?dZej                            dd          ej                            dd          ej                            dd          ej                            ddgd          d?d                                                Zeej                            dd          ej                            dd          ej                            dd          ej                            dd          ej                            ddgd          d?d                                                                         Zej                            dd!          d?d"            Zej                            dd#          ej                            dd$          ej                            dd%          d?d&                                    Zej                            dd#          ej                            dd%          d?d'                        Zej                            ddd          ej                            dd#          ej                            dd$          ej                            dd%          ej                            dd(          d?d)                                                            Zej                            dd#          ej                            dd$          ej                            dd%          ej                            dd*          d?d+                                                Zd?d,Zej                            ddd          ej                            dd#          ej                            dd-          ej                            dd.          d?d/                                                Zej                            dd0          ej                            d1ej        d2f          d?d3                        Zej                            d4d5ej        ffd6d7d8g          d?d9            Zeej                            d:g d;          d?d<                        Zd=S )@TestDataArrayRollingda      TindirectcenterFsize)r   r         r   boolintreturnNonec                
   |                     ||          }|                                }t          |j                  t          |d                   k    sJ t	          |j        |d                    t          |          D ]\  }\  }}||d                             |          k    sJ |                    |          }	|                    d          }
t          j        	                    |	j
        |
j
                   d S )Ntimer   r"   r"   )rollingmeanlenwindow_labelsr   	enumerateiselnptestingr	   values)selfr   r   r   rolling_objrolling_obj_meanilabel	window_daactualexpecteds              9lib/python3.11/site-packages/xarray/tests/test_rolling.pytest_rolling_iterz&TestDataArrayRolling.test_rolling_iter   s     jjd6j::&++--;,--RZ@@@@2BvJ???%.{%;%; 	G 	G!A!yBvJOOO333333%***22F ~~f--HJ&&v}hoFFFF	G 	G    )r   c                   |                     d          }t          |          dk    sJ |                     dd          }t          |          dk    sJ |                     ddd          }t          |          d	k    sJ d S )
Nr   r#   zDataArrayRolling [time->7]Tr!   z"DataArrayRolling [time->7(center)]r   )r"   xr   z/DataArrayRolling [time->7(center),x->3(center)])r$   reprr-   r   r.   s      r5   test_rolling_reprz&TestDataArrayRolling.test_rolling_repr/   s    jjaj((K  $@@@@@jjaj55K  $HHHHHjja1Tj::K  $UUUUUUUr7   c                .   t          t          j                            dd          d          }|                    ddi          }|                    d                                                              d	                                           d S )
Ni  i,  )dayitemdimsr?      
   )r>      )r   r*   randomrandchunkr$   r%   std)r-   dat	dat_chunks      r5   test_repeated_rolling_rechunksz3TestDataArrayRolling.test_repeated_rolling_rechunks8   s     	tS11HHHIIvrl++	b!!&&((00S099==?????r7   c                R    |                     d          }d|j        j        v sJ d S )Nr   r#   z`mean`)r$   r%   __doc__r;   s      r5   test_rolling_docz%TestDataArrayRolling.test_rolling_doc?   s4    jjaj(( ;+3333333r7   c                   |                     d          }|j                            d          dk    sJ t          j        t
          d          5  |                     d           d d d            n# 1 swxY w Y   t          j        t
          d          5  |                     d	d
           d d d            d S # 1 swxY w Y   d S )N   r#   r"   r   window must be > 0match%min_periods must be greater than zeror   r   r"   min_periods)r$   objget_axis_numpytestraises
ValueErrorr;   s      r5   test_rolling_propertiesz,TestDataArrayRolling.test_rolling_propertiesE   sI   jjaj((++F33q8888 ]:-ABBB 	  	 JJBJ	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  ]:-TUUU 	. 	.JJA1J---	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.s$   A55A9<A9C  CCname)sumr%   rH   minmaxmedianTFNrW   r   Nbackendnumpyc                8   t          j        dd          }|                    d|          }d| } t          ||                      } t          ||          |j        dd|          }	t          |j        |	           t          j        t          d	
          5   t          ||          d           d d d            n# 1 swxY w Y   |                    d|          } t          ||                      d         }t          ||d                    d S )N
bottleneck1.1
minversionr   rV   move_r   windowaxis	min_countReductions are appliedrR   r"   dimr!   )	rZ   importorskipr$   getattrr,   r
   warnsDeprecationWarningr   )
r-   r   r^   r   rW   bnr.   	func_namer3   r4   s
             r5   test_rolling_wrapped_bottleneckz4TestDataArrayRolling.test_rolling_wrapped_bottleneckQ   sg   
  %@@@ jja[jAA"DNN	+d++--)72y))Iaa;
 
 
 	6=(333\,4LMMM 	3 	3&GK&&62222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 jjaj77+d++--f5VRZ(((((s   CCC)r%   countrn   )r      daskc                   |                     |||          } t          ||                                                      }|dk    rMt          j        t
          d          5   t          ||          d           d d d            n# 1 swxY w Y   |                                                     |||          } t          ||                      }t          ||           |                                                     |||          } t          ||                                                      }t          ||           d S )N)r"   rW   r   r{   rq   rR   r"   rr   )r$   ru   loadrZ   rv   rw   r	   rG   )	r-   r   r^   r   rW   rn   r.   r3   r4   s	            r5   test_rolling_wrapped_daskz.TestDataArrayRolling.test_rolling_wrapped_daskj   s    jjf+fjUU+d++--22447??08PQQQ 7 7*T**v66667 7 7 7 7 7 7 7 7 7 7 7 7 7 7 ggii''[ ( 
 
 .7;--// 	))) hhjj(([ ) 
 
 ,d++--2244)))))s   $BBB)TNc                   t          j        d           t          j        t	          j        dd          t	          j        dd          gd          }|                    d|                                          }|                                                    d|                                          }t          ||           d S )Nz
dask.arrayr   io  	dayofyear)coordsrA      )r   r   )
rZ   rt   xrr   r*   aranger$   r%   rG   r	   )r-   r   da_day_climr4   r3   s        r5   !test_rolling_wrapped_dask_nochunkz6TestDataArrayRolling.test_rolling_wrapped_dask_nochunk   s     	L)))lIaryC'8'8&9
 
 
 &&F&CCHHJJ""$$,,r&,IINNPP)))))r7   TFNr   r   r   r   r   r   rP   c                   t          j        t          j        d                    }t	          j        |          }|||k     r|}|                    |||                                          }|                    |||                                          }|                    |||                              t          j	                  }t          j
                            |j        |j                   t          j
                            |j        |d                    t          j
                            |j        |j                   t          j
                            |j        |d                    d S )NrC   r   rW   indexr   rW   r   )pdSeriesr*   r   r   from_seriesr$   r%   reducenanmeanr+   r	   r,   r   )	r-   r   rn   rW   sr   	s_rolling
da_rollingda_rolling_nps	            r5   test_rolling_pandas_compatz/TestDataArrayRolling.test_rolling_pandas_compat   sC    Ibimm$$"1%%"v';'; KIIfVIMMRRTT	ZZ[   
 

$&& 	 

[ # 
 

&

 	 	
""9#3Z5FGGG

""9?Jw4GHHH

""9#3]5IJJJ

""9?M'4JKKKKKr7   c                   t          j        t          j        d                    }t	          j        |          }|                    ||d                                          }|                    ||d          }|                    d                              d          }t          j	        
                    |j        |j                   t          j	        
                    |j        |d                    |                    dd                              d          }t          j	        
                    |j        d d d         |j                   t          j	        
                    |j        d d d         |d                    |                    ddd	
                              d          }|                                                                dk    sJ |d	k                                    dk    sJ d S )NrC   r   r   r   rn   r   r   stride        r   
fill_valuer   )r   r   r*   r   r   r   r$   r%   	constructr+   r	   r,   r   isnullr_   )r-   r   rn   r   r   r   r   da_rolling_means           r5   test_rolling_constructz+TestDataArrayRolling.test_rolling_construct   s    Ibimm$$"1%%IIfVICCHHJJ	ZZfVZKK
$..x88==hGG

""9#3_5KLLL

""9?OG4LMMM %..x.BBGGQQ

""9#3CCaC#8/:PQQQ

""9?33Q3#79QRRR %..xc.RRWW
 
 %%''++--22223&++--222222r7   )r_   r%   rH   ra   c                x   |||k     r|}|                                                                 dk    r|dk    rd}|                    |||          }|                    t	          t
          d|z                      } t	          ||                      }t          ||           |j        |j        k    sJ d S )Nr   r   r"   r   rW   nan%s)r   r_   r$   r   ru   r*   r	   rA   )	r-   r   r   rW   rn   r^   r.   r3   r4   s	            r5   test_rolling_reducez(TestDataArrayRolling.test_rolling_reduce   s     "v';'; K99;;??q  Vq[[FjjfVjUU ##GB$$?$?@@-7;--//))){hm++++++r7   r_   ra   c                   t          dt          j        ddt          j        dddt          j        ddgd	
                                          }|||k     r|}|                    |||          }|                    t          t          d|z                      } t          ||                      }t          ||           |j        |j        k    sJ d S )Nr   r   r   r   rP         r   r"   r@   r   r   )	r   r*   nanr   r$   r   ru   r	   rA   )	r-   r   rW   rn   r^   r   r.   r3   r4   s	            r5   test_rolling_reduce_nonnumericz3TestDataArrayRolling.test_rolling_reduce_nonnumeric   s    
 1bfaArvq!<6
 
 

&(( 	 "v';'; KjjfVjUU ##GB$$?$?@@-7;--//))){hm++++++r7   c                J   t          dt          j        ddt          j        dddt          j        ddgd	
          }ddddd ddddg}t          g dd	
          t          t          j        t          j        t          j        t          j        t          j        t          j        t          j        t          j        t          j        t          j        t          j        gd	
          t          t          j        t          j        dddddddddgd	
          g}t          ||          D ]}\  }} |j        di |                                }t          ||            |                    d          j        di |                                d         }t          ||           ~d S )Nr   r   r   r   rP   r   r   r   r"   r@      rV   )r   r   r   r   r   rP   r   r   r   r   r|   var1)r^    )r   r*   r   zipr$   r{   r   
to_dataset)r-   r   kwargs	expectedskwargr4   results          r5   test_rolling_count_correctz/TestDataArrayRolling.test_rolling_count_correct   s   261aAq"&!QGfUUU **--q))(
 777fEEEFFFFFFFFFFF     rvrvq!Q1aAqAOOO%
	*  #6955 	+ 	+OE8RZ((%((..00F***7R]]]//7@@%@@FFHHPF****	+ 	+r7   Nr   )r_   r%   ra   c                L   |                     dd||          } t          ||                      } t           t          |                     d||          |                                           d||          |                      }t          ||           |j        |j        k    sJ |dv rr t          |                    ddd	          |          ddg          }|                                }|d
}t          ||                    ||k                         d S d S )Nr   r   r"   r9   r   rW   r   r9   r   rW   )r%   twxwr"   r9   r   )r$   ru   r	   rA   r   r{   where)	r-   r   r   rW   r^   r.   r3   r4   r{   s	            r5   test_ndrolling_reducez*TestDataArrayRolling.test_ndrolling_reduce  sQ   
 jja1VjUU+d++--
7G

&k
JJD   !FDD	
 
   	))){hm++++8Vw{44d5N5NOOQUVVt H  %%''E"FHNN5K3G$H$HIIIII r7   TFr   r   r   c                L   t          t          j        d                              ddd                              t
                    g dg dt          j        d          d          }|                    d	d
|                              dd|          }t          |t                    s||f}|                    d	|d                                       d|                              d
|d                                       d|          }t          ||           d S )N   r   r   r   r9   yzabcder9   r   rA   r   r   r   r9   r   r   x1z1r9   r   r   r   r9   r   r9   r   r   r   r   r   r   )r   r*   r   reshapeastypefloatr$   r   
isinstancetupler	   )r-   r   r   r   r3   r4   s         r5   test_ndrolling_constructz-TestDataArrayRolling.test_ndrolling_construct-  s#    Ii  ((Aq1188?? 2221FF
 
 

 a1V44>>dz ? 
 
 &%(( 	&f%FJJ6!9J--Y*Y55WqW++Y*Y55	 	 	)))))r7   funcname, argumentr   r%   r   r   )
window_dimr{   r   c                F   ddi}t          j        ddd          }t          j        ddd          }t          |dd|i|d	          }t          |                    dd
i          |          } || }|j        |k    sJ |j        dk    sJ t          |                    dd
i          |          } ||ddi}|j        i k    sJ |j        dk    sJ t          |                    dd
i          |          }t          d          5   || }d d d            n# 1 swxY w Y   |j        i k    sJ |j        dk    sJ t          |                    dd
i          |          }t          d          5   ||ddi}d d d            n# 1 swxY w Y   |j        |k    sJ |j        dk    sJ t          |                    dd
i          |          }t          d          5   ||ddi}d d d            n# 1 swxY w Y   |j        i k    sJ |j        dk    sJ d S )Nda_attrtestrC      d   r   coordr^   )rA   r   attrsr^   r   rr   
keep_attrsFr   T)r*   linspacer   ru   r$   r   r^   r   )	r-   funcnameargumentattrs_dadatar   r   funcr   s	            r5   test_rolling_keep_attrsz,TestDataArrayRolling.test_rolling_keep_attrsB  sN    v&{2r3''QC(('6):(QW
 
 

 rzzwlz33X>>x|x''''{f$$$$ rzzwlz33X>>x2E22|r!!!!{f$$$$ rzzwlz33X>>E*** 	% 	%T8_F	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%|r!!!!{f$$$$ rzzwlz33X>>E*** 	6 	6T8555F	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6|x''''{f$$$$rzzwlz33X>>D))) 	7 	7T8666F	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7|r!!!!{f$$$$$$s6   
DD #D 7	FFF'	G<<H H dtype)r   float32float64c                P   t          t          j        g d|          ddg di          }|                    dd                                          }|                    ddi                              dd                                          }|j        |j        k    sJ d S )N)r   r   r   )r   r9   r   r   r   )r9   rW   )r   r*   arrayr$   r%   rG   r   )r-   r   r   unchunked_resultchunked_results        r5   test_rolling_dask_dtypez,TestDataArrayRolling.test_rolling_dask_dtypeu  s     HYYYe,,,3YYY?O
 
 
  <<!<;;@@BBS!H--55q5IINNPP#'7'=======r7   N)r   r   r   r   r   r   r   r   r   r   )__name__
__module____qualname__rZ   markparametrizer6   r<   r   rK   rN   r]   rz   r   r   r   r   r   r   r   r   r*   r   r   r%   r   r   r   r7   r5   r   r      s-       [T6D99[Xe}55[V\\\22G G G 32 65 :9G [T4$77V V V 87V @ @ @ ]@4 4 4 4
. 
. 
. 
. [V%STT[X':;;[]I66[Y	DAA) ) ) BA 76 <; UT)* [V%677[X':;;[]I66[Xv..[Y4@@* * * A@ /. 76 <; 87 ]*0 [X|44	* 	* 	* 54	* [X}55[]O<<[X|44L L L 54 =< 65L( [X}55[X|443 3 3 54 653. [T6D99[X}55[]O<<[X|44[V%BCC, , , DC 54 =< 65 :9
,  [X}55[]O<<[X|44[V^44, , , 54 54 =< 65, "+ "+ "+ "+H [T4$77[X}55[]I66[V%;<<J J J =< 76 65 87J0 [X'CDD[\BFC=99* * * :9 ED*& [z"*		
 (% (% (% (%T [W&C&C&CDD> > > ED ]> > >r7   r   c            	         e Zd Zej                            dddg          ej                            dddgddgd	dgd
dgg          ej                            ddgd          ej                            dddg          dd                                                Zej                            dddg          ej                            dddgddgd	dgd
dgg          ej                            ddgd          dd                                    Zej                            ddgd          ej                            dddg          dd                        ZdS )TestDataArrayRollingExprs   r"   r9   zwindow_type, windowspanr   alphag      ?comhalflifere   rf   Tr   r   r%   r_   r   r   c                R   dd l }t          t          |dd                    t          d          k     r|dk    rt          j        d           |                    |dk              } |j        d	d|i||i} t          ||                      }t          |t                    sJ d S )
Nr   __version__0.1.00.2.1r_   &rolling_exp.sum requires numbagg 0.2.1皙?window_typer   )	numbaggr   ru   rZ   skipr   rolling_expr   r   )	r-   r   rs   r  rn   r   r  r  r   s	            r5   test_rolling_exp_runsz-TestDataArrayRollingExp.test_rolling_exp_runs  s     	 GG]G<<==@P@PPPK@AAAXXb3h$bnNNNfNN+d++--&),,,,,,,r7   c           	        |                     d                              d           } |j        dd|i||i                                }t	          |t
                    sJ |                                }|j        j        dk    sJ |dk    r|j	        } t          j         |j        di ||i                                          j        |j         }t          |j        |j                   d S )Nr   )r   c                    | dk    S )Nr  r   r9   s    r5   <lambda>zFTestDataArrayRollingExp.test_rolling_exp_mean_pandas.<locals>.<lambda>  s
    !c' r7   r  r"   r9   r   )r)   r   r  r%   r   r   	to_pandasr   r^   Tr   ewm	transposerA   r	   variable)r-   r   rs   r  rn   r   pandas_arrayr4   s           r5   test_rolling_exp_mean_pandasz4TestDataArrayRollingExp.test_rolling_exp_mean_pandas  s    WWqW\\ 1 122IIKIC=IINNPP&),,,,,||~~!&&0000#::'>L2<L55V455::<<
 

RW 	)6?;;;;;r7   c                v   dd l }t          t          |dd                    t          d          k     r|dk    rt          j        d           ddi}||_        t          |                    d	
          |          } |            }|j        |k    sJ  |d          }|j        i k    sJ t          d          5   |            }d d d            n# 1 swxY w Y   |j        i k    sJ t          d          5   |d          }d d d            n# 1 swxY w Y   |j        |k    sJ t          d          5   |d          }d d d            n# 1 swxY w Y   |j        i k    sJ t          j        t          d          5  |                    d	d           d d d            d S # 1 swxY w Y   d S )Nr   r  r	  r
  r_   r  r   r   rC   r#   Fr   T8Passing ``keep_attrs`` to ``rolling_exp`` has no effect.rR   r"   r   )
r  r   ru   rZ   r  r   r  r   rv   UserWarning)r-   r   r   r  r   rolling_exp_funcr   s          r5   test_rolling_exp_keep_attrsz3TestDataArrayRollingExp.test_rolling_exp_keep_attrs  s    	 GG]G<<==@P@PPPK@AAA$ #2>>r>#:#:DAA "!##|u$$$$ "!U333|r!!!! E*** 	( 	(%%''F	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(|r!!!! E*** 	7 	7%%666F	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7|u$$$$D))) 	8 	8%%777F	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8|r!!!!\L
 
 
 	5 	5 NNtN444		5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5sH   =CCC<DDD=EEE	F..F25F2Nr   )	r   r   r   rZ   r   r   r  r  r"  r   r7   r5   r  r    s       [UVSM22[
!wnuclZOD  [Y	DAA[Vfe_55- - - 65 BA	  32- [UVSM22[
!wnuclZOD  [Y	DAA< < < BA	  32<  [Y	DAA[Vfe_55)5 )5 )5 65 BA)5 )5 )5r7   r  c            	         e Zd Zej                            ddej        ffdddg          d/d            Zd/d	Z	ej                            d
d          ej                            dd          ej                            dd          ej                            dd          ej                            ddgd          d/d                                                            Z
ej                            dd          ej                            dd          ej                            dd          d/d                                    Zej                            dd          ej                            dd          d/d                        Zej        j        ej                            ddd          ej                            dd          ej                            dd          ej                            dd          ej                            d
d          d/d                                                                        Zej                            dd d          ej                            dd          ej                            dd!          ej                            d
d"          ej                            d#d          d/d$                                                            Zej                            dd%          ej                            d&ej        d'f          ej                            d#d          d/d(                                    Zej                            d)*          ej                            d+          ej                            dd d          ej                            d
d,          d/d-                                                Zd.S )0TestDatasetRollingr   r   r   r   r   r   r   c                   ddd}ddi}ddi}t          j        ddd          }t          j        d	dd          }t          d
|fd|fdd
|i|          }||j        _        ||j        _        t          |                    d
di          |          }	 |	| }
|
j        |k    sJ |
j        j        |k    sJ |
j        j        |k    sJ |
j        j        dk    sJ |
j        j        dk    sJ t          |                    d
di          |          }	 |	|ddi}
|
j        i k    sJ |
j        j        i k    sJ |
j        j        i k    sJ |
j        j        dk    sJ |
j        j        dk    sJ t          |                    d
di          |          }	t          d          5   |	| }
d d d            n# 1 swxY w Y   |
j        i k    sJ |
j        j        i k    sJ |
j        j        i k    sJ |
j        j        dk    sJ |
j        j        dk    sJ t          |                    d
di          |          }	t          d          5   |	|ddi}
d d d            n# 1 swxY w Y   |
j        |k    sJ |
j        j        |k    sJ |
j        j        |k    sJ |
j        j        dk    sJ |
j        j        dk    sJ t          |                    d
di          |          }	t          d          5   |	|ddi}
d d d            n# 1 swxY w Y   |
j        i k    sJ |
j        j        i k    sJ |
j        j        i k    sJ |
j        j        dk    sJ |
j        j        dk    sJ d S )Nr   r+   )units	long_namer   da_not_rolled_attrrC   r   r   r   r   no_coord)r   da_not_rolled)	data_varsr   r   r   rr   r   r*  r   Fr   T)
r*   r   r   r   r   r*  ru   r$   r^   r   )r-   r   r   global_attrsda_attrsda_not_rolled_attrsr   r   dsr   r   s              r5   r   z*TestDatasetRolling.test_rolling_keep_attrs  s    "(i@@v&3V<{2r3''QC((%t_
D?QRRV$
 
 

 !4 rzzwlz33X>>x||++++y(****#)-@@@@@y~%%%%#(O;;;; rzzwlz33X>>x2E22|r!!!!y"$$$$#)R////y~%%%%#(O;;;; rzzwlz33X>>E*** 	% 	%T8_F	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% |r!!!!y"$$$$#)R////y~%%%%#(O;;;; rzzwlz33X>>E*** 	6 	6T8555F	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 ||++++y(****#)-@@@@@y~%%%%#(O;;;;rzzwlz33X>>D))) 	7 	7T8666F	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 |r!!!!y"$$$$#)R////y~%%%%#(O;;;;;;s6   &F88F<?F<	I##I'*I'9	LLLc                   t          j        t          d          5  |                    d           d d d            n# 1 swxY w Y   t          j        t          d          5  |                    dd           d d d            n# 1 swxY w Y   t          j        t          d	          5  |                    d
           d d d            d S # 1 swxY w Y   d S )NrQ   rR   rT   r#   rU   r   r   rV   time2)r1  )rZ   r[   r\   r$   KeyError)r-   r/  s     r5   r]   z*TestDatasetRolling.test_rolling_properties(  s   ]:-ABBB 	  	 JJBJ	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 ]:-TUUU 	. 	.JJA1J---	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.]87333 	  	 JJQJ	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 s3   ?AA%B		BB/CCCr^   )r_   r%   rH   varr`   ra   rb   r   rc   rW   rd   key)r   z2re   rf   Tr   c                   t          j        dd          }|                    d|          }d| } t          ||                      }	|dk    r	||         }
n6|dk    r) t          ||          ||         j        dd	|
          }
nt
          t          |	|         j        |
           |                    d|          } t          ||                      d         }	t          |	|d                    d S )Nrh   ri   rj   r   rV   rl   r   r5  r   rm   r!   r"   )rZ   rt   r$   ru   r,   r\   r
   r   )r-   r/  r^   r   rW   r4  rx   r.   ry   r3   r4   s              r5   rz   z2TestDatasetRolling.test_rolling_wrapped_bottleneck1  s     %@@@ jja[jAA"DNN	+d++--$;;#wHHD[[-wr9--3qqK  HH 6#;-x888 jjaj77+d++--f5VRZ(((((r7   r   r   rn   r   c           	     x   t          j        t          j                            d          t          j                            d          t          j        ddd          d          }t          j        |          }|||k     r|}|                    |||          	                                }|                    |||          	                                }t          j
                            |d         j        |d         j                   t          j
                            |j        |d                    d S )	NrB   r   r   r9   r   r"   r   r   r9   r   )r   	DataFramer*   rE   randnr   r   from_dataframer$   r%   r+   r	   r,   r   )r-   r   rn   rW   dfr/  
df_rolling
ds_rollings           r5   r   z-TestDatasetRolling.test_rolling_pandas_compatQ  s    \Y__R((Y__R((Aq"-- 
 
 #B''"v';'; KZZv;ZOOTTVV
ZZ[   
 

$&& 	 	
"":c?#9:c?;QRRR

"":#3Z5HIIIIIr7   c           	     
   t          j        t          j                            d          t          j                            d          t          j        ddd          d          }t          j        |          }|                    ||d          	                                }|                    ||          }|
                    d          	                    d          }t          j                            |d         j        |d         j                   t          j                            |j        |d	                    |
                    dd
          	                    d          }t          j                            |d         d d d
         j        |d         j                   t          j                            |j        d d d
         |d	                    |
                    dd
d          	                    d          }|                                                                dk                        d                                          sJ |d         dk                                    dk    sJ d S )NrB   r   r   r8  r   )r   r   rn   r9   r   r   r   r   r   varsrr   )r   r9  r*   rE   r:  r   r   r;  r$   r%   r   r+   r	   r,   r   r   r_   to_arrayall)r-   r   rn   r<  r/  r=  r>  ds_rolling_means           r5   r   z)TestDatasetRolling.test_rolling_constructi  s4    \Y__R((Y__R((Aq"-- 
 
 #B''ZZv1ZEEJJLL
ZZfVZ<<
$..x88==hGG

"":c?#9?3;O;VWWW

"":#3_W5MNNN %..x.BBGGQQ

""sOCCaC ')=)D	
 	
 	
 	
"":#3CCaC#8/':RSSS$..xc.RRWW
 
  &&((,,..!3==&=IIMMOOOOO$+0022a777777r7   r/  r   c                b   |||k     r|}|dk    r|dk    rt          j        d           |                    |||          }|                    t	          t
          d|z                      } t	          ||                      }t          ||           |j        |j        k    sJ t          |j	        
                                          t          |j	        
                                          k    sJ |j	                                        D ]\  }	}
|
j        ||	         j        k    sJ d S )NrH   r   z.std with window == 1 is unstable in bottleneckr   r   )rZ   r  r$   r   ru   r*   r	   rA   listr+  keysitems)r-   r/  r   rW   rn   r^   r.   r3   r4   r4  src_vars              r5   r   z&TestDatasetRolling.test_rolling_reduce  s9    "v';'; K5==Vq[[KHIIIjjfVjUU ##GB$$?$?@@-7;--//)))w&+%%%%BL%%''((D1A1F1F1H1H,I,IIIII L..00 	4 	4LC<6#;#333333	4 	4r7   )r   r   r   r}   c                   |rt           r|                    ddi          }|                    dd||          } t          ||                      } t           t          |                    d||          |                                          d||          |                      }t	          ||           |j        |j        k    sJ  t           t          |                    d||          |                                          d||          |                      }t	          ||           |j        |j        k    sJ d S )Nr9   rP   r   r   r   r   )r   rG   r$   ru   r	   rA   )	r-   r/  r   rW   r^   r}   r.   r3   r4   s	            r5   r   z(TestDatasetRolling.test_ndrolling_reduce  sv     	$H 	$3(##Bjja1VjUU+d++--
7G

&k
JJD   !FDD	
 
   	))){hm++++
7G

Qv;
GG   Qv;GG	
 
   	))){hm++++++r7   r   r   r   c                   t          t          j        d                              ddd                              t
                    g dg dt          j        d          d          }t          j        d	|i          }|rt          r|	                    d
di          }|
                    dd|                              dd|          }t          |t                    s||f}|
                    d|d                                       d|          
                    d|d                                       d|          }t          ||           d S )Nr   r   r   r   r   r   r   r   r   r9   rP   r   r   r   r   r   r   r   r   r   r   r   r   )r   r*   r   r   r   r   r   r   r   rG   r$   r   r   r   r	   )r-   r   r   r}   r   r/  r3   r4   s           r5   r   z+TestDatasetRolling.test_ndrolling_construct  sZ    Ii  ((Aq1188?? 2221FF
 
 

 Zr
## 	$H 	$3(##Ba1V44>>dz ? 
 
 &%(( 	&f%FJJ6!9J--Y*Y55WqW++Y*Y55	 	 	)))))r7   z;See https://github.com/pydata/xarray/pull/4369 or docstring)reasonerror)r%   ra   c           	     ^   |                     ddi          }|                    dd          } t          ||                      } t           t          |                    d          |                                          d          |                      }t          ||           dS )u   
        This is a puzzle — I can't easily find the source of the warning. It
        requires `assert_allclose` to be run, for the `ds` param to be 2, and is
        different for `mean` and `max`. `sum` raises no warning.
        r9   rP   r   r   r#   r  N)rG   r$   ru   r	   )r-   r/  r^   r.   r3   r4   s         r5   /test_raise_no_warning_dask_rolling_assert_closezBTestDatasetRolling.test_raise_no_warning_dask_rolling_assert_close  s     XXsAhjja1j--+d++--R7<72::1:#5#5t<<>>FFFKKTRRTT)))))r7   Nr   )r   r   r   rZ   r   r   r*   r%   r   r]   rz   r   r   slowr   r   r   r   xfailfilterwarningsrN  r   r7   r5   r$  r$    sv       [z"*		
 @< @< @< @<D        [E  [X':;;[]I66[UL11[Y	DAA) ) ) BA 21 76 <; )2 [X}55[]O<<[X|44J J J 54 =< 65J* [X}55[X|448 8 8 54 658< [[T6D99[X}55[]O<<[X|44[E 4 4 4  54 =< 65 :9 4* [T4$77[X}55[]I66[V^44[V]33, , , 43 54 76 65 87
,6 [X'CDD[\BFC=99[V]33* * * 43 :9 ED*. [L    [(([T4$77[V_55* * * 65 87 )( * * *r7   r$  c                      e Zd Zej                            ddgd          d
d            Zej                            ddgd          d
d            Zd	S )TestDatasetRollingExpre   rf   Tr   r   r   c                    |                     dd                                          }t          |t                    sJ d S )NrC   r  )r"   r  )r  r%   r   r   )r-   r/  r   s      r5   test_rolling_expz&TestDatasetRollingExp.test_rolling_exp  s?    RV<<AACC&'*******r7   c                   ddi}ddi}||_         ||j        _         |                    d                                          }|j         |k    sJ |j        j         |k    sJ |                    d                              d          }|j         i k    sJ |j        j         i k    sJ t	          d          5  |                    d                                          }d d d            n# 1 swxY w Y   |j         i k    sJ |j        j         i k    sJ t	          d          5  |                    d                              d	          }d d d            n# 1 swxY w Y   |j         |k    sJ |j        j         |k    sJ t	          d	          5  |                    d                              d          }d d d            n# 1 swxY w Y   |j         i k    sJ |j        j         i k    sJ t          j        t          d
          5  |                    dd	           d d d            d S # 1 swxY w Y   d S )Nr   globalattrr   rC   r#   Fr   Tr  rR   r  )r   r   r  r%   r   rZ   rv   r   )r-   r/  attrs_globalattrs_z1r   s        r5   r"  z1TestDatasetRollingExp.test_rolling_exp_keep_attrs  s   *D> R((--//||++++y(**** R((---??|r!!!!y"$$$$ E*** 	4 	4^^^,,1133F	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4|r!!!!y"$$$$ E*** 	C 	C^^^,,11T1BBF	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C||++++y(****D))) 	D 	D^^^,,11U1CCF	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D|r!!!!y"$$$$\L
 
 
 	5 	5 NNtN444		5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5sH   <)C11C58C5++E""E&)E&+GGGH==IINr   )r   r   r   rZ   r   r   rU  r"  r   r7   r5   rS  rS    s        [Y	DAA+ + + BA+ [Y	DAA&5 &5 &5 BA&5 &5 &5r7   rS  )
__future__r   typingr   rf   r*   pandasr   rZ   packaging.versionr   xarrayr   r   r   r   xarray.testsr	   r
   r   r   r   r   r   r   rQ  
pytestmarkr   r  r$  rS  r   r7   r5   <module>rb     s   " " " " " "                % % % % % %     2 2 2 2 2 2 2 2 2 2                  K:;;
KGHH
a> a> a> a> a> a> a> a>H X5 X5 X5 X5 X5 X5 X5 X5vW* W* W* W* W* W* W* W*t -5 -5 -5 -5 -5 -5 -5 -5 -5 -5r7   