
    bMh4F                        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        j        ej                            d
          ej                            dddg          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)np_version_gte1p25)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ej        j        d
             Zd Zej                            d          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                 6   |}|r|}n	|j         pd}|                    |          }|j        |u sJ t          |j                  dk    sJ |j        d         |k    sJ |s||         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using_copy_on_writeidxidx_namedfs          `/var/www/html/test/jupyter/venv/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!}((((" 	9h<&cj8888\\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_droplevel7   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_nameP   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_indexf   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#   rA   r   r.   )AB)r   r6   r5   r3   r*   r+   r,   )r   r   r   r   original_namenew_indresr   s           r   test_set_name_methodsz TestCommon.test_set_name_methodsm   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#   rA   )r*   r+   r4   r6   )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!   z$ignore:Dtype inference:FutureWarningc                    |} 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>   rF   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__r4   )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   rL   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>   rF   r*   r+   
IndexErrorreescape__repr__r-   )r   r   r   expectedr.   rG   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 nar^   )r   r*   skip	is_uniquehasnansNotImplementedErrorro   r>   rF   _can_hold_na_valuesnpnan_shallow_copyr<   	enumerate)r   r   r   r   
idx_uniquerG   valsvals_uniqueidx_nanidx_unique_nanrt   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 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        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(   ra   IntervalIndexr*   markxfailr{   applymarkeremptyrx   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 %%% ; 	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   F88F<?F<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 duplicatesr;   r^   g      ?)keep)r(   r   r*   rx   r   r=   listsetr   r<   r~   randomdefault_rngchoiceintr   ra   rb   
duplicatedr>   assert_numpy_array_equalrn   rF   )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 )Nr;   Fbool)r(   r   r=   r   r   r   r<   r~   arrayr   r>   r   r   rn   rF   )	r   r   r   r   r   r   r<   r   result_droppeds	            r   "test_drop_duplicates_no_duplicatesz-TestCommon.test_drop_duplicates_no_duplicatesR  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#   TrJ   )r*   r+   r4   rn   )r   r   r/   s      r   test_drop_duplicates_inplacez'TestCommon.test_drop_duplicates_inplacei  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   rw   FT)r=   r   r(   r   r*   rx   ry   has_duplicates)r   r   r   r   r   s        r   test_has_duplicateszTestCommon.test_has_duplicatesn  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                    t          |t                    r$d t          |j                  D             |_        nd|_        d }|j        j        dk    r)|dv r%t          rt          j
        j        }n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nlevelsr3   r   r<   kindr   r~   
exceptionsComplexWarningr   r>   assert_produces_warningastyper,   r4   r{   SystemError)r   r   r<   warnis_pyarrow_strrG   s         r   test_astype_preserves_namez%TestCommon.test_astype_preserves_name~  s    eZ(( 	HH53G3GHHHEKKEJ;s""u0N'N'N! )}3(U[))->>V5JCV		+(6!&   - -
 e,,- - - - - - - - - - - - - - - I':KH 	 	 	FF	 eZ(( 	-<5;......;%*,,,,,,s6   C  2CC  CC  CC   D D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)rW   Fr;   r   r   )r   r~   r   r   r   r>   r   _isnanrz   r}   r   r<   r   r=   )r   r   r   r   rt   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!   )rk   
__module____qualname__r*   r   parametrizer    r0   r9   rC   rH   rR   r   rT   r[   filterwarningsrh   rl   ru   r   r   r   r   r   r   r   r    r!   r   r   r   !   sT       [VdJ%788# # 98#(' ' '2+ + +* * *- - -% % %0 [& & &
	) 	) 	) [ GHH( ( IH(2) ) )( ( (*&4 &4 &4P [ LMM[ VWW0B 0B XW NM0Bd [ 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rc   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   strictrc   r;   r   )r(   r	   r   r*   r   r   r~   sumisnanotnar   sortconcatenater=   r<   r   r>   rF   )r   r   r   missing_countnot_na_valssorted_valuesrt   rG   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*   rx   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 )Nr;   FE   )	r~   r   objectflags	writeablera   Indexr<   r   )arrr   rG   s      r   test_compare_read_only_arrayr    sO    
(2V
$
$
$CCI
(3--C2XF<4r!   ) __doc__r   r   rq   numpyr~   r*   pandas.compatr   pandas.compat.numpyr   pandas.core.dtypes.commonr   r   pandasra   r	   r
   r   r   pandas._testing_testingr>   r   r   r   r   r   fails_arm_wheelsr   r   r  r   r!   r   <module>r     s   
        
			            2 2 2 2 2 2       
                     ]# ]# ]# ]# ]# ]# ]# ]#@ RSSx(899@ @ :9 TS@
 RSS&(9::, , ;: TS ,4  ,         r!   