
    bMho                     |    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          ZdS )    N)np_version_gt2)'construct_1d_object_array_from_listlike)is_extension_array_dtype)ExtensionDtypec                   l    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd ZdS )BaseInterfaceTestsz,Tests that the basic interface is satisfied.c                 0    t          |          dk    sJ d S Nd   )lenselfdatas     e/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/pandas/tests/extension/base/interface.pytest_lenzBaseInterfaceTests.test_len   s    4yyC    c                      |j         dk    sJ d S r
   )sizer   s     r   	test_sizezBaseInterfaceTests.test_size   s    yCr   c                      |j         dk    sJ d S )N   )ndimr   s     r   	test_ndimzBaseInterfaceTests.test_ndim   s    yA~~~~~~r   c                     |j         du sJ d S )NT)_can_hold_nar   s     r   test_can_hold_na_validz)BaseInterfaceTests.test_can_hold_na_valid    s     D((((((r   c                    |j         j        }||                                          }|d         |v sJ |d         |v sJ ||v sJ ||vsJ t          j        D ]3}||u s t          |          t          |          k    r'||vsJ ||vsJ 4d S )Nr   )dtypena_valueisnatmNULL_OBJECTStype)r   r   data_missingr   na_value_objs        r   test_containsz BaseInterfaceTests.test_contains$   s     :&TYY[[L! Aw$A,.... <''''t#### O 	4 	4Lx''4+=+=h+O+Ot++++|33333	4 	4r   c                 t    t          j        |          }|                    d          }||j        k    sJ d S )NF)index)pdSeriesmemory_usagenbytes)r   r   sresults       r   test_memory_usagez$BaseInterfaceTests.test_memory_usage>   s;    IdOOe,,!!!!!!r   c                 T   t          j        |          }|d         |d         k    sJ t          j        |t                    }t          j        t          |          t                    }|j        dk    rt          t          |                    }t          j        ||           d S )Nr   r   r   )nparrayobjectlistr   r   r!   assert_numpy_array_equalr   r   r.   expecteds       r   test_array_interfacez'BaseInterfaceTests.test_array_interfaceC   s    $ayDG####$f---8DJJf555=1>tDzzJJH
#FH55555r   c                 H   t          j        |d          }t          j        |d          }t          j        ||          rJ t          sd S d}d}t	          j        d          5 }t	          j        d           t          j        |d          }t          |          dk    sJ t          |          r d}|t          |d         j	                  v sJ d d d            n# 1 swxY w Y   t	          j        d          5 }t	          j        d           t          j        |d          }t          |          dk    sJ t          |          r d}|t          |d         j	                  v sJ d d d            n# 1 swxY w Y   |st          j        ||          sJ d S d S )	NT)copyFzGStarting with NumPy 2.0, the behavior of the 'copy' keyword has changed)recordalwaysr   r   )
r2   r3   may_share_memoryr   warningscatch_warningssimplefilterr   strmessage)	r   r   result_copy1result_copy2warning_raisedmsgwresult_nocopy1result_nocopy2s	            r   test_array_interface_copyz,BaseInterfaceTests.test_array_interface_copyN   s2   x4000x4000&|\BBBBB 	FW$D111 	0Q!(+++Xd777Nq66Q;;;;1vv 0!%c!A$,//////	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 $D111 	0Q!(+++Xd777Nq66Q;;;;1vv 0!%c!A$,//////	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0  	G&~~FFFFF	G 	GFFs&   &A/C!!C%(C%A/E<<F F c                     t          |          sJ t          |j                  sJ t          t          j        |                    sJ t	          |j        t
                    sJ d S N)r   r   r)   r*   
isinstancer   r   s     r   test_is_extension_array_dtypez0BaseInterfaceTests.test_is_extension_array_dtypem   sf    '-----'
33333'	$88888$*n5555555r   c                 N    t          |d          rJ t          |d          rJ d S )Nvalues_values)hasattrr   s     r   test_no_values_attributez+BaseInterfaceTests.test_no_values_attributes   s6     4*****4+++++++r   c                     t          j        |          }t          |j        d          r%|j        j        d         j        |j        j        u sJ d S d S )Nblocksr   )r)   r*   rS   _mgrrV   
is_numericr   _is_numericr   r   r.   s      r   test_is_numeric_honoredz*BaseInterfaceTests.test_is_numeric_honoredy   sY    46;)) 	N;%a(3tz7MMMMM	N 	NMMr   c                     |                                 }t          |          rh|                    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$   nas      r   test_isna_extension_arrayz,BaseInterfaceTests.test_isna_extension_array~   s       #B'' 	(::e$$$$$6688OOOzz%(((((vvxx8''''	( 	( ('r   c                     |d         |d         k    sJ |                                 }|j        j        rt          j        d|j         d           |d         |d<   |d         |d         k    sJ d S )Nr   r   z!test_copy assumes mutability and  is immutable)r;   r   _is_immutablepytestskiprZ   s      r   	test_copyzBaseInterfaceTests.test_copy   s    Aw$q'!!!!:# 	WKUDJUUUVVVq'QayF1I%%%%%%r   c                 b   |d         |d         k    sJ |                                 }||usJ t          |          t          |          k    sJ |j        j        rt	          j        d|j         d           |d         |d<   |d         |d         k    sJ |                     d            d S )Nr   r   z!test_view assumes mutability and rd   r1   )viewr#   r   re   rf   rg   rZ   s      r   	test_viewzBaseInterfaceTests.test_view   s     Aw$q'!!!!T!!!!F||tDzz)))):# 	WKUDJUUUVVV1Iq	Aw$q'!!!! 				r   c                     |                                 }t          |          }t          |t                    sJ ||k    sJ d S rM   )tolistr5   rN   r7   s       r   test_tolistzBaseInterfaceTests.test_tolist   sG    ::&$'''''!!!!!!r   N)__name__
__module____qualname____doc__r   r   r   r   r&   r/   r9   rK   rO   rT   r[   rb   rh   rk   rn    r   r   r   r      s       66            ) ) )4 4 44" " "
	6 	6 	6G G G>6 6 6, , ,N N N
( ( (	& 	& 	&  $" " " " "r   r   )r?   numpyr2   rf   pandas.compat.numpyr   pandas.core.dtypes.castr   pandas.core.dtypes.commonr   pandas.core.dtypes.dtypesr   pandasr)   pandas._testing_testingr!   r   rs   r   r   <module>r|      s          . . . . . . K K K K K K > > > > > > 4 4 4 4 4 4          \" \" \" \" \" \" \" \" \" \"r   