
    biB;                       d dl mZ d dlZd dlZd dlZd dlZd dlm	Z
 d dlmZ d dlmZ dZ ej                   ej"                  j%                  e      j'                         ej"                  j)                  def      ej"                  j)                  def      ej"                  j)                  def      ej"                  j)                  def      d      Z e
j,                  ed	      Z ej0                  d
dd      j3                   ej0                  d
dd            de Z ej0                  d
dd      de Zej"                  j%                  e      j'                         ej"                  j)                  def      ej"                  j)                  def      ej"                  j)                  def      ej"                  j)                  def      dZ ej                   ee      Z ej                   ee      Z e
j,                  ed	      ZdHdZ ejB                  jE                  dddg      ejB                  jE                  dddg      d               Z#ejB                  jE                  dddg      ejB                  jE                  dddg      ejB                  jE                  dddg      ejB                  jE                  dddg      ejB                  jE                  dddg      ejB                  jE                  ded d	fed	d fed	d	fed d fe ejH                  d	       ejH                  d	      fe ejH                  d	      d fg      d                                           Z%ejB                  jE                  dddg      ejB                  jE                  dddg      ejB                  jE                  dddg      ejB                  jE                  dddg      d                             Z&d Z'd  Z(d! Z)d"d#d$d%d&d'd(d)d*d+d,d-e)fdfgZ*ejB                  jE                  d.e*      ejB                  jE                  d/g d0      ejB                  jE                  d1ddg      d2                      Z+ejB                  jE                  d/g d0      ejB                  jE                  d1ddg      d3               Z,d4 Z-d5 Z.d6 Z/ejB                  jE                  d.e*      ejB                  jE                  d/dd7dej`                  jc                  d8      g      d9               Z2ejB                  jE                  d/dd7dej`                  jc                  d8      g      d:        Z3ejB                  jE                  d;g d<      d=        Z4ejB                  jE                  d/g d>      d?        Z5ejB                  jE                  d@g dA      dB        Z6dC Z7ejB                  jq                  e dDE      dF        Z9dG Z:y)I    )annotationsN)PANDAS_GE_210)	assert_eq(   d   size)abcde   z
2016-01-013s)freqperiods5s1sindexc                ^    | j                  |      }| j                  |       }| |z   |z   |z   S N)shift)dfbeforeafterr   r
   r   s         \/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/dask/dataframe/tests/test_rolling.pyshifted_sumr   3   s2    
A
%A6A:>    npartitions      use_dask_inputTFc           
        t         }|rt        j                  t         |       }dD ]  \  }}t        j                  t        |||||d      }t	        t         ||d      }t        ||       t        j                  t        |j                  ||||d      }t	        t         j                  ||d      }t        ||        y )N))r   r   )r   r   )r   r   )r   r      r   )r   ddfrom_pandasmap_overlapr   r   r   )r    r#   ddfr   r   ressols          r   test_map_overlapr-   9   s     CnnR-9 	nn[#vufeqQ"feq1#s nn[#%%QRS"$$3#s	r   enforce_metadatatransform_divisionsalign_dataframesoverlap_setup)secondsc                   |\  }}}|}	|dz  }
| r0t        j                  |	|      }	t        j                  |
|rdn|      }
d } ||       ||      }}t        j                  t        |	|||||
|||
      }t        ||||dz        }t	        ||       t        j                  t        |	j
                  |||||
j
                  |||
      }t        |j
                  |||j
                  dz        }t	        ||       y )Nr%   c                X    t        | t        j                        r| j                  dz
  S | S )Nr!   )
isinstancedatetime	timedeltar2   )overlaps    r   get_shifted_sum_argzAtest_map_overlap_multiple_dataframes.<locals>.get_shifted_sum_argp   s*    #-gx7I7I#JGOOa	
PW	
r   )r0   r/   r.   )r'   r(   r)   r   r   r   )r#   r    r.   r/   r0   r1   	dataframer   r   r*   ddf2r9   before_shifted_sumafter_shifted_sumr+   r,   s                   r   $test_map_overlap_multiple_dataframesr>   L   s   8  -Ivu
Cq=DnnS+.~~d)9A{K

 -@-5! *
 ..)/)C i!35F	TU
VCc3 ..)/)C '):IKK!OC c3r   c                r   t        j                  t        |       }|j                  t        ddddd|||	      }|j                  t        ddddd|||	      }t        |j                        t        |j                        k(  sJ |j                  t        ddddd|||	      }|j                  |j                  k7  sJ |j                  j                         |j                  j                         z
  }t        |      | k(  sJ |j                  t        ddddd      }	|	j                  |j                  k7  sJ y )Nr   r   r%   )r   r0   r/   r.   r&   )
r'   r(   r   r)   r   setdask_namekeyslen)
r    r.   r/   r0   r*   r+   res2res3diffres4s
             r   test_map_overlap_namesrI      s9    ..[
)C
//				
)/)  
C ??				
)/)  
D sxx=C		N***??				
)/)  
D ::"""99>>chhmmo-Dt9###??;1aa?8D::"""r   c            	     r   t        j                  t              5  t        j	                  t
        ddddd       d d d        t        j                  t              5  t        j	                  t
        ddddd       d d d        t        j                  t              5  t        j	                  t
        ddddd      j                          d d d        t        j                  t              5  t        j	                  t
        t        j                  d      t        j                  d      ddd       d d d        t        j                  t              5  t        j	                  t
        ddddd       d d d        y # 1 sw Y   CxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   qxY w# 1 sw Y   y xY w)	Ng      ?r   r   r%   r&   r   r   )pytestraises
ValueErrorr*   r)   r   NotImplementedErrorcompute	TypeErrorpd	Timedelta r   r   test_map_overlap_errorsrU      sR   	z	" 8S!QQ78 
z	" 7QAqA67 
*	+ DQQq9AACD 
y	! XR\\$%7d9KQPQUVWX 
y	! <T4A;< <!8 87 7D DX X< <s<    E; F.F+AF! F-;FFF!F*-F6c                    t        j                  g dg dd      j                  d      } t        j                  | d      }|j                  d ddd	d	d
      }| j                  d      j                         }t        ||       y )N)r!   r%   r"         )g      ?g       @g      @g      @g      @)xymyindexr%   r    c                @    | j                  d      j                         S )Nr%   )rollingsum)r   s    r   <lambda>z/test_map_overlap_provide_meta.<locals>.<lambda>   s    2::a=$$& r   r   i8)meta)	rR   	DataFramerename_axisr'   r(   r)   r^   r_   r   )r   r*   r+   r,   s       r   test_map_overlap_provide_metare      s}    	%>?
k)  ..
+C //&1D3I  C **Q-


Cc3r   c                j    t        j                  | | j                         z
        j                         S r   )npfabsmeanrY   s    r   madrk      s$    771qvvx< %%''r   )countrT   F)r_   rT   F)ri   rT   F)medianrT   F)minrT   F)maxrT   F)stdrT   T)varrT   T)skewrT   T)kurtrT   T)quantile)gRQ?Fapplyzmethod,args,check_less_precisewindow)r!   r%   r"      centerc                   |rddd}ni }| dk(  rd}nd }t         j                  |||      }t        j                  |||      }| dk(  rddi}ni }t         t	        ||       |i | t	        ||       |i |fi | t         j
                  j                  |||      }t        j
                  j                  |||      }t         t	        ||       |i | t	        ||       |i |fi | y )	NMbP?atolrtolrl   r   )rx   min_periodsru   rawF)r   r^   r*   r   getattrr
   )	methodargsrv   rx   check_less_preciser~   prollingdrollingkwargss	            r   test_rolling_methodsr     s    &*D9zz&[zIH{{6&k{JH!&!4262!&!4262  tt||F6{|KHuu}}VF}LH!&!4262!&!4262 r   c                   t         j                  dd      j                  | |      }t        j                  dd      j                  | |      }t	        |j                         |j                                t         j                  j                  | |      }t        j                  j                  | |      }t	        |j                         |j                                y )Nr
   r!   axis)rx   )r   dropr^   r*   r   covr   )rv   rx   r   r   s       r   test_rolling_covr   4  s     wwsw#++F6+BHxx!x$,,VF,CHhllnhlln- tt||F6|2Huu}}VF}3Hhllnhlln-r   c                 8   t        j                  g dg dd      } t        j                  | d      }t	        |j                  d      j                         j                        t	        |j                  d      j                         j                        k(  sJ y )N)r!   r%   r   )r"   rw      r
   r   r%   r\   )rR   rc   r'   r(   sortedr^   r_   rA   )r   r
   s     r   test_rolling_namesr   B  sk    	II6	7B
rq)A!))A,""$))*fQYYq\5E5E5G5L5L.MMMMr   c                    t        j                  t        j                  j	                  dd            } t        j                  | d      }| |f| d   |d   ffD ]  \  }}t        |j                  d      j                         |j                  d      j                                t        |j                  d      j                         |j                  d      j                                t        j                  t              5  |j                  d      j                         j                          d d d         y # 1 sw Y   xY w)	N2   r%   rw   r\   r   
   rX      )rR   rc   rg   randomrandnr'   r(   r   r^   ri   rL   rM   rO   rP   )r   r*   objdobjs       r   test_rolling_partition_sizer   H  s    	biioob!,	-B
..
+C3i"Q%Q1 .	T#++b/&&($,,r*:*?*?*AB#++b/&&($,,r*:*?*?*AB]]./ 	.LL!!#++-	. 	..	. 	.s   .D==E	c                     t         j                  d      } | j                  dk(  sJ | j                  J | j                  J y )N4s)dtsr^   rv   r~   win_type)results    r   test_time_rolling_constructorr   S  sD    [[F==D   %%%??"""r   2srw   c                   |rddd}ni }| dk(  rddi}ni }t         j                  |      }t        j                  |      }t         t	        ||       |i | t	        ||       |i |fi | t         j
                  j                  |      }t        j
                  j                  |      }t         t	        ||       |i | t	        ||       |i |fi | y )Nrz   r{   ru   r   F)tsr^   r   r   r   r
   )r   r   rv   r   r   r   r   s          r   test_time_rolling_methodsr   Z  s    
 &*D9 zz&!H{{6"H!&!4262!&!4262  tt||F#Huu}}V$H!&!4262!&!4262 r   c                   t         j                  dd      j                  |       }t        j                  dd      j                  |       }t	        |j                         |j                                t         j                  j                  |       }t        j                  j                  |       }t	        |j                         |j                                y )Nr
   r!   r   )r   r   r^   r   r   r   r   )rv   r   r   s      r   test_time_rolling_covr   {  s     wwsw#++F3Hxx!x$,,V4Hhllnhlln- tt||F#Huu}}V$Hhllnhlln-r   zwindow,N))r   r   )r   r   )10sr   )10hr   )r   r   )r   r   c                   t        j                  t        j                  d|d      t        j                  j                  d|f      d      }|j                  d      }t        j                  |d      }t        |j                  |       j                         |j                  |       j                                t        |j                  |       j                         |j                  |       j                                t        |j                  |       j                         |j                  |       j                                y )	N2016-01-01 00:00:00r   r   r   r   r   r   r
   rw   )rR   rc   
date_rangerg   r   randint	set_indexr'   r(   r   r^   r_   rl   ri   )rv   Nr   r*   s       r   +test_time_rolling_large_window_fixed_chunksr     s    
 
4adK""3aT"2	

B 
c	B
..Q
Cckk&!%%'F);)?)?)ABckk&!'')2::f+=+C+C+EFckk&!&&("**V*<*A*A*CDr   )r   r   20sr   c                   t        j                  t        j                  ddd      t        j                  j                  dd      d      }t        j                  |d      }|j                  g d	
      }|j                  d      }|j                  d      }t        |j                  |       j                         |j                  |       j                                t        |j                  |       j                         |j                  |       j                                t        |j                  |       j                         |j                  |       j                                y )Nr   r   r   r   )r   r   r   rw   )
r   rw         !   6   O   P   R   c   )	divisionsr
   )rR   rc   r   rg   r   r   r'   r(   repartitionr   r   r^   r_   rl   ri   )rv   r   r*   s      r   .test_time_rolling_large_window_variable_chunksr     s   	4cM""3V"4	

B ..Q
C
//$J/
KC	c	B
--
Cckk&!%%'F);)?)?)ABckk&!'')2::f+=+C+C+EFckk&!&&("**V*<*A*A*CDr   zbefore, after))6sr   )r   r   )r   r   c                X   | t         j                         j                        j                         }t         j	                  fd| |      }t        ||       t        j                  |       } t        j                  |      }t         j	                  fd| |      }t        ||       y )Nc                B    | j                        j                         S r   r^   rl   rY   rv   s    r   r`   z#test_time_rolling.<locals>.<lambda>      qyy'8'>'>'@ r   c                B    | j                        j                         S r   r   r   s    r   r`   z#test_time_rolling.<locals>.<lambda>  r   r   )r   rP   r^   rl   r)   r   rR   rS   )r   r   expectedr   rv   s       @r   test_time_rollingr     s    F{{}$$V,224H __@&%PFfh \\&!FLLE__@&%PFfhr   c                    t        j                  t        d      t        ddd      d      } t        j                  | d      }t        | j                  d      j                  d	d
g      |j                  d      j                  d	d
g             t        | j                  d      j                  dd d      |j                  d      j                  dd d             t        | j                  d      j                  dd	g      |j                  d      j                  dd	g             t        | j                  d      j                  ddd	gi      |j                  d      j                  ddd	gi             ddi}t         | j                  d      j                  d fi | |j                  d      j                  d fi |       y )Nrw   r   r   r%   ABr   r\   )rv   ri   rp   r_   c                0    t        j                  | d      S Nr!   )ddofrg   rp   rj   s    r   r`   z,test_rolling_agg_aggregate.<locals>.<lambda>  s    RVVAA=N r   c                0    t        j                  | d      S r   r   rj   s    r   r`   z,test_rolling_agg_aggregate.<locals>.<lambda>  s    bffQQ>O r   r   r   Tc                0    t        j                  | d      S r   r   rj   s    r   r`   z,test_rolling_agg_aggregate.<locals>.<lambda>  s    RVVAA-> r   c                0    t        j                  | d      S r   r   rj   s    r   r`   z,test_rolling_agg_aggregate.<locals>.<lambda>  s    bffQQ.? r   )	rR   rc   ranger'   r(   r   r^   aggru   )r   r*   r   s      r   test_rolling_agg_aggregater     s   	E!H5B?;	<B
..
+C


!
  &%11!!65/2
 


!
  u3N!OP1!!4O"PQ
 


!
  %11!!5&/2
 


!
  #v!781!!3"89
 T]F"

!
""#>I&I#1##$?J6Jr   zbuggy pandas implementation)reasonc                 V   t        j                  d       t        j                  t	        d      t	        ddd      d      } t        j                  | d      }d	 }t        | j                  d      j                  |dd
      |j                  d      j                  |dd
             y )Nnumbarw   r   r   r%   r   r   r\   c                2    t        j                  |       dz   S )Nrw   )rg   r_   rj   s    r   fz$test_rolling_numba_engine.<locals>.f  s    vvay1}r   T)enginer   )
rL   importorskiprR   rc   r   r'   r(   r   r^   ru   )r   r*   r   s      r   test_rolling_numba_enginer     s    
 	E!H5B?;	<B
..
+C 


1Ag48AQwD9r   c                    t        j                  t        d      dt        d      D  cg c]  } dt        |       z    c} z  dt        j                  dd      j                  d	      
      }t        j                  |d      }|j                  d      j                  d      j                         }|j                  d      j                  d      j                         }t        ||d       |j                  d      j                  j                  d      j                         }|j                  d      j                  j                  d      j                         }t        ||d       y c c} w )NiX  rw   x   g)column1group120190101<   )r   r   r      r\   r   15DF)check_divisions)rR   rc   r   strr   repeatr'   r(   groupbyr^   r_   r   r   ri   )ir   r*   r   actuals        r   test_groupby_rollingr     s   	Szs<A3Q<<<	
 mmJ3::2>
B ..
+Czz(#++E2668H[["**51557Fh6zz(#++33E:??AH[["**2259>>@Fh6 =s   E.)r   );
__future__r   r6   numpyrg   pandasrR   rL   dask.dataframer:   r'   dask.dataframe._compatr   dask.dataframe.utilsr   r   rc   r   r   cumsumr   r   r(   r*   r   unionidxidx_constant_freqts_datar   ts_constant_freqr   r   markparametrizer-   r7   r>   rI   rU   re   rk   &rolling_method_args_check_less_preciser   r   r   r   r   offsetsSecondr   r   r   r   r   r   skipifr   r   rT   r   r   <module>r      s*   "      0 *R\\YY__Q&&(YYs!.YYs!.YYs!.YYs!. bnnR BMM,T37==ls; 1	 #R]]<dCH"1M  
		"	"	$			3aT		*			3aT		*			3aT		*			3aT		* R\\

  2<</@A bnnR A/)D%=9 : 0" )D%=9A/+dE];.u>+dE];	Q
	Q
	Q
	Q
Hq)Hq)	

 
-8--a8!<9 < ? < 0 :(9x A/+dE];.u>+dE];.# < ? < 0.#b<,(
  !sfe#* &* $&L <0D%=1 2 1
B <0D%=1	. 2 1	.N.# $&L D$bjj6G6G6J#KL M: D$bjj6G6G6J#KL	. M	. RE	E #=>E ?E  *TU  V > %.KL M7r   