
    bMh&                     0   d dl Zd dlZd dl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 ej                            d          Zd Zej                            dg d          d             Zd	 Zej                            d
ddg          d             Zd Zd Zd Zd Zd Zd Zej                            ddddigddgg          d             Z d Z!d Z"d Z#d Z$d Z%d Z&ej                            dg d           d!             Z'd" Z(d# Z)d$ Z*dS )%    N)		DataFrameIndex
MultiIndexSeries	Timestampconcat
date_rangeisnanotna)offsetsz3ignore:.*(empty slice|0 for slice).*:RuntimeWarningc                 Z    | t          j        |                                                    S N)npisfinitemeanxs    ^/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/pandas/tests/window/test_apply.pyfr      s!    R[^^!!###    bad_raw)N   r   c                     t          j        t          d          5  t          t	          d                                        d                              t          |            d d d            d S # 1 swxY w Y   d S )Nz'raw parameter must be `True` or `False`match   r   raw)pytestraises
ValueErrorr   rangerollingapplylen)r   s    r   test_rolling_apply_invalid_rawr&      s    	z)R	S	S	S < <uQxx  ##))#7);;;< < < < < < < < < < < < < < < < < <s   A
A33A7:A7c                    | \  }}t          g d          }|                    d                              t          j        ||          }|                                                                sJ |                    dd                              t          j        ||          }t          g dt                    }t          j	        ||           d S )N)r      r      
   enginer   r   min_periods)r   r      r*   dtype)
r   r#   r$   r   sumr
   allfloattmassert_almost_equal)engine_and_rawr,   r   valsresultexpecteds         r    test_rolling_apply_out_of_boundsr;   $   s     KFC,,,D\\"##BF6s#CCF;;==\\"!\,,2226&c2RRFmmm5111H68,,,,,r   windowr(   2sc                    t          t          j                            d                              d          t          j                            d                              ddd          dt          ddd	          
          fd}                    |                               |d          }j	        dd          
                              }t          j        ||           t          j        t                    5                      |                               |d           d d d            d S # 1 swxY w Y   d S )Nr(      r   r*   )sizeAB20130101speriodsfreqindexc                 n    | j         d         j         d         k    rt          j        S | j        d         S )Nr   )rJ   r   naniloc)r   dfs    r   r   z1test_rolling_apply_with_pandas_objects.<locals>.f?   s-    71:!$$6Mvbzr   Fr   T)r   r   randomdefault_rngstandard_normalintegersr	   r#   r$   rN   reindex_liker5   assert_frame_equalexternal_error_raisedAttributeError)r<   r   r9   r:   rO   s       @r   &test_rolling_apply_with_pandas_objectsrX   2   s    
&&q))99!<<&&q))221bq2AA	
 	
 QS999
 
 
B    
 ZZ%%aU%33Fwqrr{''++H&(+++		!.	1	1 . .


6   ---. . . . . . . . . . . . . . . . . .s   +E  EEc                 &   | \  }}t          g d          }|                    d|                              d ||          }t          j        ||           t          g d          }|                    dd	|
                              d ||          }t          g d          d d |         }t          j        ||           |                    dd	|
                              t
          ||          }t          j        ||           d S )Nfloat64r0   r*   )stepc                 *    |                                  S r   )r   r   s    r   <lambda>z$test_rolling_apply.<locals>.<lambda>Q   s    !&&(( r   r+   )NNNr(   r   r.   r[   c                      t          |           S r   )r%   r   s    r   r]   z$test_rolling_apply.<locals>.<lambda>X   s    #a&& r   )      ?       @ra   )r   r#   r$   r5   assert_series_equalr%   )r7   r[   r,   r   r:   r9   rE   s          r   test_rolling_applyrc   L   s,    KFCb	***Hbt,,226s 3  F 68,,, 	!!!""AYYqadY3399S :  F ooo&&vvv.H68,,,YYqadY3399#fRU9VVF68,,,,,r   c                    | \  }}t          t          ddd          t          d          d                              d          dz  }|                    d	          }|                    d
	          }|                    d ||          }|                    d ||          }t          j        ||           d S )NrD   r?   rE   rF   rA   rB   r(   r   )r<   1sc                     dS Nr    r   s    r   r]   z test_all_apply.<locals>.<lambda>m   s    q r   r+   c                     dS rg   rh   r   s    r   r]   z test_all_apply.<locals>.<lambda>n   s    ! r   )r   r	   r"   	set_indexr#   r$   r5   rU   )r7   r,   r   rO   errr9   r:   s           r   test_all_applyrm   a   s     KFC 	Z===E!HHMM	
 	

)C..
	  
1		B


$
AWW[[SW99FxxFx<<H&(+++++r   c                    | \  }}t          dt          d          i          }t          d          t          d          t          d          t          d          t          d          g|_        d }|                    d	d
                              |||          }|                                }d|d<   t          j        ||           |                    dd
                              |||          }|                                }d|d<   t          j        ||           |                    dd
                              |||          }|                                }d|d<   t          j        ||           d S )NrC   r?   z20130101 09:00:00z20130101 09:00:02z20130101 09:00:03z20130101 09:00:05z20130101 09:00:06c                     dS rg   rh   r   s    r   r]   z#test_ragged_apply.<locals>.<lambda>~   s    ! r   re   r   r<   r.   r+   r`   r=   5s)	r   r"   r   rJ   r#   r$   copyr5   rU   )r7   r,   r   rO   r   r9   r:   s          r   test_ragged_applyrs   r   sr    KFC	Cq?	#	#B%&&%&&%&&%&&%&&BH 	AZZtZ3399!FPS9TTFwwyyHHSM&(+++ZZtZ3399!FPS9TTFwwyyHHSM&(+++ZZtZ3399!FPS9TTFwwyyHHSM&(+++++r   c                      t          j        t          d          5  t          t	          d                                        d                              d d           d d d            d S # 1 swxY w Y   d S )Nz)engine must be either 'numba' or 'cython'r   r   c                     | S r   rh   r   s    r   r]   z%test_invalid_engine.<locals>.<lambda>       A r   foo)r,   r   r    r!   r   r"   r#   r$   rh   r   r   test_invalid_enginery      s    	z)T	U	U	U E EuQxx  ##))++e)DDDE E E E E E E E E E E E E E E E E Es   AA//A36A3c                      t          j        t          d          5  t          t	          d                                        d                              d dddi           d d d            d S # 1 swxY w Y   d S )	Nz+cython engine does not accept engine_kwargsr   r   c                     | S r   rh   r   s    r   r]   z3test_invalid_engine_kwargs_cython.<locals>.<lambda>   s    a r   cythonnopythonF)r,   engine_kwargsrx   rh   r   r   !test_invalid_engine_kwargs_cythonr      s    	z)V	W	W	W 
 
uQxx  ##))KU8K 	* 	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s   A	A22A69A6c                      t          j        t          d          5  t          t	          d                                        d                              d dd           d d d            d S # 1 swxY w Y   d S )Nz.raw must be `True` when using the numba enginer   r   c                     | S r   rh   r   s    r   r]   z(test_invalid_raw_numba.<locals>.<lambda>   rv   r   Fnumba)r   r,   rx   rh   r   r   test_invalid_raw_numbar      s    	J
 
 
 R R 	uQxx  ##))++5)QQQR R R R R R R R R R R R R R R R R Rs   AA00A47A4args_kwargsparr*   )r*   c                 J   d }t          ddgddgd          }t          ddg          }t          ddgddgg|	          }|                    d                              || d
         | d                   }t	          j        ||           t          j        ddgdd g          }t          ddg|d          }|	                    d          d                             d          }|                    || d
         | d                   }t	          j
        ||           d S )Nc                 0    t          j        | |z             S r   )r   r2   )r   r   s     r   numpysumz0test_rolling_apply_args_kwargs.<locals>.numpysum   s    va#gr   r   r(   )grar   r   g      &@g      (@)columnsr   )argskwargs)r   r   )r   r   )names)rJ   name)r   r   r#   r$   r5   rU   r   from_tuplesr   groupbyrb   )r   r   rO   idxr:   r9   midx
gb_rollings           r   test_rolling_apply_args_kwargsr      s6      
1a&1v..	/	/B
s

C4,t5sCCCHZZ]]  A{ST~ VVF&(+++!66"24,GGGDtTl$S999HD!!#&..q11Jh[^KPQNSSF68,,,,,r   c                    t          t          j                            d                              d                    }t          j        |d d<   t          j        |dd <   |                    dd                              t          |           }t          j
        |j        d         t          j        |dd                              |                    d	d
                              t          |           }t          |j        d                   sJ t          |j        d                   rJ t          |j        d                   rJ t          |j        d                   sJ t          t          j                            d                              d	                    }|                    dd                              t          |           }t          |j        d                   sJ t          |j        d                   sJ |                    d	d                              t          |           }|                    d	d                              t          |           }t          j
        ||           d S )Nr(   2   r*      r-   r   rL               ir?   r   r)   r   r   )r   r   rP   rQ   rR   rM   r#   r$   r   r5   r6   rN   r   r
   r   )r   objr9   obj2result0result1s         r   	test_nansr      s    
&&q))99"==
>
>CvCHCI[[[,,221#2>>F6;r?BGC3K,@,@AAA [[[,,221#2>>FB     FKO$$$$$FKO$$$$$B     ")''**::2>>??D\\"!\,,221#2>>FAQ     kk"!k,,221#2>>Gkk"!k,,221#2>>G7G,,,,,r   c                 N   t          t          j                            d                              d                    }t          j        |d d<   t          j        |dd <   |                    ddd                              t          | 	          }t          |t          t          j        gd
z            g                              dd                              t          | 	          j
        d
d                              d          }t          j        ||           d S )Nr(   r   r*   r   r   r   T)r.   centerr   	   r-   )drop)r   r   rP   rQ   rR   rM   r#   r$   r   r   rN   reset_indexr5   rb   )r   r   r9   r:   s       r   test_centerr      s    
&&q))99"==
>
>CvCHCI[[D[99??s?KKFVRVHqL))*++		$	$	qc			abb	 
$		  68,,,,,r   c                    |                     d                              t          |           }t          |t                    sJ t          j        |j        d         t          j	        |dd                               d S )Nr   r   rL   )
r#   r$   r   
isinstancer   r5   r6   rN   r   r   )r   seriesr9   s      r   test_seriesr      sm    ^^B%%aS%11Fff%%%%%6;r?BGF344L,A,ABBBBBr   c                 @   |                     d                              t          |           }t          |t                    sJ t          j        |j        dd d f         |j        dd d d f                             t          j	        d|           d           d S )	Nr   r   rL   r   r   )axisr   Fcheck_names)
r#   r$   r   r   r   r5   rb   rN   r   r   )r   framer9   s      r   
test_framer      s    ]]2$$QC$00Ffi(((((BE
3447!!"'s!;;     r   c                    d}d}|d d d                              d                                          }|                    ||                              t          |           }|j        d         }|dt          j                    z  z
  }|d d d                             ||          }t          j
        |j        d         t          j        |                     d S )	N   r*   r(   rC   rp   r   rL   r   )resampler   r#   r$   r   rJ   r   BDaytruncater5   r6   rN   r   )	r   r   winminpserseries_result	last_date	prev_datetrunc_seriess	            r   test_time_rule_seriesr      s    
CD
1+

s
#
#
(
(
*
*CKKsK==CCA3COOM#B'IB//I##A#;''	9==L=-b127<3H3HIIIIIr   c                    d}d}|d d d                              d                                          }|                    ||                              t          |           }|j        d         }|dt          j                    z  z
  }|d d d                             ||          }t          j
        |                    |          |                    t          j        |           d	
           d S )Nr   r*   r(   rC   rp   r   rL   r   Fr   )r   r   r#   r$   r   rJ   r   r   r   r5   rb   xsr   )	r   r   r   r   frmframe_resultr   r   trunc_frames	            r   test_time_rule_framer      s    
CD
!*

c
"
"
'
'
)
)C;;ct;<<BB1#BNNL"2&IB//I!*%%i;;K	"""'s++     r   r   )r   c   d   c                    |                     t          |          dz   ||                              t          |           }|                     t          |          ||                              t          |           }t	          |          }t          j        |t	          |                     | }t          j        ||         ||                    d S )Nr   r^   r   )r#   r%   r$   r   r
   r5   rb   r6   )r   r   r   r[   r9   r:   nan_masks          r   test_min_periodsr     s    ^^CKK!OD^IIOO	s P  F ~~c&kkt$~GGMM	s N  H F||H8T(^^444yH6(+Xh-?@@@@@r   c                    d t          d          D             }d}|                    t          |j                  |z                                 d|                              t          |                               d                              |j                  }|                    d|d	                              t          |           }t          j	        ||           d S )
Nc                     g | ]}d |d	S r   drh   .0r   s     r   
<listcomp>z.test_center_reindex_series.<locals>.<listcomp>        &&&qQ&&&r      r*   r   rp   r   Tr<   r.   r   )
r"   reindexlistrJ   r#   r$   r   shiftr5   rb   )r   r   rE   r   	series_xp	series_rss         r   test_center_reindex_seriesr     s    &&E"II&&&AD 	tFL))A-..		-	-	qc			s			  bd4HHNN	s O  I 9i00000r   c                 .   t          t          d          t          ddd                    }d t          d          D             }d}|                    t	          |j                  |z                                 d	|
                              t          |           	                    d                              |j                  }|                    d	|d                              t          |           }t          j        ||           d S )Nr   z
2020-01-01D)rH   rG   rI   c                     g | ]}d |d	S r   rh   r   s     r   r   z-test_center_reindex_frame.<locals>.<listcomp>3  r   r   r   r*   r   rp   r   r   Tr   )r   r"   r	   r   r   rJ   r#   r$   r   r   r5   rU   )r   r   rE   r   frame_xpframe_rss         r   test_center_reindex_framer   0  s    eCjj
<cSV(W(W(WXXXE&&E"II&&&AD 	d5;''!+,,		-	-	qc			s			  }}BD}FFLLQTWLXXH(H-----r   c                 J   t          ddg          }d}t          j        t          |          5  |                    dd                              t          j        |           }d d d            n# 1 swxY w Y   t          ddg          }t          j        ||           d S )	Nr   r(   z5Support for axis=1 in DataFrame.rolling is deprecatedr   )r<   r   r   r`   ra   )	r   r5   assert_produces_warningFutureWarningr#   r$   r   r2   rU   )r   rO   msgr9   r:   s        r   
test_axis1r   A  s    	Aq6		B
AC		#M	=	=	= E E11--33BF3DDE E E E E E E E E E E E E E E#s$$H&(+++++s   7A22A69A6)+numpyr   r   pandasr   r   r   r   r   r   r	   r
   r   pandas._testing_testingr5   pandas.tseriesr   markfilterwarnings
pytestmarkr   parametrizer&   r;   rX   rc   rm   rs   ry   r   r   r   r   r   r   r   r   r   r   r   r   r   rh   r   r   <module>r      s       
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
       " " " " " " [''9 

$ $ $ LLL11< < 21<
- - - At9--. . .-.2- - -*, , ,", , ,:E E E

 
 
R R R $)<udm(LMM- - NM-,- - -4- - - C C C  	J 	J 	J    ..A A /.A1 1 1$. . .", , , , ,r   