
    Mh2                        S SK rS SKrS SKJr  S SKJrJrJrJ	r	J
r
  S SKJr  \R                  R                  rS rS r\R                  R'                  S5      \R                  R)                  SSS	/5      \R                  R)                  S
SS/5      \R                  R)                  SSS	/5      S 5       5       5       5       r\R                  R'                  S5      \R                  R)                  SSS	/5      \R                  R)                  S
SS/5      S 5       5       5       rS r\R                  R)                  SSSS/0SS0SSS/SS.0S\" SSS90/5      S 5       r\R                  R)                  SSS 0S4\R2                  " SS S /0SS/\R                  R5                  SS 9S!9/5      S" 5       r\R                  R)                  SSSS/0SS0SSS#./5      S$ 5       r\R                  R                  \R                  R)                  S%\	" / S&Q5      SSS/04\	" / S&Q5      SS04\" / S&Q/ S'QS.SS(/S)9SSS/04\" / S&Q/ S'QS.SS(/S)9SS04\" / S&Q/ S'QS.SS(/S)9SSS/SS.04\" / S&Q/ S'QS.SS(/S)9S*\" SSS904/5      S+ 5       5       rS, rS- rS. r \R                  R'                  S5      S/ 5       r!S0 r"S1 r#S2 r$g)3    N)NumbaUtilError)	DataFrameIndexNamedAggSeriesoption_contextc                     [         R                  " S5        S n [        / SQ/ SQS.SS/S9n[         R                  " [        S	S
9   UR                  S5      R                  U SS9  S S S 5        [         R                  " [        S	S
9   UR                  S5      S   R                  U SS9  S S S 5        g ! , (       d  f       NS= f! , (       d  f       g = f)Nnumbac                     [        U 5      S-  $ Ng@sumxs    [/var/www/html/env/lib/python3.13/site-packages/pandas/tests/groupby/aggregate/test_numba.pyincorrect_function;test_correct_function_signature.<locals>.incorrect_function   s    1v|    ar   br   r         ?       @g      @g      @g      @keydatar   r   columnszThe first 2matchenginepytestimportorskipr   raisesr   groupbyaggr   r   s     r   test_correct_function_signaturer+      s    
  )3LMD 
~]	;U 27C 
< 
~]	;UF#''(:7'K 
<	; 
<	; 
<	;s    B3#C3
C
Cc                     [         R                  " S5        S n [        / SQ/ SQS.SS/S9n[         R                  " [        S	S
9   UR                  S5      R                  U SSS9  S S S 5        [         R                  " [        S	S
9   UR                  S5      S   R                  U SSS9  S S S 5        g ! , (       d  f       NT= f! , (       d  f       g = f)Nr
   c                     [        U 5      S-  $ r   r   valuesindexs     r   r   6test_check_nopython_kwargs.<locals>.incorrect_function&   s    6{S  r   r   r   r   r   r   r   znumba does not supportr       )r#   r   r$   r*   s     r   test_check_nopython_kwargsr3   #   s    
 ! )3LMD 
~-E	FU 27aH 
G 
~-E	FUF#''(:7a'P 
G	F 
G	F 
G	Fs   !B5$C5
C
CignorejitTF
pandas_objr   r   as_indexc                 D   [         R                  " S5        S nU (       a  SS KnUR                  U5      n[	        / SQ/ SQS.SS/S9nX#US	.n	UR                  SUS
9n
US:X  a  U
S   n
U
R                  USU	S9nU
R                  S SS9n[        R                  " X5        g )Nr
   c                 4    [         R                  " U 5      S-  $ r   npmeanr.   s     r   
func_numba(test_numba_vs_cython.<locals>.func_numba<       wwv$$r   r   r   r   r   r2   r2   r   nogilparallelnopython)r7   r   r#   engine_kwargsc                 4    [         R                  " U 5      S-  $ r   r:   r   s    r   <lambda>&test_numba_vs_cython.<locals>.<lambda>N       RWWQZ#%5r   cythonr"   	r%   r&   r
   r5   r   r(   r)   tmassert_equal)r5   r6   rB   rC   rD   r7   r=   r
   r   rF   groupedresultexpecteds                r   test_numba_vs_cythonrR   4   s      % YYz*
%*CDqRSfD $xPMll1xl0GX!*[[G=[QF{{5h{GHOOF%r   c                 N   [         R                  " S5        S nS nU (       a&  SS KnUR                  U5      nUR                  U5      n[	        / SQ/ SQS.SS/S	9nX#US
.n	UR                  S5      n
US:X  a  U
S   n
U
R                  USU	S9nU
R                  S SS9n[        R                  " X5        U
R                  USU	S9nU
R                  S SS9n[        R                  " X5        U
R                  USU	S9nU
R                  S SS9n[        R                  " X5        g )Nr
   c                 4    [         R                  " U 5      S-
  $ Ng333333@r:   r.   s     r   func_1test_cache.<locals>.func_1[   r?   r   c                 4    [         R                  " U 5      S-  $ r   r:   r.   s     r   func_2test_cache.<locals>.func_2^   r?   r   r   r   r   r@   r2   r   rA   r   rE   c                 4    [         R                  " U 5      S-
  $ rU   r:   r   s    r   rH   test_cache.<locals>.<lambda>p   rJ   r   rK   r"   c                 4    [         R                  " U 5      S-  $ r   r:   r   s    r   rH   r\   u   rJ   r   c                 4    [         R                  " U 5      S-
  $ rU   r:   r   s    r   rH   r\   z   rJ   r   rL   )r5   r6   rB   rC   rD   rV   rY   r
   r   rF   rO   rP   rQ   s                r   
test_cacher_   S   s!     %% 6"6"%*CDqRSfD $xPMll1oGX!*[[}[MF{{5h{GHOOF% [[}[MF{{5h{GHOOF% [[}[MF{{5h{GHOOF%r   c                  8   [         R                  " S5        S n [        / SQ/ SQS.SS/S9nUR                  S5      nUR	                  U SS	9n[        S
S5         UR	                  U S S	9nS S S 5        [        R                  " UW5        g ! , (       d  f       N&= f)Nr
   c                 4    [         R                  " U 5      S-
  $ rU   r:   r.   s     r   rV   &test_use_global_config.<locals>.func_1   r?   r   r   r   r@   r   r2   r   r"   zcompute.use_numbaT)r%   r&   r   r(   r)   r   rM   assert_frame_equal)rV   r   rO   rQ   rP   s        r   test_use_global_configrd   ~   s    
 % %*CDqRSfD ll1oG{{6'{2H	+T	2VD1 
3(F+ 
3	2s   B
B
agg_kwargsfuncminmaxr   )r2      bminr2   )columnaggfuncc                    [         R                  " S5        [        / SQ/ SQ/ SQS./ SQS9nUR                  S5      nUR                  " S
0 U DSS0D6nUR                  " S
0 U DSS	0D6n[
        R                  " X45        g )Nr
   r   r   r2   ri            r   r2   ri   r   r   r#   rK    r%   r&   r   r(   r)   rM   rc   )re   r   rO   rP   rQ   s        r   $test_multifunc_numba_vs_cython_frameru      sx      ((	

 D ll1oG[[6:6g6F{{9Z99H&+r   zagg_kwargs,expected_funcc                 "    U R                  5       $ Nr   r.   s     r   rH   rH      s
    

r   c                 "    U R                  5       $ rw   r   r.   s     r   rH   rH      
    &**,r   c                 "    U R                  5       $ rw   rg   r.   s     r   rH   rH      ry   r   z2This doesn't work yet! Fails in nopython pipeline!)reason)marksc                     [         R                  " S5        [        / SQ/ SQ/ SQS./ SQS9nUR                  S5      nUR                  " S0 U DSS0D6nUR	                  US	S
9n[
        R                  " XESS9  g )Nr
   r   r   rn   rr   r   r   r#   rK   r"   F)check_dtypers   rt   )re   expected_funcr   rO   rP   rQ   s         r   test_multifunc_numba_udf_framer      sx    (  ((	

 D ll1oG[[6:6g6F{{={:H &>r   )min_valmax_valc                 T   [         R                  " S5        / SQn[        / SQ5      nUR                  U5      nSU S'   UR                  " S0 U D6nSU S'   UR                  " S0 U D6n[        U[        5      (       a  [        R                  " XE5        g [        R                  " XE5        g )Nr
   r   r   r#   rK   rs   )
r%   r&   r   r(   r)   
isinstancer   rM   rc   assert_series_equal)re   labelsr   rO   rP   rQ   s         r   %test_multifunc_numba_vs_cython_seriesr      s    
  &F+,Dll6"G"Jx[[&:&F#Jx{{(Z(H(I&&
f/
v0r   zdata,agg_kwargsr   rn   ri   r   min_colc                 <   [         R                  " S5        / SQnU R                  U5      nUR                  " S0 UDSSS0S.D6nUR                  " S0 UDSS0D6n[	        U[
        5      (       a  [        R                  " XE5        g [        R                  " XE5        g )Nr
   r   rC   TrE   r#   rs   )	r%   r&   r(   r)   r   r   rM   rc   r   )r   re   r   rO   rP   rQ   s         r   &test_multifunc_numba_kwarg_propagationr      s    B  &Fll6"G[[X:XgjRVEWXF{{8Z88H(I&&
f/
v0r   c            	         [         R                  " S5        S n [        / SQ/ SQS.5      nUR                  S5      S   nUR	                  U SSS	9n[        S
/S-  S[        SS/SS9S9n[        R                  " X45        UR	                  U SSS	9n[        S/S-  S[        SS/SS9S9n[        R                  " X45        g )Nr
   c                 (    X* S  R                  5       $ rw   r   )r/   r0   ns      r   sum_last&test_args_not_cached.<locals>.sum_last  s    bc{  r   )r   r   r2   r2   )r2   r2   r2   r2   )idr   r   r   r2   r"   r   ri   r   name)r   r0   r   )	r%   r&   r   r(   r)   r   r   rM   r   )r   df	grouped_xrP   rQ   s        r   test_args_not_cachedr     s    
 ! 
,\:	;B

4 %I]]8Qw]7Fseaic1vD1IJH6,]]8Qw]7Fseaic1vD1IJH6,r   c            	          [         R                  " S5        S n [        / SQ/ SQS./ SQS9nUR                  S5      R	                  U SS	9n[        S
S/S/[        SS/SS9S9n[        R                  " X#5        g )Nr
   c                 .    [         R                  " U5      $ rw   r:   r.   s     r   f+test_index_data_correctly_passed.<locals>.f!  s    wwu~r   )Ar   B)rp   rq      )groupv))r0   r   r"   g      g      r   r   r   r   )r   r0   )r%   r&   r   r(   	aggregater   rM   rc   )r   r   rP   rQ   s       r    test_index_data_correctly_passedr     sx    
  
_9=\	RBZZ **1W*=F	tse5#s'+JH &+r   c                    ^^^ [         R                  " S5        SmSmSmUUU4S jn TTTS.n[        S/ SQ05      nUR                  SS	9R	                  U SUS
9n[        S/ SQ05      n[
        R                  " X45        SmTTTS.nUR                  SS	9R	                  U SUS
9n[        S/ SQ05      n[
        R                  " X45        g )Nr
   TFc                    > TT-   T-   $ rw   rs   )r/   r0   rB   rD   rC   s     r   func_kwargs2test_engine_kwargs_not_cached.<locals>.func_kwargs4  s    x(**r   rD   rB   rC   value)r   r   r   r   )levelrE   )r   r   r   )r   r   r   )r%   r&   r   r(   r   rM   rc   )r   rF   r   rP   rQ   rB   rD   rC   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                    [         R                  " S5        S n[        SSSS./5      R                  SS/5      nX US	.nUR	                  S5      R                  USUS
9n[        S/[        S/SS9S/S9n[        R                  " Xg5        g )Nr
   c                     gNr2   rs   r.   s     r   
numba_func+test_multiindex_one_key.<locals>.numba_funcL      r   r2   ri   ro   r   r   Cr   r   r   rE   r   r   r   )r0   r   )	r%   r&   r   	set_indexr(   r)   r   rM   rc   )rB   rC   rD   r   r   rF   rP   rQ   s           r   test_multiindex_one_keyr   H  s    
  
!!!,-	.	8	8#s	DB!)xPMZZ_  7- ! F #eQCc&:SEJH&+r   c                 ,   [         R                  " S5        S n[        SSSS./5      R                  SS/5      nX US	.n[         R                  " [
        S
S9   UR                  SS/5      R                  USUS9  S S S 5        g ! , (       d  f       g = f)Nr
   c                     gr   rs   r.   s     r   r   ;test_multiindex_multi_key_not_supported.<locals>.numba_func[  r   r   r2   ri   ro   r   r   r   r   zmore than 1 grouping labelsr    rE   )r%   r&   r   r   r'   NotImplementedErrorr(   r)   )rB   rC   rD   r   r   rF   s         r   'test_multiindex_multi_key_not_supportedr   X  s    
  
!!!,-	.	8	8#s	DB!)xPM	*2O	P


C:""wm 	# 	
 
Q	P	Ps   #B
Bc                 .   [         R                  " S5        U u  p[        / SQ/ SQ[        R                  R                  S5      R                  S5      [        R                  R                  S5      R                  S5      S.5      nUR                  SS/5      nUR                  " U4S	S0UD6nUR                  " U4S	S
0UD6n[        R                  " XV5        [        XA5      " SS	S0UD6n[        XA5      " SS	S
0UD6n[        R                  " Xx5        g )Nr
   foobarr   r   r   r   r   r   oner   twothreer   r   r   r   ri      r   r   r   Dr   r   r#   rK   rs   )r%   r&   r   r;   randomdefault_rngstandard_normalr(   r)   rM   rc   getattr)	numba_supported_reductions	reductionkwargsr   gbres_aggexpected_agg
direct_resdirect_expecteds	            r   test_multilabel_numba_vs_cythonr   f  s    
 2I	IM&&q)99!<&&q)99!<		

B 
S#J	BffY9w9&9G66)?H??L'0'AwA&AJb,GHGGO*6r   c                     [         R                  " S5        [        / SQ/ SQ[        R                  R                  S5      R                  S5      [        R                  R                  S5      R                  S5      S.5      n U R                  SS/5      nUR                  S	 SS
9nUR                  S SS
9n[        R                  " X#5        g )Nr
   r   r   ri   r   r   r   r   c                 "    U R                  5       $ rw   r{   r.   s     r   rH   5test_multilabel_udf_numba_vs_cython.<locals>.<lambda>  ry   r   r"   c                 "    U R                  5       $ rw   r{   r   s    r   rH   r     s
    r   rK   )r%   r&   r   r;   r   r   r   r(   r)   rM   rc   )r   r   rP   rQ   s       r   #test_multilabel_udf_numba_vs_cythonr   {  s    
 	IM&&q)99!<&&q)99!<		

B 
S#J	BVV6wVGFvv'v9H&+r   )%numpyr;   r%   pandas.errorsr   pandasr   r   r   r   r   pandas._testing_testingrM   mark
single_cpu
pytestmarkr+   r3   filterwarningsparametrizerR   r_   rd   ru   paramxfailr   r   r   r   r   r   r   r   r   r   rs   r   r   <module>r      s     (  [[##
L"Q" H%u.+'>?dE]3& 4 @ / &
&4 H%u.+'>?$& @ / &$&N,  	% 		eU^./	E23	,,  
4	5u=66 EN++##K $ 	
&?'&?$ uenEe0TU1	1 	)	*VeU^,DE	)	*VUO<-/BQPQF eU^$		
 -/BQPQF UO		
 -/BQPQF %E23		
 -/BQPQF 59:		
+>	1? @	1-$,,8 H%, &,
7*,r   