o
    �¨Êh[  ã                   @   sZ   d dl Zd dlZd dlmZ d dlmZ d dlmZ d dl	Z
d dlmZ G dd„ dƒZdS )é    N)Ú'construct_1d_object_array_from_listlike)Úis_extension_array_dtype)ÚExtensionDtypec                   @   s€   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS )ÚBaseInterfaceTestsz,Tests that the basic interface is satisfied.c                 C   s   t |ƒdksJ ‚d S ©Néd   )Úlen©ÚselfÚdata© r   úW/var/www/html/env/lib/python3.10/site-packages/pandas/tests/extension/base/interface.pyÚtest_len   s   zBaseInterfaceTests.test_lenc                 C   ó   |j dksJ ‚d S r   )Úsizer	   r   r   r   Ú	test_size   ó   zBaseInterfaceTests.test_sizec                 C   r   )Né   )Úndimr	   r   r   r   Ú	test_ndim   r   zBaseInterfaceTests.test_ndimc                 C   s   |j du sJ ‚d S )NT)Ú_can_hold_nar	   r   r   r   Útest_can_hold_na_valid   s   z)BaseInterfaceTests.test_can_hold_na_validc                 C   s�   |j j}|| ¡   }|d |v sJ ‚|d |v sJ ‚||v s!J ‚||vs'J ‚tjD ]}||u s8t|ƒt|ƒkr9q*||vs?J ‚||vsEJ ‚q*d S )Nr   )ÚdtypeÚna_valueÚisnaÚtmÚNULL_OBJECTSÚtype)r
   r   Údata_missingr   Úna_value_objr   r   r   Útest_contains    s   
ûz BaseInterfaceTests.test_containsc                 C   s(   t  |¡}|jdd�}||jksJ ‚d S )NF)Úindex)ÚpdÚSeriesÚmemory_usageÚnbytes)r
   r   ÚsÚresultr   r   r   Útest_memory_usage:   s   
z$BaseInterfaceTests.test_memory_usagec                 C   sd   t  |¡}|d |d ksJ ‚t j|td�}t jt|ƒtd�}|jdkr*tt|ƒƒ}t ||¡ d S )Nr   ©r   r   )ÚnpÚarrayÚobjectÚlistr   r   r   Úassert_numpy_array_equal©r
   r   r'   Úexpectedr   r   r   Útest_array_interface?   s   

z'BaseInterfaceTests.test_array_interfacec                 C   s@   t |ƒsJ ‚t |jƒsJ ‚t t |¡ƒsJ ‚t|jtƒsJ ‚d S ©N)r   r   r"   r#   Ú
isinstancer   r	   r   r   r   Útest_is_extension_array_dtypeJ   s   z0BaseInterfaceTests.test_is_extension_array_dtypec                 C   s    t |dƒrJ ‚t |dƒrJ ‚d S )NÚvaluesÚ_values)Úhasattrr	   r   r   r   Útest_no_values_attributeP   s   z+BaseInterfaceTests.test_no_values_attributec                 C   s8   t  |¡}t|jdƒr|jjd j|jju sJ ‚d S d S )NÚblocksr   )r"   r#   r7   Ú_mgrr9   Ú
is_numericr   Ú_is_numeric©r
   r   r'   r   r   r   Útest_is_numeric_honoredV   s
   
ÿz*BaseInterfaceTests.test_is_numeric_honoredc                 C   sX   |  ¡ }t|ƒr(| d¡sJ ‚| ¡ sJ ‚| d¡rJ ‚| ¡ r"J ‚|jjs*J ‚d S d S )NÚanyÚall)r   r   Ú_reducer?   r@   r   Ú_is_boolean)r
   r   Únar   r   r   Útest_isna_extension_array[   s   ùz,BaseInterfaceTests.test_isna_extension_arrayc                 C   s\   |d |d ks
J ‚|  ¡ }|jjrt d|j› d�¡ |d |d< |d |d ks,J ‚d S )Nr   r   z!test_copy assumes mutability and ú is immutable)Úcopyr   Ú_is_immutableÚpytestÚskipr=   r   r   r   Ú	test_copyh   s   zBaseInterfaceTests.test_copyc                 C   sˆ   |d |d ks
J ‚|  ¡ }||usJ ‚t|ƒt|ƒksJ ‚|jjr,t d|j› d�¡ |d |d< |d |d ks<J ‚|j d d� d S )Nr   r   z!test_view assumes mutability and rE   r)   )Úviewr   r   rG   rH   rI   r=   r   r   r   Ú	test_views   s   zBaseInterfaceTests.test_viewc                 C   s.   |  ¡ }t|ƒ}t|tƒsJ ‚||ksJ ‚d S r2   )Útolistr-   r3   r/   r   r   r   Útest_tolist…   s   zBaseInterfaceTests.test_tolistN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r    r(   r1   r4   r8   r>   rD   rJ   rL   rN   r   r   r   r   r      s     r   )Únumpyr*   rH   Úpandas.core.dtypes.castr   Úpandas.core.dtypes.commonr   Úpandas.core.dtypes.dtypesr   Úpandasr"   Úpandas._testingÚ_testingr   r   r   r   r   r   Ú<module>   s    