
    PiG                        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	          Zej                            d
          ej                            dddg          d                         Zej                            d
          ej                            dddg          d                         Zd Zd Zd Zd Z 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)Pandas4Warning)is_integer_dtypeis_numeric_dtype)CategoricalIndex
MultiIndexPeriodIndex
RangeIndexc                   p   e Zd Zej                            dddg          d             Zd Zd Zd Z	d Z
d	 Zej        j        d
             Zd Zd Zd Zd Zd Zej                            d          ej                            d          d                         Zej                            d          d             Zej                            d          d             Zd Zej                            d          d             Zej                            dg d          d             Zd ZdS )
TestCommonnameNnew_namec                    |}|r|}n	|j         pd}|                    |          }|j        |u sJ t          |j                  dk    sJ |j        d         |k    sJ |                    d|          }|j        |usJ d S )Nr   r      F)indexr   )r   to_framer   lencolumns)selfr   
index_flatidxidx_namedfs         t/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/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!}((((\\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_droplevel6   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_nameO   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_indexe   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_methodsl   s`   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          j        t          d          5  |                    d           d d d            d S # 1 swxY w Y   d S )Nz	list-liker!   r?   )r(   r)   r2   r4   )r   r   s     r   $test_set_names_single_label_no_levelz/TestCommon.test_set_names_single_label_no_level   s    ]9K888 	& 	&  %%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&s   ?AA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<   rE   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 )Nr\   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   rK   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<   rE   r(   r)   
IndexErrorreescape__repr__r+   )r   r   r   expectedr,   rF   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        ||t          |t                                |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      TFexactz%Skip na-check if index cannot hold nar]   )r   r(   skip	is_uniquehasnansNotImplementedErrorrn   r<   rE   r&   r   _can_hold_na_valuesr   npnan_shallow_copyr:   	enumerate)r   r   r   r   
idx_uniquerF   valsvals_uniqueidx_nanidx_unique_nanrs   posis                r   test_uniquezTestCommon.test_unique   s   5zz 	EKCDDDQC!GnA3Z
 #t++++	%....." 	 	 	D	 
J*UJ*G*G&G	
 	
 	
 	

 ! 	AK?@@@}!!##QC!G,&Q2A2h%%d++,,[99'4////}++++#u{2222!. 9:: 	4 	4FCXXZZF!&(3333	4 	4s   A 
A A z*ignore:Period with BDay freq:FutureWarning3ignore:PeriodDtype\[B\] is deprecated:FutureWarningc                 
   |}t          |t          j                  r;t          j                            dt                    }|                    |           |j        rt          j	        d           |d         }d||k    
                                }}|dk    rt          |          }|j        s|j        r~|                    |d          }||k    sJ |                    |d          }	||	k    sJ |                    |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xfailr|   applymarkeremptyry   argminr   is_monotonic_increasingis_monotonic_decreasing_searchsorted_monotonicsearchsortedr)   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   s     eR-.. 	&;$$Q* %  D %%% ; 	6K4555a )*EUN+B+B+D+D~Q ZZN( 	BE,I 	B44U4HHH H,,,,55e'5JJI!Y....((V(<<G G++++))%g)>>H!X------ 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   E88E<?E<c                 z   |}t          |t                    rt          j        d           t	          |          dk    rt          j        d           t          |          }t          t          |                    }t          |          r|j	        nd } |||          }t	          |          }t          j                            d                              |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   r]   g      ?)keep)r&   r   r(   ry   r   r;   listsetr   r:   r   randomdefault_rngchoiceintvaluesr`   ra   
duplicatedr<   assert_numpy_array_equalrm   rE   )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44Q77>>q#a#g,,OO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:   r   arrayr   r<   r   r   rm   rE   )	r   r   r   r   r   r   r:   r   result_droppeds	            r   "test_drop_duplicates_no_duplicatesz-TestCommon.test_drop_duplicates_no_duplicatesI  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!   TrI   )r(   r)   r2   rm   )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   rv   FT)r;   r   r&   r   r(   ry   rz   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                 Z   t          |t                    r$d t          |j                  D             |_        nd|_        |j        j        dk    r|dv rt          j	        j
        nd }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:   kindr   
exceptionsComplexWarningr   r<   assert_produces_warningastyper*   r2   r|   SystemError)r   r   r:   warnis_pyarrow_strrF   s         r   test_astype_preserves_namez%TestCommon.test_astype_preserves_nameu  s    eZ(( 	HH53G3GHHHEKKEJ {3&&54R+R+R M(( 	 U[))->>V5JCV		+(6!&   - -
 e,,- - - - - - - - - - - - - - - I':KH 	 	 	FF	 eZ(( 	-<5;......;%*,,,,,,s6   C C 4C  CC C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)rV   Fr9   r   r   )r   r   r   r   r   r<   r   _isnanr{   r~   r   r:   r   r;   )r   r   r   r   rs   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   )rj   
__module____qualname__r(   r   parametrizer   r.   r7   rA   rG   rQ   r   rS   rZ   rg   rk   rt   r   filterwarningsr   r   r   r   r   r   r    r   r   r   r   "   s4       [VdJ%788# # 98#$' ' '2+ + +* * *- - -% % %0 [& & &
	) 	) 	)( ( (2) ) )( ( (*(4 (4 (4T [ LMM[ VWW'B 'B XW NM'BR [ VWW!P !P XW!PF [ VWW0 0 XW0,0 0 0
 [ VWW* * XW* [WWW - -	 -<# # # # #r   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rb   lastc                 T   t          | t                    r4|                    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   strictrb   r9   r   )r&   r	   r   r(   r   r   r   sumisnanotnar   sortconcatenater;   r:   r   r<   rE   )r   r   r   missing_countnot_na_valssorted_valuesrs   rF   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                      d t          j        g d          } t          j        g d          }|                     fd          }t          j        ||           d S )Nc                 Z    t          d |                     d          D                       S )Nc              3   4   K   | ]}t          |          V  d S rC   )r   )r   xs     r   	<genexpr>zFtest_sort_values_natsort_key.<locals>.split_convert.<locals>.<genexpr>  s(      22SVV222222r   .)r'   split)ss    r   split_convertz3test_sort_values_natsort_key.<locals>.split_convert  s)    22QWWS\\222222r   )1.92.01.111.10)r   r   r   r   c                 >    t          t          |                     S rC   )r'   map)r   r   s    r   <lambda>z.test_sort_values_natsort_key.<locals>.<lambda>  s    5]A1F1F+G+G r   )key)r`   Indexr   r<   rE   )r   rs   rF   r   s      @r   test_sort_values_natsort_keyr    sv    3 3 3 (111
2
2Cx66677H__!G!G!G!G_HHF&(+++++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(   ry   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   c                      t          j        g t                    } d| j        _        t          j        |           }|dk    }|j        t          k    sJ d S )Nr9   FE   )	r   r   objectflags	writeabler`   r  r:   r   )arrr   rF   s      r   test_compare_read_only_arrayr    sO    
(2V
$
$
$CCI
(3--C2XF<4r   c                      t          j        dg          } |                                 j        }t	          d          }t          j        ||d           d S )Nr   Trw   )r`   r  r   r   r   r<   rE   r   rF   rs   s      r   test_to_frame_column_rangeindexr    sJ    
(A3--C\\^^#F!}}H&($777777r   c                      t          j        dg          } |                     d          }t          j        dgt	          j        dgdgg          |           }t          j        ||           d S )Nr   )r   r]   r   r]   )r   r   )r`   r  r   	DataFramer
   from_arraysr<   assert_frame_equalr  s      r   #test_to_frame_name_tuple_multiindexr  
  si    
(A3--C\\v\&&F|QC)?!qc
)K)KSVWWWH&(+++++r   c                      t          j        ddg          } t          j        g d          }t          j        t
          d          5  |                     |           d d d            d S # 1 swxY w Y   d S )Nr   r]   )r   r]   r]   zPassing .* to .* is deprecatedr!   )r`   r  ra   r<   r   r   join)r   sers     r   test_join_series_deprecatedr!    s    
(Aq6

C
)III

C		#>
 
 
   	                 s   A++A/2A/)#__doc__r   r   rp   numpyr   r(   pandas.compatr   pandas.errorsr   pandas.core.dtypes.commonr   r   pandasr`   r	   r
   r   r   pandas._testing_testingr<   r   r   r   r   r   r   r  r  r  r  r  r!  r   r   r   <module>r*     s9           
			            ( ( ( ( ( (       
                     Q# Q# Q# Q# Q# Q# Q# Q#h RSSx(899@ @ :9 TS@
 RSS&(9::, , ;: TS,4, , ,  ,     8 8 8, , ,    r   