
    Pi,                     B   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                    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gdddgddg          d             Zd Z d Z!d Z"d Z#ej                            d          d             Z$d Z%d Z&d  Z'dS )!    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  |                    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                     | dz   S N    xs    }/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/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      @keydatar   r   columnszThe first 2matchengine)pytestimportorskipr   raisesr   groupby	transform)r   r   s     r   test_correct_function_signaturer*      s   
      )))3L3L3LMM  D 
~]	;	;	; J JU%%&8%IIIJ J J J J J J J J J J J J J J 
~]	;	;	; R RUF#--.@-QQQR R R R R R R R R R R R R R R R R Rs$   +BBB*1C((C,/C,c                  ,   t          j        d           d } d }t          g dg ddddg	          }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g         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                    | |z   S Nr   valuesindexr   s      r   r   z6test_check_nopython_kwargs.<locals>.incorrect_function.       zr   c                     | |z   S r-   r   r.   s      r   correct_functionz4test_check_nopython_kwargs.<locals>.correct_function1   r1   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   r3   r   actuals       r   test_check_nopython_kwargsr9   +   s   
        )))3L3L3LMM  D
 
S
 
 
 O O 	U%%&8A%NNNO O O O O O O O O O O O O O O 
y(J	K	K	K M MU%%&6w!%LLLM M M M M M M M M M M M M M M 
S
 
 
 W W 	UF#--.@TU-VVVW W W W W W W W W W W W W W W 
y(J	K	K	K U UUF#--.>wRS-TTTU U U U U U U U U U U U U U U 
~-E	F	F	F O OU%%&8A%NNNO O O O O O O O O O O O O O O\\%  **+;Gq*QQF$x.1,f555	~-E	F	F	F W WUF#--.@TU-VVVW W W W W W W W W W W W W W W\\%  (22A 3  F 4<!+V44444sl   ,BBB.,C&&C*-C*2E

EE02F..F25F2,HHH<2J::J>J>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                     | dz   S r   r   r/   r0   s     r   funcz"test_numba_vs_cython.<locals>.func[   r1   r   r   r   r   r   r   r   r   nogilparallelnopython)as_indexr$   engine_kwargsc                     | dz   S r   r   r   s    r   <lambda>z&test_numba_vs_cython.<locals>.<lambda>m   
    1q5 r   cythonr#   
r%   r&   r	   r;   r   r(   r   r)   r5   assert_equal)r;   frame_or_seriesrB   rC   rD   rE   r?   r	   r   rG   groupedresultexpecteds                r   test_numba_vs_cythonrR   U   s            yy%%%*C*C*CDDqRSf  D $xPPMll1xl00G&  !*tG=QQF   BBH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                     | dz   S r   r   r>   s     r   func_1ztest_cache.<locals>.func_1y   r1   r   c                     | dz  S N   r   r>   s     r   func_2ztest_cache.<locals>.func_2|   r1   r   r   r   r   r@   r   r   rA   rF   c                     | dz   S r   r   r   s    r   rI   ztest_cache.<locals>.<lambda>   rJ   r   rK   r#   c                     | dz  S rW   r   r   s    r   rI   ztest_cache.<locals>.<lambda>   rJ   r   c                     | dz   S r   r   r   s    r   rI   ztest_cache.<locals>.<lambda>   rJ   r   rL   )r;   rN   rB   rC   rD   rU   rY   r	   r   rG   rO   rP   rQ   s                r   
test_cacher]   r   s   
          #6""6""%%%*C*C*CDDqRSf  D $xPPMll1ooG&  !*vg]SSF   BBHOFH%%%vg]SSF   BBHOFH%%% vg]SSF   BBH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                     | dz   S r   r   r>   s     r   rU   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   r5   r6   )rU   r   rO   rQ   rP   s        r   test_use_global_configr`      s   
      %%%*C*C*CDDqRSf  D ll1ooG   88H	+T	2	2 8 8""6$"778 8 8 8 8 8 8 8 8 8 8 8 8 8 8(F+++++s   .BBBagg_funcminmaxsum)BCc                    t          j        d           |\  } }t          g dg ddddg          }|                    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        ||           d S )
Nr	   r   r   r@   r   r   r   r$   rK   )r%   r&   r   r(   r)   r5   r6   r7   )ra   numba_supported_reductionskwargsr   rO   rP   rQ   s          r   test_string_cython_vs_numbarj      s       1Hf%%%*C*C*CDDqRSf  D ll1ooGWxBBB6BBF w EE(EfEEH&(+++!WQZ!(EE7EfEEF#wqz#HHHXHHHH68,,,,,r   c                     t          j        d           d } t          g dg dd          }|                    d          d         }|                    | dd	          }t          d
gdz  d          }t          j        ||           |                    | dd	          }t          dgdz  d          }t          j        ||           d S )Nr	   c                 <    | | d                                           S r-   )rd   )r/   r0   ns      r   sum_lastz&test_args_not_cached.<locals>.sum_last   s    qbcc{   r   )r   r   r   r   )r   r   r   r   )idr   ro   r   r   r#   r      )name   r   )r%   r&   r   r(   r)   r   r5   r7   )rn   df	grouped_xrP   rQ   s        r   test_args_not_cachedru      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          }|                    d                              | d	          }t          g d
dgg d          }t          j        ||           d S )Nr	   c                     |dz
  S r   r   r>   s     r   fz+test_index_data_correctly_passed.<locals>.f   s    qyr   )Ary   re   )rp   rX      )groupv)r0   r{   r#   )g       g      g      r|   )r    r0   r%   r&   r   r(   r)   r5   r6   rx   rs   rP   rQ   s       r    test_index_data_correctly_passedr      s    
      
___999==\\\	R	R	RBZZ  **1W*==F+++cU,,,OOOH&(+++++r   c                  R   t          j        d           d } t          g dg ddt          ddd                    }|                    d	          d
                             | d          }t          g dt          ddd          d
          }t          j        ||           d S )Nr	   c                     | S r-   r   r>   s     r   rx   z1test_index_order_consistency_preserved.<locals>.f   s    r   )g        r   r   r   )r   r   r   r   )valsr{      r}   r   r{   r   r#   )r0   rq   )	r%   r&   r   ranger(   r)   r   r5   r7   r   s       r   &test_index_order_consistency_preservedr      s    
      
%%%==U1bRTEUEU
 
 
B ZZ  (221W2EEF***%2r2B2BPPPH68,,,,,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-   r   )r/   r0   rB   rD   rC   s     r   func_kwargsz2test_engine_kwargs_not_cached.<locals>.func_kwargs   s    x(**r   rD   rB   rC   value)r   r   r   r   )levelrF   )r   r   r   )r   r   r   r   )r   rG   rs   rP   rQ   rB   rD   rC   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                 d   t          j        d           d }t          ddddg                              ddg          }|| |d	}|                    d                              |d|
          }t          ddddg                              ddg          }t          j        ||           d S )Nr	   c                     dS r   r   r>   s     r   
numba_funcz+test_multiindex_one_key.<locals>.numba_func      qr   r   rr   r   ry   re   rf   ry   re   r   rF   r   )r%   r&   r   	set_indexr(   r)   r5   r6   )rB   rC   rD   r   rs   rG   rP   rQ   s           r   test_multiindex_one_keyr   
  s    
      
!!!,,-	.	.	8	8#s	D	DB!)ExPPMZZ__&&7- '  F 44566@@#sLLH&(+++++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   r   r>   s     r   r   z;test_multiindex_multi_key_not_supported.<locals>.numba_func  r   r   r   rr   r   r   ry   re   r   zmore than 1 grouping labelsr!   rF   )r%   r&   r   r   r'   NotImplementedErrorr(   r)   )rB   rC   rD   r   rs   rG   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                    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
        ||           d S )Nr	   foobarr   r   r   r   r   r   oner   twothreer   r   r   r   rr      ry   re   rf   Dry   re   r$   rK   r%   r&   r   nprandomdefault_rngstandard_normalr(   r)   r5   r6   )rh   	reductionri   rs   gbres_aggexpected_aggs          r   test_multilabel_numba_vs_cythonr   (  s    
   2Iv	IIIMMM&&q))99!<<&&q))99!<<		
 	

 
B 
S#J		Bbl9??W???G2<	EE(EfEEL'<00000r   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   rr   r   r   ry   re   c                     | |                                  z
  |                                 |                                  z
  z  S r-   rb   rc   r>   s     r   rI   z5test_multilabel_udf_numba_vs_cython.<locals>.<lambda>E  s-    v

4

9TU r   r#   c                     | |                                  z
  |                                 |                                  z
  z  S r-   r   r   s    r   rI   z5test_multilabel_udf_numba_vs_cython.<locals>.<lambda>I  s,    1quuww;15577QUUWW#45 r   rK   r   )rs   r   rP   rQ   s       r   #test_multilabel_udf_numba_vs_cythonr   9  s    
   	IIIMMM&&q))99!<<&&q))99!<<		
 	

 
B 
S#J		B\\UU   F ||55h   H &(+++++r   )(numpyr   r%   pandas.compatr   pandas.errorsr   pandasr   r   r   pandas._testing_testingr5   pandas.util.versionr   mark
single_cpu
pytestmarkr&   r	   appendskipif__version__r*   r9   filterwarningsparametrizerR   r]   r`   rj   ru   r   r   r   r   r   r   r   r   r   r   <module>r      s        ) ) ) ) ) ) ( ( ( ( ( (         
       ' ' ' ' ' 'k$%
G$$ 
  
K!""ggfoo5K//:K:KK8IKK     R R R"'5 '5 '5T H%%u..& & /. &%&4 H%%u..#& #& /. &%#&L, , ," %uen5(I(IJ - - -"- - -$
, 
, 
,- - -, , ,8 H%%, , &%,
 
 
1 1 1", , , , ,r   