
    .iV                        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 d dlmZ ej.                  j0                  gZ ej4                  d      Zej9                  ej.                  j;                   eej<                         ed      k(  xr  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        Z" e
jF                  d      ej.                  jI                  d       G d d                    Z% e
jF                  d       G d d             Z& e
jF                  d      d        Z' e
jF                  d      d        Z( e
jF                  d      ej.                  jR                  ej.                  jI                  d       G d  d!                           Z* e
jF                  d      d"        Z+ G d# d$e      Z, e
jF                  d       G d% d&             Z-y)'    N)is_platform_arm)NumbaUtilError)	DataFrameSeriesoption_contextto_datetime)BaseIndexer)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/app/trading-bot/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   c                  h    t        dgdz  dgdz  z   dgdz  z   t        j                  d      d      S )	N                  (   AB)r   nparange r   r   
roll_framer1   4   s6    A38qcBh.!q8ryy}MNNr   ignorec                   d   e Zd Zej                  j                  dddg      d        Zd Z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   r.   r   )xargsarg_sumargs       r   fz0TestEngine.test_numba_vs_cython_apply.<locals>.f?   s2    G 3771:''r   r   nogilparallelnopythonr&   
   r&   )centerstepr   T)r;   engineengine_kwargsrawcython)rG   r;   rI   r   r5   r   rangerollingapplytmassert_series_equal)selfr5   r@   rA   rB   rE   rF   r>   r   rH   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   c                    dd}t        t        d            }|j                  d      j                  |ddddi      }|j                  d      j	                         dz   }t        j                  ||       |j                  d      j                  |ddd	
      }t        j                  ||       |j                         j                  |ddddi      }|j                         j	                         dz   }t        j                  ||       |j                         j                  |ddd	
      }t        j                  ||       |j                  d      j                  d      j                  |ddddi      }|j                  d      j                  d      j	                         dz   }t        j                  ||       |j                  d      j                  d      j                  |ddd	
      }t        j                  ||       |j                  d      j                         j                  |ddddi      }|j                  d      j                         j	                         dz   }t        j                  ||       |j                  d      j                         j                  |ddd	
      }t        j                  ||       y )Nc                 (    | j                         |z   S r!   r   )sras     r   funcz5TestEngine.test_apply_numba_with_kwargs.<locals>.funcY   s    668a<r   rD      r   TrZ   r$   )rG   rI   kwargsr$   )rG   rI   r;   r,   )r   )	r   rL   rM   rN   r   rO   assert_frame_equal	expandinggroupby)rQ   r1   r[   datarS   rT   s         r   test_apply_numba_with_kwargsz'TestEngine.test_apply_numba_with_kwargsV   sw   	  r#a&&tGsTUh&W<<?&&(1,
fh/a&&tGD&Q
fh/ !''W$PSUVx'X>>#'')A-
fh/!''W$T'R
fh/ s#WQZU4T3(UC 	
 %%c*221599;a?
fh/ s#WQZU4TU= 	
 	fh/ s#Y[U4T3(UC 	
 %%c*446::<q@
fh/ s#Y[U4TU= 	
 	fh/r   c                 N   d }t        ddgddgddgdd	gg      }|j                  dd
d      j                  |dd      }t        t        j                  t        j                  gt        j                  t        j                  gddgdd	gg      }t        j                  ||       y )Nc                 ,    t        |       dk(  sJ | d   S )Nr(   )lenr:   s    r   last_rowz3TestEngine.test_numba_min_periods.<locals>.last_row   s    q6Q;;R5Lr   r$   r&   r(      r\         r)   r   r   min_periodsTr   rI   rG   )r   rM   rN   r.   nanrO   r_   )rQ   ri   dfrS   rT   s        r   test_numba_min_periodsz!TestEngine.test_numba_min_periods   s    	 AAAA78Ag1=CC$w D 
 rvvrvv.0@1a&1a&QR
fh/r   rb   r\   rl   rj   r(   rk   foonamer%   rD   r$   r&   c                     |\  }}|||d}	|j                  d|      }
 t        |
|      dd|	d|} t        |
|      dddi|}t        j                  ||       y )	Nr?   r(   rF   r   rG   rH   rG   rJ   r0   )rM   getattrrO   assert_equal)rQ   rb   r@   rA   rB   r"   rF   r   r]   rH   rollrS   rT   s                r   $test_numba_vs_cython_rolling_methodsz/TestEngine.test_numba_vs_cython_rolling_methods   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?   r\   r   rx   rG   rJ   r0   )r   r.   eyer`   ry   rO   rz   )rQ   rb   r@   rA   rB   r"   r   r]   rH   expandrS   rT   s               r   &test_numba_vs_cython_expanding_methodsz1TestEngine.test_numba_vs_cython_expanding_methods   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   r9   rh   s    r   func_1z+TestEngine.test_cache_apply.<locals>.func_1   s    771:>!r   c                 2    t        j                  |       dz  S )Nr\   )r.   r   rh   s    r   func_2z+TestEngine.test_cache_apply.<locals>.func_2   s    66!9q= r   r   r?   rD   r&   rw   r   T)rG   rH   rI   rJ   rG   rI   rK   )rQ   r5   r@   rA   rB   rF   r   r   r   rH   r{   rS   rT   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_kwargsrM   r   )windowrn   r`   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   rB   r@   rA   valuer   r   r   r   Tr   r^   )rI   rG   rH   r;         ?r   r   rC          @r   r   r0   )r   ry   rN   rO   r_   )rQ   r   window_kwargsr@   rA   rB   r   r   rH   rq   rS   rT   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!   r0   )r:   r@   rB   rA   s    r   r[   z6TestEngine.test_dont_cache_engine_kwargs.<locals>.func  s    8#h..r   r   r   r   r$   r   )rI   rG   rH   r   r   r   rM   rN   rO   r_   )	rQ   r[   rH   rq   rS   rT   r@   rB   rA   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parametrizerU   rc   rr   r   r.   r~   rp   infTr   rL   r|   r   r   r   r   r0   r   r   r4   r4   9   s    [[UT5M21 31060p0 [[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   r4   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!   r0   rh   s    r   <lambda>zTestEWM.<lambda>2      a r   c                 $    | j                  d      S Nr,   ra   rh   s    r   r   zTestEWM.<lambda>2      199S> r   Nonera   )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rZ   brZ   r   rj   r+   zengine must be eithermatchr   comrs   rG   r   rL   r   raises
ValueErrorry   ewmrQ   r   r   rq   s       r   test_invalid_enginezTestEWM.test_invalid_engine1  s`    
 1aAB]]:-DE 	D5GGBKOOO,f5UC	D 	D 	Ds   *A((A1c                     | S r!   r0   rh   s    r   r   zTestEWM.<lambda>;  r   r   c                 $    | j                  d      S r   r   rh   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   r   r   rJ   rB   Trx   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!   r0   rh   s    r   r   z.TestEWM.test_cython_vs_numba.<locals>.<lambda>L       r   r   r,   c                 $    | j                  d      S r   r   rh   s    r   r   z.TestEWM.test_cython_vs_numba.<locals>.<lambda>O      		# r   r   Tr   )r   adjust	ignore_nar?   r   rx   rJ   r   )r   rL   r   ry   rO   r_   )rQ   r   r   r@   rA   rB   r   r   rq   r   rH   rS   rT   s                r   test_cython_vs_numbazTestEWM.test_cython_vs_numbaE  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   r$   r$   r&   r&   r   c                     | S r!   r0   rh   s    r   r   z4TestEWM.test_cython_vs_numba_times.<locals>.<lambda>`  r   r   c                 $    | j                  d      S r   r   rh   s    r   r   z4TestEWM.test_cython_vs_numba_times.<locals>.<lambda>b  r   r   )rZ   r   rZ   r   r   rZ   r,   z23 days)
2020-01-01r   z
2020-01-02z
2020-01-10z
2020-02-23z
2020-01-03T)halflifer   r   timesr?   r   rx   rJ   r   )r   r   r   r   rO   r_   )rQ   r   r@   rA   rB   r   rq   r   r   r   rH   rS   rT   s                r   test_cython_vs_numba_timesz"TestEWM.test_cython_vs_numba_timesZ  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   r0   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 )Nr&   r9   rh   s    r   r>   z!test_use_global_config.<locals>.f~  s    wwqzA~r   rD   zcompute.use_numbaTr&   r   r   )r   rL   r   rM   rN   rO   rP   )r>   rR   rS   rT   s       r   test_use_global_configr   |  s     	uRyA	+T	2 >1##Ad#=>yy|!!!G!>H8V,> >s   $B

Bc            	      x   t        j                  t        d      5  t        t	        d            j                  d      j                  d ddidd       d d d        t        j                  t        d	      5  t        t	        d            j                  d      j                  d
 ddidd       d d d        t        j                  t        t	        d      t              dz   t        t	        d            j                  d      j                  d ddidd             y # 1 sw Y   xY w# 1 sw Y   ~xY w)Nz&got an unexpected keyword argument 'a'r   r$   c                     | S r!   r0   rh   s    r   r   z.test_invalid_kwargs_nopython.<locals>.<lambda>  s    a r   rZ   r   T)r]   rG   rI   z-numba does not support keyword-only argumentsc                    | S r!   r0   r:   rZ   s     r   r   z.test_invalid_kwargs_nopython.<locals>.<lambda>  s    A r   dtypec                 (    | |z   j                         S r!   rX   r   s     r   r   z.test_invalid_kwargs_nopython.<locals>.<lambda>  s    QUKKM r   )r   r   	TypeErrorr   rL   rM   rN   r   rO   rP   floatr0   r   r   test_invalid_kwargs_nopythonr     s	   	y(P	Q 
uQx  #))ad 	* 	

 
M
 
 	uQx  #))sAhwD 	* 	

 uQxu%)uQx		)3(7PT	U	
 

 
s   :D$9:D0$D-0D9c                   "   e Zd 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   axisr$   r   rh   s    r   r>   z7TestTableMethod.test_table_series_valueerror.<locals>.f      66!!$q((r   z1method='table' not applicable for Series objects.r   r$   r   r   r   Tr   )r   r   r   r   rL   rM   rN   )rQ   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?   r(   r&   r   r   r   rn   rF   r   r    not supportedr   r   rH   rG   r   r0   )
r   r.   r~   rM   r   r   NotImplementedErrorry   rO   r_   )rQ   r@   rA   rB   r"   rF   r   r]   rH   rq   
roll_tableroll_singlerS   rT   s                 r   !test_table_method_rolling_methodsz1TestTableMethod.test_table_method_rolling_methods  s    >"'X8Trvvay!ZZ'qtZL
^#2VHN:ST +
F+ "/CI 
 **QxQT*RK0WZ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   r   rh   s    r   r>   z:TestTableMethod.test_table_method_rolling_apply.<locals>.f  r   r   r(   r&   r   r   r   Tr   rI   rH   rG   r   )r   r.   r~   rM   rN   rO   r_   )
rQ   r@   rA   rB   rF   rH   r>   rq   rS   rT   s
             r   test_table_method_rolling_applyz/TestTableMethod.test_table_method_rolling_apply  s    "'X8T	) rvvay!Ag14HNN4}W O 
 ::aad:KQQ4}W R 
 	fh/r   c                 z   d }t        g dg dd      }|j                  ddd      d	d
g   j                  |dd      }t        g dg dd      }t        j                  ||       |j                  ddd      d
d	g   j                  |dd      }t        g dg dd      }t        j                  ||       y )Nc                 N    t        j                  | d d df   | d d df   z
        S )Nr   r$   )r.   nanmeanrh   s    r   r>   zDTestTableMethod.test_table_method_rolling_apply_col_order.<locals>.f  s&    ::a1g!Q$/00r   )r$   r&   r(   rj   r\   rk   )rk   rl   r)   r\   rk   rl   )rZ   r   r(   r   r   rm   rZ   r   Tr   ro   )r   r   gh˹WUg4F먪rf   )r\   r\   r\   gh˹WU@g4F먪@r$   )r   rZ   )r   rM   rN   rO   assert_almost_equal)rQ   r>   rq   rS   rT   s        r   )test_table_method_rolling_apply_col_orderz9TestTableMethod.test_table_method_rolling_apply_col_order  s    	1 ''
 Ag1=sCjIOO4 P 
 99
 	vx0Ag1=sCjIOO4 P 
 33
 	vx0r   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 )Nr$   r&   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   )r$   r&   g333333?)r&   r(   g?)r(   rj   g?)rj   r\   gffffff?r&   r   r   r   Tr   ro   )r   r   r   )g?r   r   )gk}
@gk}@r   )g1?rl   r   r   )rQ   rF   r   rq   rS   rT   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   r   rh   s    r   r>   z<TestTableMethod.test_table_method_expanding_apply.<locals>.f  r   r   r(   r   r   Tr   r   r   )r   r.   r~   r`   rN   rO   r_   )	rQ   r@   rA   rB   rH   r>   rq   rS   rT   s	            r   !test_table_method_expanding_applyz1TestTableMethod.test_table_method_expanding_apply  s    "'X8T	) rvvay!W-334}W 4 
 <<x<0664}W 7 
 	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?   r(   r   r   r   r   r   r   r   r   r0   )
r   r.   r~   r`   r   r   r   ry   rO   r_   )rQ   r@   rA   rB   r"   r   r]   rH   rq   expand_tableexpand_singlerS   rT   s                r   #test_table_method_expanding_methodsz3TestTableMethod.test_table_method_expanding_methods  s    >"'X8Trvvay!||7|3^#2VHN:ST -f- "/CI 
 LLL9M2W\62 +G?EF 6w}f5 +G?EH !!&(3 s   CCrb   r(   )r&   r(   )r(   r&   r   r   r   c                     |||d}t        |      } t        |j                  dd      |      |d      } t        |j                  dd      |      |d      }	t        j                  ||	       y )Nr?   r$   r   )r   r   r   r   r   )r   ry   r   rO   r_   )
rQ   rb   r   r@   rA   rB   rH   rq   rS   rT   s
             r   test_table_method_ewmz%TestTableMethod.test_table_method_ewm4  sx     #(X8Tt_?Ag6?'
 C7266a696B'
 	fh/r   N)r   r   r   r   r   r   r   r   r  r  r   r   r   r.   r~   r   r	  r0   r   r   r   r     s    
	4:01@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)r$   r&   r(   rj   r\   Fr&   Tr   ro   )r   rO   assert_produces_warningr  rM   rN   r.   prod)rq   s    r   test_npfunc_no_warningsr  D  s^    	FO,	-B		#	#E	* D
  d7 CD D Ds   <A**A3c                   (     e Zd Z fdZ	 ddZ xZS )PrescribedWindowIndexerc                 >    || _         || _        t        |           y r!   )_start_endsuper__init__)rQ   startend	__class__s      r   r  z PrescribedWindowIndexer.__init__L  s    	r   c                     |t        | j                        }t        j                  | j                  d|      }t        j                  | j                  d|      }||fS r8   )rg   r  r.   clipr  )rQ   
num_valuesrn   rE   closedrF   r  r  s           r   get_window_boundsz)PrescribedWindowIndexer.get_window_boundsQ  sN     T[[)JQ
3ggdiiJ/czr   )NNNNN)r   r   r   r  r  __classcell__)r  s   @r   r  r  K  s     QUr   r  c            
           e Zd Zej                  j                  dddg dfddg dfddg dfddg dfg      d        Zd	 Zy
)TestMinMaxNumbazis_max, has_nan, exp_listTF)
      @      @r   r"  r   r"        @      @       @      "@)
r!        @r   r'  r   r'  r#  r$  r$  r&  )
r!  r   r   r   r           r(  r(  r$  r(  )
r!  r   r   r   r   r   r#  r#  r$  r   c                    g d}t        g dg dg dd      }|rt        j                  |j                  |df<   t	        |d      }|j
                  j                  t        |j                  j                         |j                  j                                     }|r|j                  d	      }n|j                  d	      }t        j                  ||       y )
N)r   r\   r)   )
r"  r'  r!  r   r   r(  r#  r$  r%  r&  )
r&   r   r(   r   rj   r   r\   r\   rl   r(   )
r(   rj   rj   r\   r\   rk   rl   r)   	   rD   rb   r  r  rb   rt   r   r   )r   r.   rp   locr   rb   rM   r  r  to_numpyr  r   r   rO   rP   )	rQ   is_maxhas_nanexp_listnan_idxrq   rT   rrS   s	            r   test_minmaxzTestMinMaxNumba.test_minmax]  s     J76
 &(ffBFF7F?#(0GGOO#BHH$5$5$79JK
 UU'U*FUU'U*F
vx0r   c                    t        j                  t        d      t         j                        }|dz   }|d   |d<   |d   dz
  |d<   t	        |dz  ||d      }|j
                  j                  t        ||            }t        j                  t        d	      5  |j                  d
       d d d        y # 1 sw Y   y xY w)Nr\   r   r$   r&   r(   r   r+  z5Start/End ordering requirement is violated at index 3r   r   r   )r.   arrayrL   int64r   rb   rM   r  r   r   r   r   )rQ   r  r  rq   r2  s        r   test_wrong_orderz TestMinMaxNumba.test_wrong_order|  s    q2aiQA8a<aeCHIGGOO3E3?@]]U
 	" EEE!	" 	" 	"s   B55B>N)r   r   r   r   r   r   r3  r7  r0   r   r   r   r   [  s\    [[#5LM4KLEMNDLM		
11,"r   r   ).numpyr.   r   pandas.compatr   pandas.errorsr   pandas.util._test_decoratorsutil_test_decoratorstdpandasr   r   r   r   pandas._testing_testingrO   pandas.api.indexersr	   pandas.util.versionr
   r   
single_cpu
pytestmarkimportorskipr   appendskipif__version__fixturer   r"   r1   
skip_if_nofilterwarningsr4   r   r   r   slowr   r  r  r   r0   r   r   <module>rN     s     ) ( ) )   + 'kk$$%
G$ 
  
KK!!"gfo5K/:K78I8I7JK   '*+ ,
 			2						
 O O wH%p0 p0 & p0f wI0 I0 I0X w- - w ( wH%`0 `0 &  `0F wD Dk   w," ," ,"r   