o
    g                     @  s   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
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                   @  s@   e Zd Zdd ZefddZdd ZefddZefd	d
Z	dS )BaseOpsUtilc                 C  s
   t |S N)tmget_op_from_name)selfop_name r   ]/home/ubuntu/cloudmapper/venv/lib/python3.10/site-packages/pandas/tests/extension/base/ops.pyr      s   
zBaseOpsUtil.get_op_from_namec                 C  s    |  |}| ||||| d S r   )r   	_check_op)r	   sr
   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)
__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[TypeError] | 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   r1   r	   dataall_arithmetic_operatorsr
   r   r   r   r   test_arith_series_with_scalarH   s   
z4BaseArithmeticOpsTests.test_arith_series_with_scalarc                 C  s.   |}t d|i}| j|||d | jd d S )NAr   r6   )r   r   r   r2   )r	   r9   r:   r
   dfr   r   r   test_arith_frame_with_scalarN   s   z3BaseArithmeticOpsTests.test_arith_frame_with_scalarc                 C  s<   |}t |}| j||t |jd gt| | jd d S r5   )r   r7   r   r   r   r3   r8   r   r   r   test_arith_series_with_arrayT   s
   
 
z3BaseArithmeticOpsTests.test_arith_series_with_arrayc                 C  s8   t |}| j|td| jd | jdtj|| jd d S )Nr   r6   )r   r7   r+   r%   r4   r   rdivmod)r	   r9   r   r   r   r   test_divmod\   s   
z"BaseArithmeticOpsTests.test_divmodc                 C  sJ   t |}| |t| |}| |tj| t |}| |tj| d S r   )r   r7   r+   r%   r   r@   )r	   r9   data_for_twosr   r   r   r   r   test_divmod_series_arraya   s   

z/BaseArithmeticOpsTests.test_divmod_series_arrayc                 C  s0   t |}|| }t || }| || d S r   r   r7   r&   r	   r9   r   r$   r   r   r   r   $test_add_series_with_extension_arrayk   s   
z;BaseArithmeticOpsTests.test_add_series_with_extension_arrayboxc                 C  sV   t |}|t ju r| }t|dr ||}|tu sJ d S tt	|j
 d)N__add__z does not implement add)r   r7   r   r   hasattrrH   NotImplementedr"   skipr    r,   r	   r9   rG   r   r$   r   r   r   6test_direct_arith_with_ndframe_returns_not_implementedq   s   



zMBaseArithmeticOpsTests.test_direct_arith_with_ndframe_returns_not_implementedN)r,   r-   r.   __doc__	TypeErrorr1   __annotations__r2   r3   r4   r;   r>   r?   rA   rC   rF   r"   markparametrizer   r7   r   rM   r   r   r   r   r0   6   s   
 
r0   c                   @  sF   e Zd ZdZ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.c                 C  s   |  |}|dkr||| rJ d S |dkr#||| s!J d S t|||tu s.J t|}tt ||| W d    d S 1 sIw   Y  d S )N__eq____ne__)	r   allgetattrrJ   r   r7   r"   r#   rO   )r	   r   r9   r
   r   r   r   r   r   _compare_other   s   

"z%BaseComparisonOpsTests._compare_otherc                 C  s"   |}t |}| |||d d S Nr   )r   r7   rX   )r	   r9   all_compare_operatorsr
   r   r   r   r   test_compare_scalar   s   
z*BaseComparisonOpsTests.test_compare_scalarc                 C  s:   |}t |}t |d gt| }| |||| d S rY   )r   r7   r   rX   )r	   r9   rZ   r
   r   r   r   r   r   test_compare_array   s   
z)BaseComparisonOpsTests.test_compare_arrayrG   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)NrT   z does not implement __eq__rU   z does not implement __ne__)r   r7   r   r   rI   rT   rJ   r"   rK   r    r,   rU   rL   r   r   r   rM      s   





zMBaseComparisonOpsTests.test_direct_arith_with_ndframe_returns_not_implementedN)r,   r-   r.   rN   rX   r[   r\   r"   rQ   rR   r   r7   r   rM   r   r   r   r   rS      s    rS   c                   @  s   e Zd Zdd ZdS )BaseUnaryOpsTestsc                 C  s4   t j|dd}| }t j| dd}| || d S )Nname)r^   rD   rE   r   r   r   test_invert   s   zBaseUnaryOpsTests.test_invertN)r,   r-   r.   r_   r   r   r   r   r]      s    r]   )
__future__r   r"   pandasr   pandas._testing_testingr   pandas.corer    pandas.tests.extension.base.baser   r   r0   rS   r]   r   r   r   r   <module>   s    +I4