
    Owg2+                        d dl mZ d dlmZ d dlZd dlZd dlmZ d dl	m
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)    )annotations)finalN)using_pyarrow_string_dtype)is_string_dtype)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y)BaseOpsUtiltype[Exception] | Noneseries_scalar_excframe_scalar_excseries_array_exc
divmod_excc                j   |dv r| j                   }ntt        |t        j                        r't        |t        j                        r| j                  }n3t        |t        j                        r| j
                  }n| j                  }t               r#|!dd l}||j                  j                  t        f}|S )N)
__divmod____rdivmod__r   )r   
isinstancepdSeriesr   r   r   r   pyarrowlibArrowNotImplementedErrorNotImplementedError)selfop_nameobjotherresultpas         V/var/www/horilla/myenv/lib/python3.12/site-packages/pandas/tests/extension/base/ops.py_get_expected_exceptionz#BaseOpsUtil._get_expected_exception   s     33__FRYY'Jubii,H**FRYY'++F**F%'F,>  //#F
     c                    |S N )r   r   r   r   pointwise_results        r   _cast_pointwise_resultz"BaseOpsUtil._cast_pointwise_result2   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!   c                v    | j                  |||      }| j                  |      }| j                  |||||       y r#   )r    r)   	_check_op)r   serr   r   excops         r   check_opnamezBaseOpsUtil.check_opnameD   s:    **7C?""7+sBw4r!   c                    t        |t        j                        rQt        |j                        dk7  rt
        |j                  d d df   j                  ||      j                         }|S |j                  ||      }|S )N   r   )	r   r   	DataFramelencolumnsr   iloccombineto_frame)r   r   r   r.   expecteds        r   _combinezBaseOpsUtil._combineL   sl    c2<<(3;;1$))xx1~--eR8AACH  {{5"-Hr!   c                *   |^ |||      }| j                  |||      }| j                  ||||      }t        |t        |            sJ t	        j
                  ||       y t        j                  |      5   |||       d d d        y # 1 sw Y   y xY wr#   )r9   r&   r   typer(   assert_equalpytestraises)r   r,   r.   r   r   r-   r   r8   s           r   r+   zBaseOpsUtil._check_opW   s     ;U^F}}S%4H227CQHfd3i000OOFH-s# 3  s   6
B		Bc                ~   |t         u r| j                  d||      }n| j                  d||      }|V |||      \  }}|t         u r||z  ||z  }}n
||z  ||z  }}t        j                  ||       t        j                  ||       y t	        j
                  |      5  t        ||       d d d        y # 1 sw Y   y xY w)Nr   r   )divmodr    r(   assert_series_equalr=   r>   )	r   r,   r.   r   r-   
result_div
result_modexpected_divexpected_mods	            r   _check_divmod_opzBaseOpsUtil._check_divmod_opi   s     <..|S%HC..}c5IC;%'U^"J
V|-0E\3;l-2c\53;l"":|<"":|<s# #sE"# # #s   B33B<N)r   strreturnr
   )r   rG   )r,   	pd.Seriesr   rG   r,   rI   )__name__
__module____qualname__	TypeErrorr   __annotations__r   r   r   r    r&   r)   r   r/   r9   r   r+   rF   r$   r!   r   r	   r	      s    09-9/8,8/8,8)2J&2	6 , 5 5   ;N25 " # #r!   r	   c                     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"                  j%                  dej(                  ej*                  ej,                  g      ej"                  j%                  dej0                  ej2                  z   D  cg c]  }|j5                  d      s| c}}       d               Zyc c}} w )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                    |dk(  r*t        |j                        rt        j                  d       |}t	        j
                  |      }| j                  |||j                  d          y )N__rmod__%Skip testing Python string formattingr   )r   dtyper=   skipr   r   r/   r5   r   dataall_arithmetic_operatorsr   r,   s        r   test_arith_series_with_scalarz4BaseArithmeticOpsTests.test_arith_series_with_scalar   sN    #z1odjj6QKK?@*iio#w4r!   c                    |dk(  r*t        |j                        rt        j                  d       |}t	        j
                  d|i      }| j                  |||d          y )NrS   rT   Ar   )r   rU   r=   rV   r   r2   r/   )r   rX   rY   r   dfs        r   test_arith_frame_with_scalarz3BaseArithmeticOpsTests.test_arith_frame_with_scalar   sO    #z1odjj6QKK?@*\\3+&"gtAw/r!   c           
         |}t        j                  |      }| j                  ||t        j                  |j                  d   gt	        |      z               y Nr   )r   r   r/   r5   r3   rW   s        r   test_arith_series_with_arrayz3BaseArithmeticOpsTests.test_arith_series_with_array   sB    *iio#w		388A;-#c(2J(KLr!   c                    t        j                  |      }| j                  |t        d       | j                  dt        j
                  |       y )Nr1   r   r   rF   r@   r   rdivmod)r   rX   r,   s      r   test_divmodz"BaseArithmeticOpsTests.test_divmod   s7    iioc61-ac2r!   c                   t        j                  |      }| j                  |t        |       |}| j                  |t        j
                  |       t        j                  |      }| j                  |t        j
                  |       y r#   rc   )r   rX   data_for_twosr,   r   s        r   test_divmod_series_arrayz/BaseArithmeticOpsTests.test_divmod_series_array   s`    iioc640eS[[#6		% eS[[#6r!   c                   t        j                  |      }| j                  d||      }|$t        j                  |      5  ||z    d d d        y ||z   }t        j                  ||z         }t        j                  ||       y # 1 sw Y   y xY w)N__add__)r   r   r    r=   r>   r(   rA   )r   rX   r,   r-   r   r8   s         r   $test_add_series_with_extension_arrayz;BaseArithmeticOpsTests.test_add_series_with_extension_array   s~    
 iio**9c4@?s# d
t99TD[)
vx0s    BBboxr   __rc                f     ||      }t        ||      r t        ||      |      }|t        u sJ y y r#   )hasattrgetattrNotImplemented)r   rX   rl   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2F^+++ "r!   N)rK   rL   rM   __doc__rN   r   rO   r   r   r   rZ   r^   ra   re   rh   rk   r=   markparametrizer   r   r2   Indexr(   arithmetic_dunder_methodscomparison_dunder_methods
startswithrr   ).0xs   00r   rQ   rQ   }   s    
 1:-9/8,8/8,8)2J&250M3
71" [[URYYbhh$GH[[ 11B4P4PP	
<<& 	
	, I	,	
s   $CrQ   c                  $    e Zd ZdZddZd Zd Zy)BaseComparisonOpsTestsz4Various Series and DataFrame comparison ops methods.c                $   |j                   dv rP |||      }|j                  ||      }| j                  |j                   |||      }t        j                  ||       y d }	  |||      }|G|j                  ||      }| j                  |j                   |||      }t        j                  |       y t        j                  t        |            5  |j                  ||       d d d        y # t
        $ r}|}Y d }~d }~ww xY w# 1 sw Y   y xY w)N)eqne)	rK   r6   r&   r(   rA   	Exceptionr=   r>   r;   )	r   r,   rX   r.   r   r   r8   r-   errs	            r   _compare_otherz%BaseComparisonOpsTests._compare_other   s    ;;,&U^F{{5"-H222;;UHUH""684 CC {;;ub166KKeX &&vx8]]49- +KKr*+ +  + +s$   "	C. D.	D7C>>DDc                V    t        j                  |      }| j                  |||d       y r`   )r   r   r   )r   rX   comparison_opr,   s       r   test_compare_scalarz*BaseComparisonOpsTests.test_compare_scalar   s#    iioC}a8r!   c                    t        j                  |      }t        j                  |d   gt        |      z  |j                        }| j	                  ||||       y )Nr   )rU   )r   r   r3   rU   r   )r   rX   r   r,   r   s        r   test_compare_arrayz)BaseComparisonOpsTests.test_compare_array   sF    iio		47)c$i/tzzBC}e<r!   NrJ   )rK   rL   rM   rs   r   r   r   r$   r!   r   r}   r}      s    >+49=r!   r}   c                      e Zd Zd Zej
                  j                  dej                  ej                  ej                  g      d        Zy)BaseUnaryOpsTestsc                   t        j                  |d      }	 |d d D cg c]  }|  c} | }t        j                  | d      }t        j                  ||       y c c}w # t        $ rg t        j                  t              5  |  d d d        n# 1 sw Y   nxY wt        j                  t              5  |  d d d        Y y # 1 sw Y   Y y xY ww xY w)Nname)r   
   )r   r   r(   rA   rN   r=   r>   )r   rX   r,   r{   r   r8   s         r   test_invertzBaseUnaryOpsTests.test_invert  s    ii6*	5 cr#AaR# TFyy$V4H""684 $ 	 y)   y)   	sQ   A$ 
AA$ A$ $"CB
	CB	 C8C<CC	CCufuncc                   t         j                  dt         j                  dt         j                  di|   }d }	  t	        ||             } ||      }t        j                  ||       y # t        $ rS}|}t        j                  t        |      t        f      5   ||       d d d        n# 1 sw Y   nxY wY d }~y Y d }~y d }~ww xY w)N__pos____neg____abs__)nppositivenegativeabsrp   r(   assert_extension_array_equalr   r=   r>   r;   rN   )r   rX   r   attrr-   r   altr   s           r   #test_unary_ufunc_dunder_equivalencez5BaseUnaryOpsTests.test_unary_ufunc_dunder_equivalence  s     YY	R
 
	9(WT4(*F +C++FC8  	C S	956 d    		s/   A) )	C2&C 	B*!	C *B3	/C  CN)rK   rL   rM   r   r=   rt   ru   r   r   r   r   r   r$   r!   r   r   r     s@    5( [[Wr{{BKK&HI9 J9r!   r   )
__future__r   typingr   numpyr   r=   pandas._configr   pandas.core.dtypes.commonr   pandasr   pandas._testing_testingr(   pandas.corer   r	   rQ   r}   r   r$   r!   r   <module>r      sU    "    5 5   i# i#X\,[ \,~$=[ $=N(9 (9r!   