o
    ŀgP                     @   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dejdedefddZdejdedefdd	Z	dedefd
dZ
edejdedef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   V/var/www/html/myenv/lib/python3.10/site-packages/pandas/tests/extension/base/reduce.py_supports_reduction   s   z#BaseReduceTests._supports_reductionskipnac           	   	   C   s~   t ||}z|d}W n ttfy   |t}Y nw t ||}|dkr-| }| }n
||d}||d}t|| d S )Nfloat64countr   )getattrastype	TypeError
ValueErrorobjecttmassert_almost_equal)	r
   r   r   r   res_opaltexp_opresultexpectedr   r   r   check_reduce   s   



zBaseReduceTests.check_reducec                 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||d	d|i|j }	t||	 |sL| 	 rLtj tj
g|d}
nt| | }tj |g|d}
t||
 d S )
Na)varstdddof   T)r   keepdimsr   r   r   )arraypd	DataFramer!   _reducer   r   assert_extension_array_equalisnaanyNAdropna)r
   r   r   r   r    dfkwargs	cmp_dtyperesult1result2r   	exp_valuer   r   r   check_reduce_frame5   s   z"BaseReduceTests.check_reduce_frameTFc                 C   t   |}t |}| ||s1d}tjt|d t|||d W d    d S 1 s*w   Y  d S | ||| d S NzV[Cc]annot perform|Categorical is not ordered for operation|does not support reduction|)matchr   r)   Seriesr   pytestraisesr   r   r   )r
   dataall_boolean_reductionsr   r   r   msgr   r   r   test_reduce_series_booleanP   s   
"z*BaseReduceTests.test_reduce_series_booleanzignore::RuntimeWarningc                 C   r8   r9   r;   )r
   r?   all_numeric_reductionsr   r   r   rA   r   r   r   test_reduce_series_numericb   s   
"z*BaseReduceTests.test_reduce_series_numericc                 C   sr   |}t |}t|jst|j d |dv r!t| d | ||s0td| d | ||| d S )Nz is not numeric dtype)r   kurtsemz not an array methodz
Reduction z not supported for this dtype)r)   r<   r   r   r=   skipr   r7   )r
   r?   rC   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   r7   r=   markparametrizerB   filterwarningsrD   rH   r   r   r   r   r   
   s    


r   c                   @   s   e Zd ZdZdS )BaseNoReduceTestszwe don't define any reductionsN)rI   rJ   rK   rL   r   r   r   r   rR      s    rR   c                   @   $   e Zd ZdejdedefddZdS )BaseNumericReduceTestsr   r   r   c                 C   s   |dv r	t d dS )Nr.   allz*These are tested in BaseBooleanReduceTestsTr=   rG   r	   r   r   r   r         
z*BaseNumericReduceTests._supports_reductionNrI   rJ   rK   r)   r<   rM   rN   r   r   r   r   r   rT          rT   c                   @   rS   )BaseBooleanReduceTestsr   r   r   c                 C   s   |dvr	t d dS )NrU   z*These are tested in BaseNumericReduceTestsTrW   r	   r   r   r   r      rX   z*BaseBooleanReduceTests._supports_reductionNrY   r   r   r   r   r[      rZ   r[   )typingr   r=   pandasr)   pandas._testing_testingr   pandas.api.typesr   r   rR   rT   r[   r   r   r   r   <module>   s    ~