
    dA                     2   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
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          Zej                            d	dd
g          d             Zej                            d	ddg          d             Z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)is_integer_dtypeis_numeric_dtype)CategoricalIndex
MultiIndexPeriodIndex
RangeIndexc                      e Zd Zej                            dddg          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ej                            dg d          d             Zd ZdS )
TestCommonnameNnew_namec                 2   |}|r|}n	|j         pd}|                    |          }|j        |u sJ t          |j                  dk    sJ |j        d         |k    sJ ||         j        |j        usJ |                    d|          }|j        |usJ d S )Nr   r      F)indexr   )r   to_framer   lencolumnsvalues)selfr   
index_flatidxidx_namedfs         \/var/www/html/t/fyr/venv311/lib/python3.11/site-packages/pandas/tests/indexes/test_common.pytest_to_framezTestCommon.test_to_frame!   s      	%HHx}1H\\x\((x32:!####z!}(((((|"#*4444\\H\55xs""""""    c                    |}|                     g                               |          sJ |j        |j        gfD ]p}t          |j        t                    r
||j        u r&d}t          j        t          |          5  |                     |           d d d            n# 1 swxY w Y   qddgfD ]J}t          j        t          d          5  |                     |           d d d            n# 1 swxY w Y   Kd 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\)')		droplevelequalsr   
isinstancetuplepytestraises
ValueErrorKeyError)r   r   r   levelmsgs        r   test_droplevelzTestCommon.test_droplevel5   s    r""))%00000j5:,/ 		' 		'E%*e,, %*1D1D&  z555 ' '&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' wi' 	' 	'EW   ' ' &&&	' ' ' ' ' ' ' ' ' ' ' ' ' ' '	' 	's$   ?B!!B%	(B%	C11C5	8C5	c                 <   |}d}dgg}t          j        t          |          5  |                    |           d d d            n# 1 swxY w Y   t          j        t          |          5  |                    |           d d d            d S # 1 swxY w Y   d S )Nz"Index.name must be a hashable type1r!   r   )names)r(   r)   	TypeErrorrename	set_names)r   r   r   messagerenameds        r   "test_constructor_non_hashable_namez-TestCommon.test_constructor_non_hashable_nameN   s$   65' ]9G444 	' 	'LLgL&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' ]9G444 	+ 	+OO'O***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+s#   AAA-BBBc                     |} t          |          ||j                  }t          j        |j        |j                   d S )Ndtype)typer:   tmassert_equal_data)r   r   abs       r   test_constructor_unwraps_indexz)TestCommon.test_constructor_unwraps_index]   sA     DGGAQW%%%
)))))r   c                 \    |}|                                 }t          j        ||           d S )N)to_flat_indexr<   assert_index_equal)r   r   r   results       r   test_to_flat_indexzTestCommon.test_to_flat_indexd   s1    $$&&
fe,,,,,r   c                    |}d}|j         }|                    |g          }|j         |k    sJ |j         |k    sJ |                    |d          }|J |j         |k    sJ |j        |gk    sJ t	          j        t          d          5  |                    dd           d d d            n# 1 swxY w Y   d	}|                    |d           |j         |k    sJ |j        |gk    sJ d S )
Nz#This is the new name for this indexTinplacezLevel must be Noner!   r?   r   r,   )AB)r   r4   r3   r1   r(   r)   r*   )r   r   r   r   original_namenew_indresr   s           r   test_set_name_methodsz TestCommon.test_set_name_methodsk   sb   8
//8*--|x''''z]****ll8Tl22 {{{zX%%%%{xj((((
 ]:-ABBB 	* 	*OOCqO)))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* T4(((zT!!!!{tf$$$$$$s   B11B58B5c                     |}t           t          fD ]*} ||          }||usJ |                    |          sJ +|                     dd          }|j        dk    sJ d S )NTbanana)deepr   )r   r   r%   r   )r   r   r   funcidx_copynew_copys         r   test_copy_and_deepcopyz!TestCommon.test_copy_and_deepcopy   s    8$ 	* 	*DtE{{H5((((??5))))))::4h:77}((((((r   c                    |} t          |          |dd          } t          |          |d          }||usJ t          j        ||           |                    |          sJ |j        dk    sJ |j        dk    sJ t          j        d|          }t          j        d|d d	                   }||z  }|j        j        dk    sJ d S )
NTmario)r   r   F)r      )r      )r;   r<   rD   r%   r   pdSeriesr   )r   r   r   firstseconds1s2s3s           r   test_copy_namezTestCommon.test_copy_name   s     UE7;;;eU/// F""""
eV,,, ||E"""""zW$$$${g%%%% Yq&&&Yqss,,,"Wx}''''''r   c                    |}|                     d          j        dk    sJ t          j        t          d          5  |                     ddg           d d d            n# 1 swxY w Y   t          |          j         d}t          j        t          |          5  |                     dgg           d d d            d S # 1 swxY w Y   d S )NrY   r   z$Length of new names must be 1, got 2r!   luigiz.name must be a hashable type)r   r   r(   r)   r*   r;   __name__r2   )r   r   r   r-   s       r   test_copy_name2zTestCommon.test_copy_name2   sW   zzwz'',7777]:-STTT 	0 	0JJWg.J///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 e%DDD]9C000 	) 	)JJgYKJ(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)s#   A$$A(+A(!CCCc                 *   |}|                                 }d|j        d fD ]-}|                    |          }t          j        ||           .d}t          j        t          |          5  |                    d           d d d            n# 1 swxY w Y   dt          j	        |j        
                                           d}t          j        t          |          5  |                    d           d d d            d S # 1 swxY w Y   d S )	Nr   rJ   z.Too many levels: Index has only 1 level, not 4r!   r[   z6Requested level \(wrong\) does not match index name \(z\)r#   )drop_duplicatesr   uniquer<   rD   r(   r)   
IndexErrorreescape__repr__r+   )r   r   r   expectedr,   rE   r-   s          r   test_unique_levelzTestCommon.test_unique_level   s    ((**T* 	4 	4E\\\..F!&(3333>]:S111 	" 	"LLqL!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"7)EJ//11227 7 7 	 ]83/// 	( 	(LLwL'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(s$   ,BBB$DDDc                    |}t          |          st          j        d           |dgdz           }|dg         }|j        du sJ 	 |j        du sJ n# t
          $ r Y nw xY w|                                }t          j        ||           |j	        st          j        d           |j
        dgdz           }t          j        |d<   |d d         }|                    |          }|                    |          }	|	j        du sJ |j        |j        k    sJ |	j        |j        k    sJ |	}
t          ||	g          D ].\  }}|                                }t          j        ||
           /d S )Nz)Skip check for empty Index and MultiIndexr      TFz%Skip na-check if index cannot hold narZ   )r   r(   skip	is_uniquehasnansNotImplementedErrorrk   r<   rD   _can_hold_na_valuesnpnan_shallow_copyr:   	enumerate)r   r   r   r   
idx_uniquerE   valsvals_uniqueidx_nanidx_unique_nanrp   posis                r   test_uniquezTestCommon.test_unique   s   5zz 	EKCDDDQC!GnA3Z
 #t++++	%....." 	 	 	D	 
fj111 ! 	AK?@@@}aS1W%&Q2A2h%%d++,,[99'4////}++++#u{2222!. 9:: 	4 	4FCXXZZF!&(3333	4 	4s   A 
A A c                    |}t          |t          j                  r@t          j                            dt                    }|j                            |           |j	        rt          j
        d           |d         }d||k                                    }}|dk    rt          |          }|j        r~|                    |d          }||k    sJ |                    |d          }	||	k    sJ |                    |d          }
||
k    sJ |                    |d          }||k    sJ d S |j        r@|                    |d          }||k    sJ |                    |d          }	||	k    sJ d S d}t          j        t$          |	          5  |                    |d           d d d            d S # 1 swxY w Y   d S )
Nz8IntervalIndex.searchsorted does not support Interval arg)reasonr)   zSkip check for empty Indexr   left)siderightz0index must be monotonic increasing or decreasingr!   )r&   r]   IntervalIndexr(   markxfailrw   node
add_markeremptyrt   argminr   is_monotonic_increasing_searchsorted_monotonicsearchsortedis_monotonic_decreasingr)   r*   )r   r   requestr   r   valueexpected_leftexpected_rightssm_left	ssm_rightss_leftss_rightr-   s                r   test_searchsorted_monotonicz&TestCommon.test_searchsorted_monotonic   sy    eR-.. 	*;$$Q* %  D L##D))) ; 	6K4555a )*EUN+B+B+D+D~Q ZZN ( 	B44U4HHH H,,,,55e'5JJI!Y....((V(<<G G++++))%g)>>H!X------* 
	B44U4HHH H,,,,55e'5JJI!Y...... ECz555 B B--e&-AAAB B B B B B B B B B B B B B B B B Bs   F==GGc                 T   |}t          |t                    rt          j        d           t	          |          dk    rt          j        d           t          |          }t          t          |                    }t          |          r|j	        nd } |||          }t	          |          }t          j                            |t          |dz                      }	 ||j        |	                   }
t          j        |	                              |          j        }t%          j        |
                    |          |            |t          j        |
                              |                    }t%          j        |
                    |          |           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 duplicatesr9   g      ?)keep)r&   r   r(   rt   r   r;   listsetr   r:   rz   randomchoiceintr   r]   r^   
duplicatedr<   assert_numpy_array_equalrj   rD   )r   r   r   r   holderunique_valuesr:   
unique_idxnduplicated_selectionr   expected_duplicatedexpected_droppeds                r   test_drop_duplicateszTestCommon.test_drop_duplicates'  s   eZ(( 	K/   u::??K/   eSZZ((/66@DVM777
 
OO!y//3q3w<<@@fZ&';<== I*++66D6AAH 	 	#CNNN$=$=?RSSS "6")C.."@"@d"@"K"KLL
c11t1<<>NOOOOOr   c                    |}t          |t                    r|}nPt          |          }t          t	          |                    }t          |          r|j        nd } |||          }t          j        dgt          |          z  d          }t          j        |                                |           |                                }t          j        ||           ||usJ d S )Nr9   Fbool)r&   r   r;   r   r   r   r:   rz   arrayr   r<   r   r   rj   rD   )	r   r   r   r   r   r   r:   r   result_droppeds	            r   "test_drop_duplicates_no_duplicatesz-TestCommon.test_drop_duplicates_no_duplicatesJ  s     eZ(( 	<JJ%[[F U,,M#3E#:#:DEKKEU;;;J !hwZ'@OOO
#J$9$9$;$;=PQQQ#3355
nj999Z//////r   c                     d}t          j        t          |          5  |                    d           d d d            d S # 1 swxY w Y   d S )Nz6drop_duplicates\(\) got an unexpected keyword argumentr!   TrH   )r(   r)   r2   rj   )r   r   r-   s      r   test_drop_duplicates_inplacez'TestCommon.test_drop_duplicates_inplace`  s    G]9C000 	0 	0!!$!///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0s   AA	Ac                     |}t          |          }t          |          rt          |t                    rt	          j        d            ||d         gdz            }|j        du sJ |j        du sJ d S )Nz6Skip check for empty Index, MultiIndex, and RangeIndexr   rs   FT)r;   r   r&   r   r(   rt   ru   has_duplicates)r   r   r   r   r   s        r   test_has_duplicateszTestCommon.test_has_duplicatese  s     e5zz 	RZz:: 	R KPQQQfeAhZ!^$$}%%%%!T))))))r   r:   )int64uint64float64categoryzdatetime64[ns]ztimedelta64[ns]c                 P   t          |t                    r$d t          |j                  D             |_        nd|_        d }|j        j        dk    r|dv rt          j	        }t          |j                  dk    o|dk    }	 t          j        ||d          5  |                    |          }d d d            n# 1 swxY w Y   n$# t          t          t           t"          f$ r Y d S w xY wt          |t                    r|j        |j        k    sJ d S |j        |j        k    sJ d S )	Nc                 2    g | ]}d t          |          z   S )r   )str).0r   s     r   
<listcomp>z9TestCommon.test_astype_preserves_name.<locals>.<listcomp>{  s"    HHHa53q66>HHHr   r   c)r   r   r   zstring[pyarrow]r   F)raise_on_extra_warningscheck_stacklevel)r&   r	   rangenlevelsr1   r   r:   kindrz   ComplexWarningr   r<   assert_produces_warningastyper*   r2   rw   SystemError)r   r   r:   warnis_pyarrow_strrE   s         r   test_astype_preserves_namez%TestCommon.test_astype_preserves_namet  s    eZ(( 	HH53G3GHHHEKKEJ;s""u0N'N'N$DU[))->>V5JCV		+(6!&   - -
 e,,- - - - - - - - - - - - - - - I':KH 	 	 	FF	 eZ(( 	-<5;......;%*,,,,,,s6   C B;/C ;B??C B?C C('C(c                    |}|                     d          }t          j        dgt          |          z  t                    }t          j        |j        |           |j        du sJ |                     d          }|j	        }t          |          dk    rd S t          |j                  rd S |j        t          k    rd S t          j        |d<    t          |          |          }t          j        dgt          |          z  t                    }d|d<   t          j        |j        |           |j        du sJ d S )NT)rS   Fr9   r   r   )r   rz   r   r   r   r<   r   _isnanrv   ry   r   r:   r{   r;   )r   r   r   r   rp   r   s         r   test_hasnans_isnanszTestCommon.test_hasnans_isnans  s4    jjdj##8UGc#hh.d;;;
#CJ999{e####jjdj##u::??Fek** 	F[D  FFq	d5kk&!!8UGc#hh.d;;;
#CJ999{d""""""r   )rg   
__module____qualname__r(   r   parametrizer   r.   r7   rA   rF   rP   rW   rd   rh   rq   r   r   r   r   r   r   r   r    r   r   r   r       sz       [VdJ%788# # 98#&' ' '2+ + +* * *- - -% % %8	) 	) 	)( ( (2) ) )( ( (*&4 &4 &4P0B 0B 0Bd!P !P !PF0 0 0,0 0 0
* * * [WWW - -	 -:# # # # #r   r   na_positionmiddlec                     t          j        t          d|           5  |                     |           d d d            d S # 1 swxY w Y   d S )Nzinvalid na_position: r!   r   )r(   r)   r*   sort_values)index_with_missingr   s     r   $test_sort_values_invalid_na_positionr     s    	z)N)N)N	O	O	O @ @&&;&???@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @s   AA
Ar_   lastc                 ^   t          | t                    r9|j                            t          j                            dd                     t          j        | 	                                          }| | 
                                         j        }t          j        |          }|dk    rt          j        d g|z  |g          }nt          j        |d g|z  g          } t          |           || j                  }|                     |          }t#          j        ||           d S )Nz,missing value sorting order not well-definedF)r   strictr_   r9   r   )r&   r   r   r   r(   r   r   rz   sumisnanotnar   sortconcatenater;   r:   r   r<   rD   )r   r   r   missing_countnot_na_valssorted_valuesrp   rE   s           r   test_sort_values_with_missingr     s-   
 $&677 
KEe   	
 	
 	
 F-224455M$%7%=%=%?%?@GKGK((Mg(>'NOOv7M'NOO (t&''=O=UVVVH+++DDF&(+++++r   c                    t          | t                    rt          st          j        d           | }|j                            |          sJ |                                                    |          sJ |j        }|j	        |j	        k    sJ |j
        |j
        k    sJ |j        |j        k    sJ t          | t          t          f          s|j        |j        k    sJ |j         |j        j         d S )NOverflow)r&   r
   r   r(   rt   Tr%   	transposer   shapendimsizer   r	   nbytes)r   r   r   s      r   test_ndarray_compat_propertiesr     s    %%%  d  J
C5<<==??!!#&&&&&ZF9$$$$8v{""""8v{""""ej*566 +zV]**** JJJr   )__doc__r   r   rm   numpyrz   r(   pandas.compatr   pandas.core.dtypes.commonr   r   pandasr]   r   r	   r
   r   pandas._testing_testingr<   r   r   r   r   r   r   r   r   r   <module>r      s   
        
			                  
                     Q# Q# Q# Q# Q# Q# Q# Q#h x(899@ @ :9@
 &(9::, , ;:,4    r   