a
    é´«j64  ã                   @   s2  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
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o�eƒ 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dgiddidddgd d!œid"e
d#dd$�ig¡d%d&„ ƒZ!ej d'dd(d)„ id fej"dd*d)„ d+d)„ gid dgejj#d,d	�d-�g¡d.d/„ ƒZ$ej ddddgiddiddd0œg¡d1d2„ ƒZ%ejjej d3eg d4¢ƒdddgifeg d4¢ƒddifeg d4¢g d5¢d!œd#d6gd7�dddgifeg d4¢g d5¢d!œd#d6gd7�ddifeg d4¢g d5¢d!œd#d6gd7�dddgd d!œifeg d4¢g d5¢d!œd#d6gd7�d8e
d#dd$�ifg¡d9d:„ ƒƒZ&d;d<„ Z'd=d>„ Z(d?d@„ Z)ej d¡dAdB„ ƒZ*dCdD„ Z+dEdF„ Z,dGdH„ Z-dS )Ié    N)Úis_platform_arm)ÚNumbaUtilError)Ú	DataFrameÚIndexÚNamedAggÚ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 sh0    Y  t jtd
d��( | d¡d j| dd� W d   ƒ n1 s®0    Y  d S )Nr
   c                 S   s   t | ƒd S ©Ngš™™™™™@©Úsum©Úx© r   úh/var/www/html/laksyashrimp/venv/lib/python3.9/site-packages/pandas/tests/groupby/aggregate/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Úagg©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 s²0    Y  d S )Nr
   c                 S   s   t | ƒd S r   r   ©ÚvaluesÚindexr   r   r   r   0   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   Ú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   t  | ¡d S r   ©ÚnpÚmeanr+   r   r   r   Ú
func_numbaF   s    z(test_numba_vs_cython.<locals>.func_numbar   r   r   ©r   r.   r.   r   ©ÚnogilÚparallelÚnopython)r3   r   ©r"   Úengine_kwargsc                 S   s   t  | ¡d S r   r4   r   r   r   r   Ú<lambda>X   ó    z&test_numba_vs_cython.<locals>.<lambda>Úcythonr!   ©	r$   r%   r
   r1   r   r'   r(   ÚtmZassert_equal)r1   r2   r:   r;   r<   r3   r7   r
   r   r>   ÚgroupedÚresultÚexpectedr   r   r   Útest_numba_vs_cython>   s    

ÿrG   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   t  | ¡d S ©Ng333333@r4   r+   r   r   r   Úfunc_1e   s    ztest_cache.<locals>.func_1c                 S   s   t  | ¡d S r   r4   r+   r   r   r   Úfunc_2h   s    ztest_cache.<locals>.func_2r   r   r   r8   r.   r   r9   r   r=   c                 S   s   t  | ¡d S rH   r4   r   r   r   r   r?   z   r@   ztest_cache.<locals>.<lambda>rA   r!   c                 S   s   t  | ¡d S r   r4   r   r   r   r   r?      r@   c                 S   s   t  | ¡d S rH   r4   r   r   r   r   r?   „   r@   rB   )r1   r2   r:   r;   r<   rI   rJ   r
   r   r>   rD   rE   rF   r   r   r   Ú
test_cache]   s.    


ÿ
rK   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   t  | ¡d S rH   r4   r+   r   r   r   rI   ‹   s    z&test_use_global_config.<locals>.func_1r   r   r8   r   r.   r   r!   zcompute.use_numbaT)r$   r%   r   r'   r(   r   rC   Úassert_frame_equal)rI   r   rD   rF   rE   r   r   r   Útest_use_global_configˆ   s    
ÿ
,rM   Ú
agg_kwargsÚfuncÚminÚmaxr   )r.   é   Zbminr.   )ÚcolumnZaggfuncc                 C   sx   t  d¡ tg d¢g d¢g d¢dœg d¢d�}| d¡}|jf i | ¤ddi¤Ž}|jf i | ¤dd	i¤Ž}t ||¡ d S )
Nr
   r   r   ©r.   rR   é   é   é   ©r   r.   rR   r   r   r"   rA   ©r$   r%   r   r'   r(   rC   rL   )rN   r   rD   rE   rF   r   r   r   Ú$test_multifunc_numba_vs_cython_frame˜   s    

ýú
rZ   zagg_kwargs,expected_funcc                 C   s   |   ¡ S ©Nr   r+   r   r   r   r?   ´   r@   r?   c                 C   s   |   ¡ S r[   r   r+   r   r   r   r?   ¹   r@   c                 C   s   |   ¡ S r[   ©rP   r+   r   r   r   r?   º   r@   z2This doesn't work yet! Fails in nopython pipeline!)Zmarksc                 C   sr   t  d¡ tg d¢g d¢g d¢dœg d¢d�}| d¡}|jf i | ¤ddi¤Ž}|j|d	d
�}tj||dd� d S )Nr
   r   r   rT   rX   r   r   r"   rA   r!   F)Zcheck_dtyperY   )rN   Zexpected_funcr   rD   rE   rF   r   r   r   Útest_multifunc_numba_udf_frame±   s    
ýú
r]   )Zmin_valZmax_valc                 C   s€   t  d¡ g d¢}tg d¢ƒ}| |¡}d| d< |jf i | ¤Ž}d| d< |jf i | ¤Ž}t|tƒrpt ||¡ nt 	||¡ d S )Nr
   r   r   r"   rA   )
r$   r%   r   r'   r(   Ú
isinstancer   rC   rL   Úassert_series_equal)rN   Úlabelsr   rD   rE   rF   r   r   r   Ú%test_multifunc_numba_vs_cython_seriesÖ   s    


ra   zdata,agg_kwargsr   rT   rR   r   Zmin_colc                 C   sz   t  d¡ g d¢}|  |¡}|jf i |¤dddidœ¤Ž}|jf i |¤ddi¤Ž}t|tƒrjt ||¡ nt ||¡ d S )Nr
   r   r;   Tr=   r"   )	r$   r%   r'   r(   r^   r   rC   rL   r_   )r   rN   r`   rD   rE   rF   r   r   r   Ú&test_multifunc_numba_kwarg_propagationé   s    !


rb   c                  C   s²   t  d¡ dd„ } tg d¢g d¢dœƒ}| d¡d }|j| d	dd
�}tdgd dtdd	gdd�d�}t ||¡ |j| ddd
�}tdgd dtdd	gdd�d�}t ||¡ d S )Nr
   c                 S   s   | | d …   ¡ S r[   r   )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   re   r   r.   r!   r   rR   r   ©Úname)rg   r-   r   )	r$   r%   r   r'   r(   r   r   rC   r_   )rd   ÚdfZ	grouped_xrE   rF   r   r   r   Útest_args_not_cached  s    
  ri   c                  C   st   t  d¡ dd„ } tg d¢g d¢dœg d¢d�}| d	¡j| dd
�}tddgdgtddgd	d�d�}t ||¡ d S )Nr
   c                 S   s
   t  |¡S r[   r4   r+   r   r   r   Úf+  s    z+test_index_data_correctly_passed.<locals>.f)ÚArk   ÚB)rV   rW   é   )ÚgroupÚv)éÿÿÿÿéþÿÿÿéýÿÿÿ)r-   rn   r!   g      ø¿g      Àro   rk   rl   rf   )r   r-   )r$   r%   r   r'   Ú	aggregater   rC   rL   )rj   rh   rE   rF   r   r   r   Ú test_index_data_correctly_passed'  s    
ÿrt   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 r[   r   r+   ©r:   r<   r;   r   r   Úfunc_kwargs>  s    z2test_engine_kwargs_not_cached.<locals>.func_kwargs©r<   r:   r;   Úvalue)r   r   r   r   )Úlevelr=   )r   r   r   )r   r   r   )r$   r%   r   r'   rs   rC   rL   )rv   r>   rh   rE   rF   r   ru   r   Útest_engine_kwargs_not_cached6  s&    
ÿÿrz   c                 C   s|   t  d¡ dd„ }tddddœgƒ dd	g¡}|| |d
œ}| d¡j|d|d�}tdgtdgdd�dgd�}t ||¡ d S )Nr
   c                 S   s   dS ©Nr.   r   r+   r   r   r   Ú
numba_funcV  s    z+test_multiindex_one_key.<locals>.numba_funcr.   rR   rU   ©rk   rl   ÚCrk   rl   rw   r=   r   rf   r~   )r-   r   )	r$   r%   r   Ú	set_indexr'   r(   r   rC   rL   )r:   r;   r<   r|   rh   r>   rE   rF   r   r   r   Útest_multiindex_one_keyR  s    

ÿr€   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   r|   e  s    z;test_multiindex_multi_key_not_supported.<locals>.numba_funcr.   rR   rU   r}   rk   rl   rw   zmore than 1 grouping labelsr   r=   )r$   r%   r   r   r&   ÚNotImplementedErrorr'   r(   )r:   r;   r<   r|   rh   r>   r   r   r   Ú'test_multiindex_multi_key_not_supportedb  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|fd	di|¤Ž}|j|fd	d
i|¤Ž}t	 
||¡ t||ƒf d	di|¤Ž}t||ƒf d	d
i|¤Ž}t	 
||¡ d S )Nr
   ©ÚfooÚbarr„   r…   r„   r…   r„   r„   ©Úoner‡   ÚtwoÚthreerˆ   rˆ   r‡   r‰   rR   é   ©rk   rl   r~   ÚDrk   rl   r"   rA   )r$   r%   r   r5   ÚrandomÚdefault_rngÚstandard_normalr'   r(   rC   rL   Úgetattr)	Znumba_supported_reductionsZ	reductionÚkwargsrh   ÚgbZres_aggZexpected_aggZ
direct_resZdirect_expectedr   r   r   Útest_multilabel_numba_vs_cythonp  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
   rƒ   r†   rR   rŠ   r‹   rk   rl   c                 S   s   |   ¡ S r[   r\   r+   r   r   r   r?   �  r@   z5test_multilabel_udf_numba_vs_cython.<locals>.<lambda>r!   c                 S   s   |   ¡ S r[   r\   r   r   r   r   r?   ‘  r@   rA   )r$   r%   r   r5   r�   rŽ   r�   r'   r(   rC   rL   )rh   r’   rE   rF   r   r   r   Ú#test_multilabel_udf_numba_vs_cython…  s    
üÿr”   ).Únumpyr5   r$   Zpandas.compatr   Zpandas.errorsr   Zpandasr   r   r   r   r   Zpandas._testingZ_testingrC   Zpandas.util.versionr	   ÚmarkZ
single_cpuZ
pytestmarkr%   r
   ÚappendZskipifÚ__version__r*   r/   ÚfilterwarningsZparametrizerG   rK   rM   rZ   ÚparamZxfailr]   ra   rb   ri   rt   rz   r€   r‚   r“   r”   r   r   r   r   Ú<module>   sº   


þÿ

'
üþ	
þÿÿøýþ
þ
ÿ
üÿüÿüÿüëþ

