
    Owg%                     
   d dl Zd dlZd dlmZ d dlmZmZmZ d dl	m
Z ej                  j                  Zd Zd Zej                  j#                  d      ej                  j%                  ddd	g      ej                  j%                  d
ddg      ej                  j%                  ddd	g      d                             Zej                  j#                  d      ej                  j%                  ddd	g      ej                  j%                  d
ddg      d                      Zd Zej                  j%                  dddgdddgddg      d        Zd Zd Zd Zej                  j#                  d      d        Zd Zd Zd Zy)    N)NumbaUtilError)	DataFrameSeriesoption_contextc                     t        j                  d       d } t        g dg ddddg      }t        j                  t        d	
      5  |j                  d      j                  | d       d d d        t        j                  t        d	
      5  |j                  d      d   j                  | d       d d d        y # 1 sw Y   SxY w# 1 sw Y   y xY w)Nnumbac                     | dz   S N    xs    `/var/www/horilla/myenv/lib/python3.12/site-packages/pandas/tests/groupby/transform/test_numba.pyincorrect_functionz;test_correct_function_signature.<locals>.incorrect_function   s    1u    ar   br   r         ?       @g      @g      @g      @keydatar   r   columnszThe first 2matchenginepytestimportorskipr   raisesr   groupby	transformr   r   s     r   test_correct_function_signaturer(      s    
  )3LMD 
~]	; JU%%&8%IJ 
~]	; RUF#--.@-QR RJ JR Rs   
#B?&C?CCc                     t        j                  d       d } t        g dg ddddg      }t        j                  t        d	
      5  |j                  d      j                  | dd       d d d        t        j                  t        d	
      5  |j                  d      d   j                  | dd       d d d        y # 1 sw Y   TxY w# 1 sw Y   y xY w)Nr   c                     | dz   S r
   r   valuesindexs     r   r   z6test_check_nopython_kwargs.<locals>.incorrect_function$       zr   r   r   r   r   r   r   znumba does not supportr   r   )r    r   r!   r'   s     r   test_check_nopython_kwargsr/   !   s    
  )3LMD 
~-E	F OU%%&8A%NO 
~-E	F WUF#--.@TU-VW WO OW Ws   
$C'CC
CignorejitTF
pandas_objr   r   as_indexc                 P   t        j                  d       d }| rdd l}|j                  |      }t	        g dg ddddg      }|||d	}	|j                  d|
      }
|dk(  r|
d   }
|
j                  |d|	      }|
j                  d d      }t        j                  ||       y )Nr   c                     | dz   S r
   r   r+   s     r   funcz"test_numba_vs_cython.<locals>.func:   r.   r   r   r   r   r   r   r   r   nogilparallelnopython)r3   r   r    engine_kwargsc                     | dz   S r
   r   r   s    r   <lambda>z&test_numba_vs_cython.<locals>.<lambda>L   
    1q5 r   cythonr   	r"   r#   r   r1   r   r%   r&   tmassert_equal)r1   r2   r9   r:   r;   r3   r6   r   r   r=   groupedresultexpecteds                r   test_numba_vs_cythonrH   2   s       yy%*CDqRSfD $xPMll1xl0GX!*tG=QF   BHOOFH%r   c                 l   t        j                  d       d }d }| r&dd l}|j                  |      }|j                  |      }t	        g dg ddddg	      }|||d
}	|j                  d      }
|dk(  r|
d   }
|
j                  |d|	      }|
j                  d d      }t        j                  ||       |
j                  |d|	      }|
j                  d d      }t        j                  ||       |
j                  |d|	      }|
j                  d d      }t        j                  ||       y )Nr   c                     | dz   S r
   r   r+   s     r   func_1ztest_cache.<locals>.func_1Y   r.   r   c                     | dz  S N   r   r+   s     r   func_2ztest_cache.<locals>.func_2\   r.   r   r   r   r   r7   r   r   r8   r   r<   c                     | dz   S r
   r   r   s    r   r?   ztest_cache.<locals>.<lambda>n   r@   r   rA   r   c                     | dz  S rM   r   r   s    r   r?   ztest_cache.<locals>.<lambda>r   r@   r   c                     | dz   S r
   r   r   s    r   r?   ztest_cache.<locals>.<lambda>w   r@   r   rB   )r1   r2   r9   r:   r;   rK   rO   r   r   r=   rE   rF   rG   s                r   
test_cacherS   Q   s6      6"6"%*CDqRSfD $xPMll1oGX!*vg]SF   BHOOFH%vg]SF   BHOOFH% vg]SF   BHOOFH%r   c                  <   t        j                  d       d } t        g dg ddddg      }|j                  d      }|j	                  | d	      }t        d
d      5  |j	                  | d 	      }d d d        t        j                  |       y # 1 sw Y    xY w)Nr   c                     | dz   S r
   r   r+   s     r   rK   z&test_use_global_config.<locals>.func_1~   r.   r   r   r   r7   r   r   r   r   zcompute.use_numbaT)r"   r#   r   r%   r&   r   rC   assert_frame_equal)rK   r   rE   rG   rF   s        r   test_use_global_configrW   {   s    
  %*CDqRSfD ll1oG   8H	+T	2 8""6$"78(F+8 8s   BBagg_funcminmaxsum)BCc                    t        j                  d       |\  } }t        g dg ddddg      }|j                  d      } |j                  | fddi|} |j                  | fdd	i|}t        j                  ||        |d   j                  | fddi|} |d   j                  | fdd	i|}t        j                  ||       y )
Nr   r   r   r7   r   r   r   r    rA   )r"   r#   r   r%   r&   rC   rV   assert_series_equal)rX   numba_supported_reductionskwargsr   rE   rF   rG   s          r   test_string_cython_vs_numbarb      s      1Hf%*CDqRSfD ll1oGWxBB6BF w  E(EfEH&(+!WQZ!!(E7EfEF#wqz##HHXHHH68,r   c                  l   t        j                  d       d } t        g dg dd      }|j                  d      d   }|j	                  | dd	      }t        d
gdz  d      }t        j                  ||       |j	                  | dd	      }t        dgdz  d      }t        j                  ||       y )Nr   c                 *    | | d  j                         S N)r[   )r,   r-   ns      r   sum_lastz&test_args_not_cached.<locals>.sum_last   s    qbc{  r   )r   r   r   r   )r   r   r   r   )idr   rh   r   r   r   r      )name   r   )r"   r#   r   r%   r&   r   rC   r_   )rg   df	grouped_xrF   rG   s        r   test_args_not_cachedrn      s    
 ! 
,\:	;B

4 %I  1W =Fseaic*H68,  1W =Fseaic*H68,r   c                      t        j                  d       d } t        g dg ddg d      }|j                  d      j	                  | d	      }t        g d
dgg d      }t        j                  ||       y )Nr   c                     |dz
  S r
   r   r+   s     r   fz+test_index_data_correctly_passed.<locals>.f   s    qyr   )Arr   r\   )ri   rN      )groupv))r-   rt   r   )g      g      g       ru   )r   r-   r"   r#   r   r%   r&   rC   rV   )rq   rl   rF   rG   s       r    test_index_data_correctly_passedrz      sg    
  
_9=\	RBZZ **1W*=F+cU,OH&(+r   c                     t        j                  d       dddfd} d}t        dg di      }|j                  d	      j	                  | d|
      }t        dg di      }t        j                  ||       dd}|j                  d	      j	                  | d|
      }t        dg di      }t        j                  ||       y )Nr   TFc                     z   z   S re   r   )r,   r-   r9   r;   r:   s     r   func_kwargsz2test_engine_kwargs_not_cached.<locals>.func_kwargs   s    x(**r   r;   r9   r:   value)r   r   r   r   )levelr<   )r   r   r   )r   r   r   ry   )r}   r=   rl   rF   rG   r9   r;   r:   s        @@@r   test_engine_kwargs_not_cachedr      s      EHH+ "*ExPM	GY'	(BZZaZ **G= + F '?34H&(+E!)ExPMZZaZ **G= + F '?34H&(+r   c                 6   t        j                  d       d }t        ddddg      j                  ddg      }|| |d	}|j	                  d      j                  |d|
      }t        ddddg      j                  ddg      }t        j                  ||       y )Nr   c                      yr
   r   r+   s     r   
numba_funcz+test_multiindex_one_key.<locals>.numba_func       r   r   rk      rr   r\   r]   rr   r\   r~   r<   r   )r"   r#   r   	set_indexr%   r&   rC   rV   )r9   r:   r;   r   rl   r=   rF   rG   s           r   test_multiindex_one_keyr      s    
  
!!!,-	.	8	8#s	DB!)ExPMZZ_&&7- ' F 456@@#sLH&(+r   c                 ,   t        j                  d       d }t        ddddg      j                  ddg      }|| |d	}t        j                  t
        d
      5  |j                  ddg      j                  |d|       d d d        y # 1 sw Y   y xY w)Nr   c                      yr
   r   r+   s     r   r   z;test_multiindex_multi_key_not_supported.<locals>.numba_func   r   r   r   rk   r   r   rr   r\   r~   zmore than 1 grouping labelsr   r<   )r"   r#   r   r   r$   NotImplementedErrorr%   r&   )r9   r:   r;   r   rl   r=   s         r   'test_multiindex_multi_key_not_supportedr      s    
  
!!!,-	.	8	8#s	DB!)ExPM	*2O	P 



C:((wm 	) 	

 
 
s   &B

Bc                    t        j                  d       | \  }}t        g dg dt        j                  j                  d      j                  d      t        j                  j                  d      j                  d      d      }|j                  ddg      } |j                  |fd	di|} |j                  |fd	d
i|}t        j                  ||       y )Nr   foobarr   r   r   r   r   r   oner   twothreer   r   r   r   rk      rr   r\   r]   Drr   r\   r    rA   r"   r#   r   nprandomdefault_rngstandard_normalr%   r&   rC   rV   )r`   	reductionra   rl   gbres_aggexpected_aggs          r   test_multilabel_numba_vs_cythonr      s    
 2Iv	IM&&q)99!<&&q)99!<		

B 
S#J	Bbll9?W??G2<<	E(EfEL'<0r   c                     t        j                  d       t        g dg dt        j                  j                  d      j                  d      t        j                  j                  d      j                  d      d      } | j                  ddg      }|j                  d	 d
      }|j                  d d
      }t        j                  ||       y )Nr   r   r   rk   r   r   rr   r\   c                 l    | | j                         z
  | j                         | j                         z
  z  S re   rY   rZ   r+   s     r   r?   z5test_multilabel_udf_numba_vs_cython.<locals>.<lambda>  s'    v

4

9TU r   r   c                 l    | | j                         z
  | j                         | j                         z
  z  S re   r   r   s    r   r?   z5test_multilabel_udf_numba_vs_cython.<locals>.<lambda>  s&    1quuw;1557QUUW#45 r   rA   r   )rl   r   rF   rG   s       r   #test_multilabel_udf_numba_vs_cythonr   
  s    
 	IM&&q)99!<&&q)99!<		

B 
S#J	B\\U  F ||5h  H &(+r   )numpyr   r"   pandas.errorsr   pandasr   r   r   pandas._testing_testingrC   mark
single_cpu
pytestmarkr(   r/   filterwarningsparametrizerH   rS   rW   rb   rn   rz   r   r   r   r   r   r   r   r   <module>r      s     ( 
 [[##
R"W" H%u.+'>?dE]3& 4 @ / &
&4 H%u.+'>?#& @ / &#&L," %uen5(IJ--"-$
,,8 H%, &,
1",r   