a
    PfP                     @   sv   d dl mZ d dlZd dlZd dlmZ d dlm	Z	 G dd dZ
G dd de
ZG dd	 d	e
ZG d
d de
ZdS )    )finalN)is_numeric_dtypec                   @   s   e Zd ZdZejeedddZejeedddZ	eedd	d
Z
eejeedddZejdddgdd Zejdejdddgdd Zejdddgdd ZdS )BaseReduceTestszg
    Reduction specific tests. Generally these only
    make sense for numeric/boolean operations.
    serop_namereturnc                 C   s   dS )NF selfr   r   r	   r	   [/var/www/ai-form-bot/venv/lib/python3.9/site-packages/pandas/tests/extension/base/reduce.py_supports_reduction   s    z#BaseReduceTests._supports_reduction)r   r   skipnac           	   	   C   s~   t ||}z|d}W n  ttfy8   |t}Y n0 t ||}|dkrZ| }| }n||d}||d}t|| d S )NZfloat64countr   )getattrZastype	TypeError
ValueErrorobjecttmZassert_almost_equal)	r   r   r   r   Zres_opZaltZexp_opresultexpectedr	   r	   r   check_reduce   s    



zBaseReduceTests.check_reduce)r   r   c                 C   s   |j S )Ndtype)r   arrr   r   r	   r	   r   _get_expected_reduction_dtype+   s    z-BaseReduceTests._get_expected_reduction_dtypec                 C   s   |j }td|i}|dv r$ddini }| |||}|j|f|dd|}t||f d|i|j }	t||	 |s| 	 rtj tj
g|d}
n t| | }tj |g|d}
t||
 d S )	Na)varZstdZddof   T)r   Zkeepdimsr   r   )arraypdZ	DataFramer   Z_reducer   r   Zassert_extension_array_equalZisnaanyZNAZdropna)r   r   r   r   r   ZdfkwargsZ	cmp_dtypeZresult1Zresult2r   Z	exp_valuer	   r	   r   check_reduce_frame5   s    z"BaseReduceTests.check_reduce_framer   TFc                 C   sp   |}t |}| ||s^d}tjt|d  t|||d W d    ql1 sR0    Y  n| ||| d S NzV[Cc]annot perform|Categorical is not ordered for operation|does not support reduction|)matchr   r!   Seriesr   pytestZraisesr   r   r   )r   dataZall_boolean_reductionsr   r   r   msgr	   r	   r   test_reduce_series_booleanP   s    
0z*BaseReduceTests.test_reduce_series_booleanzignore::RuntimeWarningc                 C   sp   |}t |}| ||s^d}tjt|d  t|||d W d    ql1 sR0    Y  n| ||| d S r%   r'   )r   r*   all_numeric_reductionsr   r   r   r+   r	   r	   r   test_reduce_series_numericb   s    
0z*BaseReduceTests.test_reduce_series_numericc                 C   sr   |}t |}t|js*t|j d |dv rBt| d | ||s`td| d | ||| d S )Nz is not numeric dtype)r   ZkurtZsemz not an array methodz
Reduction z not supported for this dtype)r!   r(   r   r   r)   skipr   r$   )r   r*   r-   r   r   r   r	   r	   r   test_reduce_framev   s    

z!BaseReduceTests.test_reduce_frameN)__name__
__module____qualname____doc__r!   r(   strboolr   r   r   r   r$   r)   markZparametrizer,   filterwarningsr.   r0   r	   r	   r	   r   r   
   s   


r   c                   @   s   e Zd ZdZdS )BaseNoReduceTestszwe don't define any reductionsN)r1   r2   r3   r4   r	   r	   r	   r   r9      s   r9   c                   @   s    e Zd ZejeedddZdS )BaseNumericReduceTestsr   c                 C   s   |dv rt d dS )Nr"   allz*These are tested in BaseBooleanReduceTestsTr)   r/   r
   r	   r	   r   r      s    
z*BaseNumericReduceTests._supports_reductionNr1   r2   r3   r!   r(   r5   r6   r   r	   r	   r	   r   r:      s   r:   c                   @   s    e Zd ZejeedddZdS )BaseBooleanReduceTestsr   c                 C   s   |dvrt d dS )Nr;   z*These are tested in BaseNumericReduceTestsTr=   r
   r	   r	   r   r      s    
z*BaseBooleanReduceTests._supports_reductionNr>   r	   r	   r	   r   r?      s   r?   )typingr   r)   Zpandasr!   Zpandas._testingZ_testingr   Zpandas.api.typesr   r   r9   r:   r?   r	   r	   r	   r   <module>   s   ~