
    MhE                        S r SSKJrJr  SSKrSSKrSSKrSSKJr  SSK	J
r
  SSKJrJr  SSKrSSKJrJrJrJr  SSKJr   " S S	5      r\R0                  R3                  S
5      \R0                  R5                  SSS/5      S 5       5       r\R0                  R8                  \R0                  R3                  S
5      \R0                  R5                  SSS/5      S 5       5       5       rS rS rg)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                   h   \ rS rSr\R
                  R                  SSS/5      S 5       rS rS r	S r
S	 rS
 r\R
                  R                  S 5       rS rS rS rS rS r\R
                  R)                  S5      \R
                  R)                  S5      S 5       5       r\R
                  R)                  S5      S 5       r\R
                  R)                  S5      S 5       rS r\R
                  R)                  S5      S 5       r\R
                  R                  S/ SQ5      S 5       rS rSrg)
TestCommon!   nameNnew_namec                 p   UnU(       a  UnOUR                   =(       d    SnUR                  US9nUR                  UL d   e[        UR                  5      S:X  d   eUR                  S   U:X  d   eU(       d  Xe   R
                  UR
                  Ld   eUR                  SUS9nUR                  ULd   eg )Nr   r      F)indexr   )r   to_framer   lencolumnsvalues)selfr   
index_flatusing_copy_on_writeidxidx_namedfs          R/var/www/html/env/lib/python3.13/site-packages/pandas/tests/indexes/test_common.pytest_to_frameTestCommon.test_to_frame"   s     Hxx}1H\\x\(xx32::!###zz!}((("<&&cjj888\\H\5xxs"""    c                 $   UnUR                  / 5      R                  U5      (       d   eUR                  UR                  /4 Hg  n[        UR                  [        5      (       a  X2R                  L a  M2  Sn[
        R                  " [        US9   UR                  U5        S S S 5        Mi     SS/4 H6  n[
        R                  " [        SS9   UR                  U5        S S S 5        M8     g ! , (       d  f       M  = f! , (       d  f       M\  = f)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_droplevelTestCommon.test_droplevel7   s     r"))%0000jj5::,/E%**e,,**1D&  z5& 65 0 wi'EW &	  ( 65 s   C.D .
C=	 
D	c                    UnSnS//n[         R                  " [        US9   UR                  US9  S S S 5        [         R                  " [        US9   UR	                  US9  S S S 5        g ! , (       d  f       N@= f! , (       d  f       g = f)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_name-TestCommon.test_constructor_non_hashable_nameP   sp    65' ]]9G4LLgL& 5 ]]9G4OO'O* 54	 54 54s   A,A=,
A:=
Bc                     Un[        U5      " X"R                  S9n[        R                  " UR                  UR                  5        g )Ndtype)typer@   tmassert_equal_data)r   r   abs       r    test_constructor_unwraps_index)TestCommon.test_constructor_unwraps_index_   s1     GAWW%
)r#   c                 T    UnUR                  5       n[        R                  " X25        g )N)to_flat_indexrB   assert_index_equal)r   r   r   results       r    test_to_flat_indexTestCommon.test_to_flat_indexf   s#    $$&
f,r#   c                    UnSnUR                   nUR                  U/5      nUR                   U:X  d   eUR                   U:X  d   eUR                  USS9nUb   eUR                   U:X  d   eUR                  U/:X  d   e[        R
                  " [        SS9   UR                  SSS9  S S S 5        S	nUR                  USS9  UR                   U:X  d   eUR                  U/:X  d   eg ! , (       d  f       NF= f)
Nz#This is the new name for this indexTinplacezLevel must be Noner%   rE   r   r0   )AB)r   r9   r8   r6   r,   r-   r.   )r   r   r   r   original_namenew_indresr   s           r    test_set_name_methods TestCommon.test_set_name_methodsm   s    8

//8*-||x'''zz]***ll8Tl2 {{zzX%%%{{xj(((]]:-ABOOCqO) C T4(zzT!!!{{tf$$$ CBs   C++
C9c                     [         R                  " [        SS9   UR                  S5        S S S 5        g ! , (       d  f       g = f)Nz	list-liker%   rE   )r,   r-   r7   r9   )r   r   s     r    $test_set_names_single_label_no_level/TestCommon.test_set_names_single_label_no_level   s*    ]]9K8  % 988s	   5
Ac                     Un[         [        4 H)  nU" U5      nXBLd   eUR                  U5      (       a  M)   e   UR                  SSS9nUR                  S:X  d   eg )NTbanana)deepr   )r   r   r)   r   )r   r   r   funcidx_copynew_copys         r    test_copy_and_deepcopy!TestCommon.test_copy_and_deepcopy   sf    8$DE{H(((??5)))) %
 ::4h:7}}(((r#   c                    Un[        U5      " USSS9n[        U5      " USS9nX4Ld   e[        R                  " X45        UR                  U5      (       d   eUR                  S:X  d   eUR                  S:X  d   e[
        R                  " SUS9n[
        R                  " SUS S	 S9nXV-  nUR                  R                  S:X  d   eg )
NTmario)r   r   F)r      )r      )rA   rB   rK   r)   r   pdSeriesr   )r   r   r   firstseconds1s2s3s           r    test_copy_nameTestCommon.test_copy_name   s     UE7;eU/ """
e, ||E""""zzW$$${{g%%% YYq&YYqs,Wxx}}'''r#   c                    UnUR                  SS9R                  S:X  d   e[        R                  " [        SS9   UR                  SS/S9  S S S 5        [        U5      R                   S3n[        R                  " [        US9   UR                  S//S9  S S S 5        g ! , (       d  f       NZ= f! , (       d  f       g = f)Nrf   r   z$Length of new names must be 1, got 2r%   luigiz.name must be a hashable type)r   r   r,   r-   r.   rA   __name__r7   )r   r   r   r1   s       r    test_copy_name2TestCommon.test_copy_name2   s    zzwz',,777]]:-STJJWg.J/ U e%%&&CD]]9C0JJgYKJ( 10	 UT 10s   B!B2!
B/2
C c                    UnUR                  5       nSUR                  S 4 H(  nUR                  US9n[        R                  " XS5        M*     Sn[
        R                  " [        US9   UR                  SS9  S S S 5        S[        R                  " UR                  R                  5       5       S3n[
        R                  " [        US9   UR                  SS9  S S S 5        g ! , (       d  f       Nr= f! , (       d  f       g = f)	Nr   rR   z.Too many levels: Index has only 1 level, not 4r%   rh   z6Requested level \(wrong\) does not match index name \(z\)r'   )drop_duplicatesr   uniquerB   rK   r,   r-   
IndexErrorreescape__repr__r/   )r   r   r   expectedr0   rL   r1   s          r    test_unique_levelTestCommon.test_unique_level   s     ((*T*E\\\.F!!&3 + ?]]:S1LLqL! 2))EJJ//12327 	 ]]83/LLwL' 0/ 21 0/s   )C%C6%
C36
Dc                    Un[        U5      (       d  [        R                  " S5        US/S-     nUS/   nUR                  SL d   e UR                  SL d   e UR                  5       n[        R                  " XT5        UR                  (       d  [        R                  " S5        UR                  S/S-     n[        R                  US'   US S nUR                  U5      nUR                  U5      n	U	R                  SL d   eUR                  UR                  :X  d   eU	R                  UR                  :X  d   eU	n
[        X/5       H+  u  pUR                  5       n[        R                  " XZ5        M-     g ! [
         a     GN.f = f)Nz)Skip check for empty Index and MultiIndexr      TFz%Skip na-check if index cannot hold narg   )r   r,   skip	is_uniquehasnansNotImplementedErrorrz   rB   rK   _can_hold_na_valuesnpnan_shallow_copyr@   	enumerate)r   r   r   r   
idx_uniquerL   valsvals_uniqueidx_nanidx_unique_nanr   posis                r    test_uniqueTestCommon.test_unique   sm   5zzKKCDQC!GnA3Z
 ##t+++	%%... 
f1 !!KK?@}}aS1W%&&Q2Ah%%d+,,[9''4///}}+++##u{{222! 9:FCXXZF!!&3 ;- # 		s   
E= =
F
Fz*ignore:Period with BDay freq:FutureWarning3ignore:PeriodDtype\[B\] is deprecated:FutureWarningc                 2   Un[        U[        R                  5      (       a3  [        R                  R                  S[        S9nUR                  U5        UR                  (       a  [        R                  " S5        US   nSX5:H  R                  5       pvUS:X  a  [        U5      nUR                  (       a]  UR                  USS9nXh:X  d   eUR                  USS9n	Xy:X  d   eUR                  USS9n
Xj:X  d   eUR                  USS9nX{:X  d   eg UR                  (       a/  UR                  USS9nXh:X  d   eUR                  USS9n	Xy:X  d   eg Sn[        R                   " ["        US	9   UR                  USS9  S S S 5        g ! , (       d  f       g = f)
Nz8IntervalIndex.searchsorted does not support Interval arg)reasonr-   zSkip check for empty Indexr   left)siderightz0index must be monotonic increasing or decreasingr%   )r*   rj   IntervalIndexr,   markxfailr   applymarkeremptyr   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_rightr1   s                r    test_searchsorted_monotonic&TestCommon.test_searchsorted_monotonic   s     eR--..;;$$Q* % D % ;;KK45a )*EN+B+B+D~Q ZN ((44U4HH ,,,55e'5JI!...((V(<G +++))%g)>H!---**44U4HH ,,,55e'5JI!... ECz5--e&-A 655s   .F
Fc                     Un[        U[        5      (       a  [        R                  " S5        [	        U5      S:X  a  [        R                  " S5        [        U5      n[        [        U5      5      n[        U5      (       a  UR                  OS nU" XVS9n[	        U5      n[        R                  R                  S5      R                  U[        US-  5      5      n	U" UR                  U	   5      n
[         R"                  " U	5      R%                  US9R                  n[&        R(                  " U
R%                  US9U5        U" [         R"                  " U
5      R+                  US95      n[&        R,                  " U
R+                  US9U5        g )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   rA   listsetr   r@   r   randomdefault_rngchoiceintr   rj   rk   
duplicatedrB   assert_numpy_array_equalry   rK   )r   r   r   r   holderunique_valuesr@   
unique_idxnduplicated_selectionr   expected_duplicatedexpected_droppeds                r    test_drop_duplicatesTestCommon.test_drop_duplicates-  sP    eZ((KK/ u:?KK/ eSZ(/66DM7
 
O!yy44Q7>>q#a#g,OZ&&';<= II*+66D6AHH 	 	##CNNN$=?RS ""))C."@"@d"@"KL
c11t1<>NOr#   c                    Un[        U[        5      (       a  UnOC[        U5      n[        [	        U5      5      n[        U5      (       a  UR                  OS nU" XVS9n[        R                  " S/[        U5      -  SS9n[        R                  " UR                  5       U5        UR                  5       n[        R                  " X5        XLd   eg )Nr?   Fbool)r*   r   rA   r   r   r   r@   r   arrayr   rB   r   r   ry   rK   )	r   r   r   r   r   r   r@   r   result_droppeds	            r    "test_drop_duplicates_no_duplicates-TestCommon.test_drop_duplicates_no_duplicatesQ  s      eZ((J%[F U,M#3E#:#:EKKE;J !hhwZ'@O
##J$9$9$;=PQ#335
n9///r#   c                     Sn[         R                  " [        US9   UR                  SS9  S S S 5        g ! , (       d  f       g = f)Nz6drop_duplicates\(\) got an unexpected keyword argumentr%   TrP   )r,   r-   r7   ry   )r   r   r1   s      r    test_drop_duplicates_inplace'TestCommon.test_drop_duplicates_inplaceh  s2    G]]9C0!!$!/ 100s	   5
Ac                     Un[        U5      n[        U5      (       a  [        U[        5      (       a  [        R
                  " S5        U" US   /S-  5      nUR                  SL d   eUR                  SL d   eg )Nz6Skip check for empty Index, MultiIndex, and RangeIndexr   r   FT)rA   r   r*   r   r,   r   r   has_duplicates)r   r   r   r   r   s        r    test_has_duplicatesTestCommon.test_has_duplicatesm  sp     e5zzZz:: KKPQeAhZ!^$}}%%%!!T)))r#   r@   )int64uint64float64categoryzdatetime64[ns]ztimedelta64[ns]c                    [        U[        5      (       a8  [        UR                  5       Vs/ s H  nS[	        U5      -   PM     snUl        OSUl        S nUR                  R                  S:X  a<  US;   a6  [        (       a  [        R                  R                  nO[        R                  n[	        UR                  5      S:H  =(       a    US:H  n [        R                  " UUSS9   UR                  U5      nS S S 5        [        U[        5      (       a  WR
                  UR
                  :X  d   eg WR                  UR                  :X  d   eg s  snf ! , (       d  f       Nb= f! [         ["        [$        [&        4 a     g f = f)Nr   c)r   r   r   zstring[pyarrow]r   F)raise_on_extra_warningscheck_stacklevel)r*   r
   rangenlevelsstrr6   r   r@   kindr   r   
exceptionsComplexWarningrB   assert_produces_warningastyper.   r7   r   SystemError)r   r   r@   r   warnis_pyarrow_strrL   s          r    test_astype_preserves_name%TestCommon.test_astype_preserves_name}  s8    eZ((383GH3Ga53q6>3GHEKEJ;;s"u0N'N!!}}33((U[[)->>V5JCV		++(6!&
 e, eZ((<<5;;...;;%**,,,7 I  I':KH 		s5   EE' (E:E' 
E$ E' $E' 'FFc                    UnUR                  SS9n[        R                  " S/[        U5      -  [        S9n[
        R                  " UR                  U5        UR                  SL d   eUR                  SS9nUR                  n[        U5      S:X  a  g [        UR                  5      (       a  g UR                  [        :X  a  g [        R                  US'   [        U5      " U5      n[        R                  " S/[        U5      -  [        S9nSUS'   [
        R                  " UR                  U5        UR                  SL d   eg )NT)r_   Fr?   r   r   )r   r   r   r   r   rB   r   _isnanr   r   r   r@   r   rA   )r   r   r   r   r   r   s         r    test_hasnans_isnansTestCommon.test_hasnans_isnans  s    jjdj#88UGc#h.d;
##CJJ9{{e###jjdj#u:?ekk**[[D FFq	5k&!88UGc#h.d;
##CJJ9{{d"""r#    )ru   
__module____qualname____firstlineno__r,   r   parametrizer!   r2   r<   rG   rM   rX   r   r[   rc   rq   rv   r   r   filterwarningsr   r   r   r   r   r   r   __static_attributes__r   r#   r    r   r   !   sb   [[VdJ%78# 9#('2+*-%0 [[& &
	)(2)(*&4P [[ LM[[ VW0B X N0Bd [[ VW!P X!PF [[ VW0 X0,0
 [[ VW* X* [[W-	-@#r#   r   r   na_positionmiddlec                     [         R                  " [        SU 3S9   U R                  US9  S S S 5        g ! , (       d  f       g = f)Nzinvalid na_position: r%   r   )r,   r-   r.   sort_values)index_with_missingr   s     r    $test_sort_values_invalid_na_positionr     s8     
z+@)N	O&&;&? 
P	O	Os	   6
Arl   lastc                 .   [        U [        5      (       a-  UR                  [        R                  R                  SSS95        [        R                  " U R                  5       5      nX R                  5          R                  n[        R                  " U5      nUS:X  a  [        R                  " S /U-  U/5      nO[        R                  " US /U-  /5      n[        U 5      " XPR                  S9nU R                  US9n[         R"                  " Xv5        g )Nz,missing value sorting order not well-definedF)r   strictrl   r?   r   )r*   r	   r   r,   r   r   r   sumisnanotnar   sortconcatenaterA   r@   r   rB   rK   )r   r   r   missing_countnot_na_valssorted_valuesr   rL   s           r    test_sort_values_with_missingr    s     $&677KKEe  	
 FF-2245M$%=%=%?@GGKGGK(Mg(>'NOv7M'NO &'=U=UVH+++DF&+r#   c                 v   [        U [        5      (       a!  [        (       d  [        R                  " S5        U nUR
                  R                  U5      (       d   eUR                  5       R                  U5      (       d   eUR                  nUR                  UR                  :X  d   eUR                  UR                  :X  d   eUR                  UR                  :X  d   e[        U [        [        45      (       d  UR                  UR                  :X  d   eUR                    UR                  R                    g )NOverflow)r*   r   r   r,   r   Tr)   	transposer   shapendimsizer   r
   nbytes)r   r   r   s      r    test_ndarray_compat_propertiesr    s    %%%ddJ
C55<<==?!!#&&&&ZZF99$$$88v{{"""88v{{"""ej*566zzV]]*** JJJJr#   c                      [         R                  " / [        S9n SU R                  l        [
        R                  " U 5      nUS:  nUR                  [        :X  d   eg )Nr?   FE   )	r   r   objectflags	writeablerj   Indexr@   r   )arrr   rL   s      r    test_compare_read_only_arrayr    sF    
((2V
$CCII
((3-C2XF<<4r#   ) __doc__r   r   r|   numpyr   r,   pandas.compatr   pandas.compat.numpyr   pandas.core.dtypes.commonr   r   pandasrj   r	   r
   r   r   pandas._testing_testingrB   r   r   r   r   r   fails_arm_wheelsr  r  r  r   r#   r    <module>r     s   
 
    2
   \# \#~ RSx(89@ : T@
 RS&(9:, ; T ,4, r#   