o
    5cb                  	   @   s  d dl Z d dlmZ d dlm  mZ d dlmZm	Z	m
Z
 d dlmZ eddd Zeddd Zede jd	e jd
ddge jdddgdd Zede jd	e jd
ddge jdddgdd Zeddd Zede jdddgdddgddgdd Zeddd Zeddd  Zedd!d" Zede jd	d#d$ Zedd%d& ZdS )'    N)NumbaUtilError)	DataFrameSeriesoption_contextnumbac                  C   s   dd } t g dg ddddgd}tjtd	d
 |dj| dd W d    n1 s/w   Y  tjtd	d
 |dd j| dd W d    d S 1 sSw   Y  d S )Nc                 S      | d S N    xr
   r
   _/var/www/html/gps/gps/lib/python3.10/site-packages/pandas/tests/groupby/transform/test_numba.pyincorrect_function      z;test_correct_function_signature.<locals>.incorrect_functionar   br   r         ?       @g      @g      @g      @keydatar   r   columnszThe first 2matchr   enginer   pytestraisesr   groupby	transformr   r   r
   r
   r   test_correct_function_signature   s   "r%   c                  C   s   dd } t g dg ddddgd}tjtd	d
 |dj| ddd W d    n1 s0w   Y  tjtd	d
 |dd j| ddd W d    d S 1 sUw   Y  d S )Nc                 S   r   r   r
   valuesindexr
   r
   r   r       r   z6test_check_nopython_kwargs.<locals>.incorrect_functionr   r   r   r   r   r   znumba does not supportr   r   r	   )r   r   r   r$   r
   r
   r   test_check_nopython_kwargs   s   "r)   ignorejitTF
pandas_objr   r   c                 C   s   dd }| rdd l }||}tg dg ddddgd}|||d	}|d}	|d
kr1|	d }	|	j|d|d}
|	jdd dd}t|
| d S )Nc                 S   r   r   r
   r&   r
   r
   r   func4   r   z"test_numba_vs_cython.<locals>.funcr   r   r   r   r	   r	   r   nogilparallelnopythonr   r   r   engine_kwargsc                 S   r   r   r
   r   r
   r
   r   <lambda>F       z&test_numba_vs_cython.<locals>.<lambda>cythonr   r   r+   r   r"   r#   tmassert_equal)r+   r,   r0   r1   r2   r-   r   r   r4   groupedresultexpectedr
   r
   r   test_numba_vs_cython.   s   

r>   c                 C   s  dd }dd }| rdd l }||}||}tg dg dddd	gd
}|||d}	|d}
|dkr:|
d	 }
|
j|d|	d}|
jdd dd}t|| |
j|d|	d}|
jdd dd}t|| |
j|d|	d}|
jdd dd}t|| d S )Nc                 S   r   r   r
   r&   r
   r
   r   func_1R   r   ztest_cache.<locals>.func_1c                 S      | d S N   r
   r&   r
   r
   r   func_2U   r   ztest_cache.<locals>.func_2r   r   r   r.   r	   r   r/   r   r   r3   c                 S   r   r   r
   r   r
   r
   r   r5   g   r6   ztest_cache.<locals>.<lambda>r7   r   c                 S   r@   rA   r
   r   r
   r
   r   r5   k   r6   c                 S   r   r   r
   r   r
   r
   r   r5   p   r6   r8   )r+   r,   r0   r1   r2   r?   rC   r   r   r4   r;   r<   r=   r
   r
   r   
test_cacheK   s,   


rD   c                  C   s   dd } t g dg ddddgd}|d}|j| d	d
}tdd |j| d d
}W d    n1 s6w   Y  t|| d S )Nc                 S   r   r   r
   r&   r
   r
   r   r?   v   r   z&test_use_global_config.<locals>.func_1r   r   r.   r   r	   r   r   r   zcompute.use_numbaT)r   r"   r#   r   r9   assert_frame_equal)r?   r   r;   r=   r<   r
   r
   r   test_use_global_configt   s   
rF   agg_funcminmaxsum)BCc                 C   s   t g dg ddddgd}|d}tjtdd |j| d	d
 W d    n1 s-w   Y  tjtdd |d j| d	d
 W d    d S 1 sNw   Y  d S )Nr   r   r.   r   r	   r   zNumba engine canr   r   r   )r   r"   r    r!   NotImplementedErrorr#   )rG   r   r;   r
   r
   r   test_multifunc_notimplimented   s   
"rN   c                  C   s   dd } t g dg dd}|dd }|j| dd	d
}tdgd dd}t|| |j| dd	d
}tdgd dd}t|| d S )Nc                 S   s   | | d    S N)rJ   )r'   r(   nr
   r
   r   sum_last   s   z&test_args_not_cached.<locals>.sum_last)r   r   r	   r	   )r	   r	   r	   r	   )idr   rR   r   r	   r   r   r      )name   r   )r   r"   r#   r   r9   assert_series_equal)rQ   df	grouped_xr<   r=   r
   r
   r   test_args_not_cached   s   rY   c                  C   sb   dd } t g dg ddg dd}|dj| d	d
}t g ddgg dd}t|| d S )Nc                 S   s   |d S r   r
   r&   r
   r
   r   f   r   z+test_index_data_correctly_passed.<locals>.f)Ar[   rK   )rS   rB      )groupv))r(   r]   r   r   )g      g      g       r^   )r   r(   r   r"   r#   r9   rE   )rZ   rW   r<   r=   r
   r
   r    test_index_data_correctly_passed   s
   rc   c                     s   d dd fdd}  d}t dg di}|jdd	j| d
|d}t dg di}t|| d  d}|jdd	j| d
|d}t dg di}t|| d S )NTFc                    s      S rO   r
   r&   r0   r2   r1   r
   r   func_kwargs   s   z2test_engine_kwargs_not_cached.<locals>.func_kwargsr2   r0   r1   value)r   r   r   r   )levelr   r3   )r   r   r   )r   r   r   rb   )re   r4   rW   r<   r=   r
   rd   r   test_engine_kwargs_not_cached   s$   ri   c                 C   sr   dd }t ddddgddg}|| |d	}|dj|d
|d}t ddddgddg}t|| d S )Nc                 S      dS r   r
   r&   r
   r
   r   
numba_func      z+test_multiindex_one_key.<locals>.numba_funcr	   rU      r[   rK   rL   r[   rK   rf   r   r3   r   )r   	set_indexr"   r#   r9   rE   )r0   r1   r2   rk   rW   r4   r<   r=   r
   r
   r   test_multiindex_one_key   s   
rp   c                 C   s~   dd }t ddddgddg}|| |d	}tjtd
d |ddgj|d|d W d    d S 1 s8w   Y  d S )Nc                 S   rj   r   r
   r&   r
   r
   r   rk      rl   z;test_multiindex_multi_key_not_supported.<locals>.numba_funcr	   rU   rm   rn   r[   rK   rf   zMore than 1 grouping labelsr   r   r3   )r   ro   r    r!   rM   r"   r#   )r0   r1   r2   rk   rW   r4   r
   r
   r   'test_multiindex_multi_key_not_supported   s   "rq   )r    pandas.errorsr   pandas.util._test_decoratorsutil_test_decoratorstdpandasr   r   r   pandas._testing_testingr9   
skip_if_nor%   r)   markfilterwarningsparametrizer>   rD   rF   rN   rY   rc   ri   rp   rq   r
   r
   r
   r   <module>   sJ    



$




