a
    Pf%                     @   sP  d dl Zd dlZd dlmZ d dlmZmZmZ d dl	m
Z ejjZdd Zdd Zejdejd	d
dgejdddgejdd
dgdd Zejdejd	d
dgejdddgdd Zdd Zejdddgdddgddgdd Zdd Zdd  Zd!d" Zejdd#d$ Zd%d& Zd'd( Zd)d* ZdS )+    N)NumbaUtilError)	DataFrameSeriesoption_contextc                  C   s   t d 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 sh0    Y  t jtd
d( |dd j| dd W d    n1 s0    Y  d S )Nnumbac                 S   s   | d S N    xr	   r	   b/var/www/ai-form-bot/venv/lib/python3.9/site-packages/pandas/tests/groupby/transform/test_numba.pyincorrect_function   s    z;test_correct_function_signature.<locals>.incorrect_functionar   br   r         ?       @g      @g      @g      @keydatar   r   columnszThe first 2matchenginepytestimportorskipr   raisesr   groupby	transformr   r   r	   r	   r   test_correct_function_signature   s    
2r$   c                  C   s   t d 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 sj0    Y  t jtd
d* |dd j| ddd W d    n1 s0    Y  d S )Nr   c                 S   s   | d S r   r	   valuesindexr	   r	   r   r   $   s    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   test_check_nopython_kwargs!   s    
4r(   ignorejitTF
pandas_objr   r   as_indexc                 C   s   t d dd }| r(dd l}||}tg dg ddddgd	}|||d
}	|jd|d}
|dkrp|
d }
|
j|d|	d}|
jdd dd}t|| d S )Nr   c                 S   s   | d S r   r	   r%   r	   r	   r   func:   s    z"test_numba_vs_cython.<locals>.funcr   r   r   r   r   r   r   nogilparallelnopython)r,   r   r   engine_kwargsc                 S   s   | d S r   r	   r
   r	   r	   r   <lambda>L       z&test_numba_vs_cython.<locals>.<lambda>cythonr   	r   r   r   r*   r   r!   r"   tmZassert_equal)r*   r+   r0   r1   r2   r,   r-   r   r   r4   groupedresultexpectedr	   r	   r   test_numba_vs_cython2   s    

r=   c                 C   s  t d 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 )Nr   c                 S   s   | d S r   r	   r%   r	   r	   r   func_1Y   s    ztest_cache.<locals>.func_1c                 S   s   | d S N   r	   r%   r	   r	   r   func_2\   s    ztest_cache.<locals>.func_2r   r   r   r.   r   r   r/   r   r3   c                 S   s   | d S r   r	   r
   r	   r	   r   r5   n   r6   ztest_cache.<locals>.<lambda>r7   r   c                 S   s   | d S r?   r	   r
   r	   r	   r   r5   r   r6   c                 S   s   | d S r   r	   r
   r	   r	   r   r5   w   r6   r8   )r*   r+   r0   r1   r2   r>   rA   r   r   r4   r:   r;   r<   r	   r	   r   
test_cacheQ   s.    



rB   c                  C   s   t d 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 sv0    Y  t|| d S )Nr   c                 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   zcompute.use_numbaT)r   r   r   r!   r"   r   r9   assert_frame_equal)r>   r   r:   r<   r;   r	   r	   r   test_use_global_config{   s    

,rD   agg_funcminmaxsum)BCc                 C   s   t d |\} }tg dg ddddgd}|d}|j| fddi|}|j| fdd	i|}t|| |d j| fddi|}|d j| fdd	i|}t|| d S )
Nr   r   r   r.   r   r   r   r   r7   )r   r   r   r!   r"   r9   rC   assert_series_equal)rE   numba_supported_reductionskwargsr   r:   r;   r<   r	   r	   r   test_string_cython_vs_numba   s    

rN   c                  C   s   t d 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 )Nr   c                 S   s   | | d    S N)rH   )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      )name   r   )r   r   r   r!   r"   r   r9   rK   )rQ   dfZ	grouped_xr;   r<   r	   r	   r   test_args_not_cached   s    
rW   c                  C   sl   t d 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 )Nr   c                 S   s   |d S r   r	   r%   r	   r	   r   f   s    z+test_index_data_correctly_passed.<locals>.f)ArY   rI   )rS   r@      )groupv))r'   r[   r   )g      g      g       r\   )r   r'   r   r   r   r!   r"   r9   rC   )rX   rV   r;   r<   r	   r	   r    test_index_data_correctly_passed   s    
ra   c                     s   t d 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 )Nr   TFc                    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   )levelr3   )r   r   r   )r   r   r   r`   )rc   r4   rV   r;   r<   r	   rb   r   test_engine_kwargs_not_cached   s&    
rg   c                 C   s|   t d 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 )Nr   c                 S   s   dS r   r	   r%   r	   r	   r   
numba_func   s    z+test_multiindex_one_key.<locals>.numba_funcr   rU      rY   rI   rJ   rY   rI   rd   r3   r   )r   r   r   	set_indexr!   r"   r9   rC   )r0   r1   r2   rh   rV   r4   r;   r<   r	   r	   r   test_multiindex_one_key   s    

rl   c                 C   s   t d 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    n1 sx0    Y  d S )Nr   c                 S   s   dS r   r	   r%   r	   r	   r   rh      s    z;test_multiindex_multi_key_not_supported.<locals>.numba_funcr   rU   ri   rj   rY   rI   rd   zmore than 1 grouping labelsr   r3   )r   r   r   rk   r    NotImplementedErrorr!   r"   )r0   r1   r2   rh   rV   r4   r	   r	   r   'test_multiindex_multi_key_not_supported   s    
rn   c                 C   s   t 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	
|| d S )Nr   foobarrp   rq   rp   rq   rp   rp   oners   twothreert   rt   rs   ru   rU      rY   rI   rJ   DrY   rI   r   r7   r   r   r   nprandomZdefault_rngZstandard_normalr!   r"   r9   rC   )rL   Z	reductionrM   rV   gbZres_aggZexpected_aggr	   r	   r   test_multilabel_numba_vs_cython   s    
r}   c                  C   s   t d tg dg dtjddtjddd} | ddg}|jd	d
 dd}|jdd
 dd}t	
|| d S )Nr   ro   rr   rU   rv   rw   rY   rI   c                 S   s   | |    |  |     S rO   rF   rG   r%   r	   r	   r   r5     r6   z5test_multilabel_udf_numba_vs_cython.<locals>.<lambda>r   c                 S   s   | |    |  |     S rO   r~   r
   r	   r	   r   r5     r6   r7   ry   )rV   r|   r;   r<   r	   r	   r   #test_multilabel_udf_numba_vs_cython
  s"    
r   )numpyrz   r   Zpandas.errorsr   Zpandasr   r   r   Zpandas._testingZ_testingr9   markZ
single_cpuZ
pytestmarkr$   r(   filterwarningsZparametrizer=   rB   rD   rN   rW   ra   rg   rl   rn   r}   r   r	   r	   r	   r   <module>   s:   

&


