o
    �¨ÊhÔ%  ã                   @   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/env/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<    

&ÿ


