U
    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 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	   M/tmp/pip-unpacked-wheel-g7fro6k3/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   s   | d S r   r	   valuesindexr	   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(   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	   r%   r	   r	   r   func4   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>F       z&test_numba_vs_cython.<locals>.<lambda>cythonr   r   r*   r   r!   r"   tmZassert_equal)r*   r+   r/   r0   r1   r,   r   r   r3   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|| |
j|d|	d}|
jdd dd}t|| |
j|d|	d}|
jdd dd}t|| d S )Nc                 S   s   | d S r   r	   r%   r	   r	   r   func_1R   s    ztest_cache.<locals>.func_1c                 S   s   | d S N   r	   r%   r	   r	   r   func_2U   s    ztest_cache.<locals>.func_2r   r   r   r   r   r   r   r   r-   r   r   r.   r   r   r2   c                 S   s   | d S r   r	   r
   r	   r	   r   r4   g   r5   ztest_cache.<locals>.<lambda>r6   r   c                 S   s   | d S r>   r	   r
   r	   r	   r   r4   k   r5   c                 S   s   | d S r   r	   r
   r	   r	   r   r4   p   r5   r7   )r*   r+   r/   r0   r1   r=   r@   r   r   r3   r9   r:   r;   r	   r	   r   
test_cacheK   s.    

 
rA   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=   v   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   r9   r;   r:   r	   r	   r   test_use_global_configt   s     
rC   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"   )rD   r   r9   r	   r	   r   test_multifunc_notimplimented   s     
rK   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)rG   )r&   r'   nr	   r	   r   sum_last   s    z&test_args_not_cached.<locals>.sum_lastr   r   )idr   rO   r   r   r   r      )name   r   )r   r!   r"   r   r8   Zassert_series_equal)rN   dfZ	grouped_xr:   r;   r	   r	   r   test_args_not_cached   s    rT   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ArH   rP   r?      )groupv)r'   rX   r   r   g      g      g       rY   )r   r'   r   r!   r"   r8   rB   )rU   rS   r:   r;   r	   r	   r    test_index_data_correctly_passed   s
    $r^   c                     s   d dd fdd}  d}t ddddgi}|jddj| d	|d
}t ddddgi}t|| d  d}|jddj| d	|d
}t ddddgi}t|| d S )NTFc                    s      S rL   r	   r%   r/   r1   r0   r	   r   func_kwargs   s    z2test_engine_kwargs_not_cached.<locals>.func_kwargsr1   r/   r0   valuer   )levelr   r2   r   r   r]   )r`   r3   rS   r:   r;   r	   r_   r   test_engine_kwargs_not_cached   s,        rd   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   s   dS r   r	   r%   r	   r	   r   
numba_func   s    z+test_multiindex_one_key.<locals>.numba_funcr   rR      rV   rH   rI   rV   rH   ra   r   r2   r   )r   	set_indexr!   r"   r8   rB   )r/   r0   r1   re   rS   r3   r:   r;   r	   r	   r   test_multiindex_one_key   s    
  ri   c              	   C   sh   dd }t ddddgddg}|| |d	}tjtd
d  |ddgj|d|d W 5 Q R X d S )Nc                 S   s   dS r   r	   r%   r	   r	   r   re      s    z;test_multiindex_multi_key_not_supported.<locals>.numba_funcr   rR   rf   rg   rV   rH   ra   zMore than 1 grouping labelsr   r   r2   )r   rh   r   r    rJ   r!   r"   )r/   r0   r1   re   rS   r3   r	   r	   r   'test_multiindex_multi_key_not_supported   s      rj   )r   Zpandas.errorsr   Zpandas.util._test_decoratorsutilZ_test_decoratorstdZpandasr   r   r   Zpandas._testingZ_testingr8   Z
skip_if_nor$   r(   markfilterwarningsZparametrizer<   rA   rC   rK   rT   r^   rd   ri   rj   r	   r	   r	   r   <module>   sJ   



$
 



