a
    Pf                     @   s   d dl Zd dlZd dlm  mZ d dlmZm	Z	 d dl
mZ edejjgZ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)	DataFrameIndexnumba   )paramsc                 C   s   | j S N)param)request r
   V/var/www/ai-form-bot/venv/lib/python3.9/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   | S r   r
   xr
   r
   r   <lambda>       z+test_numba_vs_python_noop.<locals>.<lambda>r   engineZaxispython)applytmassert_frame_equal)float_framer   funcresultexpectedr
   r
   r   test_numba_vs_python_noop   s    r   c                  C   sn   t d tdtddgddtddgddd	} d
d }| j|ddd}| j|ddd}tj||ddd d S )NZpyarrowr   abzstring[pyarrow_numpy]Zdtyper   y)indexcolumnsc                 S   s   | S r   r
   r   r
   r
   r   r   #   r   z3test_numba_vs_python_string_index.<locals>.<lambda>r   r   r   r   F)Zcheck_column_typeZcheck_index_type)pytestZimportorskipr   r   r   r   r   )dfr   r   r   r
   r
   r   !test_numba_vs_python_string_index   s    
r$   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   s   | d S )Nr-   r
   r   r
   r
   r   r   0   r   z/test_numba_vs_python_indexing.<locals>.<lambda>r   r   r   r   c                 S   s   | d S )Nr.   r
   r   r
   r
   r   r   5   r   r   )r   r   r   r   assert_series_equal)frameZrow_funcr   r   Zcol_funcr
   r
   r   test_numba_vs_python_indexing+   s    
r4   	reductionc                 C   s   |   S r   )meanr   r
   r
   r   r   =   r   r   c                 C   s   |   S r   )minr   r
   r
   r   r   =   r   c                 C   s   |   S r   )maxr   r
   r
   r   r   =   r   c                 C   s   |   S r   )sumr   r
   r
   r   r   =   r   c                 C   sD   t tjdtjd}|j| d|d}|j| d|d}t|| d S )N)r)   r)   r   r   r   r   )r   npZonesZfloat64r   r   r2   )r5   r   r#   r   r   r
   r
   r   test_numba_vs_python_reductions;   s    r;   colnamesr%   )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 )Nr%   r(   )      	   r   )r!   r   c                    s   |   S r   r
   r   Z	first_colr
   r   r   M   r   z-test_numba_numeric_colnames.<locals>.<lambda>r   r   r   r   )r   r:   arrayZint64r   r   r2   )r<   r#   fr   r   r
   r@   r   test_numba_numeric_colnamesF   s    "rC   c                 C   sN   dd }t jtdd$ | j|dddid W d    n1 s@0    Y  d S )	Nc                 S   s   | S r   r
   r   r
   r
   r   r   T   r   z1test_numba_parallel_unsupported.<locals>.<lambda>zAParallel apply is not supported when raw=False and engine='numba'matchr   parallelT)r   Zengine_kwargs)r"   raisesNotImplementedErrorr   )r   rB   r
   r
   r   test_numba_parallel_unsupportedS   s    rI   c                 C   sf   dd }t dddgitddgd}tjtdd  |j|d	| d
 W d    n1 sX0    Y  d S )Nc                 S   s   | S r   r
   r   r
   r
   r   r   ]   r   z2test_numba_nonunique_unsupported.<locals>.<lambda>r   r   r&   r1   zBThe index/columns must be unique when raw=False and engine='numba'rD   r   r   )r   r   r"   rG   rH   r   r   rB   r#   r
   r
   r    test_numba_nonunique_unsupported\   s    rK   c                 C   s   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 sj0    Y  tjtdd( |d
  j|d| d W d    n1 s0    Y  d S )Nc                 S   s   | S r   r
   r   r
   r
   r   r   g   r   z/test_numba_unsupported_dtypes.<locals>.<lambda>r   r&   r   r   r)   r*   r,   r-   zdouble[pyarrow]zAColumn b must have a numeric dtype. Found 'object|string' insteadrD   r   r   zUColumn c is backed by an extension array, which is not supported by the numba engine.)r   Zastyper"   rG   
ValueErrorr   Zto_framerJ   r
   r
   r   test_numba_unsupported_dtypesf   s    .rM   )numpyr:   r"   Zpandas.util._test_decoratorsutilZ_test_decoratorstdZpandasr   r   Zpandas._testingZ_testingr   Z
skip_if_nomarkZ
single_cpuZ
pytestmarkZfixturer   r   r$   r4   Zparametrizer;   rC   rI   rK   rM   r
   r
   r
   r   <module>   s(   


	
