o
    $j'                     @   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   j/var/www/html/Deteccion_Ine/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'   tmZassert_equal)r/   r0   r5   r6   r7   r1   r2   r   r   r9   groupedresultexpectedr   r   r   test_numba_vs_cython<   s   

rB   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   rD   rE   r   r   r   r   r   r:   |   r;   c                 S   r
   r   r   r   r   r   r   r:      r;   r=   )r/   r0   r5   r6   r7   rC   rG   r   r   r9   r?   r@   rA   r   r   r   
test_cache[   s.   



rH   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   rC      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)rC   r   r?   rA   r@   r   r   r   test_use_global_config   s   

rJ   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>   rI   assert_series_equal)rK   numba_supported_reductionskwargsr   r?   r@   rA   r   r   r   test_string_cython_vs_numba   s   

rT   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)rN   )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   rX   r   r   r    r      )name   r   )r#   r$   r   r&   r'   r   r>   rQ   )rW   dfZ	grouped_xr@   rA   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)Ar_   rO   )rY   rF      )groupv))r,   ra   r    )g      g      g       rb   )r   r,   r#   r$   r   r&   r'   r>   rI   )r^   r\   r@   rA   r   r   r    test_index_data_correctly_passed   s   
rg   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 rU   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   rf   )ri   r9   r\   r@   rA   r   rh   r   test_engine_kwargs_not_cached   s&   
rm   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[      r_   rO   rP   r_   rO   rj   r8   r   )r#   r$   r   	set_indexr&   r'   r>   rI   )r5   r6   r7   ro   r\   r9   r@   rA   r   r   r   test_multiindex_one_key   s   

rt   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   rn   r   r   r*   r   r   r   ro      rp   z;test_multiindex_multi_key_not_supported.<locals>.numba_funcr   r[   rq   rr   r_   rO   rj   zmore than 1 grouping labelsr   r8   )r#   r$   r   rs   r%   NotImplementedErrorr&   r'   )r5   r6   r7   ro   r\   r9   r   r   r   'test_multiindex_multi_key_not_supported   s   
"rv   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barrx   ry   rx   ry   rx   rx   oner{   twothreer|   r|   r{   r}   r[      r_   rO   rP   Dr_   rO   r!   r<   r#   r$   r   nprandomZdefault_rngZstandard_normalr&   r'   r>   rI   )rR   Z	reductionrS   r\   gbZres_aggZ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   rw   rz   r[   r~   r   r_   rO   c                 S      | |    |  |     S rU   rL   rM   r*   r   r   r   r:          z5test_multilabel_udf_numba_vs_cython.<locals>.<lambda>r    c                 S   r   rU   r   r   r   r   r   r:   $  r   r<   r   )r\   r   r@   rA   r   r   r   #test_multilabel_udf_numba_vs_cython  s"   
r   )'numpyr   r#   Zpandas.compatr   Zpandas.errorsr   Zpandasr   r   r   Zpandas._testingZ_testingr>   Zpandas.util.versionr   markZ
single_cpuZ
pytestmarkr$   r   appendZskipif__version__r)   r-   filterwarningsZparametrizerB   rH   rJ   rT   r]   rg   rm   rt   rv   r   r   r   r   r   r   <module>   sN    




&


