
    PiR:                     n   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
mZmZ d dlmZ d dlmZ ej        j        gZ ej        d          Ze                    ej                             eej                   ed          k    o	 e            dej         	                     d
 Zd Zej                            d          ej                            dddg          d                         Zej                            d          ej                            dddg          d                         Zd Z ej                            ddddgiddidddgddid e
dd          ig          d             Z!ej                            dg d          d             Z"ej                            ddd  idf ej#        dd! d" giddgej        $                    d#	          $          g          d%             Z%ej                            ddddgiddiddd&g          d'             Z&ej        j        ej                            d( eg d)          dddgif eg d)          ddif eg d)g d*ddd+g,          dddgif eg d)g d*ddd+g,          ddif eg d)g d*ddd+g,          dddgddif eg d)g d*ddd+g,          d- e
dd          ifg          d.                         Z'd/ Z(d0 Z)d1 Z*ej                            d          d2             Z+d3 Z,d4 Z-d5 Z.dS )6    N)is_platform_arm)NumbaUtilError)	DataFrameIndexNamedAgg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  |                    d                              | d           d d d            n# 1 swxY w Y   t          j        t          d	
          5  |                    d          d                             | d           d d d            d S # 1 swxY w Y   d S )Nr   c                 &    t          |           dz  S N皙@sumxs    }/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/pandas/tests/groupby/aggregate/test_numba.pyincorrect_functionz;test_correct_function_signature.<locals>.incorrect_function   s    1vv|    ar   br   r         ?       @      @      @      @keydatar"   r#   columnszThe first 2matchengine)pytestimportorskipr   raisesr   groupbyagg)r   r#   s     r   test_correct_function_signaturer/      s   
      )))3L3L3LMM  D 
~]	;	;	; D DU 27CCCD D D D D D D D D D D D D D D 
~]	;	;	; L LUF#''(:7'KKKL L L L L L L L L L L L L L L L L Ls$   +BBB*1C((C,/C,c                  r   t          j        d           d } d }t          g dg ddddg	          }|                    d                                          d
z  }t          j        t          d          5  |                    d                              | dd           d d d            n# 1 swxY w Y   t          j        t          d          5  |                    d                              |dd           d d d            n# 1 swxY w Y   t          j        t          d          5  |                    d          d                             | dd           d d d            n# 1 swxY w Y   t          j        t          d          5  |                    d          d                             |dd           d d d            n# 1 swxY w Y   t          j        t          d          5  |                    d                              | dd           d d d            n# 1 swxY w Y   |                    d                              |dd          }t          j
        |dz   |           t          j        t          d          5  |                    d          d                             | dd           d d d            n# 1 swxY w Y   |                    d          d                             |dd          }t          j        |d         dz   |           d S )Nr   c                ,    t          |           dz  |z   S r   r   valuesindexr   s      r   r   z6test_check_nopython_kwargs.<locals>.incorrect_function0       6{{S 1$$r   c                 ,    t          |           dz  |z   S r   r   r2   s      r   correct_functionz4test_check_nopython_kwargs.<locals>.correct_function3   r5   r   r   r   r!   r"   r#   r$   r   z8missing a required (keyword-only argument|argument): 'a'r&      )r)   r   z missing a required argument: 'a'znumba does not support)r)   r   )r*   r+   r   r-   r   r,   	TypeErrorr.   r   tmassert_frame_equalassert_series_equal)r   r7   r#   expectedactuals        r   test_check_nopython_kwargsr?   -   s   
   % % %% % % )))3L3L3LMM  D ||E""&&((3.H 
S
 
 
 I I 	U 27aHHHI I I I I I I I I I I I I I I 
y(J	K	K	K G GU 0AFFFG G G G G G G G G G G G G G G 
S
 
 
 Q Q 	UF#''(:7a'PPPQ Q Q Q Q Q Q Q Q Q Q Q Q Q Q 
y(J	K	K	K O OUF#''(8A'NNNO O O O O O O O O O O O O O O 
~-E	F	F	F I IU 27aHHHI I I I I I I I I I I I I I I\\%  $$%5g$KKF(Q,///	~-E	F	F	F Q QUF#''(:7a'PPPQ Q Q Q Q Q Q Q Q Q Q Q Q Q Q\\%  (,,-=gQR,SSF8F+a/88888sl   :,B22B69B6,DDD62E44E8;E82GGG>,H66H:=H:2KK!$K!ignorejitTFc                    t          j        d           d }| rdd l}|                    |          }t	          g dg ddddg          }|||d	}	|                    d|
          }
|t          u r|
d         }
|
                    |d|	          }|
                    d d          }t          j	        ||           d S )Nr   c                 0    t          j        |           dz  S r   npmeanr3   r4   s     r   
func_numbaz(test_numba_vs_cython.<locals>.func_numba]       wv$$r   r   r   r   r   r8   r8   r$   nogilparallelnopython)as_indexr)   engine_kwargsc                 0    t          j        |           dz  S r   rD   r   s    r   <lambda>z&test_numba_vs_cython.<locals>.<lambda>o       RWQZZ#%5 r   cythonr(   
r*   r+   r   rA   r   r-   r   r.   r:   assert_equal)rA   frame_or_seriesrL   rM   rN   rO   rH   r   r#   rQ   groupedresultr=   s                r   test_numba_vs_cythonr[   W   s        % % %  +YYz**
%%%*C*C*CDDqRSf  D $xPPMll1xl00G&  !*[[G=[QQF{{55h{GGHOFH%%%%%r   c                    t          j        d           d }d }| r.dd l}|                    |          }|                    |          }t	          g dg ddddg	          }|||d
}	|                    d          }
|t          u r|
d         }
|
                    |d|	          }|
                    d d          }t          j	        ||           |
                    |d|	          }|
                    d d          }t          j	        ||           |
                    |d|	          }|
                    d d          }t          j	        ||           d S )Nr   c                 0    t          j        |           dz
  S Ng333333@rD   rG   s     r   func_1ztest_cache.<locals>.func_1{   rI   r   c                 0    t          j        |           dz  S r   rD   rG   s     r   func_2ztest_cache.<locals>.func_2~   rI   r   r   r   r   rJ   r8   r$   rK   rP   c                 0    t          j        |           dz
  S r^   rD   r   s    r   rS   ztest_cache.<locals>.<lambda>   rT   r   rU   r(   c                 0    t          j        |           dz  S r   rD   r   s    r   rS   ztest_cache.<locals>.<lambda>   rT   r   c                 0    t          j        |           dz
  S r^   rD   r   s    r   rS   ztest_cache.<locals>.<lambda>   rT   r   rV   )rA   rX   rL   rM   rN   r_   ra   r   r#   rQ   rY   rZ   r=   s                r   
test_cachere   t   s   
    % % %% % %  #6""6""%%%*C*C*CDDqRSf  D $xPPMll1ooG&  !*[[}[MMF{{55h{GGHOFH%%% [[}[MMF{{55h{GGHOFH%%% [[}[MMF{{55h{GGHOFH%%%%%r   c                  h   t          j        d           d } t          g dg ddddg          }|                    d          }|                    | d	          }t          d
d          5  |                    | d 	          }d d d            n# 1 swxY w Y   t          j        ||           d S )Nr   c                 0    t          j        |           dz
  S r^   rD   rG   s     r   r_   z&test_use_global_config.<locals>.func_1   rI   r   r   r   rJ   r   r8   r$   r(   zcompute.use_numbaT)r*   r+   r   r-   r.   r	   r:   r;   )r_   r#   rY   r=   rZ   s        r   test_use_global_configrh      s   
   % % % %%%*C*C*CDDqRSf  D ll1ooG{{6'{22H	+T	2	2 2 2VD112 2 2 2 2 2 2 2 2 2 2 2 2 2 2(F+++++s   .BBB
agg_kwargsfuncminmaxr   )r8      bminr8   )columnaggfuncc                     t          j        d           t          g dg dg ddg d          }|                    d          } |j        d
i | ddi} |j        d
i | dd	i}t          j        ||           d S )Nr   r   r   r8   rm            r   r8   rm   r$   r   r)   rU    r*   r+   r   r-   r.   r:   r;   )ri   r#   rY   rZ   r=   s        r   $test_multifunc_numba_vs_cython_framery      s        ((((((	
 	

 		  D ll1ooGW[66:66g666Fw{99Z99999H&(+++++r   )r   rF   varstdrk   rl   c                 6   t          j        d           t          g ddt          j        dddgg ddg d	          }|                    d
          }|                    | dd          }|                    | dd          }t          j        ||           d S )Nr   r   r   r   r   r    rr   rv   r$   r   F)skipnar)   rU   )	r*   r+   r   rE   nanr-   r.   r:   r;   )rj   r#   rY   rZ   r=   s        r   -test_multifunc_numba_vs_cython_frame_noskipnar      s    
   (((RVS#s+	
 	

 		  D ll1ooG[[eG[<<F{{4h{??H&(+++++r   zagg_kwargs,expected_funcc                 *    |                                  S Nr   rG   s     r   rS   rS      s    

 r   c                 *    |                                  S r   r   rG   s     r   rS   rS          &**,, r   c                 *    |                                  S r   rk   rG   s     r   rS   rS      r   r   z2This doesn't work yet! Fails in nopython pipeline!)marksc                    t          j        d           t          g dg dg ddg d          }|                    d          } |j        di | ddi}|                    |d	
          }t          j        ||d           d S )Nr   r   r   rr   rv   r$   r   r)   rU   r(   F)check_dtyperw   rx   )ri   expected_funcr#   rY   rZ   r=   s         r   test_multifunc_numba_udf_framer      s    (    ((((((	
 	

 		  D ll1ooGW[66:66g666F{{={::H &(>>>>>>r   )min_valmax_valc                 L   t          j        d           g d}t          g d          }|                    |          }d| d<    |j        di | }d| d<    |j        di | }t          |t                    rt          j        ||           d S t          j	        ||           d S )Nr   r   r   r)   rU   rw   )
r*   r+   r   r-   r.   
isinstancer   r:   r;   r<   )ri   labelsr#   rY   rZ   r=   s         r   %test_multifunc_numba_vs_cython_seriesr      s    
    &&&F+++,,Dll6""G"JxW[&&:&&F#Jxw{((Z((H(I&& 1
fh/////
vx00000r   zdata,agg_kwargsr   rr   rm   r$   min_colc                 ,   t          j        d           g d}|                     |          } |j        di |dddid} |j        di |ddi}t	          |t
                    rt          j        ||           d S t          j        ||           d S )Nr   r   rM   TrP   r)   rw   )	r*   r+   r-   r.   r   r   r:   r;   r<   )r#   ri   r   rY   rZ   r=   s         r   &test_multifunc_numba_kwarg_propagationr     s    B    &&&Fll6""GW[XX:XgjRVEWXXXXFw{88Z88888H(I&& 1
fh/////
vx00000r   c                     t          j        d           d } t          g dg dd          }|                    d          d         }|                    | dd	          }t          d
gdz  dt          ddgd                    }t          j        ||           |                    | dd	          }t          dgdz  dt          ddgd                    }t          j        ||           d S )Nr   c                 <    | | d                                           S r   r   )r3   r4   ns      r   sum_lastz&test_args_not_cached.<locals>.sum_last@  s    qbcc{   r   )r   r   r8   r8   )r8   r8   r8   r8   )idr   r   r   r8   r(   r   rm   r   name)r   r4   r   )	r*   r+   r   r-   r.   r   r   r:   r<   )r   df	grouped_xrZ   r=   s        r   test_args_not_cachedr   <  s   
   ! ! ! 
,,,\\\::	;	;B

4  %I]]8Qw]77Fseaic1vD1I1I1IJJJH68,,,]]8Qw]77Fseaic1vD1I1I1IJJJH68,,,,,r   c                  2   t          j        d           d } t          g dg ddg d          }|                    d                              | d	          }t          d
dgdgt          ddgd                    }t          j        ||           d S )Nr   c                 *    t          j        |          S r   rD   rG   s     r   fz+test_index_data_correctly_passed.<locals>.fR  s    wu~~r   )Ar   B)rt   ru      )groupv))r4   r   r(   g      g      r   r   r   r   )r%   r4   )r*   r+   r   r-   	aggregater   r:   r;   )r   r   rZ   r=   s       r    test_index_data_correctly_passedr   N  s    
      
___999==\\\	R	R	RBZZ  **1W*==F	tse5#s'+J+J+J  H &(+++++r   c                     t          j        d           dddfd} d}t          dg di          }|                    d	                              | d|
          }t          dg di          }t          j        ||           dd}|                    d	                              | d|
          }t          dg di          }t          j        ||           d S )Nr   TFc                     z   z   S r   rw   )r3   r4   rL   rN   rM   s     r   func_kwargsz2test_engine_kwargs_not_cached.<locals>.func_kwargse  s    x(**r   rN   rL   rM   value)r   r   r   r   )levelrP   )r   r   r   )r   r   r   )r*   r+   r   r-   r   r:   r;   )r   rQ   r   rZ   r=   rL   rN   rM   s        @@@r   test_engine_kwargs_not_cachedr   ]  s?       EHH+ + + + + + + "*ExPPM	GYYY'	(	(BZZaZ  **G= +  F '???344H&(+++E!)ExPPMZZaZ  **G= +  F '???344H&(+++++r   c                 Z   t          j        d           d }t          ddddg                              ddg          }|| |d	}|                    d                              |d|
          }t          dgt          dgd          dg          }t          j        ||           d S )Nr   c                     dS Nr8   rw   rG   s     r   
numba_funcz+test_multiindex_one_key.<locals>.numba_func}      qr   r8   rm   rs   r   r   Cr   r   r   rP   r   r   r   )r4   r%   )	r*   r+   r   	set_indexr-   r.   r   r:   r;   )rL   rM   rN   r   r   rQ   rZ   r=   s           r   test_multiindex_one_keyr   y  s    
      
!!!,,-	.	.	8	8#s	D	DB!)ExPPMZZ__  7- !  F #eQCc&:&:&:SEJJJH&(+++++r   c                 T   t          j        d           d }t          ddddg                              ddg          }|| |d	}t          j        t
          d
          5  |                    ddg                              |d|           d d d            d S # 1 swxY w Y   d S )Nr   c                     dS r   rw   rG   s     r   r   z;test_multiindex_multi_key_not_supported.<locals>.numba_func  r   r   r8   rm   rs   r   r   r   r   zmore than 1 grouping labelsr&   rP   )r*   r+   r   r   r,   NotImplementedErrorr-   r.   )rL   rM   rN   r   r   rQ   s         r   'test_multiindex_multi_key_not_supportedr     s   
      
!!!,,-	.	.	8	8#s	D	DB!)ExPPM	*2O	P	P	P 
 



C:""wm 	# 	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s   ".BB!$B!c                 J   t          j        d           | \  }}t          g dg dt          j                            d                              d          t          j                            d                              d          d          }|                    ddg          } |j        |fd	di|} |j        |fd	d
i|}t          j
        ||            t          ||          dd	di|} t          ||          dd	d
i|}t          j
        ||           d S )Nr   foobarr   r   r   r   r   r   oner   twothreer   r   r   r   rm      r   r   r   Dr   r   r)   rU   rw   )r*   r+   r   rE   randomdefault_rngstandard_normalr-   r.   r:   r;   getattr)	numba_supported_reductions	reductionkwargsr   gbres_aggexpected_agg
direct_resdirect_expecteds	            r   test_multilabel_numba_vs_cythonr     sQ   
   2Iv	IIIMMM&&q))99!<<&&q))99!<<		
 	

 
B 
S#J		BbfY99w9&99G26)??H???L'<000'Y''AAwA&AAJ,gb),,GGHGGGO*o66666r   c                     t          j        d           t          g dg dt          j                            d                              d          t          j                            d                              d          d          } |                     ddg          }|                    d	 d
          }|                    d d
          }t          j
        ||           d S )Nr   r   r   rm   r   r   r   r   c                 *    |                                  S r   r   rG   s     r   rS   z5test_multilabel_udf_numba_vs_cython.<locals>.<lambda>  r   r   r(   c                 *    |                                  S r   r   r   s    r   rS   z5test_multilabel_udf_numba_vs_cython.<locals>.<lambda>  s     r   rU   )r*   r+   r   rE   r   r   r   r-   r.   r:   r;   )r   r   rZ   r=   s       r   #test_multilabel_udf_numba_vs_cythonr     s    
   	IIIMMM&&q))99!<<&&q))99!<<		
 	

 
B 
S#J		BVV66wVGGFvv''v99H&(+++++r   )/numpyrE   r*   pandas.compatr   pandas.errorsr   pandasr   r   r   r   r	   pandas._testing_testingr:   pandas.util.versionr
   mark
single_cpu
pytestmarkr+   r   appendskipif__version__r/   r?   filterwarningsparametrizer[   re   rh   ry   r   paramxfailr   r   r   r   r   r   r   r   r   r   rw   r   r   <module>r      s        ) ) ) ) ) ) ( ( ( ( ( (                    ' ' ' ' ' 'k$%
G$$ 
  
K!""ggfoo5K//:K:KK8IKK     L L L"'9 '9 '9T H%%u..& & /. &%&4 H%%u..$& $& /. &%$&N, , ,  	% 		eU^../	E2223	 , , ,  !L!L!LMM, , NM,  
44	5u=6666 EN+##K $  	
 	
 	
 &? ?' &?$ uenEe0T0TU 1 1	 1 	)))	*	*VeU^,DE	)))	*	*VUO<I---///BBQPQF   eU^$		
 I---///BBQPQF   UO		
 I---///BBQPQF   %E223		
 I---///BBQPQF   5999:		
+ >	1 	1?  @	1- - -$, , ,, , ,8 H%%, , &%,
 
 
7 7 7*, , , , ,r   