@@ -554,7 +554,7 @@ def __new__(
554
554
return klass ._simple_new (arr , name )
555
555
556
556
elif is_scalar (data ):
557
- raise cls ._scalar_data_error (data )
557
+ raise cls ._raise_scalar_data_error (data )
558
558
elif hasattr (data , "__array__" ):
559
559
return Index (np .asarray (data ), dtype = dtype , copy = copy , name = name , ** kwargs )
560
560
else :
@@ -4386,14 +4386,23 @@ def is_int(v):
4386
4386
return indexer
4387
4387
4388
4388
@final
4389
- def _invalid_indexer (self , form : str_t , key ) -> TypeError :
4389
+ def _raise_invalid_indexer (
4390
+ self ,
4391
+ form : str_t ,
4392
+ key ,
4393
+ reraise : lib .NoDefault | None | Exception = lib .no_default ,
4394
+ ) -> None :
4390
4395
"""
4391
- Consistent invalid indexer message.
4396
+ Raise consistent invalid indexer message.
4392
4397
"""
4393
- return TypeError (
4398
+ msg = (
4394
4399
f"cannot do { form } indexing on { type (self ).__name__ } with these "
4395
4400
f"indexers [{ key } ] of type { type (key ).__name__ } "
4396
4401
)
4402
+ if reraise is not lib .no_default :
4403
+ raise TypeError (msg ) from reraise
4404
+ else :
4405
+ raise TypeError (msg )
4397
4406
4398
4407
# --------------------------------------------------------------------
4399
4408
# Reindex Methods
@@ -5279,10 +5288,10 @@ def where(self, cond, other=None) -> Index:
5279
5288
# construction helpers
5280
5289
@final
5281
5290
@classmethod
5282
- def _scalar_data_error (cls , data ):
5291
+ def _raise_scalar_data_error (cls , data ):
5283
5292
# We return the TypeError so that we can raise it from the constructor
5284
5293
# in order to keep mypy happy
5285
- return TypeError (
5294
+ raise TypeError (
5286
5295
f"{ cls .__name__ } (...) must be called with a collection of some "
5287
5296
f"kind, { repr (data )} was passed"
5288
5297
)
@@ -6674,15 +6683,15 @@ def _maybe_cast_listlike_indexer(self, target) -> Index:
6674
6683
return ensure_index (target )
6675
6684
6676
6685
@final
6677
- def _validate_indexer (self , form : str_t , key , kind : str_t ):
6686
+ def _validate_indexer (self , form : str_t , key , kind : str_t ) -> None :
6678
6687
"""
6679
6688
If we are positional indexer, validate that we have appropriate
6680
6689
typed bounds must be an integer.
6681
6690
"""
6682
6691
assert kind in ["getitem" , "iloc" ]
6683
6692
6684
6693
if key is not None and not is_integer (key ):
6685
- raise self ._invalid_indexer (form , key )
6694
+ self ._raise_invalid_indexer (form , key )
6686
6695
6687
6696
def _maybe_cast_slice_bound (self , label , side : str_t , kind = no_default ):
6688
6697
"""
@@ -6714,7 +6723,7 @@ def _maybe_cast_slice_bound(self, label, side: str_t, kind=no_default):
6714
6723
# datetimelike Indexes
6715
6724
# reject them, if index does not contain label
6716
6725
if (is_float (label ) or is_integer (label )) and label not in self :
6717
- raise self ._invalid_indexer ("slice" , label )
6726
+ self ._raise_invalid_indexer ("slice" , label )
6718
6727
6719
6728
return label
6720
6729
0 commit comments