o
    ôT·j'  ã                   @   s¦  d dl Zd dlZd dlmZ d dlmZ d dlmZm	Z	m
Z
 d dlmZ d dlmZ ejjgZe d¡Ze ejjeejƒedƒkoDeƒ dej› �d	�¡ 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/d0„ Z&dS )1é    N)Úis_platform_arm)ÚNumbaUtilError)Ú	DataFrameÚSeriesÚoption_context)ÚVersionÚnumbaz0.61z&Segfaults on ARM platforms with numba )Úreasonc                  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 )Nr   c                 S   ó   | d S ©Né   © ©Úxr   r   úl/home/dinkstrade/pdmp-scanner/venv/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   ÚfuncD   r   z"test_numba_vs_cython.<locals>.funcr   r   r   ©r   r   r   r   ©ÚnogilÚparallelÚnopython)r1   r   ©r!   Úengine_kwargsc                 S   r
   r   r   r   r   r   r   Ú<lambda>V   ó    z&test_numba_vs_cython.<locals>.<lambda>Úcythonr    ©	r#   r$   r   r/   r   r&   r'   ÚtmÚassert_equal)r/   r0   r5   r6   r7   r1   r2   r   r   r9   ÚgroupedÚresultÚexpectedr   r   r   Útest_numba_vs_cython<   s   

ÿrC   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_1c   r   ztest_cache.<locals>.func_1c                 S   ó   | d S ©Né   r   r*   r   r   r   Úfunc_2f   r   ztest_cache.<locals>.func_2r   r   r   r3   r   r   r4   r   r8   c                 S   r
   r   r   r   r   r   r   r:   x   r;   ztest_cache.<locals>.<lambda>r<   r    c                 S   rE   rF   r   r   r   r   r   r:   |   r;   c                 S   r
   r   r   r   r   r   r   r:   �   r;   r=   )r/   r0   r5   r6   r7   rD   rH   r   r   r9   r@   rA   rB   r   r   r   Ú
test_cache[   s.   


ÿ
rI   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   rD   ˆ   r   z&test_use_global_config.<locals>.func_1r   r   r3   r   r   r   r    zcompute.use_numbaT)r#   r$   r   r&   r'   r   r>   Úassert_frame_equal)rD   r   r@   rB   rA   r   r   r   Útest_use_global_config…   s   
ÿ
ÿrK   Ú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   r3   r   r   r   r!   r<   )r#   r$   r   r&   r'   r>   rJ   Úassert_series_equal)rL   Únumba_supported_reductionsÚkwargsr   r@   rA   rB   r   r   r   Útest_string_cython_vs_numba–   s   
ÿ
rU   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)rO   )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   rY   r   r   r    r   é   )Únameé   r   )r#   r$   r   r&   r'   r   r>   rR   )rX   ÚdfÚ	grouped_xrA   rB   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)ÚAra   rP   )rZ   rG   é   )ÚgroupÚv)éÿÿÿÿéþÿÿÿéýÿÿÿ)r,   rc   r    )g      Àg      Àg       Àrd   )r   r,   ©r#   r$   r   r&   r'   r>   rJ   )r`   r]   rA   rB   r   r   r   Ú test_index_data_correctly_passed¼   s   
ri   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 rV   r   r*   ©r5   r7   r6   r   r   Úfunc_kwargsÑ   s   z2test_engine_kwargs_not_cached.<locals>.func_kwargs©r7   r5   r6   Úvalue)r   r   r   r   )Úlevelr8   )r   r   r   )r   r   r   rh   )rk   r9   r]   rA   rB   r   rj   r   Útest_engine_kwargs_not_cachedÉ   s&   
ÿÿro   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   r\   é   ©ra   rP   rQ   ra   rP   rl   r8   r   )r#   r$   r   Ú	set_indexr&   r'   r>   rJ   )r5   r6   r7   rq   r]   r9   rA   rB   r   r   r   Útest_multiindex_one_keyå   s   

ÿrv   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   rp   r   r   r*   r   r   r   rq   ø   rr   z;test_multiindex_multi_key_not_supported.<locals>.numba_funcr   r\   rs   rt   ra   rP   rl   zmore than 1 grouping labelsr   r8   )r#   r$   r   ru   r%   ÚNotImplementedErrorr&   r'   )r5   r6   r7   rq   r]   r9   r   r   r   Ú'test_multiindex_multi_key_not_supportedõ   s   
ÿ"ÿrx   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Úbarrz   r{   rz   r{   rz   rz   ©Úoner}   ÚtwoÚthreer~   r~   r}   r   r\   é   ©ra   rP   rQ   ÚDra   rP   r!   r<   ©r#   r$   r   ÚnpÚrandomÚdefault_rngÚstandard_normalr&   r'   r>   rJ   )rS   Ú	reductionrT   r]   Ú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   ry   r|   r\   r€   r�   ra   rP   c                 S   ó   | |   ¡  |  ¡ |   ¡   S rV   ©rM   rN   r*   r   r   r   r:      ó    z5test_multilabel_udf_numba_vs_cython.<locals>.<lambda>r    c                 S   r�   rV   rŽ   r   r   r   r   r:   $  r�   r<   rƒ   )r]   r‰   rA   rB   r   r   r   Ú#test_multilabel_udf_numba_vs_cython  s"   
üÿþÿr�   )'Únumpyr„   r#   Úpandas.compatr   Úpandas.errorsr   Úpandasr   r   r   Úpandas._testingÚ_testingr>   Úpandas.util.versionr   ÚmarkÚ
single_cpuÚ
pytestmarkr$   r   ÚappendÚskipifÚ__version__r)   r-   ÚfilterwarningsÚparametrizerC   rI   rK   rU   r_   ri   ro   rv   rx   rŒ   r�   r   r   r   r   Ú<module>   sN    


þÿ

&ÿ


