Skip to content

Commit 82b78fb

Browse files
Terji PetersenTerji Petersen
Terji Petersen
authored and
Terji Petersen
committed
refactor to have ._holds_integer
1 parent 703dda4 commit 82b78fb

File tree

2 files changed

+14
-9
lines changed

2 files changed

+14
-9
lines changed

pandas/core/indexes/base.py

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,6 @@
9898
is_float_dtype,
9999
is_hashable,
100100
is_integer,
101-
is_integer_dtype,
102101
is_interval_dtype,
103102
is_iterator,
104103
is_list_like,
@@ -2460,6 +2459,13 @@ def is_interval(self) -> bool:
24602459
"""
24612460
return self.inferred_type in ["interval"]
24622461

2462+
@final
2463+
def _holds_integer(self) -> bool:
2464+
"""
2465+
Whether the type is an integer type.
2466+
"""
2467+
return self.inferred_type in ["integer", "mixed-integer"]
2468+
24632469
@final
24642470
def holds_integer(self) -> bool:
24652471
"""
@@ -2474,7 +2480,7 @@ def holds_integer(self) -> bool:
24742480
FutureWarning,
24752481
stacklevel=find_stack_level(),
24762482
)
2477-
return self.inferred_type in ["integer", "mixed-integer"]
2483+
return self._holds_integer()
24782484

24792485
@cache_readonly
24802486
def inferred_type(self) -> str_t:
@@ -5519,12 +5525,7 @@ def _should_fallback_to_positional(self) -> bool:
55195525
"""
55205526
Should an integer key be treated as positional?
55215527
"""
5522-
if is_integer_dtype(self):
5523-
return False
5524-
elif is_object_dtype(self):
5525-
return self.inferred_type not in ["integer", "mixed-integer"]
5526-
else:
5527-
return True
5528+
return not self._holds_integer()
55285529

55295530
_index_shared_docs[
55305531
"get_indexer_non_unique"

pandas/tests/indexes/common.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -798,7 +798,11 @@ def test_inv(self, simple_index):
798798
def test_holds_integer_deprecated(self, simple_index):
799799
# GH50243
800800
idx = simple_index
801-
with tm.assert_produces_warning(FutureWarning):
801+
msg = (
802+
f"{type(idx).__name__}.holds_integer is deprecated."
803+
"Use pandas.api.types.infer_dtype instead"
804+
)
805+
with tm.assert_produces_warning(FutureWarning, match=msg):
802806
idx.holds_integer()
803807

804808

0 commit comments

Comments
 (0)