o
    Û­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oHeƒ 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 s4w   Y  t jtd
d�� | d¡d j| dd� W d   ƒ d S 1 sXw   Y  d S )Nr
   c                 S   ó   t | ƒd S ©Ngš™™™™™@©Úsum©Úx© r   úf/var/www/html/CropPilot/venv/lib/python3.10/site-packages/pandas/tests/groupby/aggregate/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Úagg©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   0   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   Útest_check_nopython_kwargs-   s   
þÿ"ÿr1   Ú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   ó   t  | ¡d S r   ©ÚnpÚmeanr-   r   r   r   Ú
func_numbaF   ó   z(test_numba_vs_cython.<locals>.func_numbar   r   r   ©r   r0   r0   r   ©ÚnogilÚparallelÚnopython)r5   r   ©r$   Úengine_kwargsc                 S   r6   r   r7   r   r   r   r   Ú<lambda>X   ó    z&test_numba_vs_cython.<locals>.<lambda>Úcythonr#   ©	r&   r'   r
   r3   r   r)   r*   ÚtmÚassert_equal)r3   r4   r>   r?   r@   r5   r:   r
   r   rB   ÚgroupedÚresultÚexpectedr   r   r   Útest_numba_vs_cython>   s   

ÿrL   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   ó   t  | ¡d S ©Ng333333@r7   r-   r   r   r   Úfunc_1e   r;   ztest_cache.<locals>.func_1c                 S   r6   r   r7   r-   r   r   r   Úfunc_2h   r;   ztest_cache.<locals>.func_2r   r   r   r<   r0   r   r=   r   rA   c                 S   rM   rN   r7   r   r   r   r   rC   z   rD   ztest_cache.<locals>.<lambda>rE   r#   c                 S   r6   r   r7   r   r   r   r   rC      rD   c                 S   rM   rN   r7   r   r   r   r   rC   „   rD   rF   )r3   r4   r>   r?   r@   rO   rP   r
   r   rB   rI   rJ   rK   r   r   r   Ú
test_cache]   s.   


ÿ
rQ   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   rM   rN   r7   r-   r   r   r   rO   ‹   r;   z&test_use_global_config.<locals>.func_1r   r   r<   r   r0   r   r#   zcompute.use_numbaT)r&   r'   r   r)   r*   r   rG   Úassert_frame_equal)rO   r   rI   rK   rJ   r   r   r   Útest_use_global_configˆ   s   
ÿ
ÿrS   Ú
agg_kwargsÚfuncÚminÚmaxr   )r0   é   Úbminr0   )ÚcolumnÚaggfuncc                 C   sx   t  d¡ tg d¢g d¢g d¢dœg d¢d�}| d¡}|jd
i | ¤ddi¤Ž}|jd
i | ¤dd	i¤Ž}t ||¡ d S )Nr
   r   r   ©r0   rX   é   é   é   ©r   r0   rX   r   r   r$   rE   r   ©r&   r'   r   r)   r*   rG   rR   )rT   r   rI   rJ   rK   r   r   r   Ú$test_multifunc_numba_vs_cython_frame˜   s   

ýú
rb   zagg_kwargs,expected_funcc                 C   ó   |   ¡ S ©Nr   r-   r   r   r   rC   ´   ó    rC   c                 C   rc   rd   r   r-   r   r   r   rC   ¹   re   c                 C   rc   rd   ©rV   r-   r   r   r   rC   º   re   z2This doesn't work yet! Fails in nopython pipeline!)Úmarksc                 C   sr   t  d¡ tg d¢g d¢g d¢dœg d¢d�}| d¡}|jdi | ¤ddi¤Ž}|j|d	d
�}tj||dd� d S )Nr
   r   r   r\   r`   r   r   r$   rE   r#   F)Úcheck_dtyper   ra   )rT   Úexpected_funcr   rI   rJ   rK   r   r   r   Útest_multifunc_numba_udf_frame±   s   
ýú
rj   )Úmin_valÚmax_valc                 C   s‚   t  d¡ g d¢}tg d¢ƒ}| |¡}d| d< |jdi | ¤Ž}d| d< |jdi | ¤Ž}t|tƒr9t ||¡ d S t 	||¡ d S )Nr
   r   r   r$   rE   r   )
r&   r'   r   r)   r*   Ú
isinstancer   rG   rR   Úassert_series_equal)rT   Úlabelsr   rI   rJ   rK   r   r   r   Ú%test_multifunc_numba_vs_cython_seriesÖ   s   


rp   zdata,agg_kwargsr   r\   rX   r   Úmin_colc                 C   s|   t  d¡ g d¢}|  |¡}|jdi |¤dddidœ¤Ž}|jdi |¤ddi¤Ž}t|tƒr6t ||¡ d S t ||¡ d S )Nr
   r   r?   TrA   r$   r   )	r&   r'   r)   r*   rm   r   rG   rR   rn   )r   rT   ro   rI   rJ   rK   r   r   r   Ú&test_multifunc_numba_kwarg_propagationé   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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 rd   r   )r.   r/   Únr   r   r   Úsum_last  s   z&test_args_not_cached.<locals>.sum_last)r   r   r0   r0   )r0   r0   r0   r0   )Úidr   ru   r   r0   r#   r   rX   r   ©Úname)rw   r/   r   )	r&   r'   r   r)   r*   r   r   rG   rn   )rt   ÚdfÚ	grouped_xrJ   rK   r   r   r   Útest_args_not_cached  s   
  rz   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 rd   r7   r-   r   r   r   Úf+  s   
z+test_index_data_correctly_passed.<locals>.f)ÚAr|   ÚB)r^   r_   é   )ÚgroupÚv)éÿÿÿÿéþÿÿÿéýÿÿÿ)r/   r   r#   g      ø¿g      Àr€   r|   r}   rv   )r    r/   )r&   r'   r   r)   Ú	aggregater   rG   rR   )r{   rx   rJ   rK   r   r   r   Ú test_index_data_correctly_passed'  s   
ÿr…   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 rd   r   r-   ©r>   r@   r?   r   r   Úfunc_kwargs>  r   z2test_engine_kwargs_not_cached.<locals>.func_kwargs©r@   r>   r?   Úvalue)r   r   r   r   )ÚlevelrA   )r   r   r   )r   r   r   )r&   r'   r   r)   r„   rG   rR   )r‡   rB   rx   rJ   rK   r   r†   r   Útest_engine_kwargs_not_cached6  s&   
ÿÿr‹   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   ó   dS ©Nr0   r   r-   r   r   r   Ú
numba_funcV  ó   z+test_multiindex_one_key.<locals>.numba_funcr0   rX   r]   ©r|   r}   ÚCr|   r}   rˆ   rA   r   rv   r‘   )r/   r    )	r&   r'   r   Ú	set_indexr)   r*   r   rG   rR   )r>   r?   r@   rŽ   rx   rB   rJ   rK   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   ƒ d S 1 s=w   Y  d S )Nr
   c                 S   rŒ   r�   r   r-   r   r   r   rŽ   e  r�   z;test_multiindex_multi_key_not_supported.<locals>.numba_funcr0   rX   r]   r�   r|   r}   rˆ   zmore than 1 grouping labelsr!   rA   )r&   r'   r   r’   r(   ÚNotImplementedErrorr)   r*   )r>   r?   r@   rŽ   rx   rB   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||ƒdd	di|¤Ž}t||ƒdd	d
i|¤Ž}t	 
||¡ d S )Nr
   ©ÚfooÚbarr—   r˜   r—   r˜   r—   r—   ©Úonerš   ÚtwoÚthreer›   r›   rš   rœ   rX   é   ©r|   r}   r‘   ÚDr|   r}   r$   rE   r   )r&   r'   r   r8   ÚrandomÚdefault_rngÚstandard_normalr)   r*   rG   rR   Úgetattr)	Únumba_supported_reductionsÚ	reductionÚkwargsrx   ÚgbÚres_aggÚexpected_aggÚ
direct_resÚ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™   rX   r�   rž   r|   r}   c                 S   rc   rd   rf   r-   r   r   r   rC   �  re   z5test_multilabel_udf_numba_vs_cython.<locals>.<lambda>r#   c                 S   rc   rd   rf   r   r   r   r   rC   ‘  re   rE   )r&   r'   r   r8   r    r¡   r¢   r)   r*   rG   rR   )rx   r§   rJ   rK   r   r   r   Ú#test_multilabel_udf_numba_vs_cython…  s   
üÿr­   ).Únumpyr8   r&   Úpandas.compatr   Úpandas.errorsr   Úpandasr   r   r   r   r   Úpandas._testingÚ_testingrG   Úpandas.util.versionr	   ÚmarkÚ
single_cpuÚ
pytestmarkr'   r
   ÚappendÚskipifÚ__version__r,   r1   ÚfilterwarningsÚparametrizerL   rQ   rS   rb   ÚparamÚxfailrj   rp   rr   rz   r…   r‹   r“   r•   r¬   r­   r   r   r   r   Ú<module>   s¼    


þÿ

'
üþ
	þÿÿøýþ
þ
ÿ
üÿüÿüÿüëþ

