
    A>iR:                        S SK rS SKrS SKJr  S SKJr  S SKJrJ	r	J
r
JrJr  S SKJr  S SKJr  \R$                  R&                  /r\R*                  " S5      r\R/                  \R$                  R1                  \" \R2                  5      \" S5      :H  =(       a    \" 5       S\R2                   3S	95        S
 rS r\R$                  R9                  S5      \R$                  R;                  SSS/5      S 5       5       r\R$                  R9                  S5      \R$                  R;                  SSS/5      S 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Q5      S 5       r"\R$                  R;                  SSS  0S4\RF                  " SS! S" /0SS/\R$                  RI                  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(S0 r)S1 r*\R$                  R9                  S5      S2 5       r+S3 r,S4 r-S5 r.g)6    N)is_platform_arm)NumbaUtilError)	DataFrameIndexNamedAggSeriesoption_context)Versionnumbaz0.61z&Segfaults on ARM platforms with numba )reasonc                     [         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)Nr   c                     [        U 5      S-  $ N皙@sumxs    h/var/www/html/land-tabula/venv/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         ?       @      @      @      @keydatar#   r$   columnszThe first 2matchengine)pytestimportorskipr   raisesr   groupbyagg)r   r$   s     r   test_correct_function_signaturer0      s    
  )3LMD 
~]	;U 27C 
< 
~]	;UF#''(:7'K 
<	; 
<	; 
<	;s    B3#C3
C
Cc                     [         R                  " S5        S n S n[        / SQ/ SQS.SS/S	9nUR                  S5      R	                  5       S
-  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      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        [         R
                  " [        SS9   UR                  S5      S   R                  USSS9  S S S 5        [         R
                  " [        SS9   UR                  S5      R                  U SSS9  S S S 5        UR                  S5      R                  USSS9n[        R                  " US-   U5        [         R
                  " [        SS9   UR                  S5      S   R                  U SSS9  S S S 5        UR                  S5      S   R                  USSS9n[        R                  " US   S-   U5        g ! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNz= f! , (       d  f       GNG= f! , (       d  f       GN= f! , (       d  f       N= f)Nr   c                $    [        U 5      S-  U-   $ r   r   valuesindexr   s      r   r   6test_check_nopython_kwargs.<locals>.incorrect_function0       6{S 1$$r   c                 $    [        U 5      S-  U-   $ r   r   r3   s      r   correct_function4test_check_nopython_kwargs.<locals>.correct_function3   r7   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   r9   r$   expectedactuals        r   test_check_nopython_kwargsrB   -   sa   
 %% )3LMD ||E"&&(3.H 
S
 	U 27aH
 
y(J	KU 0AF 
L 
S
 	UF#''(:7a'P
 
y(J	KUF#''(8A'N 
L 
~-E	FU 27aH 
G\\% $$%5g$KF(Q,/	~-E	FUF#''(:7a'P 
G\\% (,,-=gQR,SF8F+a/8/
 
 
L	K
 
 
L	K 
G	F
 
G	FsH   +!I"-!I4/$J4$J9!J*5$J<"
I14
J
J
J'*
J9<
K
ignorejitTFc                 J   [         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[        L 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meanr4   r5   s     r   
func_numba(test_numba_vs_cython.<locals>.func_numba]       wwv$$r   r   r   r   r   r;   r;   r%   nogilparallelnopython)as_indexr*   engine_kwargsc                 4    [         R                  " U 5      S-  $ r   rG   r   s    r   <lambda>&test_numba_vs_cython.<locals>.<lambda>o       RWWQZ#%5r   cythonr)   
r+   r,   r   rD   r   r.   r   r/   r=   assert_equal)rD   frame_or_seriesrP   rQ   rR   rS   rK   r   r$   rU   groupedresultr@   s                r   test_numba_vs_cythonr`   W   s      % YYz*
%*CDqRSfD $xPMll1xl0G& !*[[G=[QF{{5h{GHOOF%r   c                 T   [         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[        L 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@rG   rJ   s     r   func_1test_cache.<locals>.func_1{   rM   r   c                 4    [         R                  " U 5      S-  $ r   rG   rJ   s     r   func_2test_cache.<locals>.func_2~   rM   r   r   r   r   rN   r;   r%   rO   rT   c                 4    [         R                  " U 5      S-
  $ rc   rG   r   s    r   rW   test_cache.<locals>.<lambda>   rY   r   rZ   r)   c                 4    [         R                  " U 5      S-  $ r   rG   r   s    r   rW   rj      rY   r   c                 4    [         R                  " U 5      S-
  $ rc   rG   r   s    r   rW   rj      rY   r   r[   )rD   r]   rP   rQ   rR   rd   rg   r   r$   rU   r^   r_   r@   s                r   
test_cacherm   t   s!   
  %% 6"6"%*CDqRSfD $xPMll1oG& !*[[}[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-
  $ rc   rG   rJ   s     r   rd   &test_use_global_config.<locals>.func_1   rM   r   r   r   rN   r   r;   r%   r)   zcompute.use_numbaT)r+   r,   r   r.   r/   r	   r=   r>   )rd   r$   r^   r@   r_   s        r   test_use_global_configrq      s    
 % %*CDqRSfD ll1oG{{6'{2H	+T	2VD1 
3(F+ 
3	2s   B
B
agg_kwargsfuncminmaxr   )r;      bminr;   )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   r;   rv            r   r;   rv   r%   r   r*   rZ    r+   r,   r   r.   r/   r=   r>   )rr   r$   r^   r_   r@   s        r   $test_multifunc_numba_vs_cython_framer      sx      ((	

 D ll1oG[[6:6g6F{{9Z99H&+r   )r   rI   varstdrt   ru   c                    [         R                  " S5        [        / SQS[        R                  SSS// SQS./ SQS	9nUR                  S
5      nUR                  U SSS9nUR                  U SSS9n[        R                  " X45        g )Nr   r   r   r   r    r!   r{   r   r%   r   F)skipnar*   rZ   )	r+   r,   r   rH   nanr.   r/   r=   r>   )rs   r$   r^   r_   r@   s        r   -test_multifunc_numba_vs_cython_frame_noskipnar      s    
 (RVVS#s+	

 D ll1oG[[eG[<F{{4h{?H&+r   zagg_kwargs,expected_funcc                 "    U R                  5       $ Nr   rJ   s     r   rW   rW      s
    

r   c                 "    U R                  5       $ r   r   rJ   s     r   rW   rW      
    &**,r   c                 "    U R                  5       $ r   rt   rJ   s     r   rW   rW      r   r   z2This doesn't work yet! Fails in nopython pipeline!)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   r{   r   r%   r   r*   rZ   r)   F)check_dtyper   r   )rr   expected_funcr$   r^   r_   r@   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*   rZ   r   )
r+   r,   r   r.   r/   
isinstancer   r=   r>   r?   )rr   labelsr$   r^   r_   r@   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   r{   rv   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   rQ   TrT   r*   r   )	r+   r,   r.   r/   r   r   r=   r>   r?   )r$   rr   r   r^   r_   r@   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       $ r   r   )r4   r5   ns      r   sum_last&test_args_not_cached.<locals>.sum_last@  s    bc{  r   )r   r   r;   r;   )r;   r;   r;   r;   )idr   r   r   r;   r)   r   rv   r   name)r   r5   r   )	r+   r,   r   r.   r/   r   r   r=   r?   )r   df	grouped_xr_   r@   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      $ r   rG   rJ   s     r   f+test_index_data_correctly_passed.<locals>.fR  s    wwu~r   )Ar   B)r}   r~      )groupv))r5   r   r)   g      g      r   r   r   r   )r&   r5   )r+   r,   r   r.   	aggregater   r=   r>   )r   r   r_   r@   s       r    test_index_data_correctly_passedr   N  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-   $ r   r   )r4   r5   rP   rR   rQ   s     r   func_kwargs2test_engine_kwargs_not_cached.<locals>.func_kwargse  s    x(**r   rR   rP   rQ   value)r   r   r   r   )levelrT   )r   r   r   )r   r   r   )r+   r,   r   r.   r   r=   r>   )r   rU   r   r_   r@   rP   rR   rQ   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Nr;   r   rJ   s     r   
numba_func+test_multiindex_one_key.<locals>.numba_func}      r   r;   rv   r|   r   r   Cr   r   r   rT   r   r   r   )r5   r&   )	r+   r,   r   	set_indexr.   r/   r   r=   r>   )rP   rQ   rR   r   r   rU   r_   r@   s           r   test_multiindex_one_keyr   y  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   r   rJ   s     r   r   ;test_multiindex_multi_key_not_supported.<locals>.numba_func  r   r   r;   rv   r|   r   r   r   r   zmore than 1 grouping labelsr'   rT   )r+   r,   r   r   r-   NotImplementedErrorr.   r/   )rP   rQ   rR   r   r   rU   s         r   'test_multiindex_multi_key_not_supportedr     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   rv      r   r   r   Dr   r   r*   rZ   r   )r+   r,   r   rH   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     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   rv   r   r   r   r   c                 "    U R                  5       $ r   r   rJ   s     r   rW   5test_multilabel_udf_numba_vs_cython.<locals>.<lambda>  r   r   r)   c                 "    U R                  5       $ r   r   r   s    r   rW   r     s
    r   rZ   )r+   r,   r   rH   r   r   r   r.   r/   r=   r>   )r   r   r_   r@   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   )/numpyrH   r+   pandas.compatr   pandas.errorsr   pandasr   r   r   r   r	   pandas._testing_testingr=   pandas.util.versionr
   mark
single_cpu
pytestmarkr,   r   appendskipif__version__r0   rB   filterwarningsparametrizer`   rm   rq   r   r   paramxfailr   r   r   r   r   r   r   r   r   r   r   r   r   <module>r      s     ) (   'kk$$%
G$ 
  
KK!!"gfo5K/:K78I8I7JK  L"'9T H%u.& / &&4 H%u.$& / &$&N,  	% 		eU^./	E23	,,  !LM, N,  
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   