o
    5cW                     @  s   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 d dlmZ G dd deZG dd deZG d	d
 d
eZG dd deZdS )    )annotationsN)ops)BaseExtensionTestsc                   @  sH   e Zd ZdddZefdddZd	d
 ZefdddZefdddZ	dS )BaseOpsUtilop_namestrc                 C  s
   t |S N)tmget_op_from_name)selfr    r   U/var/www/html/gps/gps/lib/python3.10/site-packages/pandas/tests/extension/base/ops.pyr
      s   
zBaseOpsUtil.get_op_from_nameser	pd.Seriesc                 C  s    |  |}| ||||| d S r   )r
   	_check_op)r   r   r   otherexcopr   r   r   check_opname   s   
zBaseOpsUtil.check_opnamec                 C  sP   t |tjr t|jdkrt|jd d df || }|S |||}|S )N   r   )	
isinstancepd	DataFramelencolumnsNotImplementedErroriloccombineto_frame)r   objr   r   expectedr   r   r   _combine   s   zBaseOpsUtil._combinec                 C  s|   |d u r!|||}|  |||}t|t|sJ | || d S t| ||| W d    d S 1 s7w   Y  d S r   )r!   r   typeassert_equalpytestraises)r   r   r   r   r   r   resultr    r   r   r   r      s   
"zBaseOpsUtil._check_opc           	      C  s   |d u r0|||\}}|t u r|| || }}n	|| || }}| || | || d S t| t || W d    d S 1 sFw   Y  d S r   )divmodassert_series_equalr$   r%   )	r   r   r   r   r   
result_div
result_modexpected_divexpected_modr   r   r   _check_divmod_op*   s   "zBaseOpsUtil._check_divmod_opN)r   r   )r   r   r   r   r   r   )
__name__
__module____qualname__r
   	Exceptionr   r!   r   r   r-   r   r   r   r   r      s    

r   c                   @  s   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d Z
d	d
 Zdd Zdd Zdd Zdd Zejdejejg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
    ztype[Exception] | Noneseries_scalar_excframe_scalar_excseries_array_exc
divmod_excc                 C  s,   |}t |}| j|||jd | jd d S Nr   r   )r   Seriesr   r   r4   r   dataall_arithmetic_operatorsr   r   r   r   r   test_arith_series_with_scalarK   s   
z4BaseArithmeticOpsTests.test_arith_series_with_scalarc                 C  s.   |}t d|i}| j|||d | jd d S )NAr   r9   )r   r   r   r5   )r   r<   r=   r   dfr   r   r   test_arith_frame_with_scalarQ   s   z3BaseArithmeticOpsTests.test_arith_frame_with_scalarc                 C  s<   |}t |}| j||t |jd gt| | jd d S r8   )r   r:   r   r   r   r6   r;   r   r   r   test_arith_series_with_arrayW   s
   
 
z3BaseArithmeticOpsTests.test_arith_series_with_arrayc                 C  s8   t |}| j|td| jd | jdtj|| jd d S )Nr   r9   )r   r:   r-   r'   r7   r   rdivmod)r   r<   r   r   r   r   test_divmod_   s   
z"BaseArithmeticOpsTests.test_divmodc                 C  sJ   t |}| |t| |}| |tj| t |}| |tj| d S r   )r   r:   r-   r'   r   rC   )r   r<   data_for_twosr   r   r   r   r   test_divmod_series_arrayd   s   

z/BaseArithmeticOpsTests.test_divmod_series_arrayc                 C  s0   t |}|| }t || }| || d S r   r   r:   r(   r   r<   r   r&   r    r   r   r   $test_add_series_with_extension_arrayn   s   
z;BaseArithmeticOpsTests.test_add_series_with_extension_arrayboxc                 C  sb   t |}|t ju r| }t|ds$|jtjj	t
|j dd ||}|tu s/J d S )N__add__z does not implement add)reason)r   r:   r   r   hasattrnode
add_markerr$   markxfailr"   r/   rK   NotImplemented)r   requestr<   rJ   r   r&   r   r   r   6test_direct_arith_with_ndframe_returns_not_implementedt   s   



zMBaseArithmeticOpsTests.test_direct_arith_with_ndframe_returns_not_implementedN)r/   r0   r1   __doc__	TypeErrorr4   __annotations__r5   r6   r7   r>   rA   rB   rD   rF   rI   r$   rP   parametrizer   r:   r   rT   r   r   r   r   r3   9   s   
 
r3   c                   @  sH   e Zd ZdZdddZdd Zdd	 Zej	d
e
je
jgdd ZdS )BaseComparisonOpsTestsz4Various Series and DataFrame comparison ops methods.r   r   c           	   
   C  s   |j dv r|||}|||}| || d S d }z|||}W n ty5 } z|}W Y d }~nd }~ww |d u rH|||}| || d S tt| ||| W d    d S 1 saw   Y  d S )N)eqne)r/   r   r(   r2   r$   r%   r"   )	r   r   r<   r   r   r&   r    r   errr   r   r   _compare_other   s"   

"z%BaseComparisonOpsTests._compare_otherc                 C  s   t |}| |||d d S Nr   )r   r:   r]   )r   r<   comparison_opr   r   r   r   test_compare_scalar   s   
z*BaseComparisonOpsTests.test_compare_scalarc                 C  s6   t |}t |d gt| }| |||| d S r^   )r   r:   r   r]   )r   r<   r_   r   r   r   r   r   test_compare_array   s   
z)BaseComparisonOpsTests.test_compare_arrayrJ   c                 C  s   t |}|t ju r| }t|dr||}|tu sJ ntt	|j
 dt|dr<||}|tu s:J d S tt	|j
 d)N__eq__z does not implement __eq____ne__z does not implement __ne__)r   r:   r   r   rM   rb   rR   r$   skipr"   r/   rc   )r   r<   rJ   r   r&   r   r   r   rT      s   





zMBaseComparisonOpsTests.test_direct_arith_with_ndframe_returns_not_implementedNr.   )r/   r0   r1   rU   r]   r`   ra   r$   rP   rX   r   r:   r   rT   r   r   r   r   rY      s    
rY   c                   @  s6   e Zd Zdd Zejdejej	ej
gdd ZdS )BaseUnaryOpsTestsc                 C  s4   t j|dd}| }t j| dd}| || d S )Nname)rf   rG   rH   r   r   r   test_invert   s   zBaseUnaryOpsTests.test_invertufuncc                 C  s   t jdt jdt jdi| }d }zt|| }W n9 tyP } z-|}tt|t	f || W d    n1 s9w   Y  W Y d }~d S W Y d }~d S d }~ww ||}| 
|| d S )N__pos____neg____abs__)nppositivenegativeabsgetattrr2   r$   r%   r"   rV   assert_extension_array_equal)r   r<   rh   attrr   r&   r\   altr   r   r   #test_unary_ufunc_dunder_equivalence   s   
8z5BaseUnaryOpsTests.test_unary_ufunc_dunder_equivalenceN)r/   r0   r1   rg   r$   rP   rX   rl   rm   rn   ro   rt   r   r   r   r   re      s    re   )
__future__r   numpyrl   r$   pandasr   pandas._testing_testingr	   pandas.corer    pandas.tests.extension.base.baser   r   r3   rY   re   r   r   r   r   <module>   s    -N8