o
    �¨Êhâ  ã                   @   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
   úO/var/www/html/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   ©ÚengineÚ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 )NÚpyarrowr   ÚaÚbzstring[pyarrow_numpy]©Ú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)ÚpytestÚ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 )Nr4   r
   r   r
   r
   r   r   0   ó    z/test_numba_vs_python_indexing.<locals>.<lambda>r   r   r   r   c                 S   r9   )Nr5   r
   r   r
   r
   r   r   5   r:   r   )r   r   r   r   Úassert_series_equal)ÚframeÚrow_funcr   r   Úcol_funcr
   r
   r   Útest_numba_vs_python_indexing+   s   
þr?   Ú	reductionc                 C   ó   |   ¡ S r   )Úmeanr   r
   r
   r   r   =   r:   r   c                 C   rA   r   )Úminr   r
   r
   r   r   =   r:   c                 C   rA   r   )Úmaxr   r
   r
   r   r   =   r:   c                 C   rA   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)r0   r0   r!   r   r   r   )r   ÚnpÚonesÚfloat64r   r   r;   )r@   r   r*   r   r   r
   r
   r   Útest_numba_vs_python_reductions;   s   rI   Ú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   ©Ú	first_colr
   r   r   M   r:   z-test_numba_numeric_colnames.<locals>.<lambda>r   r   r   r   )r   rF   ÚarrayÚint64r   r   r;   )rJ   r*   Úfr   r   r
   rN   r   Útest_numba_numeric_colnamesF   s   "ÿrS   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   ÚparallelT)r   Úengine_kwargs)r(   ÚraisesÚNotImplementedErrorr   )r   rR   r
   r
   r   Útest_numba_parallel_unsupportedS   s   þ"ürZ   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-   r8   zBThe index/columns must be unique when raw=False and engine='numba'rT   r   r   )r   r   r(   rX   rY   r   ©r   rR   r*   r
   r
   r   Ú test_numba_nonunique_unsupported\   s   þ"ür\   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    r0   r1   r3   r4   zdouble[pyarrow]zAColumn b must have a numeric dtype. Found 'object|string' insteadrT   r   r   zUColumn c is backed by an extension array, which is not supported by the numba engine.)r   Úastyper(   rX   Ú
ValueErrorr   Úto_framer[   r
   r
   r   Útest_numba_unsupported_dtypesf   s   þüþ"ûr`   )ÚnumpyrF   r(   Úpandas.util._test_decoratorsÚutilÚ_test_decoratorsÚtdÚpandasr   r   Úpandas._testingÚ_testingr   Ú
skip_if_noÚmarkÚ
single_cpuÚ
pytestmarkÚfixturer   r   r+   r?   ÚparametrizerI   rS   rZ   r\   r`   r
   r
   r
   r   Ú<module>   s*    
þ

	
