
    o[we                         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dS )    )finalN)is_numeric_dtypec                      e Zd ZdZdedefdZd ZdedefdZe	de
j        dedefd	            Zej                            dd
dg          d             Zej                            d          ej                            dd
dg          d                         Zej                            dd
dg          d             ZdS )BaseReduceTestszg
    Reduction specific tests. Generally these only
    make sense for numeric/boolean operations.
    op_namereturnc                     dS )NF selfobjr   s      Blib/python3.11/site-packages/pandas/tests/extension/base/reduce.py_supports_reductionz#BaseReduceTests._supports_reduction   s    u    c                 f   t          ||          }	 |                    d          }n1# t          t          f$ r |                    t                    }Y nw xY wt          ||          }|dk    r |            } |            }n ||          } ||          }t          j        ||           d S )Nfloat64countskipna)getattrastype	TypeError
ValueErrorobjecttmassert_almost_equal)	r   sr   r   res_opaltexp_opresultexpecteds	            r   check_reducezBaseReduceTests.check_reduce   s     G$$	#((9%%CC:& 	# 	# 	# ((6""CCC	#
 g&&gVXXFvxxHHV6***FvV,,,H
vx00000s   ( +AAr   c                     |j         S )Ndtype)r   arrr   r   s       r   _get_expected_reduction_dtypez-BaseReduceTests._get_expected_reduction_dtype*   s     yr   serc                 H   |j         }t          j        d|i          }|dv rddini }|                     |||          } |j        |f|dd|} t          ||          d	d|i|j         }	t          j        ||	           |sH|                                	                                r"t          j         t          j
        g|          }
nA t          |                                |                      }t          j         |g|          }
t          j        ||
           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_values               r   check_reduce_framez"BaseReduceTests.check_reduce_frame4   s3    i\3*%% '> 9 9&!r66sGVLL	 #+gNftNNvNN&'"g&&??f???E
'999  	>#((**..** 	>xy999HH6

g6688Ix9===H
':::::r   TFc                 0   |}t          j        |          }|                     ||          sRd}t          j        t
          |          5   t          ||          |           d d d            d S # 1 swxY w Y   d S |                     |||           d S NzV[Cc]annot perform|Categorical is not ordered for operation|does not support reduction|)matchr   r2   Seriesr   pytestraisesr   r   r#   )r   dataall_boolean_reductionsr   r   r   msgs          r   test_reduce_series_booleanz*BaseReduceTests.test_reduce_series_booleanO   s    (IdOO''733 
	2. 
 y444 3 3#7##622223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 a&11111   
A22A69A6zignore::RuntimeWarningc                 0   |}t          j        |          }|                     ||          sRd}t          j        t
          |          5   t          ||          |           d d d            d S # 1 swxY w Y   d S |                     |||           d S rB   rD   )r   rH   all_numeric_reductionsr   r   r   rJ   s          r   test_reduce_series_numericz*BaseReduceTests.test_reduce_series_numeric`   s     )IdOO''733 	2. 
 y444 3 3#7##622223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
 a&11111rL   c                 B   |}t          j        |          }t          |j                  st	          j        d           |dv rt	          j        | d           |                     ||          st	          j        d| d           |                     |||           d S )Nznot numeric dtype)r   kurtsemz not an array methodz
Reduction z not supported for this dtype)r2   rE   r   r&   rF   skipr   r@   )r   rH   rN   r   r   r   s         r   test_reduce_framez!BaseReduceTests.test_reduce_frames   s    (IdOO(( 	-K+,,,...K7888999''733 	MKKWKKKLLL7F33333r   N)__name__
__module____qualname____doc__strboolr   r#   r(   r   r2   rE   r@   rF   markparametrizerK   filterwarningsrO   rT   r
   r   r   r   r   
   sZ        
     1 1 1,# t     ;bi ;# ;t ; ; ; U;4 [Xe}552 2 652  [ 899[Xe}552 2 65 :92" [Xe}554 4 654 4 4r   r   c                       e Zd ZdZdS )BaseNoReduceTestszwe don't define any reductionsN)rU   rV   rW   rX   r
   r   r   r_   r_      s        ((((r   r_   c                       e Zd ZdedefdZdS )BaseNumericReduceTestsr   r   c                 6    |dv rt          j        d           dS )Nr7   allz*These are tested in BaseBooleanReduceTestsTrF   rS   r   s      r   r   z*BaseNumericReduceTests._supports_reduction   s#    n$$KDEEEtr   NrU   rV   rW   rY   rZ   r   r
   r   r   ra   ra      6               r   ra   c                       e Zd ZdedefdZdS )BaseBooleanReduceTestsr   r   c                 6    |dvrt          j        d           dS )Nrc   z*These are tested in BaseNumericReduceTestsTre   r   s      r   r   z*BaseBooleanReduceTests._supports_reduction   s#    .((KDEEEtr   Nrf   r
   r   r   ri   ri      rg   r   ri   )typingr   rF   pandasr2   pandas._testing_testingr   pandas.api.typesr   r   r_   ra   ri   r
   r   r   <module>rp      s	                    - - - - - -v4 v4 v4 v4 v4 v4 v4 v4t) ) ) ) ) ) ) )    _       _     r   