o
    Ch'                     @   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   {/var/www/html/myvaluetrips/my_value_trip_new/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    




&


