U
    +if                  	   @   sh  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 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dS )"    N)NumbaUtilError)	DataFrame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   | d S N    xr
   r
   \/home/mars/bis/venv/lib/python3.8/site-packages/pandas/tests/groupby/transform/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	transform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   | 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
   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   | d S r   r
   valuesindexr
   r
   r   func5   s    z"test_numba_vs_cython.<locals>.funcr   r   r   r   r   r   r   r   r   r	   r	   r   nogilparallelnopythonr   r   r   engine_kwargsc                 S   s   | d S r   r
   r   r
   r
   r   <lambda>G       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 }| 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   | d S r   r
   r*   r
   r
   r   func_1S   s    ztest_cache.<locals>.func_1c                 S   s   | d S N   r
   r*   r
   r
   r   func_2V   s    ztest_cache.<locals>.func_2r   r   r   r   r   r   r   r   r.   r	   r   r/   r   r   r3   c                 S   s   | d S r   r
   r   r
   r
   r   r5   h   r6   ztest_cache.<locals>.<lambda>r7   r   Zgroupby_transformc                 S   s   | d S r?   r
   r   r
   r
   r   r5   o   r6   c                 S   s   | d S r   r
   r   r
   r
   r   r5   u   r6   )	r   r(   r   r"   r#   r8   r9   r   AssertionError)r(   r)   r0   r1   r2   r>   rA   r   r   r4   r:   r;   r<   r
   r
   r   
test_cacheL   s2    

 
rC   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   | d S r   r
   r*   r
   r
   r   r>   {   s    z&test_use_global_config.<locals>.func_1r   r   r   r   r   r   r   r.   r   r	   r   r   r   zcompute.use_numbaT)r   r"   r#   r   r8   assert_frame_equal)r>   r   r:   r<   r;   r
   r
   r   test_use_global_configy   s     
rE   agg_funcminmaxsum)BCc              	   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   r.   r   r	   r   zNumba engine canr   r   r   )r   r"   r    r!   NotImplementedErrorr#   )rF   r   r:   r
   r
   r   test_multifunc_notimplimented   s     
rM   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d}t|| |j| ddd	}tdgd dd}t|| d S )Nc                 S   s   | | d    S )N)rI   )r+   r,   nr
   r
   r   sum_last   s    z&test_args_not_cached.<locals>.sum_lastr   r	   )idr   rP   r   r   r   r      )name   r   )r   r"   r#   r   r8   Zassert_series_equal)rO   dfZ	grouped_xr;   r<   r
   r
   r   test_args_not_cached   s    rU   c                  C   sl   dd } t dddgdddgdd	d
dgd}|dj| dd}t dddgdgd	d
dgd}t|| d S )Nc                 S   s   |d S r   r
   r*   r
   r
   r   f   s    z+test_index_data_correctly_passed.<locals>.fArJ   rQ   r@      )groupv)r,   rY   r   r   g      g      g       rZ   )r   r,   )r   r"   r#   r8   rD   )rV   rT   r;   r<   r
   r
   r    test_index_data_correctly_passed   s
    $r^   )r    Zpandas.errorsr   Zpandas.util._test_decoratorsutilZ_test_decoratorstdZpandasr   r   r   Zpandas._testingZ_testingr8   Zpandas.core.util.numba_r   Z
skip_if_nor%   r'   markfilterwarningsZparametrizer=   rC   rE   rM   rU   r^   r
   r
   r
   r   <module>   s>   



(
 
