
    |och'                        d dl Zd dlZd dlmZ d dlmZ d dl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j+                  ej                   j-                   eej.                         ed      k(  xr  e       dej.                   	             d
 Zd Zej                   j5                  d      ej                   j7                  dddg      ej                   j7                  dddg      ej                   j7                  dddg      d                             Zej                   j5                  d      ej                   j7                  dddg      ej                   j7                  dddg      d                      Zd Zej                   j7                  dddgdddgddg      d        Zd Z d Z!d Z"ej                   j5                  d      d         Z#d! Z$d" Z%d# Z&y)$    N)is_platform_arm)NumbaUtilError)	DataFrameSeriesoption_context)Versionnumbaz0.61z&Segfaults on ARM platforms with numba )reasonc                     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)Nr	   c                     | dz   S N    xs    x/mnt/ACDE16A4DE16673C/PROJECTS/MIS_PORTAL/venv/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_kwargsr2   +   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>.funcD   r1   r   r   r   r   r   r   r   r   nogilparallelnopython)r6   r   r#   engine_kwargsc                     | dz   S r   r   r   s    r   <lambda>z&test_numba_vs_cython.<locals>.<lambda>V   
    1q5 r   cythonr"   	r%   r&   r	   r4   r   r(   r)   tmassert_equal)r4   r5   r<   r=   r>   r6   r9   r	   r   r@   groupedresultexpecteds                r   test_numba_vs_cythonrK   <   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_1c   r1   r   c                     | dz  S N   r   r.   s     r   func_2ztest_cache.<locals>.func_2f   r1   r   r   r   r   r:   r   r   r;   r   r?   c                     | dz   S r   r   r   s    r   rB   ztest_cache.<locals>.<lambda>x   rC   r   rD   r"   c                     | dz  S rP   r   r   s    r   rB   ztest_cache.<locals>.<lambda>|   rC   r   c                     | dz   S r   r   r   s    r   rB   ztest_cache.<locals>.<lambda>   rC   r   rE   )r4   r5   r<   r=   r>   rN   rR   r	   r   r@   rH   rI   rJ   s                r   
test_cacherV   [   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   rN   z&test_use_global_config.<locals>.func_1   r1   r   r   r   r:   r   r   r   r"   zcompute.use_numbaT)r%   r&   r   r(   r)   r   rF   assert_frame_equal)rN   r   rH   rJ   rI   s        r   test_use_global_configrZ      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   r:   r   r   r   r#   rD   )r%   r&   r   r(   r)   rF   rY   assert_series_equal)r[   numba_supported_reductionskwargsr   rH   rI   rJ   s          r   test_string_cython_vs_numbare      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/   r0   ns      r   sum_lastz&test_args_not_cached.<locals>.sum_last   s    qbc{  r   )r   r   r   r   )r   r   r   r   )idr   rk   r   r   r"   r      )name   r   )r%   r&   r   r(   r)   r   rF   rb   )rj   df	grouped_xrI   rJ   s        r   test_args_not_cachedrq      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   )Aru   r_   )rl   rQ      )groupv))r0   rw   r"   )g      g      g       rx   )r   r0   r%   r&   r   r(   r)   rF   rY   )rt   ro   rI   rJ   s       r    test_index_data_correctly_passedr}      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 rh   r   )r/   r0   r<   r>   r=   s     r   func_kwargsz2test_engine_kwargs_not_cached.<locals>.func_kwargs   s    x(**r   r>   r<   r=   value)r   r   r   r   )levelr?   )r   r   r   )r   r   r   r|   )r   r@   ro   rI   rJ   r<   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   rn      ru   r_   r`   ru   r_   r   r?   r   )r%   r&   r   	set_indexr(   r)   rF   rY   )r<   r=   r>   r   ro   r@   rI   rJ   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   rn   r   r   ru   r_   r   zmore than 1 grouping labelsr    r?   )r%   r&   r   r   r'   NotImplementedErrorr(   r)   )r<   r=   r>   r   ro   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   rn      ru   r_   r`   Dru   r_   r#   rD   r%   r&   r   nprandomdefault_rngstandard_normalr(   r)   rF   rY   )rc   	reductionrd   ro   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   rn   r   r   ru   r_   c                 l    | | j                         z
  | j                         | j                         z
  z  S rh   r\   r]   r.   s     r   rB   z5test_multilabel_udf_numba_vs_cython.<locals>.<lambda>   s'    v

4

9TU r   r"   c                 l    | | j                         z
  | j                         | j                         z
  z  S rh   r   r   s    r   rB   z5test_multilabel_udf_numba_vs_cython.<locals>.<lambda>$  s&    1quuw;1557QUUW#45 r   rD   r   )ro   r   rI   rJ   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.compatr   pandas.errorsr   pandasr   r   r   pandas._testing_testingrF   pandas.util.versionr   mark
single_cpu
pytestmarkr&   r	   appendskipif__version__r+   r2   filterwarningsparametrizerK   rV   rZ   re   rq   r}   r   r   r   r   r   r   r   r   <module>r      s     ) ( 
  'kk$$%
G$ 
  
KK!!"gfo5K/:K78I8I7JK  R"W" H%u.+'>?dE]3& 4 @ / &
&4 H%u.+'>?#& @ / &#&L," %uen5(IJ--"-$
,,8 H%, &,
1",r   