
    Owg>                        d dl Zd dlZd dlmZ d dlmc mZ d dl	m
Z
mZmZmZ d dlmZ ej"                  j$                  Z ej(                  ddg      d        Z ej(                  di gd	i gd
i gdi gdi gdi gddd igdi gddd igg	      d        Z ej.                  d      ej"                  j1                  d       G d d                    Z ej.                  d       G d d             Z ej.                  d      d        Z ej.                  d      d        Z ej.                  d      ej"                  j:                  ej"                  j1                  d       G d d                           Z ej.                  d      d        Zy)    N)NumbaUtilError)	DataFrameSeriesoption_contextto_datetimesingletable)paramsc                     | j                   S )z3method keyword in rolling/expanding/ewm constructorparamrequests    U/var/www/horilla/myenv/lib/python3.12/site-packages/pandas/tests/window/test_numba.pymethodr      s     ==    summeanmedianmaxminvarddofstdc                     | j                   S Nr   r   s    r   $arithmetic_numba_supported_operatorsr      s     ==r   numbaignorec                   X   e Zd Zej                  j                  dddg      d        Zej                  j                  d e ej                  d             eddddej                  ej                  dd	d	d	g
ddddej                  ej                  dd	d	d	g
ej                  ej                  dd
ddddddg
g      j                   e ed      d       edddej                  dddd	g       edddej                  dddd	g      g      d        Zej                  j                  d e ej                  d             e ed      d      g      d        Zej                  j                  dddg      d        Zej                  j                  ddd	ddgdi gg      d        Zd Zy)
TestEnginejitTFc                 :   d }|rdd l }|j                  |      }|||d}	d}
t        t        d            }|j	                  d||      j                  ||
d|	d	
      }|j	                  d||      j                  |d|
d	      }t        j                  ||       y )Nc                 N    d}|D ]  }||z  }	 t        j                  |       |z   S )Nr   npr   )xargsarg_sumargs       r   fz0TestEngine.test_numba_vs_cython_apply.<locals>.f/   s2    G 3771:''r   r   nogilparallelnopython   
   r1   )centerstepr   T)r(   engineengine_kwargsrawcython)r5   r(   r7   r   r"   r   rangerollingapplytmassert_series_equal)selfr"   r-   r.   r/   r3   r4   r+   r   r6   r(   sresultexpecteds                 r   test_numba_vs_cython_applyz%TestEngine.test_numba_vs_cython_apply-   s    	( 		!A"'X8T591V$7==D4 > 
 99QvD99??hTt @ 
 	vx0r   data               foo)name   r2      r1   c                     |\  }}|||d}	|j                  d|      }
 t        |
|      dd|	d|} t        |
|      dddi|}t        j                  ||       y )	Nr,   rH   r4   r   r5   r6   r5   r8    )r;   getattrr=   assert_equal)r?   rD   r-   r.   r/   r   r4   r   kwargsr6   rollrA   rB   s                r   $test_numba_vs_cython_rolling_methodsz/TestEngine.test_numba_vs_cython_rolling_methodsF   s{    2 >"'X8T||AD|)&v& 
-
;A
 )74(CCFC
)r   c                     |\  }}|||d}t        t        j                  d            }|j                         }	 t	        |	|      dd|d|}
 t	        |	|      dddi|}t        j                  |
|       y )Nr,   rE   r   rP   r5   r8   rQ   )r   r&   eye	expandingrR   r=   rS   )r?   rD   r-   r.   r/   r   r   rT   r6   expandrA   rB   s               r   &test_numba_vs_cython_expanding_methodsz1TestEngine.test_numba_vs_cython_expanding_methodsj   s     >"'X8T#!(( 
-
;A
 +766*E(EfE
)r   c                 0   d }d }|r&dd l }|j                  |      }|j                  |      }|||d}	t        t        d            j	                  d|      }
|
j                  |d|	d	
      }|
j                  |dd	      }t        j                  ||       |
j                  |d|	d	
      }|
j                  |dd	      }t        j                  ||       |
j                  |d|	d	
      }|
j                  |dd	      }t        j                  ||       y )Nc                 2    t        j                  |       dz   S )NrG   r%   r'   s    r   func_1z+TestEngine.test_cache_apply.<locals>.func_1   s    771:>!r   c                 2    t        j                  |       dz  S )NrE   )r&   r   r^   s    r   func_2z+TestEngine.test_cache_apply.<locals>.func_2   s    66!9q= r   r   r,   r2   r1   rO   r   T)r5   r6   r7   r8   r5   r7   r9   )r?   r"   r-   r.   r/   r4   r_   ra   r   r6   rU   rA   rB   s                r   test_cache_applyzTestEngine.test_cache_apply|   s    	"	! YYv&FYYv&F"'X8TeBi (((67-T  
 ::fX4:@
vx07-T  
 ::fX4:@
vx07-T  
 ::fX4:@
vx0r   zwindow,window_kwargsr;   r   )windowmin_periodsrY   c                 h   d }|||d}t        dg di      }	 t        |	|      dd|i|j                  |dd|d	      }
t        dg d
i      }t        j                  |
|        t        |	|      dd|i|j                  |dd|d	      }
t        dg di      }t        j                  |
|       y )Nc                 2    t        j                  |       |z   S r   r&   r   )valuesr'   s     r   addz,TestEngine.test_dont_cache_args.<locals>.add   s    66&>A%%r   r/   r-   r.   valuer   r   r   r   Tr   )rM   )r7   r5   r6   r(         ?ro   ro   r0          @rq   rq   rQ   )r   rR   r<   r=   assert_frame_equal)r?   rd   window_kwargsr-   r.   r/   r   rj   r6   dfrA   rB   s               r   test_dont_cache_argszTestEngine.test_dont_cache_args   s    	& &.8T+,$V$DFDmDJJT'T K 
 g78
fh/$V$DFDmDJJT'T K 
 g78
fh/r   c                    dddfd}d}t        dg di      }|j                  d      j                  |dd|	      }t        dg d
i      }t        j                  ||       dd}|j                  d      j                  |dd|	      }t        dg di      }t        j                  ||       y )NFTc                     z   z   S r   rQ   )r'   r-   r/   r.   s    r   funcz6TestEngine.test_dont_cache_engine_kwargs.<locals>.func   s    8#h..r   rk   rl   rm   rM   r   )r7   r5   r6   rp   rn   r   r;   r<   r=   rr   )	r?   rx   r6   rt   rA   rB   r-   r/   r.   s	         @@@r   test_dont_cache_engine_kwargsz(TestEngine.test_dont_cache_engine_kwargs   s     	/ &.8T+,A$$d7- % 
 g78
fh/%-8TA$$d7- % 
 g78
fh/r   N)__name__
__module____qualname__pytestmarkparametrizerC   r   r&   rX   naninfTr   r:   rV   r[   rc   ru   rz   rQ   r   r   r!   r!   )   s    [[UT5M21 310 [[fbffQi 1aAq!<1aAq!<VVRVVQ1aAq!< a58%(BB1a34BBAq!45	
 *! *( [[6266!9%veAhU'CD** [[UT5M2!1 3!1F [[1Q78"	
00,0r   r!   c                   
   e Zd Zej                  j                  dd d gddg      ej                  j                  ddd	g      d
               Zej                  j                  dd d gddg      ej                  j                  ddd	g      d               Zej                  j                  dddg      ej                  j                  ddd	g      d               Zej                  j                  dddg      d        Z	y)TestEWMgrouperc                     | S r   rQ   r^   s    r   <lambda>zTestEWM.<lambda>       a r   c                 $    | j                  d      S NAgroupbyr^   s    r   r   zTestEWM.<lambda>       199S> r   Noner   )idsr   r   r   c                     t        g dt        d      d      }t        j                  t        d      5   t         ||      j                  d      |      d	       d d d        y # 1 sw Y   y xY w)
Nabr   r   rG   r   Bzengine must be eithermatchro   comrJ   r5   r   r:   r~   raises
ValueErrorrR   ewmr?   r   r   rt   s       r   test_invalid_enginezTestEWM.test_invalid_engine   s`    
 1aAB]]:-DE 	D5GGBKOOO,f5UC	D 	D 	Ds   *A((A1c                     | S r   rQ   r^   s    r   r   zTestEWM.<lambda>   r   r   c                 $    | j                  d      S r   r   r^   s    r   r   zTestEWM.<lambda>   r   r   c                     t        g dt        d      d      }t        j                  t        d      5   t         ||      j                  d      |      dd	d
i       d d d        y # 1 sw Y   y xY w)Nr   rG   r   zcython engine does notr   ro   r   r8   r/   TrP   r   r   s       r   test_invalid_engine_kwargsz"TestEWM.test_invalid_engine_kwargs   sf    
 1aAB]]:-EF 	5GGBKOOO,f5
D/A	 	 	s   -A++A4c                    t        dt        d      i      }|dk(  rd }n
g d|d<   d }|dk(  rd	} ||      j                  d
||      }	|||d}
 t        |	|      d|
      } t        |	|      d      }t	        j
                  ||       y )Nr   rG   r   c                     | S r   rQ   r^   s    r   r   z.TestEWM.test_cython_vs_numba.<locals>.<lambda>        r   r   r   c                 $    | j                  d      S r   r   r^   s    r   r   z.TestEWM.test_cython_vs_numba.<locals>.<lambda>       		# r   r   Tro   )r   adjust	ignore_nar,   r   rP   r8   r   )r   r:   r   rR   r=   rr   )r?   r   r   r-   r.   r/   r   r   rt   r   r6   rA   rB   s                r   test_cython_vs_numbazTestEWM.test_cython_vs_numba   s    
 U1X'f!G*BsG.GU?Fbkoo#f	oJ"'X8T%f%WMR'73'x8
fh/r   c                    t        dg di      }|dk(  rd }n
d }g d|d<   d}t        g d	      } ||      j                  |d
||      }	|||d}
|	j                  d|
      }|	j                  d      }t	        j
                  ||       y )Nr   )r   r   rM   rM   r1   r1   r   c                     | S r   rQ   r^   s    r   r   z4TestEWM.test_cython_vs_numba_times.<locals>.<lambda>	  r   r   c                 $    | j                  d      S r   r   r^   s    r   r   z4TestEWM.test_cython_vs_numba_times.<locals>.<lambda>  r   r   )r   r   r   r   r   r   r   z23 days)
2020-01-01r   z
2020-01-02z
2020-01-10z
2020-02-23z
2020-01-03T)halflifer   r   timesr,   r   rP   r8   r   )r   r   r   r   r=   rr   )r?   r   r-   r.   r/   r   rt   r   r   r   r6   rA   rB   s                r   test_cython_vs_numba_timesz"TestEWM.test_cython_vs_numba_times  s     /01f!G.G4BsG	
 bkoodiu  
 #(X8TF8888,
fh/r   N)
r{   r|   r}   r~   r   r   r   r   r   r   rQ   r   r   r   r      s%   [[K!9:@S   [[X7D 8D
 [[K!9:@S   [[X7 8 [[Y(;<[[X70 8 =0& [[Y(;<0 =0r   r   c                  ,   d } t        t        d            }t        dd      5  |j                  d      j	                  | d d      }d d d        |j                  d      j	                  | dd      }t        j                  |       y # 1 sw Y   CxY w)Nc                 2    t        j                  |       dz   S )Nr1   r%   r^   s    r   r+   z!test_use_global_config.<locals>.f'  s    wwqzA~r   r2   zcompute.use_numbaTr1   rb   r   )r   r:   r   r;   r<   r=   r>   )r+   r@   rA   rB   s       r   test_use_global_configr   %  s     	uRyA	+T	2 >1##Ad#=>yy|!!!G!>H8V,> >s   $B

Bc                      t        j                  t        d      5  t        t	        d            j                  d      j                  d ddidd       d d d        y # 1 sw Y   y xY w)	Nz"numba does not support kwargs withr   rM   c                     | S r   rQ   r^   s    r   r   z.test_invalid_kwargs_nopython.<locals>.<lambda>5  s    a r   r   r   T)rT   r5   r7   )r~   r   r   r   r:   r;   r<   rQ   r   r   test_invalid_kwargs_nopythonr   1  sZ    	~-Q	R 
uQx  #))ad 	* 	

 
 
s   :AA(c                      e Zd Zd Zd Zd Zd Zd Zd Ze	j                  j                  d ej                  d       ej                  d	       ej                  d
      g      e	j                  j                  dddg      d               Zy)TestTableMethodc                     d }t        j                  t        d      5  t        t	        d            j                  dd      j                  |dd	       d d d        y # 1 sw Y   y xY w)
Nc                 6    t        j                  | d      dz   S Nr   axisrM   rh   r^   s    r   r+   z7TestTableMethod.test_table_series_valueerror.<locals>.f?      66!!$q((r   z1method='table' not applicable for Series objects.r   rM   r	   )r   r   Trb   )r~   r   r   r   r:   r;   r<   )r?   r+   s     r   test_table_series_valueerrorz,TestTableMethod.test_table_series_valueerror>  se    	) ]]Q
 	 58$$Qw$7=='t > 	 	 	s   8A  A)c                    |\  }}|||d}	t        t        j                  d            }
|
j                  dd|d|      }|dv r=t	        j
                  t        | d	      5   t        ||      d|	d
d| d d d        y |
j                  dd|d|      } t        ||      d|	d
d|} t        ||      d|	d
d|}t        j                  ||       y # 1 sw Y   y xY w)Nr,   rH   r1   r	   r   r   r   re   r4   r   r    not supportedr   r   r6   r5   r   rQ   )
r   r&   rX   r;   r~   r   NotImplementedErrorrR   r=   rr   )r?   r   r-   r.   r/   r   r4   r   rT   r6   rt   
roll_tableroll_singlerA   rB   s                  r   !test_table_method_rolling_methodsz1TestTableMethod.test_table_method_rolling_methodsI  s    >"'X8Trvvay!ZZ'!RVZW
^#2VHN:ST +
F+ "/CI 
 **(14 % K 1WZ0 +G?EF 4w{F3 +G?EH !!&(3 s   "CC!c                 "   |||d}d }t        t        j                  d            }|j                  dd|d|      j	                  |d|d	
      }	|j                  dd|d|      j	                  |d|d	
      }
t        j                  |	|
       y )Nr,   c                 6    t        j                  | d      dz   S r   rh   r^   s    r   r+   z:TestTableMethod.test_table_method_rolling_apply.<locals>.fl  r   r   rH   r1   r	   r   r   Tr   r7   r6   r5   r   )r   r&   rX   r;   r<   r=   rr   )r?   r   r-   r.   r/   r4   r6   r+   rt   rA   rB   s              r   test_table_method_rolling_applyz/TestTableMethod.test_table_method_rolling_applyi  s    "'X8T	) rvvay!gDad  

%t=%
I 	 ::hTqt  

%t=%
I 	 	fh/r   c                     d }t        g dg dg dg dg      }|j                  ddd|	      j                  |d
d      }t        g dg dg dg dg      d d |   }t        j                  ||       y )Nc                     t        j                  d| j                  d   f      }| d d d df   | d d df   z  j                  d      | d d df   j                         z  |d d d df<   |S )NrM   r1   r   r   )r&   onesshaper   )r'   arrs     r   weighted_meanzNTestTableMethod.test_table_method_rolling_weighted_mean.<locals>.weighted_meany  sl    ''1aggaj/*CArrE(Qq!tW,11q19AadGKKMIC2A2JJr   )rM   r1   g333333?)r1   rH   g?)rH   rG   g?)rG   rE   gffffff?r1   r	   r   )r   re   r4   Tr   r7   r5   )ro   rq   ro   )g?rq   ro   )gk}
@gk}@ro   )g1?rF   ro   ry   )r?   r4   r   rt   rA   rB   s         r   'test_table_method_rolling_weighted_meanz7TestTableMethod.test_table_method_rolling_weighted_meanx  s    	
 [+{KLAg14HNNtG O 
 )"	
 D& 	fh/r   c                    |||d}d }t        t        j                  d            }|j                  d|      j	                  |d|d      }|j                  d	|      j	                  |d|d      }	t        j                  ||	       y )
Nr,   c                 6    t        j                  | d      dz   S r   rh   r^   s    r   r+   z<TestTableMethod.test_table_method_expanding_apply.<locals>.f  r   r   rH   r	   r   r   Tr   r   r   )r   r&   rX   rY   r<   r=   rr   )
r?   r   r-   r.   r/   r6   r+   rt   rA   rB   s
             r   !test_table_method_expanding_applyz1TestTableMethod.test_table_method_expanding_apply  s    "'X8T	) rvvay!W48>>4}W ? 
 <<xd<;AA4}W B 
 	fh/r   c                    |\  }}|||d}t        t        j                  d            }	|	j                  d|      }
|dv r=t	        j
                  t        | d      5   t        |
|      d|dd	| d d d        y |	j                  d
|      } t        |
|      d|dd	|} t        ||      d|dd	|}t        j                  ||       y # 1 sw Y   y xY w)Nr,   rH   r	   r   r   r   r   r   r   r   rQ   )
r   r&   rX   rY   r~   r   r   rR   r=   rr   )r?   r   r-   r.   r/   r   r   rT   r6   rt   expand_tableexpand_singlerA   rB   s                 r   #test_table_method_expanding_methodsz3TestTableMethod.test_table_method_expanding_methods  s
    >"'X8Trvvay!||7|>^#2VHN:ST -f- "/CI 
 LLtLDM2W\62 +G?EF 6w}f5 +G?EH !!&(3 s   CCrD   rH   )r1   rH   )rH   r1   r   r   r   c                     |||d}t        |      } t        |j                  dd|      |      |d      }	 t        |j                  dd|      |      |d      }
t        j                  |	|
       y )Nr,   rM   r	   )r   r   r   r   r   r   )r   rR   r   r=   rr   )r?   rD   r   r   r-   r.   r/   r6   rt   rA   rB   s              r   test_table_method_ewmz%TestTableMethod.test_table_method_ewm  s|     #(X8Tt_JAgDA6J'
 N7266at6DfM'
 	fh/r   N)r{   r|   r}   r   r   r   r   r   r   r~   r   r   r&   rX   r   r   rQ   r   r   r   r   9  s    
	4@00(040 [[VfbffQi'"''&/%RS[[X70 8 T0r   r   c                      t        dg di      } t        j                  d      5  | j                  j	                  d      j                  t        j                  dd       d d d        y # 1 sw Y   y xY w)Ncol1)rM   r1   rH   rG   rE   Fr1   Tr   r   )r   r=   assert_produces_warningr   r;   r<   r&   prod)rt   s    r   test_npfunc_no_warningsr     s^    	FO,	-B		#	#E	* D
  d7 CD D Ds   <A**A3) numpyr&   r~   pandas.errorsr   pandas.util._test_decoratorsutil_test_decoratorstdpandasr   r   r   r   pandas._testing_testingr=   r   
single_cpu
pytestmarkfixturer   r   
skip_if_nofilterwarningsr!   r   r   r   slowr   r   rQ   r   r   <module>r      s     ( ) )  [[##
 '*+ ,
 			2						
 wH%i0 i0 & i0X wI0 I0 I0X w- - w
 
 wH%C0 C0 &  C0L wD Dr   