Skip to content

Commit d9d35b3

Browse files
committed
CLN: various related to numeric indexes
1 parent 09f3bf8 commit d9d35b3

File tree

5 files changed

+38
-12
lines changed

5 files changed

+38
-12
lines changed

pandas/_testing/__init__.py

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
is_period_dtype,
3434
is_sequence,
3535
is_timedelta64_dtype,
36+
pandas_dtype,
3637
)
3738

3839
import pandas as pd
@@ -41,11 +42,14 @@
4142
CategoricalIndex,
4243
DataFrame,
4344
DatetimeIndex,
45+
Float64Index,
4446
Index,
47+
Int64Index,
4548
IntervalIndex,
4649
MultiIndex,
4750
RangeIndex,
4851
Series,
52+
UInt64Index,
4953
bdate_range,
5054
)
5155
from pandas._testing._io import ( # noqa:F401
@@ -292,21 +296,40 @@ def makeBoolIndex(k=10, name=None):
292296
return Index([False, True] + [False] * (k - 2), name=name)
293297

294298

299+
def makeNumericIndex(k=10, name=None, *, dtype):
300+
dtype = pandas_dtype(dtype)
301+
302+
if dtype.kind == "i":
303+
values = list(range(k))
304+
elif dtype.kind == "u":
305+
start_num = 2 ** (dtype.itemsize * 8 - 1)
306+
values = [start_num + i for i in range(k)]
307+
elif dtype.kind == "f":
308+
values = sorted(np.random.random_sample(k)) - np.random.random_sample(1)
309+
values = values * (10 ** np.random.randint(0, 9))
310+
else:
311+
raise NotImplementedError(f"wrong dtype {dtype}")
312+
313+
return Index(values, dtype=dtype, name=name)
314+
315+
295316
def makeIntIndex(k=10, name=None):
296-
return Index(list(range(k)), name=name)
317+
base_idx = makeNumericIndex(k, dtype="int64")
318+
return Int64Index(base_idx)
297319

298320

299321
def makeUIntIndex(k=10, name=None):
300-
return Index([2 ** 63 + i for i in range(k)], name=name)
322+
base_idx = makeNumericIndex(k, name=name, dtype="uint64")
323+
return UInt64Index(base_idx)
301324

302325

303326
def makeRangeIndex(k=10, name=None, **kwargs):
304327
return RangeIndex(0, k, 1, name=name, **kwargs)
305328

306329

307330
def makeFloatIndex(k=10, name=None):
308-
values = sorted(np.random.random_sample(k)) - np.random.random_sample(1)
309-
return Index(values * (10 ** np.random.randint(0, 9)), name=name)
331+
base_idx = makeNumericIndex(k, name=name, dtype="float64")
332+
return Float64Index(base_idx)
310333

311334

312335
def makeDateIndex(k: int = 10, freq="B", name=None, **kwargs) -> DatetimeIndex:

pandas/_testing/asserters.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -308,7 +308,7 @@ def assert_index_equal(
308308
"""
309309
__tracebackhide__ = True
310310

311-
def _check_types(left, right, obj="Index"):
311+
def _check_types(left, right, obj="Index") -> None:
312312
if not exact:
313313
return
314314

pandas/core/indexes/numeric.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ def _can_hold_na(self) -> bool:
107107
else:
108108
return False
109109

110-
@cache_readonly
110+
@property
111111
def _engine_type(self):
112112
return {
113113
np.int8: libindex.Int8Engine,
@@ -229,7 +229,10 @@ def astype(self, dtype, copy=True):
229229

230230
@doc(Index._should_fallback_to_positional)
231231
def _should_fallback_to_positional(self) -> bool:
232-
return False
232+
if is_float_dtype(self.dtype):
233+
return False
234+
else:
235+
return super()._should_fallback_to_positional()
233236

234237
@doc(Index._convert_slice_indexer)
235238
def _convert_slice_indexer(self, key: slice, kind: str):

pandas/tests/api/test_api.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,7 @@ def test_api(self):
214214
+ self.funcs_to
215215
+ self.private_modules
216216
)
217-
self.check(pd, checkthese, self.ignored)
217+
self.check(namespace=pd, expected=checkthese, ignored=self.ignored)
218218

219219
def test_depr(self):
220220
deprecated_list = (

pandas/tests/base/test_unique.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,12 @@ def test_unique(index_or_series_obj):
2323
if isinstance(obj, pd.MultiIndex):
2424
expected = pd.MultiIndex.from_tuples(unique_values)
2525
expected.names = obj.names
26-
tm.assert_index_equal(result, expected)
26+
tm.assert_index_equal(result, expected, exact=True)
2727
elif isinstance(obj, pd.Index):
2828
expected = pd.Index(unique_values, dtype=obj.dtype)
2929
if is_datetime64tz_dtype(obj.dtype):
3030
expected = expected.normalize()
31-
tm.assert_index_equal(result, expected)
31+
tm.assert_index_equal(result, expected, exact=True)
3232
else:
3333
expected = np.array(unique_values)
3434
tm.assert_numpy_array_equal(result, expected)
@@ -67,7 +67,7 @@ def test_unique_null(null_obj, index_or_series_obj):
6767
if is_datetime64tz_dtype(obj.dtype):
6868
result = result.normalize()
6969
expected = expected.normalize()
70-
tm.assert_index_equal(result, expected)
70+
tm.assert_index_equal(result, expected, exact=True)
7171
else:
7272
expected = np.array(unique_values, dtype=obj.dtype)
7373
tm.assert_numpy_array_equal(result, expected)
@@ -118,7 +118,7 @@ def test_unique_bad_unicode(idx_or_series_w_bad_unicode):
118118

119119
if isinstance(obj, pd.Index):
120120
expected = pd.Index(["\ud83d"], dtype=object)
121-
tm.assert_index_equal(result, expected)
121+
tm.assert_index_equal(result, expected, exact=True)
122122
else:
123123
expected = np.array(["\ud83d"], dtype=object)
124124
tm.assert_numpy_array_equal(result, expected)

0 commit comments

Comments
 (0)