o
    Û­jP  ã                   @   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   ú_/var/www/html/CropPilot/venv/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    ~