a
    é´«jo  ã                   @   sn   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	 d dl
mZ d dlZd dlmZ G dd„ dƒZdS )é    N)Únp_version_gt2)Ú'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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   úd/var/www/html/laksyashrimp/venv/lib/python3.9/site-packages/pandas/tests/extension/base/interface.pyÚtest_len   s    zBaseInterfaceTests.test_lenc                 C   s   |j dksJ ‚d S r   )Úsizer
   r   r   r   Ú	test_size   s    zBaseInterfaceTests.test_sizec                 C   s   |j dksJ ‚d S )Né   )Úndimr
   r   r   r   Ú	test_ndim   s    zBaseInterfaceTests.test_ndimc                 C   s   |j du sJ ‚d S )NT)Z_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 s6J ‚||v sBJ ‚||vsNJ ‚tjD ]6}||u sTt|ƒt|ƒkrrqT||vs~J ‚||vsTJ ‚qTd S )Nr   )ÚdtypeÚna_valueÚisnaÚtmZNULL_OBJECTSÚtype)r   r   Údata_missingr   Z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ÚSeriesZ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rTtt|ƒƒ}t ||¡ d S )Nr   ©r   r   )ÚnpÚarrayÚobjectÚlistr   r   r   Zassert_numpy_array_equal©r   r   r"   Úexpectedr   r   r   Útest_array_interfaceC   s    

z'BaseInterfaceTests.test_array_interfacec           	      C   sJ  t j|dd�}t j|dd�}t  ||¡r,J ‚ts4d S d}d}tjdd��Z}t d¡ t j|dd�}t|ƒdksrJ ‚t|ƒr”d}|t|d j	ƒv s”J ‚W d   ƒ n1 s¨0    Y  tjdd��^}t d¡ t j|dd�}t|ƒdksèJ ‚t|ƒ�rd}|t|d j	ƒv �sJ ‚W d   ƒ n1 �s$0    Y  |�sFt  ||¡�sFJ ‚d S )	NT)ÚcopyFzGStarting with NumPy 2.0, the behavior of the 'copy' keyword has changed)ÚrecordÚalwaysr   r   )
r%   r&   Zmay_share_memoryr   ÚwarningsÚcatch_warningsÚsimplefilterr	   ÚstrÚmessage)	r   r   Zresult_copy1Zresult_copy2Zwarning_raisedÚmsgÚwZresult_nocopy1Zresult_nocopy2r   r   r   Útest_array_interface_copyN   s.    
4

8z,BaseInterfaceTests.test_array_interface_copyc                 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_dtypem   s    z0BaseInterfaceTests.test_is_extension_array_dtypec                 C   s    t |dƒrJ ‚t |dƒrJ ‚d S )NÚvaluesZ_values)Úhasattrr
   r   r   r   Útest_no_values_attributes   s    z+BaseInterfaceTests.test_no_values_attributec                 C   s4   t  |¡}t|jdƒr0|jjd j|jju s0J ‚d S )NÚblocksr   )r   r   r;   Z_mgrr=   Z
is_numericr   Z_is_numeric©r   r   r"   r   r   r   Útest_is_numeric_honoredy   s    
z*BaseInterfaceTests.test_is_numeric_honoredc                 C   sT   |  ¡ }t|ƒrP| d¡sJ ‚| ¡ s*J ‚| d¡r8J ‚| ¡ rDJ ‚|jjsPJ ‚d S )NÚanyÚall)r   r   Z_reducer@   rA   r   Z_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r8t d|j› d�¡ |d |d< |d |d ksXJ ‚d S )Nr   r   z!test_copy assumes mutability and ú is immutable)r,   r   Ú_is_immutableÚpytestÚskipr>   r   r   r   Ú	test_copy‹   s    zBaseInterfaceTests.test_copyc                 C   sˆ   |d |d ksJ ‚|  ¡ }||us(J ‚t|ƒt|ƒks<J ‚|jjrXt d|j› d�¡ |d |d< |d |d ksxJ ‚|j d d� d S )Nr   r   z!test_view assumes mutability and rD   r$   )Úviewr   r   rE   rF   rG   r>   r   r   r   Ú	test_view–   s    zBaseInterfaceTests.test_viewc                 C   s.   |  ¡ }t|ƒ}t|tƒsJ ‚||ks*J ‚d S r7   )Útolistr(   r8   r)   r   r   r   Útest_tolist¨   s    zBaseInterfaceTests.test_tolistN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   r#   r+   r6   r9   r<   r?   rC   rH   rJ   rL   r   r   r   r   r      s    r   )r/   Únumpyr%   rF   Zpandas.compat.numpyr   Zpandas.core.dtypes.castr   Zpandas.core.dtypes.commonr   Zpandas.core.dtypes.dtypesr   Zpandasr   Zpandas._testingZ_testingr   r   r   r   r   r   Ú<module>   s   