U
    `»{ja  ã                   @   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 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e d¡d#d$„ ƒZe d¡ej d	¡d%d&„ ƒƒZe d¡d'd(„ ƒZ dS ))é    N)ÚNumbaUtilError)Ú	DataFrameÚIndexÚNamedAggÚSeriesÚoption_contextÚnumbac               	   C   s–   dd„ } t dddddgddddd	gd
œddgd�}tjtdd�� | d¡j| dd� W 5 Q R X tjtdd�� | d¡d j| dd� W 5 Q R X d S )Nc                 S   s   t | ƒd S ©Ngš™™™™™@©Úsum©Úx© r   úh/var/www/html/bwave/python/venv/lib/python3.8/site-packages/pandas/tests/groupby/aggregate/test_numba.pyÚincorrect_function   s    z;test_correct_function_signature.<locals>.incorrect_functionÚaÚbç      ð?ç       @ç      @ç      @ç      @©ÚkeyÚdatar   r   ©ÚcolumnszThe first 2©Úmatchr   ©Úengine©r   ÚpytestÚraisesr   ÚgroupbyÚagg©r   r   r   r   r   Útest_correct_function_signature   s    þr'   c               	   C   sš   dd„ } t dddddgddddd	gd
œddgd�}tjtdd�� | d¡j| ddd� W 5 Q R X tjtdd��  | d¡d j| ddd� W 5 Q R X d S )Nc                 S   s   t | ƒd S r	   r
   ©ÚvaluesÚindexr   r   r   r   #   s    z6test_check_nopython_kwargs.<locals>.incorrect_functionr   r   r   r   r   r   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   c                 C   s    dd„ }| rdd l }| |¡}tdddddgdddd	d
gdœddgd�}|||dœ}| d¡}	|dkrn|	d }	|	j|d|d�}
|	jdd„ dd�}t |
|¡ d S )Nc                 S   s   t  | ¡d S r	   ©ÚnpZmeanr(   r   r   r   Ú
func_numba7   s    z(test_numba_vs_cython.<locals>.func_numbar   r   r   r   r   r   r   r   ©r   r+   r+   r   ©ÚnogilÚparallelÚnopythonr   r   ©r    Úengine_kwargsc                 S   s   t  | ¡d S r	   r0   r   r   r   r   Ú<lambda>I   ó    z&test_numba_vs_cython.<locals>.<lambda>Úcythonr   ©r   r.   r   r$   r%   ÚtmZassert_equal)r.   r/   r5   r6   r7   r2   r   r   r9   ÚgroupedÚresultÚexpectedr   r   r   Útest_numba_vs_cython1   s    
 ÿ
rB   c                 C   s  dd„ }dd„ }| r0dd l }| |¡}| |¡}tdddddgdd	d
ddg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 )Nc                 S   s   t  | ¡d S ©Ng333333@r0   r(   r   r   r   Úfunc_1U   s    ztest_cache.<locals>.func_1c                 S   s   t  | ¡d S r	   r0   r(   r   r   r   Úfunc_2X   s    ztest_cache.<locals>.func_2r   r   r   r   r   r   r   r   r3   r+   r   r4   r   r   r8   c                 S   s   t  | ¡d S rC   r0   r   r   r   r   r:   j   r;   ztest_cache.<locals>.<lambda>r<   r   c                 S   s   t  | ¡d S r	   r0   r   r   r   r   r:   o   r;   c                 S   s   t  | ¡d S rC   r0   r   r   r   r   r:   t   r;   r=   )r.   r/   r5   r6   r7   rD   rE   r   r   r9   r?   r@   rA   r   r   r   Ú
test_cacheN   s.    

 ÿ
rF   c               	   C   s~   dd„ } t dddddgddddd	gd
œddgd�}| d¡}|j| dd�}tddƒ� |j| d d�}W 5 Q R X t ||¡ d S )Nc                 S   s   t  | ¡d S rC   r0   r(   r   r   r   rD   z   s    z&test_use_global_config.<locals>.func_1r   r   r   r   r   r   r   r3   r   r+   r   r   r   zcompute.use_numbaT)r   r$   r%   r   r>   Úassert_frame_equal)rD   r   r?   rA   r@   r   r   r   Útest_use_global_configx   s     ÿ
rH   Úagg_funcÚminÚmaxr   )ÚBÚCrL   )ÚcolumnZaggfuncc              	   C   sŒ   t dddddgdddddgdœd	d
gd�}| d	¡}tjtdd�� |j| dd� W 5 Q R X tjtdd�� |d
 j| dd� W 5 Q R X d S )Nr   r   r   r   r   r   r   r3   r   r+   r   zNumba engine canr   r   r   )r   r$   r"   r#   ÚNotImplementedErrorr%   )rI   r   r?   r   r   r   Útest_multifunc_notimplimented‡   s     ÿ
rP   c                  C   s°   dd„ } t ddddgddddg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
   )r)   r*   Únr   r   r   Úsum_last    s    z&test_args_not_cached.<locals>.sum_lastr   r+   )Úidr   rT   r   r   r   r   é   ©Úname)rW   r*   r   )r   r$   r%   r   r   r>   Zassert_series_equal)rS   ÚdfZ	grouped_xr@   rA   r   r   r   Útest_args_not_cached�   s      rY   c                  C   sp   dd„ } t dddgdddgdœd	d
dg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 rQ   r0   r(   r   r   r   Úf±   s    z+test_index_data_correctly_passed.<locals>.fÚArL   é   é   é   )ÚgroupÚvéÿÿÿÿéþÿÿÿéýÿÿÿ)r*   r_   r   r   g      ø¿g      Àr`   rV   )r   r*   )r   r$   Ú	aggregater   r>   rG   )rZ   rX   r@   rA   r   r   r   Ú test_index_data_correctly_passed®   s    $  ÿre   c                     sº   d‰ d‰d‰‡ ‡‡fdd„} ˆˆ ˆdœ}t ddddgiƒ}|jdd�j| d	|d
�}t ddddgiƒ}t ||¡ d‰ ˆˆ ˆdœ}|jdd�j| d	|d
�}t ddddgiƒ}t ||¡ d S )NTFc                    s   ˆ ˆ ˆ S rQ   r   r(   ©r5   r7   r6   r   r   Úfunc_kwargsÄ   s    z2test_engine_kwargs_not_cached.<locals>.func_kwargs©r7   r5   r6   Úvaluer   )Úlevelr   r8   r   r   )r   r$   rd   r>   rG   )rg   r9   rX   r@   rA   r   rf   r   Útest_engine_kwargs_not_cached¼   s,      ÿ  ÿrk   c                 C   sr   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 )Nc                 S   s   dS ©Nr+   r   r(   r   r   r   Ú
numba_funcÛ   s    z+test_multiindex_one_key.<locals>.numba_funcr+   rU   é   ©r[   rL   rM   r[   rL   rh   r   r8   r   rV   rM   )r*   r   )r   Ú	set_indexr$   r%   r   r>   rG   )r5   r6   r7   rm   rX   r9   r@   rA   r   r   r   Útest_multiindex_one_keyØ   s    
  ÿrq   c              	   C   sh   dd„ }t ddddœgƒ ddg¡}|| |d	œ}tjtd
d��  | ddg¡j|d|d� W 5 Q R X d S )Nc                 S   s   dS rl   r   r(   r   r   r   rm   é   s    z;test_multiindex_multi_key_not_supported.<locals>.numba_funcr+   rU   rn   ro   r[   rL   rh   zMore than 1 grouping labelsr   r   r8   )r   rp   r"   r#   rO   r$   r%   )r5   r6   r7   rm   rX   r9   r   r   r   Ú'test_multiindex_multi_key_not_supportedç   s      ÿrr   )!Únumpyr1   r"   Zpandas.errorsr   Zpandas.util._test_decoratorsÚutilZ_test_decoratorsÚtdZpandasr   r   r   r   r   Zpandas._testingZ_testingr>   Z
skip_if_nor'   r,   ÚmarkÚfilterwarningsZparametrizerB   rF   rH   rP   rY   re   rk   rq   rr   r   r   r   r   Ú<module>   sT   



%

üþ	



