a
    oÝEbb  ã                   @   s‚  d dl Zd dlZd dlmZ d dlm  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 d¡dd„ ƒZe d¡dd	„ ƒZe d¡ej d
¡ej dddg¡ej dddg¡dd„ ƒƒƒƒZe d¡ej d
¡ej dddg¡ej dddg¡dd„ ƒƒƒƒZe d¡dd„ ƒZe d¡ej dddgdddgddœeddd�g¡dd„ ƒƒZe d¡d d!„ ƒZe d¡d"d#„ ƒZdS )$é    N)ÚNumbaUtilError)Ú	DataFrameÚIndexÚNamedAggÚSeriesÚoption_context)ÚNUMBA_FUNC_CACHEÚnumbac                  C   s²   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 s^0    Y  tjtd	d
��( | d¡d j| dd� W d   ƒ n1 s¤0    Y  d S )Nc                 S   s   t | ƒd S ©Ngš™™™™™@©Úsum©Úx© r   úi/home/ja/django-apps/lartica_env/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©Úmatchr	   ©Úengine©r   ÚpytestÚraisesr   ÚgroupbyÚagg©r   r   r   r   r   Útest_correct_function_signature   s    þ2r'   c                  C   s¶   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 s`0    Y  tjtd	d
��* | d¡d j| ddd� W d   ƒ n1 s¨0    Y  d S )Nc                 [   s   t | ƒd S r
   r   )r   Úkwargsr   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*   zignore:
ÚjitTFÚ
pandas_objr   r   c                 C   s”   dd„ }| rdd l }| |¡}tg d¢g d¢dœddgd�}|||d	œ}| d¡}	|d
krb|	d }	|	j|d|d�}
|	jdd„ dd�}t |
|¡ d S )Nc                 S   s   t  | ¡d S r
   ©ÚnpÚmean©ÚvaluesÚindexr   r   r   Ú
func_numba8   s    z(test_numba_vs_cython.<locals>.func_numbar   r   r   ©r   r)   r)   r   ©ÚnogilÚparallelÚnopythonr   r	   ©r    Úengine_kwargsc                 S   s   t  | ¡d S r
   r-   r   r   r   r   Ú<lambda>J   ó    z&test_numba_vs_cython.<locals>.<lambda>Úcythonr   )r	   r+   r   r$   r%   ÚtmÚassert_equal)r+   r,   r6   r7   r8   r3   r	   r   r:   ÚgroupedÚresultÚexpectedr   r   r   Útest_numba_vs_cython2   s    
ÿ
rC   c                 C   s"  dd„ }dd„ }| r0dd l }| |¡}| |¡}tg d¢g d¢dœdd	gd
�}|||dœ}	| d¡}
|dkrt|
d	 }
|
j|d|	d�}|
jdd„ dd�}t ||¡ |dftv s²J ‚|
j|d|	d�}|
jdd„ dd�}t ||¡ |dftv sðJ ‚|
j|d|	d�}|
jdd„ dd�}t ||¡ d S )Nc                 S   s   t  | ¡d S ©Ng333333@r-   r0   r   r   r   Úfunc_1V   s    ztest_cache.<locals>.func_1c                 S   s   t  | ¡d S r
   r-   r0   r   r   r   Úfunc_2Y   s    ztest_cache.<locals>.func_2r   r   r   r4   r)   r   r5   r   r	   r9   c                 S   s   t  | ¡d S rD   r-   r   r   r   r   r;   k   r<   ztest_cache.<locals>.<lambda>r=   r   Zgroupby_aggc                 S   s   t  | ¡d S r
   r-   r   r   r   r   r;   r   r<   c                 S   s   t  | ¡d S rD   r-   r   r   r   r   r;   x   r<   )r	   r+   r   r$   r%   r>   r?   r   )r+   r,   r6   r7   r8   rE   rF   r	   r   r:   r@   rA   rB   r   r   r   Ú
test_cacheO   s0    

ÿ
rG   c                  C   s†   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 sl0    Y  t ||¡ d S )Nc                 S   s   t  | ¡d S rD   r-   r0   r   r   r   rE   ~   s    z&test_use_global_config.<locals>.func_1r   r   r4   r   r)   r   r	   r   zcompute.use_numbaT)r   r$   r%   r   r>   Úassert_frame_equal)rE   r   r@   rB   rA   r   r   r   Útest_use_global_config|   s    ÿ
,rI   Úagg_funcÚminÚmaxr   )ÚBÚCrM   )ÚcolumnZaggfuncc                 C   s¨   t g d¢g d¢dœddgd�}| d¡}tjtdd�� |j| d	d
� W d   ƒ n1 sZ0    Y  tjtdd��" |d j| d	d
� W d   ƒ n1 sš0    Y  d S )Nr   r   r4   r   r)   r   zNumba engine canr   r	   r   )r   r$   r"   r#   ÚNotImplementedErrorr%   )rJ   r   r@   r   r   r   Útest_multifunc_notimplimented‹   s    ÿ
,rQ   c                  C   s¨   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 )Nc                 S   s   | | d …   ¡ S ©Nr   )r1   r2   Únr   r   r   Úsum_last¤   s    z&test_args_not_cached.<locals>.sum_last)r   r   r)   r)   )r)   r)   r)   r)   )Úidr   rU   r   r)   r	   r   r   é   r   ©Úname)rX   r2   r   )r   r$   r%   r   r   r>   Zassert_series_equal)rT   ÚdfZ	grouped_xrA   rB   r   r   r   Útest_args_not_cached¡   s      rZ   c                  C   sj   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 )Nc                 S   s
   t  |¡S rR   r-   r0   r   r   r   Úfµ   s    z+test_index_data_correctly_passed.<locals>.f)ÚAr\   rM   )é   é   é   )ÚgroupÚv)éÿÿÿÿéþÿÿÿéýÿÿÿ)r2   r`   r	   r   g      ø¿g      Àra   r\   rM   rW   )r   r2   )r   r$   Z	aggregater   r>   rH   )r[   rY   rA   rB   r   r   r   Ú test_index_data_correctly_passed²   s    ÿre   ) Únumpyr.   r"   Zpandas.errorsr   Zpandas.util._test_decoratorsÚutilZ_test_decoratorsÚtdZpandasr   r   r   r   r   Zpandas._testingZ_testingr>   Zpandas.core.util.numba_r   Z
skip_if_nor'   r*   ÚmarkÚfilterwarningsZparametrizerC   rG   rI   rQ   rZ   re   r   r   r   r   Ú<module>   sH   



(

üþ	
