
    I j,                     B   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
  S SKJr  S SKJr  \R                   R"                  /r\R&                  " S5      r\R+                  \R                   R-                  \" \R.                  5      \" S5      :H  =(       a    \" 5       S\R.                   3S	95        S
 rS r\R                   R5                  S5      \R                   R7                  SSS/5      S 5       5       r\R                   R5                  S5      \R                   R7                  SSS/5      S 5       5       rS r\R                   R7                  SSS/SSS/SS./5      S 5       rS r S r!S r"S r#\R                   R5                  S5      S 5       r$S r%S r&S  r'g)!    N)is_platform_arm)NumbaUtilError)	DataFrame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 S-   $ N    xs    z/root/GenerationalWealth/GenerationalWealth/venv/lib/python3.13/site-packages/pandas/tests/groupby/transform/test_numba.pyincorrect_function;test_correct_function_signature.<locals>.incorrect_function   s    1u    ar   br   r         ?       @      @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 
~]	;U%%&8%I 
< 
~]	;UF#--.@-Q 
<	; 
<	; 
<	;s    B3#C3
C
Cc                  ^   [         R                  " S5        S n 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      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/   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N~= f! , (       d  f       GNK= f! , (       d  f       GN= f! , (       d  f       N= f)Nr	   c                
    X-   $ Nr   valuesindexr   s      r   r   6test_check_nopython_kwargs.<locals>.incorrect_function.   
    zr   c                 
    X-   $ r.   r   r/   s      r   correct_function4test_check_nopython_kwargs.<locals>.correct_function1   r3   r   r   r   r   r   r   r    z8missing a required (keyword-only argument|argument): 'a'r"   r   )r%   r   z missing a required argument: 'a'znumba does not support)r%   r   )r&   r'   r   r(   	TypeErrorr)   r*   r   tmassert_frame_equalassert_series_equal)r   r5   r   actuals       r   test_check_nopython_kwargsr<   +   sQ   
  )3LMD
 
S
 	U%%&8A%N
 
y(J	KU%%&6w!%L 
L 
S
 	UF#--.@TU-V
 
y(J	KUF#--.>wRS-T 
L 
~-E	FU%%&8A%N 
G\\% **+;Gq*QF$x.1,f5	~-E	FUF#--.@TU-V 
G\\% (22A 3 F 4<!+V43
 
 
L	K
 
 
L	K 
G	F
 
G	FsH   	!I!I$I($I:!J$J
I
I%(
I7:
J	
J
J,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                     U S-   $ r   r   r0   r1   s     r   func"test_numba_vs_cython.<locals>.func[       zr   r   r   r   r   r   r   r    nogilparallelnopython)as_indexr%   engine_kwargsc                     U S-   $ r   r   r   s    r   <lambda>&test_numba_vs_cython.<locals>.<lambda>m       1q5r   cythonr$   
r&   r'   r	   r>   r   r)   r   r*   r8   assert_equal)r>   frame_or_seriesrG   rH   rI   rJ   rB   r	   r   rL   groupedresultexpecteds                r   test_numba_vs_cythonrX   U   s       yy%*CDqRSfD $xPMll1xl0G& !*tG=QF   BH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                     U S-   $ r   r   rA   s     r   func_1test_cache.<locals>.func_1y   rD   r   c                     U S-  $ N   r   rA   s     r   func_2test_cache.<locals>.func_2|   rD   r   r   r   r   rE   r   r    rF   rK   c                     U S-   $ r   r   r   s    r   rN   test_cache.<locals>.<lambda>   rP   r   rQ   r$   c                     U S-  $ r^   r   r   s    r   rN   rc      rP   r   c                     U S-   $ r   r   r   s    r   rN   rc      rP   r   rR   )r>   rT   rG   rH   rI   r[   r`   r	   r   rL   rU   rV   rW   s                r   
test_cacherf   r   s.   
   6"6"%*CDqRSfD $xPMll1oG& !*vg]SF   BHOOF%vg]SF   BHOOF% vg]SF   BH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                     U S-   $ r   r   rA   s     r   r[   &test_use_global_config.<locals>.func_1   rD   r   r   r   rE   r   r   r    r$   zcompute.use_numbaT)r&   r'   r   r)   r*   r   r8   r9   )r[   r   rU   rW   rV   s        r   test_use_global_configrj      s    
  %*CDqRSfD ll1oG   8H	+T	2""6$"7 
3(F+ 
3	2s   B
Bagg_funcminmaxsum)BCc                    [         R                  " S5        Uu  p[        / SQ/ SQS.SS/S9nUR                  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        US   R                  " U 4SS0UD6nUS   R                  " U 4SS	0UD6n[
        R                  " XV5        g )
Nr	   r   r   rE   r   r   r    r%   rQ   )r&   r'   r   r)   r*   r8   r9   r:   )rk   numba_supported_reductionskwargsr   rU   rV   rW   s          r   test_string_cython_vs_numbart      s      1H%*CDqRSfD ll1oGxBB6BF  E(EfEH&+QZ!!(E7EfEFqz##HHXHHH6,r   c                  V   [         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9n[        R                  " X45        UR	                  U SSS	9n[        S/S-  SS9n[        R                  " X45        g )Nr	   c                 (    X* S  R                  5       $ r.   )rn   )r0   r1   ns      r   sum_last&test_args_not_cached.<locals>.sum_last   s    bc{  r   )r   r   r   r   )r   r   r   r   )idr   rz   r   r   r$   r      )name   r   )r&   r'   r   r)   r*   r   r8   r:   )rx   df	grouped_xrV   rW   s        r   test_args_not_cachedr      s    
 ! 
,\:	;B

4 %I  1W =Fseaic*H6,  1W =Fseaic*H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
QS// SQS9n[
        R                  " X#5        g )Nr	   c                     US-
  $ r   r   rA   s     r   f+test_index_data_correctly_passed.<locals>.f   s    qyr   )Ar   ro   )r{   r_      )groupv)r1   r   r$   )g       g      g      r   )r!   r1   r&   r'   r   r)   r*   r8   r9   r   r~   rV   rW   s       r    test_index_data_correctly_passedr      se    
  
_9=\	RBZZ **1W*=F+cU,OH&+r   c                     [         R                  " S5        S n [        / SQ/ SQS.[        SSS5      S9nUR	                  S	5      S
   R                  U SS9n[        / SQ[        SSS5      S
S9n[        R                  " X#5        g )Nr	   c                     U $ r.   r   rA   s     r   r   1test_index_order_consistency_preserved.<locals>.f   s    r   )g        r   r   r   )r   r   r   r   )valsr      r   r   r   r   r$   )r1   r|   )	r&   r'   r   ranger)   r*   r   r8   r:   r   s       r   &test_index_order_consistency_preservedr      s    
  
%=U1bRTEU
B ZZ (221W2EF*%2r2BPH6,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   )r0   r1   rG   rI   rH   s     r   func_kwargs2test_engine_kwargs_not_cached.<locals>.func_kwargs   s    x(**r   rI   rG   rH   value)r   r   r   r   )levelrK   )r   r   r   )r   r   r   r   )r   rL   r~   rV   rW   rG   rI   rH   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                 0   [         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./5      R                  SS/5      n[        R                  " Xg5        g )Nr	   c                     gr   r   rA   s     r   
numba_func+test_multiindex_one_key.<locals>.numba_func      r   r   r}   r   r   ro   rp   r   ro   r   rK   r   )r&   r'   r   	set_indexr)   r*   r8   r9   )rG   rH   rI   r   r~   rL   rV   rW   s           r   test_multiindex_one_keyr   
  s    
  
!!!,-	.	8	8#s	DB!)xPMZZ_&&7- ' F 456@@#sLH&+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   rA   s     r   r   ;test_multiindex_multi_key_not_supported.<locals>.numba_func  r   r   r   r}   r   r   r   ro   r   zmore than 1 grouping labelsr"   rK   )r&   r'   r   r   r(   NotImplementedErrorr)   r*   )rG   rH   rI   r   r~   rL   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        g )Nr	   foobarr   r   r   r   r   r   oner   twothreer   r   r   r   r}      r   ro   rp   Dr   ro   r%   rQ   r&   r'   r   nprandomdefault_rngstandard_normalr)   r*   r8   r9   )rr   	reductionrs   r~   gbres_aggexpected_aggs          r   test_multilabel_numba_vs_cythonr   (  s    
 2I	IM&&q)99!<&&q)99!<		

B 
S#J	Bll9?W??G<<	E(EfEL'0r   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   r}   r   r   r   ro   c                 j    X R                  5       -
  U R                  5       U R                  5       -
  -  $ r.   rl   rm   rA   s     r   rN   5test_multilabel_udf_numba_vs_cython.<locals>.<lambda>E  s#    v

4

9TUr   r$   c                 j    X R                  5       -
  U R                  5       U R                  5       -
  -  $ r.   r   r   s    r   rN   r   I  s"    1uuw;1557QUUW#45r   rQ   r   )r~   r   rV   rW   s       r   #test_multilabel_udf_numba_vs_cythonr   9  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_testingr8   pandas.util.versionr   mark
single_cpu
pytestmarkr'   r	   appendskipif__version__r+   r<   filterwarningsparametrizerX   rf   rj   rt   r   r   r   r   r   r   r   r   r   r   r   <module>r      s     ) ( 
  'kk$$%
G$ 
  
KK!!"gfo5K/:K78I8I7JK  R"'5T H%u.& / &&4 H%u.#& / &#&L," %uen5(IJ--"-$
,-,8 H%, &,
1",r   