
    OwgE                        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j0                  j3                  d
      ej0                  j5                  dddg      d               Zej0                  j8                  ej0                  j3                  d
      ej0                  j5                  dddg      d                      Zd Zd Zy)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                  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                  j'                  d      ej                  j'                  d      d               Zej                  j'                  d      d        Zej                  j'                  d      d        Zd Zej                  j'                  d      d        Zej                  j                  dg d      d        Zd Zy)
TestCommonnameNnew_namec                 V   |}|r|}n|j                   xs d}|j                  |      }|j                  |u sJ t        |j                        dk(  sJ |j                  d   |k(  sJ |s||   j
                  |j
                  usJ |j                  d|      }|j                  |usJ y )Nr   r      F)indexr   )r   to_framer   lencolumnsvalues)selfr   
index_flatusing_copy_on_writeidxidx_namedfs          W/var/www/horilla/myenv/lib/python3.12/site-packages/pandas/tests/indexes/test_common.pytest_to_framezTestCommon.test_to_frame"   s     Hxx}1H\\x\(xx32::!###zz!}((("h<&&cjj888\\H\5xxs"""    c                    |}|j                  g       j                  |      sJ |j                  |j                  gfD ]b  }t        |j                  t              r||j                  u r,d}t        j                  t        |      5  |j                  |       d d d        d ddgfD ]7  }t        j                  t        d      5  |j                  |       d d d        9 y # 1 sw Y   xY w# 1 sw Y   PxY w)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jj5::,/ 		'E%**e,%**1D&  z5 '&' '		' wi' 	'EW ' &	' '	'' '' 's   C#C/#C,	/C8	c                    |}d}dgg}t        j                  t        |      5  |j                  |       d d d        t        j                  t        |      5  |j	                  |       d d d        y # 1 sw Y   @xY w# 1 sw Y   y xY w)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 	'LLgL&	' ]]9G4 	+OO'O*	+ 	+		' 	'	+ 	+s   A6B6A?Bc                     |} t        |      ||j                        }t        j                  |j                  |j                         y )Ndtype)typer<   tmassert_equal_data)r   r   abs       r   test_constructor_unwraps_indexz)TestCommon.test_constructor_unwraps_index_   s5     DGAQWW%
)r!   c                 T    |}|j                         }t        j                  ||       y )N)to_flat_indexr>   assert_index_equal)r   r   r   results       r   test_to_flat_indexzTestCommon.test_to_flat_indexf   s%    $$&
fe,r!   c                    |}d}|j                   }|j                  |g      }|j                   |k(  sJ |j                   |k(  sJ |j                  |d      }|J |j                   |k(  sJ |j                  |gk(  sJ t	        j
                  t        d      5  |j                  dd       d d d        d	}|j                  |d       |j                   |k(  sJ |j                  |gk(  sJ y # 1 sw Y   BxY w)
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'''zz]***ll8Tl2 {{zzX%%%{{xj(((]]:-AB 	*OOCqO)	* T4(zzT!!!{{tf$$$	* 	*s   C//C8c                     t        j                  t        d      5  |j                  d       d d d        y # 1 sw Y   y xY w)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   s3    ]]9K8 	&  %	& 	& 	&s	   7A c                     |}t         t        fD ]#  } ||      }||usJ |j                  |      r#J  |j                  dd      }|j                  dk(  sJ y )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   sj    8$ 	*DE{H5(((??5)))	*
 ::4h:7}}(((r!   c                    |} t        |      |dd      } t        |      |d      }||usJ t        j                  ||       |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 y )
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"""zzW$$${{g%%% YYq&YYqs,"Wxx}}'''r!   c                    |}|j                  d      j                  dk(  sJ t        j                  t        d      5  |j                  ddg       d d d        t        |      j                   d}t        j                  t        |      5  |j                  dgg       d d d        y # 1 sw Y   ZxY w# 1 sw Y   y xY w)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   s    zzwz',,777]]:-ST 	0JJWg.J/	0 e%%&&CD]]9C0 	)JJgYKJ(	) 	)		0 	0	) 	)s   B-B9-B69Cc                    |}|j                         }d|j                  d fD ]*  }|j                  |      }t        j                  ||       , d}t        j                  t        |      5  |j                  d       d d d        dt        j                  |j                  j                                d}t        j                  t        |      5  |j                  d       d d d        y # 1 sw Y   qxY w# 1 sw Y   y xY w)	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* 	4E\\\.F!!&(3	4 ?]]:S1 	"LLqL!	"))EJJ//12327 	 ]]83/ 	(LLwL'	( 	(	" 	"	( 	(s   ,C/C;/C8;Dc                    |}t        |      st        j                  d       |dgdz     }|dg   }|j                  du sJ 	 |j                  du sJ 	 |j                         }t        j                  ||       |j                  st        j                  d       |j                  dgdz     }t        j                  |d<   |d d }|j                  |      }|j                  |      }	|	j                  du sJ |j                  |j                  k(  sJ |	j                  |j                  k(  sJ |	}
t        ||	g      D ]+  \  }}|j                         }t        j                  ||
       - y # t
        $ r Y $w xY w)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   sx   5zKKCDQC!GnA3Z
 ##t+++	%%... 
fj1 !!KK?@}}aS1W%&&Q2Ah%%d+,,[9''4///}}+++##u{{222!. 9: 	4FCXXZF!!&(3	4- # 		s   E, ,	E98E9z*ignore:Period with BDay freq:FutureWarning3ignore:PeriodDtype\[B\] is deprecated:FutureWarningc                 4   |}t        |t        j                        r6t        j                  j                  dt              }|j                  |       |j                  rt        j                  d       |d   }d||k(  j                         }}|dk(  rt        |      }|j                  ri|j                  |d      }||k(  sJ |j                  |d      }	||	k(  sJ |j                  |d      }
||
k(  sJ |j                  |d      }||k(  sJ y |j                  r5|j                  |d      }||k(  sJ |j                  |d      }	||	k(  sJ y d}t        j                   t"        |	      5  |j                  |d       d d d        y # 1 sw Y   y xY w)
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   s     eR--.;;$$Q* % D % ;;KK45a )*EUN+B+B+D~Q ZN ((44U4HH H,,,55e'5JI!Y...((V(<G G+++))%g)>H!X---**44U4HH H,,,55e'5JI!Y... ECz5 B--e&-AB B Bs   1FFc                    |}t        |t              rt        j                  d       t	        |      dk(  rt        j                  d       t        |      }t        t        |            }t        |      r|j                  nd } |||      }t	        |      }t        j                  j                  d      j                  |t        |dz              }	 ||j                  |	         }
t!        j"                  |	      j%                  |      j                  }t'        j(                  |
j%                  |      |        |t!        j"                  |
      j+                  |            }t'        j,                  |
j+                  |      |       y )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-  sL    eZ(KK/ u:?KK/ eSZ(/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                    |}t        |t              r|}nBt        |      }t        t	        |            }t        |      r|j                  nd } |||      }t        j                  dgt        |      z  d      }t        j                  |j                         |       |j                         }t        j                  ||       ||usJ y )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_duplicatesQ  s      eZ(J%[F U,M#3E#:EKKEU;J !hhwZ'@O
##J$9$9$;=PQ#335
nj9Z///r!   c                     d}t        j                  t        |      5  |j                  d       d d d        y # 1 sw Y   y xY w)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_inplaceh  s;    G]]9C0 	0!!$!/	0 	0 	0s	   :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 y )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_duplicatesm  sk     e5zZz: KKPQeAhZ!^$}}%%%!!T)))r!   r<   )int64uint64float64categoryzdatetime64[ns]ztimedelta64[ns]c                    t        |t              r5t        |j                        D cg c]  }dt	        |      z    c}|_        nd|_        d }|j                  j                  dk(  r5|dv r1t        rt        j                  j                  }nt        j                  }t	        |j                        dk(  xr |dk(  }	 t        j                  ||d      5  |j                  |      }d d d        t        |t              rj
                  |j
                  k(  sJ y j                  |j                  k(  sJ y c c}w # 1 sw Y   VxY w# t         t"        t$        t&        f$ r Y y w xY w)Nr   c)r   r   r   zstring[pyarrow]r   F)raise_on_extra_warningscheck_stacklevel)r(   r
   rangenlevelsstrr3   r   r<   kindr   r~   
exceptionsComplexWarningr>   assert_produces_warningastyper,   r4   r{   SystemError)r   r   r<   r   warnis_pyarrow_strrG   s          r   test_astype_preserves_namez%TestCommon.test_astype_preserves_name}  s.    eZ(383GHa53q6>HEKEJ;;s"u0N'N!}}33((U[[)->>V5JCV		++(6!& -
 e,- eZ(<<5;;...;;%**,,,7 I- - I':KH 		s/   D7=E D<'E <EE E$#E$c                    |}|j                  d      }t        j                  dgt        |      z  t              }t        j                  |j                  |       |j                  du sJ |j                  d      }|j                  }t        |      dk(  ry t        |j                        ry |j                  t        k(  ry t        j                  |d<    t        |      |      }t        j                  dgt        |      z  t              }d|d<   t        j                  |j                  |       |j                  du sJ y )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  s    jjdj#88UGc#h.d;
##CJJ9{{e###jjdj#u:?ekk*[[D FFq	d5k&!88UGc#h.d;
##CJJ9{{d"""r!   )rk   
__module____qualname__r*   r   parametrizer    r0   r9   rC   rH   rR   r   rT   r[   rh   rl   ru   r   filterwarningsr   r   r   r   r   r   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                     t        j                  t        d|       5  | j                  |       d d d        y # 1 sw Y   y xY w)Nzinvalid na_position: r#   r   )r*   r+   r,   sort_values)index_with_missingr   s     r   $test_sort_values_invalid_na_positionr     sD     
z+@)N	O @&&;&?@ @ @s	   ;Arc   lastc                 0   t        | t              r0|j                  t        j                  j                  dd             t        j                  | j                               }| | j                            j                  }t        j                  |      }|dk(  rt        j                  d g|z  |g      }nt        j                  |d g|z  g      } t        |       || j                        }| j                  |      }t!        j"                  ||       y )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KKEe  	
 FF-2245M$%7%=%=%?@GGKGGK(Mg(>'NOv7M'NO (t&'=O=U=UVH+++DF&(+r!   c                 :   t        | t              rt        st        j                  d       | }|j
                  j                  |      sJ |j                         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                   y )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55<<==?!!#&&&ZZF99$$$88v{{"""88v{{"""ej*56zzV]]*** JJJJr!   c                      t        j                  g t              } d| j                  _        t        j                  |       }|dkD  }|j                  t        k(  sJ y )Nr;   FE   )	r~   r   objectflags	writeablera   Indexr<   r   )arrr   rG   s      r   test_compare_read_only_arrayr     sF    
((2V
$CCII
((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
   \# \#~ RSx(89@ : T@
 RS&(9:, ; T ,4, r!   