U
    +ifb                     @   s  d dl Zd dlZd dlmZ d dlm  mZ d dl	m
Z
mZmZmZmZ d dl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edddgdd Zedd d! Zedd"d# ZdS )$    N)NumbaUtilError)	DataFrameIndexNamedAggSeriesoption_context)NUMBA_FUNC_CACHEnumbac               	   C   s   dd } t dddddgddddd	gd
ddgd}tjtdd |dj| dd W 5 Q R X tjtdd |dd j| dd W 5 Q R X d S )Nc                 S   s   t | d S Ng@sumx r   \/home/mars/bis/venv/lib/python3.8/site-packages/pandas/tests/groupby/aggregate/test_numba.pyincorrect_function   s    z;test_correct_function_signature.<locals>.incorrect_functionab      ?       @      @      @      @keydatar   r   columnszThe first 2matchr	   enginer   pytestraisesr   groupbyaggr   r   r   r   r   test_correct_function_signature   s    r(   c               	   C   s   dd } t dddddgddddd	gd
ddgd}tjtdd |dj| ddd W 5 Q R X tjtdd  |dd j| ddd W 5 Q R X d S )Nc                 [   s   t | d S r
   r   )r   kwargsr   r   r   r   $   s    z6test_check_nopython_kwargs.<locals>.incorrect_functionr   r   r   r   r   r   r   r   r   r   r   znumba does not supportr   r	      )r!   r   r"   r'   r   r   r   test_check_nopython_kwargs"   s     r+   zignore:
jitTF
pandas_objr   r   c                 C   s   dd }| rdd l }||}tdddddgdddd	d
gdddgd}|||d}|d}	|dkrn|	d }	|	j|d|d}
|	jdd dd}t|
| d S )Nc                 S   s   t | d S r
   npZmeanvaluesindexr   r   r   
func_numba8   s    z(test_numba_vs_cython.<locals>.func_numbar   r   r   r   r   r   r   r   r   r*   r*   r   nogilparallelnopythonr   r	   r!   engine_kwargsc                 S   s   t | d S r
   r.   r   r   r   r   <lambda>J       z&test_numba_vs_cython.<locals>.<lambda>cythonr    )r	   r,   r   r%   r&   tmassert_equal)r,   r-   r6   r7   r8   r3   r	   r   r:   groupedresultexpectedr   r   r   test_numba_vs_cython2   s    
 
rC   c                 C   s.  dd }dd }| r0dd l }||}||}tdddddgdd	d
ddgdddgd}|||d}	|d}
|dkr|
d }
|
j|d|	d}|
jdd dd}t|| |dftkst|
j|d|	d}|
jdd dd}t|| |dftkst|
j|d|	d}|
jdd dd}t|| d S )Nc                 S   s   t | d S Ng333333@r.   r0   r   r   r   func_1V   s    ztest_cache.<locals>.func_1c                 S   s   t | d S r
   r.   r0   r   r   r   func_2Y   s    ztest_cache.<locals>.func_2r   r   r   r   r   r   r   r   r4   r*   r   r5   r   r	   r9   c                 S   s   t | d S rD   r.   r   r   r   r   r;   k   r<   ztest_cache.<locals>.<lambda>r=   r    Zgroupby_aggc                 S   s   t | d S r
   r.   r   r   r   r   r;   r   r<   c                 S   s   t | d S rD   r.   r   r   r   r   r;   x   r<   )	r	   r,   r   r%   r&   r>   r?   r   AssertionError)r,   r-   r6   r7   r8   rE   rF   r	   r   r:   r@   rA   rB   r   r   r   
test_cacheO   s2    

 
rH   c               	   C   s~   dd } t dddddgddddd	gd
ddgd}|d}|j| dd}tdd |j| d d}W 5 Q R X t|| d S )Nc                 S   s   t | d S rD   r.   r0   r   r   r   rE   ~   s    z&test_use_global_config.<locals>.func_1r   r   r   r   r   r   r   r4   r   r*   r   r	   r    zcompute.use_numbaT)r   r%   r&   r   r>   assert_frame_equal)rE   r   r@   rB   rA   r   r   r   test_use_global_config|   s     
rJ   agg_funcminmaxr   )BCrN   )columnZaggfuncc              	   C   s   t dddddgdddddgdd	d
gd}|d	}tjtdd |j| dd W 5 Q R X tjtdd |d
 j| dd W 5 Q R X d S )Nr   r   r   r   r   r   r   r4   r   r*   r   zNumba engine canr   r	   r    )r   r%   r#   r$   NotImplementedErrorr&   )rK   r   r@   r   r   r   test_multifunc_notimplimented   s     
rR   c                  C   s   dd } t ddddgddddgd}|dd }|j| ddd	}td
gd dtddgddd}t|| |j| ddd	}tdgd dtddgddd}t|| d S )Nc                 S   s   | | d    S Nr   )r1   r2   nr   r   r   sum_last   s    z&test_args_not_cached.<locals>.sum_lastr   r*   )idr   rV   r   r	   r    r      name)rY   r2   r   )r   r%   r&   r   r   r>   Zassert_series_equal)rU   dfZ	grouped_xrA   rB   r   r   r   test_args_not_cached   s      r[   c                  C   sp   dd } t dddgdddgdd	d
dgd}|dj| dd}t ddgdgtddgddd}t|| d S )Nc                 S   s
   t |S rS   r.   r0   r   r   r   f   s    z+test_index_data_correctly_passed.<locals>.fArN            )groupv)r2   ra   r	   r    g      g      rb   rX   )r   r2   )r   r%   Z	aggregater   r>   rI   )r\   rZ   rA   rB   r   r   r    test_index_data_correctly_passed   s    $  rf   ) numpyr/   r#   Zpandas.errorsr   Zpandas.util._test_decoratorsutilZ_test_decoratorstdZpandasr   r   r   r   r   Zpandas._testingZ_testingr>   Zpandas.core.util.numba_r   Z
skip_if_nor(   r+   markfilterwarningsZparametrizerC   rH   rJ   rR   r[   rf   r   r   r   r   <module>   sH   



(

	
