
    bMh?                        d dl Zd dlZd dlm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 d dlmZ ej        j        gZ ej        d          Ze                    ej                             eej                   ed          k    o	 e            dej         	                      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        !                    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        !                    d           G d d                                              Z' e
j         d          d              Z(dS )!    N)is_platform_arm)NumbaUtilError)	DataFrameSeriesoption_contextto_datetime)Versionnumbaz0.61z&Segfaults on ARM platforms with numba )reasonsingletable)paramsc                     | j         S )z3method keyword in rolling/expanding/ewm constructorparamrequests    ^/var/www/html/test/jupyter/venv/lib/python3.11/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   ignorec                   B   e Zd Zej                            dddg          d             Ze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                            d e ej	        d                     e ed          d          g          d             Zej                            dddg          d             Zej                            ddd	ddgdi gg          d             Zd ZdS )
TestEnginejitTFc                 r   d }|rdd l }|                    |          }|||d}	d}
t          t          d                    }|                    d||                              ||
d|	d	
          }|                    d||                              |d|
d	          }t          j        ||           d S )Nc                 H    d}|D ]}||z  }t          j        |           |z   S )Nr   npr   )xargsarg_sumargs       r   fz0TestEngine.test_numba_vs_cython_apply.<locals>.f9   s4    G  371::''r   r   nogilparallelnopython   
   r4   )centerstepr
   T)r+   engineengine_kwargsrawcython)r8   r+   r:   r
   r%   r   rangerollingapplytmassert_series_equal)selfr%   r0   r1   r2   r6   r7   r.   r
   r9   r+   sresultexpecteds                 r   test_numba_vs_cython_applyz%TestEngine.test_numba_vs_cython_apply7   s    	( 	( 	(  	LLL		!A"'X8TT5991V$77==D4 > 
 
 99QvD999??hTt @ 
 
 	vx00000r   data               foo)name   r5      r4   c                     |\  }}|||d}	|                     d|          }
 t          |
|          dd|	d|} t          |
|          dddi|}t          j        ||           d S )	Nr/   rK   r7   r
   r8   r9   r8   r;    )r>   getattrr@   assert_equal)rB   rG   r0   r1   r2   r!   r7   r   kwargsr9   rollrD   rE   s                r   $test_numba_vs_cython_rolling_methodsz/TestEngine.test_numba_vs_cython_rolling_methodsP   s    2 >"'X8TT||AD|))&v&& 
-
 
;A
 
 )74((CCCFCC
)))))r   c                    |\  }}|||d}t          t          j        d                    }|                                }	 t	          |	|          dd|d|}
 t	          |	|          dddi|}t          j        |
|           d S )Nr/   rH   r
   rS   r8   r;   rT   )r   r)   eye	expandingrU   r@   rV   )rB   rG   r0   r1   r2   r!   r   rW   r9   expandrD   rE   s               r   &test_numba_vs_cython_expanding_methodsz1TestEngine.test_numba_vs_cython_expanding_methodst   s     >"'X8TT##!!((( 
-
 
;A
 
 +766**EE(EfEE
)))))r   c                    d }d }|r.dd l }|                    |          }|                    |          }|||d}	t          t          d                                        d|          }
|
                    |d|	d	
          }|
                    |dd	          }t          j        ||           |
                    |d|	d	
          }|
                    |dd	          }t          j        ||           |
                    |d|	d	
          }|
                    |dd	          }t          j        ||           d S )Nc                 0    t          j        |           dz   S )NrJ   r(   r*   s    r   func_1z+TestEngine.test_cache_apply.<locals>.func_1   s    71::>!r   c                 0    t          j        |           dz  S )NrH   )r)   r   ra   s    r   func_2z+TestEngine.test_cache_apply.<locals>.func_2   s    6!99q= r   r   r/   r5   r4   rR   r
   T)r8   r9   r:   r;   r8   r:   r<   )rB   r%   r0   r1   r2   r7   rb   rd   r
   r9   rX   rD   rE   s                r   test_cache_applyzTestEngine.test_cache_apply   sw   	" 	" 	"	! 	! 	!  	'LLLYYv&&FYYv&&F"'X8TTeBii  (((667-T  
 
 ::fX4:@@
vx0007-T  
 
 ::fX4:@@
vx0007-T  
 
 ::fX4:@@
vx00000r   zwindow,window_kwargsr>   r   )windowmin_periodsr\   c                    d }|||d}t          dg di          }	 t          |	|          dd|i|                    |dd|d	          }
t          dg d
i          }t          j        |
|            t          |	|          dd|i|                    |dd|d	          }
t          dg di          }t          j        |
|           d S )Nc                 0    t          j        |           |z   S r    r)   r   )valuesr*   s     r   addz,TestEngine.test_dont_cache_args.<locals>.add   s    6&>>A%%r   r2   r0   r1   valuer   r   r   r   Tr
   )rP   )r:   r8   r9   r+         ?rr   rr   r3          @rt   rt   rT   )r   rU   r?   r@   assert_frame_equal)rB   rg   window_kwargsr0   r1   r2   r   rm   r9   dfrD   rE   s               r   test_dont_cache_argszTestEngine.test_dont_cache_args   s   	& 	& 	& &.8TT+,,$V$$DDFDmDDJJT'T K 
 
 g788
fh///$V$$DDFDmDDJJT'T K 
 
 g788
fh/////r   c                    dddfd}d}t          dg di          }|                    d                              |dd|	          }t          dg d
i          }t          j        ||           dd}|                    d                              |dd|	          }t          dg di          }t          j        ||           d S )NFTc                     z   z   S r    rT   )r*   r0   r2   r1   s    r   funcz6TestEngine.test_dont_cache_engine_kwargs.<locals>.func   s    8#h..r   rn   ro   rp   rP   r
   )r:   r8   r9   rs   rq   r   r>   r?   r@   ru   )	rB   r{   r9   rw   rD   rE   r0   r2   r1   s	         @@@r   test_dont_cache_engine_kwargsz(TestEngine.test_dont_cache_engine_kwargs   s*    	/ 	/ 	/ 	/ 	/ 	/ 	/ &.8TT+,,A$$d7- % 
 
 g788
fh///%-8TTA$$d7- % 
 
 g788
fh/////r   N)__name__
__module____qualname__pytestmarkparametrizerF   r   r)   r[   naninfTr   r=   rY   r^   rf   rx   r}   rT   r   r   r$   r$   3   sS        [UT5M221 1 3210 [IfbfQii  I1aAq!<1aAq!<VRVQ1aAq!<  F5588%(((FBB1a344FBBAq!455	
  * *!  *( [626!99%%vveeAhhU'C'C'CD * * * [UT5M22!1 !1 32!1F [1Q778"	
 0 0 0,0 0 0 0 0r   r$   c                   (   e Zd Zej                            dd d gddg          ej                            ddd	g          d
                         Zej                            dd d gddg          ej                            ddd	g          d                         Zej                            dddg          ej                            ddd	g          d                         Zej                            dddg          d             Z	dS )TestEWMgrouperc                     | S r    rT   ra   s    r   <lambda>zTestEWM.<lambda>       a r   c                 ,    |                      d          S NAgroupbyra   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           ||                              d          |          d	           d d d            d S # 1 swxY w Y   d S )
Nabr   r   rJ   r   Bzengine must be eithermatchrr   comrM   r8   r   r=   r   raises
ValueErrorrU   ewmrB   r   r   rw   s       r   test_invalid_enginezTestEWM.test_invalid_engine   s    
 111aAABB]:-DEEE 	D 	D5GGGBKKOOO,,f55UCCCC	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	Ds   8BB	Bc                     | S r    rT   ra   s    r   r   zTestEWM.<lambda>   r   r   c                 ,    |                      d          S r   r   ra   s    r   r   zTestEWM.<lambda>   r   r   c                 $   t          g dt          d          d          }t          j        t          d          5   t           ||                              d          |          dd	d
i           d d d            d S # 1 swxY w Y   d S )Nr   rJ   r   zcython engine does notr   rr   r   r;   r2   TrS   r   r   s       r   test_invalid_engine_kwargsz"TestEWM.test_invalid_engine_kwargs   s    
 111aAABB]:-EFFF 	 	5GGGBKKOOO,,f55
D/A   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   ;BB	B	c                 \   t          dt          d          i          }|dk    rd }n
g d|d<   d }|dk    rd	} ||                              d
||          }	|||d}
 t          |	|          d|
          } t          |	|          d          }t	          j        ||           d S )Nr   rJ   r   c                     | S r    rT   ra   s    r   r   z.TestEWM.test_cython_vs_numba.<locals>.<lambda>        r   r   r   c                 ,    |                      d          S r   r   ra   s    r   r   z.TestEWM.test_cython_vs_numba.<locals>.<lambda>      		# r   r   Trr   )r   adjust	ignore_nar/   r
   rS   r;   r   )r   r=   r   rU   r@   ru   )rB   r   r   r0   r1   r2   r   r   rw   r   r9   rD   rE   s                r   test_cython_vs_numbazTestEWM.test_cython_vs_numba   s    
 U1XX''f!kGG***BsG..GU??Fgbkkoo#f	oJJ"'X8TT%f%%WMRRR'73''x888
fh/////r   c                 N   t          dg di          }|dk    rd }n
d }g d|d<   d}t          g d	          } ||                              |d
||          }	|||d}
|	                    d|
          }|	                    d          }t	          j        ||           d S )Nr   )r   r   rP   rP   r4   r4   r   c                     | S r    rT   ra   s    r   r   z4TestEWM.test_cython_vs_numba_times.<locals>.<lambda>  r   r   c                 ,    |                      d          S r   r   ra   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
   rS   r;   r   )r   r   r   r   r@   ru   )rB   r   r0   r1   r2   r   rw   r   r   r   r9   rD   rE   s                r   test_cython_vs_numba_timesz"TestEWM.test_cython_vs_numba_times  s     ///011f!kGG..G444BsG  	
 	
 gbkkoodiu  
 
 #(X8TTFF8888,,
fh/////r   N)
r~   r   r   r   r   r   r   r   r   r   rT   r   r   r   r      sz       [KK!9!9:@S    [X77D D 87 D
 [KK!9!9:@S    [X77  87  [Y(;<<[X770 0 87 =<0& [Y(;<<0 0 =<0 0 0r   r   c                  j   d } t          t          d                    }t          dd          5  |                    d                              | d d          }d d d            n# 1 swxY w Y   |                    d                              | dd          }t          j        ||           d S )Nc                 0    t          j        |           dz   S )Nr4   r(   ra   s    r   r.   z!test_use_global_config.<locals>.f1  s    wqzzA~r   r5   zcompute.use_numbaTr4   re   r
   )r   r=   r   r>   r?   r@   rA   )r.   rC   rD   rE   s       r   test_use_global_configr   /  s       	uRyyA	+T	2	2 > >1##Ad#==> > > > > > > > > > > > > > >yy||!!!G!>>H8V,,,,,s   ,A((A,/A,c                      t          j        t          d          5  t          t	          d                                        d                              d ddidd           d d d            d S # 1 swxY w Y   d S )	Nz"numba does not support kwargs withr   rP   c                     | S r    rT   ra   s    r   r   z.test_invalid_kwargs_nopython.<locals>.<lambda>?  s    a r   r   r
   T)rW   r8   r:   )r   r   r   r   r=   r>   r?   rT   r   r   test_invalid_kwargs_nopythonr   ;  s    	~-Q	R	R	R 
 
uQxx  ##))Kad 	* 	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s   A
A33A7:A7c                      e Zd Zd Zd Zd Zd Zd Zd Ze	j
                            d ej        d           ej        d	           ej        d
          g          e	j
                            dddg          d                         ZdS )TestTableMethodc                    d }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 )
Nc                 4    t          j        | d          dz   S Nr   axisrP   rk   ra   s    r   r.   z7TestTableMethod.test_table_series_valueerror.<locals>.fI      6!!$$$q((r   z1method='table' not applicable for Series objects.r   rP   r   )r   r
   Tre   )r   r   r   r   r=   r>   r?   )rB   r.   s     r   test_table_series_valueerrorz,TestTableMethod.test_table_series_valueerrorH  s    	) 	) 	) ]Q
 
 
 	 	 588$$Qw$77=='t >   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AA44A8;A8c                     |\  }}|||d}	t          t          j        d                    }
|
                    dd|d|          }|dv rRt	          j        t          | d	          5   t          ||          d|	d
d| d d d            d S # 1 swxY w Y   d S |
                    dd|d|          } t          ||          d|	d
d|} t          ||          d|	d
d|}t          j	        ||           d S )Nr/   rK   r4   r   r   r   r   rh   r7   r   r    not supportedr   r
   r9   r8   r   rT   )
r   r)   r[   r>   r   r   NotImplementedErrorrU   r@   ru   )rB   r   r0   r1   r2   r!   r7   r   rW   r9   rw   
roll_tableroll_singlerD   rE   s                  r   !test_table_method_rolling_methodsz1TestTableMethod.test_table_method_rolling_methodsS  s    >"'X8TTrvayy!!ZZ'!RVZWW
^##2V:S:S:STTT  +
F++ "/ CI                   
 **(14 %  K 1WZ00 +G ?E F 4w{F33 +G ?E H !&(33333s   )BBBc                 H   |||d}d }t          t          j        d                    }|                    dd|d|                              |d|d	
          }	|                    dd|d|                              |d|d	
          }
t          j        |	|
           d S )Nr/   c                 4    t          j        | d          dz   S r   rk   ra   s    r   r.   z:TestTableMethod.test_table_method_rolling_apply.<locals>.fv  r   r   rK   r4   r   r   r   Tr
   r:   r9   r8   r   )r   r)   r[   r>   r?   r@   ru   )rB   r   r0   r1   r2   r7   r9   r.   rw   rD   rE   s              r   test_table_method_rolling_applyz/TestTableMethod.test_table_method_rolling_applys  s    "'X8TT	) 	) 	) rvayy!!gDad  
 

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

%t=%
I
I 	 	fh/////r   c                    d }t          g dg dg dg dg          }|                    ddd|	                              |d
d          }t          g dg dg dg dg          d d |         }t          j        ||           d S )Nc                     t          j        d| j        d         f          }| d d d df         | d d df         z                      d          | d d df                                         z  |d d d df<   |S )NrP   r4   r   r   )r)   onesshaper   )r*   arrs     r   weighted_meanzNTestTableMethod.test_table_method_rolling_weighted_mean.<locals>.weighted_mean  s    '1agaj/**CAAArrE(Qqqq!tW,11q199AaaadGKKMMIC2A2JJr   )rP   r4   g333333?)r4   rK   g?)rK   rJ   g?)rJ   rH   gffffff?r4   r   r   )r   rh   r7   Tr
   r:   r8   )rr   rt   rr   )g?rt   rr   )gk}
@gk}@rr   )g1?rI   rr   r|   )rB   r7   r   rw   rD   rE   s         r   'test_table_method_rolling_weighted_meanz7TestTableMethod.test_table_method_rolling_weighted_mean  s    	 	 	
 [[[+++{{{KLLAg14HHNNtG O 
 
 )))"""	
 
 &D& 	fh/////r   c                 <   |||d}d }t          t          j        d                    }|                    d|                              |d|d          }|                    d	|                              |d|d          }	t          j        ||	           d S )
Nr/   c                 4    t          j        | d          dz   S r   rk   ra   s    r   r.   z<TestTableMethod.test_table_method_expanding_apply.<locals>.f  r   r   rK   r   r   r   Tr
   r   r   )r   r)   r[   r\   r?   r@   ru   )
rB   r   r0   r1   r2   r9   r.   rw   rD   rE   s
             r   !test_table_method_expanding_applyz1TestTableMethod.test_table_method_expanding_apply  s    "'X8TT	) 	) 	) rvayy!!W488>>4}W ? 
 
 <<xd<;;AA4}W B 
 
 	fh/////r   c                    |\  }}|||d}t          t          j        d                    }	|	                    d|          }
|dv rRt	          j        t          | d          5   t          |
|          d|dd	| d d d            d S # 1 swxY w Y   d S |	                    d
|          } t          |
|          d|dd	|} t          ||          d|dd	|}t          j	        ||           d S )Nr/   rK   r   r   r   r   r   r
   r   r   rT   )
r   r)   r[   r\   r   r   r   rU   r@   ru   )rB   r   r0   r1   r2   r!   r   rW   r9   rw   expand_tableexpand_singlerD   rE   s                 r   #test_table_method_expanding_methodsz3TestTableMethod.test_table_method_expanding_methods  s    >"'X8TTrvayy!!||7|>>^##2V:S:S:STTT  -f-- "/ CI                   
 LLtLDDM2W\622 +G ?E F 6w}f55 +G ?E H !&(33333s   &BBBrG   rK   )r4   rK   )rK   r4   r   r   r   c                    |||d}t          |          } t          |                    dd|          |          |d          }	 t          |                    dd|          |          |d          }
t          j        |	|
           d S )Nr/   rP   r   )r   r   r   r
   r   r   )r   rU   r   r@   ru   )rB   rG   r   r   r0   r1   r2   r9   rw   rD   rE   s              r   test_table_method_ewmz%TestTableMethod.test_table_method_ewm  s     #(X8TTt__JAgDAA6JJ'
 
 
 N7266at6DDfMM'
 
 
 	fh/////r   N)r~   r   r   r   r   r   r   r   r   r   r   r   r)   r[   r   r   rT   r   r   r   r   C  s        
	 	 	4 4 4@0 0 00 0 0(0 0 04 4 40 [VfbfQii'"'&//%RSS[X770 0 87 TS0 0 0r   r   c                      t          dg di          } t          j        d          5  | j                            d                              t          j        dd           d d d            d S # 1 swxY w Y   d S )Ncol1)rP   r4   rK   rJ   rH   Fr4   Tr
   r   )r   r@   assert_produces_warningr   r>   r?   r)   prod)rw   s    r   test_npfunc_no_warningsr     s    	FOOO,	-	-B		#E	*	* D D
  d7 CCCD D D D D D D D D D D D D D D D D Ds   ;A00A47A4))numpyr)   r   pandas.compatr   pandas.errorsr   pandas.util._test_decoratorsutil_test_decoratorstdpandasr   r   r   r   pandas._testing_testingr@   pandas.util.versionr	   r   
single_cpu
pytestmarkimportorskipr
   appendskipif__version__fixturer   r!   
skip_if_nofilterwarningsr$   r   r   r   slowr   r   rT   r   r   <module>r     s        ) ) ) ) ) ) ( ( ( ( ( ( ) ) ) ) ) ) ) ) )                  ' ' ' ' ' 'k$%
G$$ 
  
K!""ggfoo5K//:K:KK8IKK      '*+++  ,+
 			2						
     wH%%i0 i0 i0 i0 i0 i0 i0 &% i0X wI0 I0 I0 I0 I0 I0 I0 I0X w- - - w
 
 
 wH%%C0 C0 C0 C0 C0 C0 C0 &%  C0L wD D D D Dr   