a
    é´«j4F  ã                   @   sö   d Z ddlmZmZ 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mZ ddlZddlmZmZmZmZ ddlmZ G dd	„ d	ƒZej d
¡ej dddg¡dd„ ƒƒZejjej d
¡ej dddg¡dd„ ƒƒƒZdd„ Zdd„ ZdS )z­
Collection of tests asserting things that should be true for
any index subclass except for MultiIndex. Makes use of the `index_flat`
fixture defined in pandas/conftest.py.
é    )ÚcopyÚdeepcopyN)ÚIS64)Únp_version_gte1p25)Úis_integer_dtypeÚis_numeric_dtype)ÚCategoricalIndexÚ
MultiIndexÚPeriodIndexÚ
RangeIndexc                   @   s  e Zd Zej dddg¡dd„ ƒZdd„ Zdd	„ Zd
d„ Z	dd„ Z
dd„ Zejjdd„ ƒZdd„ Zej d¡dd„ ƒZdd„ Zdd„ Zdd„ Zej d¡ej d¡dd „ ƒƒZej d¡d!d"„ ƒZej d¡d#d$„ ƒZd%d&„ Zej d¡d'd(„ ƒZej d)g d*¢¡d+d,„ ƒZd-d.„ ZdS )/Ú
TestCommonÚnameNÚnew_namec                 C   sŽ   |}|r|}n
|j pd}|j|d�}|j|u s2J ‚t|jƒdksDJ ‚|jd |ksVJ ‚|sn|| j|jusnJ ‚|jd|d�}|j|usŠJ ‚d S )Nr   ©r   é   F)Úindexr   )r   Zto_framer   ÚlenÚcolumnsÚvalues)Úselfr   Ú
index_flatZusing_copy_on_writeÚidxZidx_nameZdf© r   ú_/var/www/html/laksyashrimp/venv/lib/python3.9/site-packages/pandas/tests/indexes/test_common.pyÚtest_to_frame"   s    
zTestCommon.test_to_framec              	   C   sÌ   |}|  g ¡ |¡sJ ‚|j|jgfD ]X}t|jtƒrB||ju rBq&d}tjt|d�� |  |¡ W d   ƒ q&1 st0    Y  q&ddgfD ]<}tjtdd�� |  |¡ W d   ƒ qŠ1 s¼0    Y  qŠd S )NzTCannot remove 1 levels from an index with 1 levels: at least one level must be left.©ÚmatchÚwrongz>'Requested level \(wrong\) does not match index name \(None\)')	Z	droplevelÚequalsr   Ú
isinstanceÚtupleÚpytestÚraisesÚ
ValueErrorÚKeyError)r   r   r   ÚlevelÚmsgr   r   r   Útest_droplevel7   s    ÿ*þzTestCommon.test_droplevelc                 C   sˆ   |}d}dgg}t jt|d�� |j|d� W d   ƒ n1 s@0    Y  t jt|d�� |j|d� W d   ƒ n1 sz0    Y  d S )Nz"Index.name must be a hashable typeÚ1r   r   )Únames)r!   r"   Ú	TypeErrorÚrenameÚ	set_names)r   r   r   ÚmessageZrenamedr   r   r   Ú"test_constructor_non_hashable_nameP   s    *z-TestCommon.test_constructor_non_hashable_namec                 C   s*   |}t |ƒ||jd�}t |j|j¡ d S )N©Údtype)Útyper0   ÚtmZassert_equalÚ_data)r   r   ÚaÚbr   r   r   Útest_constructor_unwraps_index_   s    z)TestCommon.test_constructor_unwraps_indexc                 C   s   |}|  ¡ }t ||¡ d S )N)Zto_flat_indexr2   Úassert_index_equal)r   r   r   Úresultr   r   r   Útest_to_flat_indexf   s    zTestCommon.test_to_flat_indexc                 C   sÞ   |}d}|j }| |g¡}|j |ks(J ‚|j |ks6J ‚|j|dd�}|d u sPJ ‚|j |ks^J ‚|j|gksnJ ‚tjtdd�� |jddd� W d   ƒ n1 s 0    Y  d	}|j|dd� |j |ksÊJ ‚|j|gksÚJ ‚d S )
Nz#This is the new name for this indexT©ZinplacezLevel must be Noner   r4   r   ©r%   )ÚAÚB)r   r,   r+   r)   r!   r"   r#   )r   r   r   r   Úoriginal_nameZnew_indÚresr   r   r   r   Útest_set_name_methodsm   s     ,z TestCommon.test_set_name_methodsc                 C   s<   t jtdd�� | d¡ W d   ƒ n1 s.0    Y  d S )Nz	list-liker   r4   )r!   r"   r*   r,   )r   r   r   r   r   Ú$test_set_names_single_label_no_level…   s    z/TestCommon.test_set_names_single_label_no_levelc                 C   sT   |}t tfD ]&}||ƒ}||us$J ‚| |¡sJ ‚q|j ddd�}|jdksPJ ‚d S )NTÚbanana)Údeepr   )r   r   r   r   )r   r   r   ÚfuncZidx_copyZnew_copyr   r   r   Útest_copy_and_deepcopy‹   s    z!TestCommon.test_copy_and_deepcopyz$ignore:Dtype inference:FutureWarningc                 C   s¨   |}t |ƒ|ddd�}t |ƒ|dd�}||us2J ‚t ||¡ | |¡sLJ ‚|jdksZJ ‚|jdkshJ ‚tjd|d�}tjd|d d	… d�}|| }|jjdks¤J ‚d S )
NTÚmario)r   r   F)r   é   )r   é   éÿÿÿÿ)r1   r2   r7   r   r   ÚpdÚSeriesr   )r   r   r   ÚfirstÚsecondÚs1Ús2Zs3r   r   r   Útest_copy_name–   s    zTestCommon.test_copy_namec                 C   sª   |}|j dd�jdksJ ‚tjtdd��  |j ddgd� W d   ƒ n1 sN0    Y  t|ƒj› d�}tjt|d��  |j dggd� W d   ƒ n1 sœ0    Y  d S )NrF   r   z$Length of new names must be 1, got 2r   Zluigiz.name must be a hashable type)r   r   r!   r"   r#   r1   Ú__name__r*   )r   r   r   r&   r   r   r   Útest_copy_name2°   s    .zTestCommon.test_copy_name2c                 C   sÊ   |}|  ¡ }d|jd fD ]}|j|d�}t ||¡ qd}tjt|d�� |jdd� W d   ƒ n1 sj0    Y  dt 	|j 
¡ ¡› d�}tjt|d�� |jdd� W d   ƒ n1 s¼0    Y  d S )	Nr   r;   z.Too many levels: Index has only 1 level, not 4r   rH   z6Requested level \(wrong\) does not match index name \(z\)r   )Údrop_duplicatesr   Úuniquer2   r7   r!   r"   Ú
IndexErrorÚreÚescapeÚ__repr__r$   )r   r   r   Úexpectedr%   r8   r&   r   r   r   Útest_unique_level½   s    *ÿÿzTestCommon.test_unique_levelc                 C   s   |}t |ƒst d¡ |dgd  }|dg }|jdu s<J ‚z|jdu sLJ ‚W n ty`   Y n0 | ¡ }t ||¡ |j	s†t d¡ |j
dgd  }tj|d< |d d… }| |¡}| |¡}	|	jdu sÎJ ‚|j|jksÞJ ‚|	j|jksîJ ‚|	}
t||	gƒD ]\}}| ¡ }t ||
¡ qþd S )Nz)Skip check for empty Index and MultiIndexr   é   TFz%Skip na-check if index cannot hold narG   )r   r!   ÚskipÚ	is_uniqueÚhasnansÚNotImplementedErrorrT   r2   r7   Z_can_hold_naÚ_valuesÚnpÚnanZ_shallow_copyr0   Ú	enumerate)r   r   r   r   Z
idx_uniquer8   ÚvalsZvals_uniqueZidx_nanZidx_unique_nanrY   ÚposÚir   r   r   Útest_uniqueÒ   s4    





zTestCommon.test_uniquez*ignore:Period with BDay freq:FutureWarningú3ignore:PeriodDtype\[B\] is deprecated:FutureWarningc                 C   sZ  |}t |tjƒr*tjjdtd�}| |¡ |jr:t 	d¡ |d }d||k 
¡  }}|dkrdt|ƒ}|jrÔ|j|dd�}||ks„J ‚|j|dd�}	||	ksžJ ‚|j|dd�}
||
ks¸J ‚|j|dd�}||ksÒJ ‚n‚|j�r|j|dd�}||ksöJ ‚|j|dd�}	||	k�sVJ ‚nBd}tjt|d	�� |j|dd� W d   ƒ n1 �sL0    Y  d S )
Nz8IntervalIndex.searchsorted does not support Interval arg)Úreasonr"   zSkip check for empty Indexr   Úleft)ZsideÚrightz0index must be monotonic increasing or decreasingr   )r   rJ   ZIntervalIndexr!   ÚmarkÚxfailr_   ÚapplymarkerÚemptyr\   Zargminr   Zis_monotonic_increasingZ_searchsorted_monotonicZsearchsortedZis_monotonic_decreasingr"   r#   )r   r   Úrequestr   rl   ÚvalueZexpected_leftZexpected_rightZssm_leftZ	ssm_rightZss_leftZss_rightr&   r   r   r   Útest_searchsorted_monotonicú   s<    þ

z&TestCommon.test_searchsorted_monotonicc                 C   sè   |}t |tƒrt d¡ t|ƒdkr.t d¡ t|ƒ}tt|ƒƒ}t|ƒrP|j	nd }|||d�}t|ƒ}t
j d¡ |t|d ƒ¡}	||j|	 ƒ}
t |	¡j|d�j}t |
j|d�|¡ |t |
¡j|d�ƒ}t |
j|d�|¡ d S )NzWRangeIndex is tested in test_drop_duplicates_no_duplicates as it cannot hold duplicatesr   zXempty index is tested in test_drop_duplicates_no_duplicates as it cannot hold duplicatesr/   rG   g      ø?)Úkeep)r   r   r!   r\   r   r1   ÚlistÚsetr   r0   ra   ÚrandomZdefault_rngÚchoiceÚintr   rJ   rK   Ú
duplicatedr2   Úassert_numpy_array_equalrS   r7   )r   r   rs   r   ÚholderÚunique_valuesr0   Ú
unique_idxÚnZduplicated_selectionr   Úexpected_duplicatedZexpected_droppedr   r   r   Útest_drop_duplicates.  s*    
ÿÿÿzTestCommon.test_drop_duplicatesc           	      C   s’   |}t |tƒr|}n2t|ƒ}tt|ƒƒ}t|ƒr6|jnd }|||d�}tjdgt	|ƒ dd�}t
 | ¡ |¡ | ¡ }t
 ||¡ ||usŽJ ‚d S )Nr/   FÚbool)r   r   r1   rt   ru   r   r0   ra   Úarrayr   r2   rz   ry   rS   r7   )	r   r   r   r}   r{   r|   r0   r   Zresult_droppedr   r   r   Ú"test_drop_duplicates_no_duplicatesR  s    
z-TestCommon.test_drop_duplicates_no_duplicatesc                 C   sB   d}t jt|d�� |jdd� W d   ƒ n1 s40    Y  d S )Nz6drop_duplicates\(\) got an unexpected keyword argumentr   Tr:   )r!   r"   r*   rS   )r   r   r&   r   r   r   Útest_drop_duplicates_inplacei  s    z'TestCommon.test_drop_duplicates_inplacec                 C   sZ   |}t |ƒ}t|ƒrt|tƒr(t d¡ ||d gd ƒ}|jdu sHJ ‚|jdu sVJ ‚d S )Nz6Skip check for empty Index, MultiIndex, and RangeIndexr   r[   FT)r1   r   r   r   r!   r\   r]   Zhas_duplicates)r   r   r   r{   r   r   r   r   Útest_has_duplicatesn  s    
zTestCommon.test_has_duplicatesr0   )Úint64Úuint64Úfloat64Úcategoryzdatetime64[ns]ztimedelta64[ns]c                 C   sö   t |tƒr"dd„ t|jƒD ƒ|_nd|_d }|jjdkrT|dv rTtrNt	j
j}nt	j}t|jƒdkoh|dk}z>tj||dd	�� | |¡}W d   ƒ n1 sœ0    Y  W n ttttfyÄ   Y d S 0 t |tƒrâ|j|jksòJ ‚n|j|jksòJ ‚d S )
Nc                 S   s   g | ]}d t |ƒ ‘qS )r   )Ústr)Ú.0rf   r   r   r   Ú
<listcomp>…  ó    z9TestCommon.test_astype_preserves_name.<locals>.<listcomp>r   Úc)rˆ   r†   r‡   zstring[pyarrow]r‰   F)Zraise_on_extra_warningsZcheck_stacklevel)r   r	   ÚrangeZnlevelsr)   r   r0   Úkindr   ra   Ú
exceptionsZComplexWarningrŠ   r2   Zassert_produces_warningZastyper#   r*   r_   ÚSystemError)r   r   r0   ÚwarnZis_pyarrow_strr8   r   r   r   Útest_astype_preserves_name~  s*    

ý,
z%TestCommon.test_astype_preserves_namec                 C   sØ   |}|j dd�}tjdgt|ƒ td�}t |j|¡ |jdu sDJ ‚|j dd�}|j	}t|ƒdkrfd S t
|jƒrtd S |jtkr‚d S tj|d< t|ƒ|ƒ}tjdgt|ƒ td�}d|d< t |j|¡ |jdu sÔJ ‚d S )NT)rC   Fr/   r   r   )r   ra   r‚   r   r�   r2   rz   Z_isnanr^   r`   r   r0   rb   r1   )r   r   r   r   rY   r   r   r   r   Útest_hasnans_isnans¢  s&    


zTestCommon.test_hasnans_isnans)rQ   Ú
__module__Ú__qualname__r!   rl   Úparametrizer   r'   r.   r6   r9   r@   rm   rA   rE   ÚfilterwarningsrP   rR   rZ   rg   rr   r€   rƒ   r„   r…   r”   r•   r   r   r   r   r   !   s>   



(

2

#



þ
 r   rh   Úna_positionÚmiddlec                 C   sD   t jtd|› �d�� | j|d� W d   ƒ n1 s60    Y  d S )Nzinvalid na_position: r   ©rš   )r!   r"   r#   Úsort_values)Úindex_with_missingrš   r   r   r   Ú$test_sort_values_invalid_na_positionÁ  s    rŸ   rL   Úlastc                 C   s¦   t | tƒr | tjjddd�¡ t |  ¡ ¡}| |  	¡  j
}t |¡}|dkrdt d g| |g¡}nt |d g| g¡}t| ƒ|| jd�}| j|d�}t ||¡ d S )Nz,missing value sorting order not well-definedF)ri   ÚstrictrL   r/   rœ   )r   r   rn   r!   rl   rm   ra   ÚsumZisnaZnotnar   ÚsortZconcatenater1   r0   r�   r2   r7   )rž   rš   rp   Zmissing_countZnot_na_valsZsorted_valuesrY   r8   r   r   r   Útest_sort_values_with_missingÈ  s    
ÿÿ
r¤   c                 C   s¤   t | tƒrtst d¡ | }|j |¡s,J ‚| ¡  |¡s>J ‚|j}|j	|j	ksTJ ‚|j
|j
ksdJ ‚|j|jkstJ ‚t | ttfƒs’|j|jks’J ‚|j |jj d S )NÚOverflow)r   r
   r   r!   r\   ÚTr   Z	transposer   ÚshapeÚndimÚsizer   r	   Únbytes)r   r   r   r   r   r   Útest_ndarray_compat_propertieså  s    
r«   c                  C   s:   t jg td�} d| j_t | ¡}|dk}|jtks6J ‚d S )Nr/   FéE   )	ra   r‚   ÚobjectÚflagsZ	writeablerJ   ÚIndexr0   r�   )Zarrr   r8   r   r   r   Útest_compare_read_only_arrayû  s
    
r°   ) Ú__doc__r   r   rV   Únumpyra   r!   Zpandas.compatr   Zpandas.compat.numpyr   Zpandas.core.dtypes.commonr   r   ZpandasrJ   r   r	   r
   r   Zpandas._testingZ_testingr2   r   rl   r™   r˜   rŸ   Zfails_arm_wheelsr¤   r«   r°   r   r   r   r   Ú<module>   s.      #

