
    o[we%                        d dl mZ d dlmZ d dl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 )    )annotations)finalN)opsc                      e Zd ZU eZded<   eZded<   eZded<   eZded<   dd	Z	dd
Z
ddZedd            Zed             Zeefdd            Zedd            ZdS )BaseOpsUtiltype[Exception] | Noneseries_scalar_excframe_scalar_excseries_array_exc
divmod_excop_namestrreturnc                    |dv r| j         S t          |t          j                  r!t          |t          j                  r| j        S t          |t          j                  r| j        S | j        S )N)
__divmod____rdivmod__)r   
isinstancepdSeriesr   r	   r
   )selfr   objothers       ?lib/python3.11/site-packages/pandas/tests/extension/base/ops.py_get_expected_exceptionz#BaseOpsUtil._get_expected_exception   sn     333?"c29%% 	)*UBI*F*F 	)((RY'' 	)))((    c                    |S N )r   r   r   r   pointwise_results        r   _cast_pointwise_resultz"BaseOpsUtil._cast_pointwise_result$   s
      r   c                *    t          j        |          S r   )tmget_op_from_name)r   r   s     r   r#   zBaseOpsUtil.get_op_from_name-   s    "7+++r   ser	pd.Seriesc                    |                      |||          }|                     |          }|                     |||||           d S r   )r   r#   	_check_op)r   r$   r   r   excops         r   check_opnamezBaseOpsUtil.check_opname6   sL    **7C??""7++sBw44444r   c                   t          |t          j                  rWt          |j                  dk    rt
          |j        d d df                             ||                                          }n|                    ||          }|S )N   r   )	r   r   	DataFramelencolumnsNotImplementedErroriloccombineto_frame)r   r   r   r)   expecteds        r   _combinezBaseOpsUtil._combine>   sz    c2<(( 	.3;1$$))x1~--eR88AACCHH{{5"--Hr   c                ^   |q |||          }|                      |||          }|                     ||||          }t          |t          |                    sJ t	          j        ||           d S t          j        |          5   |||           d d d            d S # 1 swxY w Y   d S r   )r5   r    r   typer"   assert_equalpytestraises)r   r$   r)   r   r   r(   resultr4   s           r   r'   zBaseOpsUtil._check_opI   s     ;RU^^F}}S%44H227CQQHfd3ii00000OFH-----s##  3                 s   B""B&)B&c                   |t           u r|                     d||          }n|                     d||          }|Y |||          \  }}|t           u r||z  ||z  }}n
||z  ||z  }}t          j        ||           t          j        ||           d S t	          j        |          5  t          ||           d d d            d S # 1 swxY w Y   d S )Nr   r   )divmodr   r"   assert_series_equalr9   r:   )	r   r$   r)   r   r(   
result_div
result_modexpected_divexpected_mods	            r   _check_divmod_opzBaseOpsUtil._check_divmod_op[   s3    <<..|S%HHCC..}c5IIC;%'RU^^"J
V||-0E\3;l-2c\53;l":|<<<":|<<<<<s## # #sE"""# # # # # # # # # # # # # # # # # #s   (CC
C
N)r   r   r   r   )r   r   )r$   r%   r   r   r$   r%   )__name__
__module____qualname__	TypeErrorr	   __annotations__r
   r   r   r   r    r#   r   r*   r5   r0   r'   rC   r   r   r   r   r      s        099999/88888/88888)2J2222) ) ) )"       , , , , 5 5 5 U5   U ;N    U" # # # U# # #r   r   c                  L   e Zd ZU dZeZded<   eZded<   eZded<   eZ	ded<   d Z
d Zd	 Zd
 Zd Zd Zej                            dej        ej        ej        g          ej                            dd ej        ej        z   D                       d                         ZdS )BaseArithmeticOpsTestsa?  
    Various Series and DataFrame arithmetic ops methods.

    Subclasses supporting various ops should set the class variables
    to indicate that they support ops of that kind

    * series_scalar_exc = TypeError
    * frame_scalar_exc = TypeError
    * series_array_exc = TypeError
    * divmod_exc = TypeError
    r   r	   r
   r   r   c                v    |}t          j        |          }|                     |||j        d                    d S Nr   )r   r   r*   r1   r   dataall_arithmetic_operatorsr   r$   s        r   test_arith_series_with_scalarz4BaseArithmeticOpsTests.test_arith_series_with_scalar   s8    *ioo#w44444r   c                p    |}t          j        d|i          }|                     |||d                    d S )NAr   )r   r-   r*   )r   rO   rP   r   dfs        r   test_arith_frame_with_scalarz3BaseArithmeticOpsTests.test_arith_frame_with_scalar   s<    *\3+&&"gtAw/////r   c           
         |}t          j        |          }|                     ||t          j        |j        d         gt	          |          z                       d S rM   )r   r   r*   r1   r.   rN   s        r   test_arith_series_with_arrayz3BaseArithmeticOpsTests.test_arith_series_with_array   sO    *ioo#w	38A;-#c((2J(K(KLLLLLr   c                    t          j        |          }|                     |t          d           |                     dt          j        |           d S )Nr,   r   r   rC   r=   r   rdivmod)r   rO   r$   s      r   test_divmodz"BaseArithmeticOpsTests.test_divmod   sG    iooc61---ac22222r   c                   t          j        |          }|                     |t          |           |}|                     |t          j        |           t          j        |          }|                     |t          j        |           d S r   rY   )r   rO   data_for_twosr$   r   s        r   test_divmod_series_arrayz/BaseArithmeticOpsTests.test_divmod_series_array   su    iooc64000eS[#666	%  eS[#66666r   c                (   t          j        |          }|                     d||          }|3t          j        |          5  ||z    d d d            n# 1 swxY w Y   d S ||z   }t          j        ||z             }t          j        ||           d S )N__add__)r   r   r   r9   r:   r"   r>   )r   rO   r$   r(   r;   r4   s         r   $test_add_series_with_extension_arrayz;BaseArithmeticOpsTests.test_add_series_with_extension_array   s    
 ioo**9c4@@?s##  d

              Ft9TD[))
vx00000s   AAAboxr   c                <    g | ]}|                     d           |S )__r)
startswith).0xs     r   
<listcomp>z!BaseArithmeticOpsTests.<listcomp>   s:     	
 	
 	
<<&&	
	
 	
 	
r   c                     ||          }t          ||          r$ t          ||          |          }|t          u sJ d S d S r   )hasattrgetattrNotImplemented)r   rO   rb   r   r   r;   s         r   6test_direct_arith_with_ndframe_returns_not_implementedzMBaseArithmeticOpsTests.test_direct_arith_with_ndframe_returns_not_implemented   s]     D		4!! 	,+WT7++E22F^++++	, 	,++r   N)rE   rF   rG   __doc__rH   r	   rI   r
   r   r   rQ   rU   rW   r[   r^   ra   r9   markparametrizer   r   r-   Indexr"   arithmetic_dunder_methodscomparison_dunder_methodsrm   r   r   r   rK   rK   o   sK        
 
 1:9999/88888/88888)2J22225 5 50 0 0M M M3 3 3
7 7 71 1 1" [URYbh$GHH[	
 	
1B4PP	
 	
 	
 	, 	,  IH	, 	, 	,r   rK   c                  &    e Zd ZdZddZd Zd ZdS )	BaseComparisonOpsTestsz4Various Series and DataFrame comparison ops methods.r$   r%   c                N   |j         dv rV |||          }|                    ||          }|                     |j         |||          }t          j        ||           d S d }	  |||          }n# t
          $ r}|}Y d }~nd }~ww xY w|J|                    ||          }|                     |j         |||          }t          j        ||           d S t          j        t          |                    5  |                    ||           d d d            d S # 1 swxY w Y   d S )N)eqne)	rE   r2   r    r"   r>   	Exceptionr9   r:   r7   )	r   r$   rO   r)   r   r;   r4   r(   errs	            r   _compare_otherz%BaseComparisonOpsTests._compare_other   s   ;,&&RU^^F{{5"--H222;UHUUH"6844444 CC    {;;ub1166KeX  &vx88888]499-- + +KKr***+ + + + + + + + + + + + + + + + + +s*   #A0 0
B:BB6DD!Dc                ^    t          j        |          }|                     |||d           d S rM   )r   r   r{   )r   rO   comparison_opr$   s       r   test_compare_scalarz*BaseComparisonOpsTests.test_compare_scalar   s/    iooC}a88888r   c                    t          j        |          }t          j        |d         gt          |          z  |j                  }|                     ||||           d S )Nr   )dtype)r   r   r.   r   r{   )r   rO   r}   r$   r   s        r   test_compare_arrayz)BaseComparisonOpsTests.test_compare_array   sV    ioo	47)c$ii/tzBBBC}e<<<<<r   NrD   )rE   rF   rG   rn   r{   r~   r   r   r   r   ru   ru      sL        >>+ + + +49 9 9= = = = =r   ru   c                      e Zd Zd Zej                            dej        ej	        ej
        g          d             ZdS )BaseUnaryOpsTestsc                    t          j        |d          }| }t          j        | d          }t          j        ||           d S )Nname)r   )r   r   r"   r>   )r   rO   r$   r;   r4   s        r   test_invertzBaseUnaryOpsTests.test_invert   sL    i6***9dU000
vx00000r   ufuncc                   t           j        dt           j        dt           j        di|         }d }	  t	          ||                      } ||          }t          j        ||           d S # t          $ r^}|}t          j	        t          |          t          f          5   ||           d d d            n# 1 swxY w Y   Y d }~d S Y d }~d S d }~ww xY w)N__pos____neg____abs__)nppositivenegativeabsrk   r"   assert_extension_array_equalry   r9   r:   r7   rH   )r   rO   r   attrr(   r;   altrz   s           r   #test_unary_ufunc_dunder_equivalencez5BaseUnaryOpsTests.test_unary_ufunc_dunder_equivalence   sP    YY	R
 
	9(WT4((**F %++C+FC88888  	 	 	C S		9566  d                          		s;   A* *
C4*CB6*C6B:	:C=B:	>CCN)rE   rF   rG   r   r9   ro   rp   r   r   r   r   r   r   r   r   r   r      s_        1 1 1 [Wr{BK&HII9 9 JI9 9 9r   r   )
__future__r   typingr   numpyr   r9   pandasr   pandas._testing_testingr"   pandas.corer   r   rK   ru   r   r   r   r   <module>r      s1   " " " " " "                           _# _# _# _# _# _# _# _#DV, V, V, V, V,[ V, V, V,r$= $= $= $= $=[ $= $= $=N9 9 9 9 9 9 9 9 9 9r   