
    Oh?                        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j0                  d      Zej5                  ej*                  j7                   eej8                         ed      k(  xr  e       dej8                   	              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*                  jC                  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*                  jL                  ej*                  jC                  d       G d d                           Z' e
j@                  d      d         Z(y)!    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    f/var/www/html/diagnosisapp-backend/venv/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   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>.f9   s2    G 3771:''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    	( 		!A"'X8T591V$7==D4 > 
 99QvD99??hTt @ 
 	vx0r   data               foo)name   r5      r4   c                     |\  }}|||d}	|j                  d|      }
 t        |
|      dd|	d|} t        |
|      dddi|}t        j                  ||       y )	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||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/   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#!(( 
-
;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 )NrJ   r(   r*   s    r   func_1z+TestEngine.test_cache_apply.<locals>.func_1   s    771:>!r   c                 2    t        j                  |       dz  S )NrH   )r)   r   ra   s    r   func_2z+TestEngine.test_cache_apply.<locals>.func_2   s    66!9q= 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   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_periodsr\   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   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+,$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    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+,A$$d7- % 
 g78
fh/%-8TA$$d7- % 
 g7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   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    rT   ra   s    r   <lambda>zTestEWM.<lambda>       a r   c                 $    | j                  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         ||      j                  d      |      d	       d d d        y # 1 sw Y   y xY w)
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aAB]]:-DE 	D5GGBKOOO,f5UC	D 	D 	Ds   *A((A1c                     | S r    rT   ra   s    r   r   zTestEWM.<lambda>   r   r   c                 $    | j                  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         ||      j                  d      |      dd	d
i       d d d        y # 1 sw Y   y xY w)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   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   rJ   r   c                     | S r    rT   ra   s    r   r   z.TestEWM.test_cython_vs_numba.<locals>.<lambda>        r   r   r   c                 $    | j                  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    
 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   rP   rP   r4   r4   r   c                     | S r    rT   ra   s    r   r   z4TestEWM.test_cython_vs_numba_times.<locals>.<lambda>  r   r   c                 $    | j                  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f!G.G4BsG	
 bkoodiu  
 #(X8TF8888,
fh/r   N)
r~   r   r   r   r   r   r   r   r   r   rT   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 )Nr4   r(   ra   s    r   r.   z!test_use_global_config.<locals>.f1  s    wwqzA~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     	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   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   ;  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   axisrP   rk   ra   s    r   r.   z7TestTableMethod.test_table_series_valueerror.<locals>.fI      66!!$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  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/   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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   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	) 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 )NrP   r4   r   r   )r)   onesshaper   )r*   arrs     r   weighted_meanzNTestTableMethod.test_table_method_rolling_weighted_mean.<locals>.weighted_mean  sl    ''1aggaj/*CArrE(Qq!tW,11q19AadGKKM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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   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	) 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/   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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rG   rK   )r4   rK   )rK   r4   r   r   r   c                     |||d}t        |      } t        |j                  dd|      |      |d      }	 t        |j                  dd|      |      |d      }
t        j                  |	|
       y )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_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)   r[   r   r   rT   r   r   r   r   C  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)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^    	FO,	-B		#	#E	* D
  d7 CD D Ds   <A**A3))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     sJ     ) ( ) )   'kk$$%
G$ 
  
KK!!"gfo5K/:K78I8I7JK   '*+ ,
 			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   