o
    թZh                     @   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
   T/var/www/html/lang_env/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   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   r   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      | d S )Nr.   r
   r   r
   r
   r   r   0       z/test_numba_vs_python_indexing.<locals>.<lambda>r   r   r   r   c                 S   r3   )Nr/   r
   r   r
   r
   r   r   5   r4   r   )r   r   r   r   assert_series_equal)frameZrow_funcr   r   Zcol_funcr
   r
   r   test_numba_vs_python_indexing+   s   
r7   	reductionc                 C      |   S r   )meanr   r
   r
   r   r   =   r4   r   c                 C   r9   r   )minr   r
   r
   r   r   =   r4   c                 C   r9   r   )maxr   r
   r
   r   r   =   r4   c                 C   r9   r   )sumr   r
   r
   r   r   =   r4   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   r5   )r8   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   r4   z-test_numba_numeric_colnames.<locals>.<lambda>r   r   r   r   )r   r>   arrayZint64r   r   r5   )r@   r$   fr   r   r
   rD   r   test_numba_numeric_colnamesF   s   "rG   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   T   r   z1test_numba_parallel_unsupported.<locals>.<lambda>zAParallel apply is not supported when raw=False and engine='numba'matchr   ZparallelT)r   Zengine_kwargs)r#   raisesNotImplementedErrorr   )r   rF   r
   r
   r   test_numba_parallel_unsupportedS   s   "rL   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   ]   r   z2test_numba_nonunique_unsupported.<locals>.<lambda>r   r   r'   r2   zBThe index/columns must be unique when raw=False and engine='numba'rH   r   r   )r   r   r#   rJ   rK   r   r   rF   r$   r
   r
   r    test_numba_nonunique_unsupported\   s   "rN   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 s5w   Y  tjtdd |d
  j|d| d W d    d S 1 sYw   Y  d S )Nc                 S   r   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' insteadrH   r   r   zUColumn c is backed by an extension array, which is not supported by the numba engine.)r   Zastyper#   rJ   
ValueErrorr   Zto_framerM   r
   r
   r   test_numba_unsupported_dtypesf   s   "rP   )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%   r7   Zparametrizer?   rG   rL   rN   rP   r
   r
   r
   r   <module>   s*    


	
