
    OwgP                         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      Z
 G d de
      Z G d d	e
      Z G d
 de
      Zy)    )finalN)is_numeric_dtypec                      e Zd ZdZdej
                  dedefdZdej
                  dedefdZ	dedefdZ
edej
                  dedefd	       Zej                  j                  dd
dg      d        Zej                  j#                  d      ej                  j                  dd
dg      d               Zej                  j                  dd
dg      d        Zy)BaseReduceTestszg
    Reduction specific tests. Generally these only
    make sense for numeric/boolean operations.
    serop_namereturnc                      y)NF selfr   r   s      Y/var/www/horilla/myenv/lib/python3.12/site-packages/pandas/tests/extension/base/reduce.py_supports_reductionz#BaseReduceTests._supports_reduction   s        skipnac                 $   t        ||      }	 |j                  d      }t        ||      }|dk(  r |       } |       }n ||      } ||      }t        j                  ||       y # t        t        f$ r |j                  t              }Y ow xY w)Nfloat64countr   )getattrastype	TypeError
ValueErrorobjecttmassert_almost_equal)	r   r   r   r   res_opaltexp_opresultexpecteds	            r   check_reducezBaseReduceTests.check_reduce   s     g&	%**Y'C g&gXFxH6*FV,H
vx0 :& 	% **V$C		%s   A( ($BBc                     |j                   S )Ndtype)r   arrr   r   s       r   _get_expected_reduction_dtypez-BaseReduceTests._get_expected_reduction_dtype+   s     yyr   c                 @   |j                   }t        j                  d|i      }|dv rddini }| j                  |||      } |j                  |f|dd|} t        ||      d	d|i|j                   }	t        j                  ||	       |sE|j                         j                         r't        j                   t        j                  g|      }
n7 t        |j                         |             }t        j                   |g|      }
t        j                  ||
       y )
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_values               r   check_reduce_framez"BaseReduceTests.check_reduce_frame5   s     ii\\3*% '> 9&!r66sGVL	 #++gNftNvN&'"g&?f??EE
''9 #((*..*xxy9H6

g68Ixx9=H
'':r   TFc                    |}t        j                  |      }| j                  ||      s:d}t        j                  t
        |      5   t        ||      |       d d d        y | j                  |||       y # 1 sw Y   y xY wNzV[Cc]annot perform|Categorical is not ordered for operation|does not support reduction|)matchr   r0   Seriesr   pytestraisesr   r   r"   )r   dataall_boolean_reductionsr   r   r   msgs          r   test_reduce_series_booleanz*BaseReduceTests.test_reduce_series_booleanP   s}    (iio''W5. 
 y4 5%W%V45 5 c7F3	5 5   A88Bzignore::RuntimeWarningc                    |}t        j                  |      }| j                  ||      s:d}t        j                  t
        |      5   t        ||      |       d d d        y | j                  |||       y # 1 sw Y   y xY wr@   rB   )r   rF   all_numeric_reductionsr   r   r   rH   s          r   test_reduce_series_numericz*BaseReduceTests.test_reduce_series_numericb   s     )iio''W5. 
 y4 5%W%V45 5
 c7F35 5rJ   c                 T   |}t        j                  |      }t        |j                        s"t	        j
                  |j                   d       |dv rt	        j
                  | d       | j                  ||      st	        j
                  d| d       | j                  |||       y )Nz is not numeric dtype)r   kurtsemz not an array methodz
Reduction z not supported for this dtype)r0   rC   r   r%   rD   skipr   r>   )r   rF   rL   r   r   r   s         r   test_reduce_framez!BaseReduceTests.test_reduce_framev   s    (iio		*KK399+%:;<..KK7)#789''W5KK*WI-JKLWf5r   N)__name__
__module____qualname____doc__r0   rC   strboolr   r"   r'   r   r>   rD   markparametrizerI   filterwarningsrM   rR   r   r   r   r   r   
   s   
ryy 3 4 1		 1C 1 1.# t  ;bii ;# ;t ; ;4 [[Xe}54 64" [[ 89[[Xe}54 6 :4$ [[Xe}56 66r   r   c                       e Zd ZdZy)BaseNoReduceTestszwe don't define any reductionsN)rS   rT   rU   rV   r   r   r   r]   r]      s    (r   r]   c                   4    e Zd Zdej                  dedefdZy)BaseNumericReduceTestsr   r   r	   c                 6    |dv rt        j                  d       y)Nr5   allz*These are tested in BaseBooleanReduceTestsTrD   rQ   r   s      r   r   z*BaseNumericReduceTests._supports_reduction   s    n$KKDEr   NrS   rT   rU   r0   rC   rW   rX   r   r   r   r   r_   r_           ryy 3 4 r   r_   c                   4    e Zd Zdej                  dedefdZy)BaseBooleanReduceTestsr   r   r	   c                 6    |dvrt        j                  d       y)Nra   z*These are tested in BaseNumericReduceTestsTrc   r   s      r   r   z*BaseBooleanReduceTests._supports_reduction   s    .(KKDEr   Nrd   r   r   r   rg   rg      re   r   rg   )typingr   rD   pandasr0   pandas._testing_testingr   pandas.api.typesr   r   r]   r_   rg   r   r   r   <module>rn      sE        -y6 y6|) )_ _ r   