o
    ŀg%                     @   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 s4w   Y  t jtd
d |dd j| dd W d    d S 1 sXw   Y  d S )Nnumbac                 S      | d S N    xr
   r
   ]/var/www/html/myenv/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matchenginepytestimportorskipr   raisesr   groupby	transformr   r   r
   r
   r   test_correct_function_signature   s   
"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 s5w   Y  t jtd
d |dd j| ddd W d    d S 1 sZw   Y  d S )Nr   c                 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   test_check_nopython_kwargs!   s   
"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r8|
d }
|
j|d|	d}|
jdd dd}t|| d S )Nr   c                 S   r   r   r
   r'   r
   r
   r   func:   r   z"test_numba_vs_cython.<locals>.funcr   r   r   r   r	   r	   r   nogilparallelnopython)r.   r   r   engine_kwargsc                 S   r   r   r
   r   r
   r
   r   <lambda>L       z&test_numba_vs_cython.<locals>.<lambda>cythonr   	r    r!   r   r,   r   r#   r$   tmassert_equal)r,   r-   r2   r3   r4   r.   r/   r   r   r6   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   r   r   r
   r'   r
   r
   r   func_1Y   r   ztest_cache.<locals>.func_1c                 S      | d S N   r
   r'   r
   r
   r   func_2\   r   ztest_cache.<locals>.func_2r   r   r   r0   r	   r   r1   r   r5   c                 S   r   r   r
   r   r
   r
   r   r7   n   r8   ztest_cache.<locals>.<lambda>r9   r   c                 S   rB   rC   r
   r   r
   r
   r   r7   r   r8   c                 S   r   r   r
   r   r
   r
   r   r7   w   r8   r:   )r,   r-   r2   r3   r4   rA   rE   r   r   r6   r=   r>   r?   r
   r
   r   
test_cacheQ   s.   



rF   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 s;w   Y  t|| d S )Nr   c                 S   r   r   r
   r'   r
   r
   r   rA   ~   r   z&test_use_global_config.<locals>.func_1r   r   r0   r   r	   r   r   zcompute.use_numbaT)r    r!   r   r#   r$   r   r;   assert_frame_equal)rA   r   r=   r?   r>   r
   r
   r   test_use_global_config{   s   

rH   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   r0   r   r	   r   r   r9   )r    r!   r   r#   r$   r;   rG   assert_series_equal)rI   numba_supported_reductionskwargsr   r=   r>   r?   r
   r
   r   test_string_cython_vs_numba   s   

rR   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)rL   )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   rV   r   r	   r   r      )name   r   )r    r!   r   r#   r$   r   r;   rO   )rU   df	grouped_xr>   r?   r
   r
   r   test_args_not_cached   s   
r\   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   r   z+test_index_data_correctly_passed.<locals>.f)Ar^   rM   )rW   rD      )groupv))r)   r`   r   )g      g      g       ra   )r   r)   r    r!   r   r#   r$   r;   rG   )r]   rZ   r>   r?   r
   r
   r    test_index_data_correctly_passed   s   
rf   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 rS   r
   r'   r2   r4   r3   r
   r   func_kwargs   s   z2test_engine_kwargs_not_cached.<locals>.func_kwargsr4   r2   r3   value)r   r   r   r   )levelr5   )r   r   r   )r   r   r   re   )rh   r6   rZ   r>   r?   r
   rg   r   test_engine_kwargs_not_cached   s&   
rl   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      dS r   r
   r'   r
   r
   r   
numba_func      z+test_multiindex_one_key.<locals>.numba_funcr	   rY      r^   rM   rN   r^   rM   ri   r5   r   )r    r!   r   	set_indexr#   r$   r;   rG   )r2   r3   r4   rn   rZ   r6   r>   r?   r
   r
   r   test_multiindex_one_key   s   

rs   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    d S 1 s=w   Y  d S )Nr   c                 S   rm   r   r
   r'   r
   r
   r   rn      ro   z;test_multiindex_multi_key_not_supported.<locals>.numba_funcr	   rY   rp   rq   r^   rM   ri   zmore than 1 grouping labelsr   r5   )r    r!   r   rr   r"   NotImplementedErrorr#   r$   )r2   r3   r4   rn   rZ   r6   r
   r
   r   'test_multiindex_multi_key_not_supported   s   
"ru   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barrw   rx   rw   rx   rw   rw   onerz   twothreer{   r{   rz   r|   rY      r^   rM   rN   Dr^   rM   r   r9   r    r!   r   nprandomdefault_rngstandard_normalr#   r$   r;   rG   )rP   	reductionrQ   rZ   gbres_agg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   rv   ry   rY   r}   r~   r^   rM   c                 S      | |    |  |     S rS   rJ   rK   r'   r
   r
   r   r7         z5test_multilabel_udf_numba_vs_cython.<locals>.<lambda>r   c                 S   r   rS   r   r   r
   r
   r   r7     r   r9   r   )rZ   r   r>   r?   r
   r
   r   #test_multilabel_udf_numba_vs_cython
  s"   
r   )numpyr   r    pandas.errorsr   pandasr   r   r   pandas._testing_testingr;   mark
single_cpu
pytestmarkr&   r*   filterwarningsparametrizer@   rF   rH   rR   r\   rf   rl   rs   ru   r   r   r
   r
   r
   r   <module>   s<    

&


