o
    Û­j^  ã                   @   sP  d dl Zd dlZd dlmZ d dlm  mZ d dl	Z
d dl	mZmZ d dlmZ d dlmZ e d¡ejjej ¡ gZe d¡Ze ejjeejƒedƒkoQeƒ dej› �d�¡ ejd d	gd
�dd„ ƒZdd„ Zdd„ Zdd„ Zej  ddd„ dd„ dd„ dd„ g¡dd„ ƒZ!ej  dg d¢g d¢g¡dd„ ƒZ"d d!„ Z#d"d#„ Z$d$d%„ Z%dS )&é    N)Úis_platform_arm)Ú	DataFrameÚIndex)ÚVersionÚnumbaz0.61z&Segfaults on ARM platforms with numba )Úreasoné   )Úparamsc                 C   s   | j S ©N)Úparam)Úrequest© r   úZ/var/www/html/CropPilot/venv/lib/python3.10/site-packages/pandas/tests/apply/test_numba.pyÚ
apply_axis   s   r   c                 C   s8   dd„ }| j |d|d�}| j |d|d�}t ||¡ d S )Nc                 S   ó   | S r
   r   ©Úxr   r   r   Ú<lambda>    ó    z+test_numba_vs_python_noop.<locals>.<lambda>r   ©ÚengineÚaxisÚpython)ÚapplyÚtmÚassert_frame_equal)Úfloat_framer   ÚfuncÚresultÚexpectedr   r   r   Útest_numba_vs_python_noop   s   r    c                  C   sx   t dtddgtjtjd�d�tddgtjtjd�d�d�} d	d
„ }| j|ddd�}| j|ddd�}tj||ddd� d S )Nr   ÚaÚb)Úna_value©Údtyper   Úy)ÚindexÚcolumnsc                 S   r   r
   r   r   r   r   r   r   -   r   z3test_numba_vs_python_string_index.<locals>.<lambda>r   r   r   r   F)Úcheck_column_typeÚcheck_index_type)	r   r   ÚpdÚStringDtypeÚnpÚnanr   r   r   )Údfr   r   r   r   r   r   Ú!test_numba_vs_python_string_index&   s   ý
ÿr0   c                  C   s”   t g d¢g d¢g d¢dœtg d¢ƒd�} dd„ }| j|d	d
d�}| j|dd
d�}t ||¡ dd„ }| j|d	dd�}| j|ddd�}t ||¡ d S )N©r   é   é   ©é   é   é   )g      @g       @g      "@©r!   r"   Úc)ÚAÚBÚC©r'   c                 S   ó   | d S )Nr9   r   r   r   r   r   r   :   ó    z/test_numba_vs_python_indexing.<locals>.<lambda>r   r   r   r   c                 S   r>   )Nr:   r   r   r   r   r   r   ?   r?   r   )r   r   r   r   Úassert_series_equal)ÚframeÚrow_funcr   r   Úcol_funcr   r   r   Útest_numba_vs_python_indexing5   s   
þrD   Ú	reductionc                 C   ó   |   ¡ S r
   )Úmeanr   r   r   r   r   G   r?   r   c                 C   rF   r
   )Úminr   r   r   r   r   G   r?   c                 C   rF   r
   )Úmaxr   r   r   r   r   G   r?   c                 C   rF   r
   )Úsumr   r   r   r   r   G   r?   c                 C   sD   t tjdtjd�ƒ}|j| d|d�}|j| d|d�}t ||¡ d S )N)r5   r5   r$   r   r   r   )r   r-   ÚonesÚfloat64r   r   r@   )rE   r   r/   r   r   r   r   r   Útest_numba_vs_python_reductionsE   s   rM   Úcolnamesr1   )g      ð?g       @g      @c                    sn   t tjg d¢g d¢g d¢gtjd�| d�}| d ‰ ‡ fdd„}|j|d	d
d�}|j|dd
d�}t ||¡ d S )Nr1   r4   )é   é   é	   r$   )r(   r   c                    s   | ˆ  S r
   r   r   ©Ú	first_colr   r   r   W   r?   z-test_numba_numeric_colnames.<locals>.<lambda>r   r   r   r   )r   r-   ÚarrayÚint64r   r   r@   )rN   r/   Úfr   r   r   rR   r   Útest_numba_numeric_colnamesP   s   "ÿrW   c                 C   sP   dd„ }t jtdd�� | j|dddid� W d   ƒ d S 1 s!w   Y  d S )	Nc                 S   r   r
   r   r   r   r   r   r   ^   r   z1test_numba_parallel_unsupported.<locals>.<lambda>zAParallel apply is not supported when raw=False and engine='numba'©Úmatchr   ÚparallelT)r   Úengine_kwargs)ÚpytestÚraisesÚNotImplementedErrorr   )r   rV   r   r   r   Útest_numba_parallel_unsupported]   s   þ"ür_   c                 C   sh   dd„ }t dddgitddgƒd�}tjtdd�� |j|d	| d
� W d   ƒ d S 1 s-w   Y  d S )Nc                 S   r   r
   r   r   r   r   r   r   g   r   z2test_numba_nonunique_unsupported.<locals>.<lambda>r!   r   r2   r=   zBThe index/columns must be unique when raw=False and engine='numba'rX   r   r   )r   r   r\   r]   r^   r   ©r   rV   r/   r   r   r   Ú test_numba_nonunique_unsupportedf   s   þ"üra   c                 C   sÊ   t  d¡ dd„ }tddgddgdd	gd
œƒ}|d  d¡|d< t jtdd�� |j|d| d� W d   ƒ n1 s:w   Y  t jtdd�� |d  ¡ j|d| d� W d   ƒ d S 1 s^w   Y  d S )NÚpyarrowc                 S   r   r
   r   r   r   r   r   r   r   r   z/test_numba_unsupported_dtypes.<locals>.<lambda>r   r2   r!   r"   r5   r6   r8   r9   zdouble[pyarrow]z>Column b must have a numeric dtype. Found 'object|str' insteadrX   r   r   zUColumn c is backed by an extension array, which is not supported by the numba engine.)r\   Úimportorskipr   Úastyper]   Ú
ValueErrorr   Úto_framer`   r   r   r   Útest_numba_unsupported_dtypesp   s    
þüþ"ûrg   )&Únumpyr-   r\   Úpandas.compatr   Úpandas.util._test_decoratorsÚutilÚ_test_decoratorsÚtdÚpandasr+   r   r   Úpandas._testingÚ_testingr   Úpandas.util.versionr   Ú
skip_if_noÚmarkÚ
single_cpuÚskipifÚ
pytestmarkrc   r   ÚappendÚ__version__Úfixturer   r    r0   rD   ÚparametrizerM   rW   r_   ra   rg   r   r   r   r   Ú<module>   s>    

þÿ
þ

	
