o
    Û­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   úb/var/www/html/CropPilot/venv/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_interfaceC   s   

z'BaseInterfaceTests.test_array_interfacec           	      C   sD  t j|dd�}t j|dd�}t  ||¡rJ ‚tsd S d}d}tjdd��-}t d¡ t j|dd�}t|ƒdks9J ‚t|ƒrJd}|t|d j	ƒv sJJ ‚W d   ƒ n1 sTw   Y  tjdd��-}t d¡ t j|dd�}t|ƒdkstJ ‚t|ƒr…d}|t|d j	ƒv s…J ‚W d   ƒ n1 s�w   Y  |sžt  ||¡s J ‚d S d S )	NT)ÚcopyFzGStarting with NumPy 2.0, the behavior of the 'copy' keyword has changed)ÚrecordÚalwaysr   r   )
r+   r,   Úmay_share_memoryr   ÚwarningsÚcatch_warningsÚsimplefilterr	   ÚstrÚmessage)	r   r   Úresult_copy1Úresult_copy2Úwarning_raisedÚmsgÚwÚresult_nocopy1Úresult_nocopy2r   r   r   Útest_array_interface_copyN   s:   
€ú
€úþ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ÚvaluesÚ_values)Úhasattrr
   r   r   r   Útest_no_values_attributes   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$   rI   Ú_mgrrK   Ú
is_numericr   Ú_is_numeric©r   r   r(   r   r   r   Útest_is_numeric_honoredy   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   Ú_reducerQ   rR   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)r3   r   Ú_is_immutableÚpytestÚskiprO   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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 rW   r*   )Úviewr   r   rX   rY   rZ   rO   r   r   r   Ú	test_view–   s   zBaseInterfaceTests.test_viewc                 C   s.   |  ¡ }t|ƒ}t|tƒsJ ‚||ksJ ‚d S rD   )Útolistr.   rE   r0   r   r   r   Útest_tolist¨   s   zBaseInterfaceTests.test_tolistN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r!   r)   r2   rC   rF   rJ   rP   rV   r[   r]   r_   r   r   r   r   r      s"    r   )r7   Únumpyr+   rY   Úpandas.compat.numpyr   Úpandas.core.dtypes.castr   Úpandas.core.dtypes.commonr   Úpandas.core.dtypes.dtypesr   Úpandasr#   Úpandas._testingÚ_testingr   r   r   r   r   r   Ú<module>   s    