
    g>                     &   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                            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)NumbaUtilError)	DataFrameSeriesoption_contextto_datetimesingletable)paramsc                     | j         S )z3method keyword in rolling/expanding/ewm constructorparamrequests    j/var/www/html/nodeJS/PythonScripts/venv3.11/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   numba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>.f/   s4    G  371::''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    	( 	( 	(  	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   r2      r1   c                     |\  }}|||d}	|                     d|          }
 t          |
|          dd|	d|} t          |
|          dddi|}t          j        ||           d S )	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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,   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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 )NrG   r%   r'   s    r   func_1z+TestEngine.test_cache_apply.<locals>.func_1   s    71::>!r   c                 0    t          j        |           dz  S )NrE   )r&   r   r^   s    r   func_2z+TestEngine.test_cache_apply.<locals>.func_2   s    6!99q= 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|   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_periodsrY   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   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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   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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parametrizerC   r   r&   rX   naninfTr   r:   rV   r[   rc   ru   rz   rQ   r   r   r!   r!   )   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   rQ   r^   s    r   <lambda>zTestEWM.<lambda>       a r   c                 ,    |                      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           ||                              d          |          d	           d d d            d S # 1 swxY w Y   d S )
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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   rQ   r^   s    r   r   zTestEWM.<lambda>   r   r   c                 ,    |                      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           ||                              d          |          dd	d
i           d d d            d S # 1 swxY w Y   d S )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   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   rG   r   c                     | S r   rQ   r^   s    r   r   z.TestEWM.test_cython_vs_numba.<locals>.<lambda>        r   r   r   c                 ,    |                      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    
 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   rM   rM   r1   r1   r   c                     | S r   rQ   r^   s    r   r   z4TestEWM.test_cython_vs_numba_times.<locals>.<lambda>	  r   r   c                 ,    |                      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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   rQ   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 )Nr1   r%   r^   s    r   r+   z!test_use_global_config.<locals>.f'  s    wqzzA~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       	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   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  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   axisrM   rh   r^   s    r   r+   z7TestTableMethod.test_table_series_valueerror.<locals>.f?      6!!$$$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>  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,   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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   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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 )NrM   r1   r   r   )r&   onesshaper   )r'   arrs     r   weighted_meanzNTestTableMethod.test_table_method_rolling_weighted_mean.<locals>.weighted_meany  s    '1agaj/**CAAArrE(Qqqq!tW,11q199AaaadGKKMM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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   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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,   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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rD   rH   )r1   rH   )rH   r1   r   r   r   c                    |||d}t          |          } t          |                    dd|          |          |d          }	 t          |                    dd|          |          |d          }
t          j        |	|
           d S )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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&   rX   r   r   rQ   r   r   r   r   9  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)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    	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.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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   