Skip to content

Commit afb2caa

Browse files
topper-123Terji Petersen
authored and
MarcoGorelli
committed
DEPR: remove Int|Uint|Float64Index from conftest & _testing (pandas-dev#49678)
* DEPR: remove Int|Uint|Float64Index from conftest + related * fix failures * fix flake8 Co-authored-by: Terji Petersen <[email protected]>
1 parent 43bbf5a commit afb2caa

File tree

5 files changed

+96
-58
lines changed

5 files changed

+96
-58
lines changed

pandas/_testing/__init__.py

+18-16
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
is_float_dtype,
3535
is_integer_dtype,
3636
is_sequence,
37+
is_signed_integer_dtype,
3738
is_unsigned_integer_dtype,
3839
pandas_dtype,
3940
)
@@ -106,12 +107,7 @@
106107
use_numexpr,
107108
with_csv_dialect,
108109
)
109-
from pandas.core.api import (
110-
Float64Index,
111-
Int64Index,
112-
NumericIndex,
113-
UInt64Index,
114-
)
110+
from pandas.core.api import NumericIndex
115111
from pandas.core.arrays import (
116112
BaseMaskedArray,
117113
ExtensionArray,
@@ -350,7 +346,7 @@ def makeBoolIndex(k: int = 10, name=None) -> Index:
350346
return Index([False, True] + [False] * (k - 2), name=name)
351347

352348

353-
def makeNumericIndex(k: int = 10, name=None, *, dtype) -> NumericIndex:
349+
def makeNumericIndex(k: int = 10, *, name=None, dtype: Dtype | None) -> NumericIndex:
354350
dtype = pandas_dtype(dtype)
355351
assert isinstance(dtype, np.dtype)
356352

@@ -368,23 +364,29 @@ def makeNumericIndex(k: int = 10, name=None, *, dtype) -> NumericIndex:
368364
return NumericIndex(values, dtype=dtype, name=name)
369365

370366

371-
def makeIntIndex(k: int = 10, name=None) -> Int64Index:
372-
base_idx = makeNumericIndex(k, name=name, dtype="int64")
373-
return Int64Index(base_idx)
367+
def makeIntIndex(k: int = 10, *, name=None, dtype: Dtype = "int64") -> NumericIndex:
368+
dtype = pandas_dtype(dtype)
369+
if not is_signed_integer_dtype(dtype):
370+
raise TypeError(f"Wrong dtype {dtype}")
371+
return makeNumericIndex(k, name=name, dtype=dtype)
374372

375373

376-
def makeUIntIndex(k: int = 10, name=None) -> UInt64Index:
377-
base_idx = makeNumericIndex(k, name=name, dtype="uint64")
378-
return UInt64Index(base_idx)
374+
def makeUIntIndex(k: int = 10, *, name=None, dtype: Dtype = "uint64") -> NumericIndex:
375+
dtype = pandas_dtype(dtype)
376+
if not is_unsigned_integer_dtype(dtype):
377+
raise TypeError(f"Wrong dtype {dtype}")
378+
return makeNumericIndex(k, name=name, dtype=dtype)
379379

380380

381381
def makeRangeIndex(k: int = 10, name=None, **kwargs) -> RangeIndex:
382382
return RangeIndex(0, k, 1, name=name, **kwargs)
383383

384384

385-
def makeFloatIndex(k: int = 10, name=None) -> Float64Index:
386-
base_idx = makeNumericIndex(k, name=name, dtype="float64")
387-
return Float64Index(base_idx)
385+
def makeFloatIndex(k: int = 10, *, name=None, dtype: Dtype = "float64") -> NumericIndex:
386+
dtype = pandas_dtype(dtype)
387+
if not is_float_dtype(dtype):
388+
raise TypeError(f"Wrong dtype {dtype}")
389+
return makeNumericIndex(k, name=name, dtype=dtype)
388390

389391

390392
def makeDateIndex(

pandas/conftest.py

+16-17
Original file line numberDiff line numberDiff line change
@@ -593,24 +593,21 @@ def _create_mi_with_dt64tz_level():
593593
"datetime-tz": tm.makeDateIndex(100, tz="US/Pacific"),
594594
"period": tm.makePeriodIndex(100),
595595
"timedelta": tm.makeTimedeltaIndex(100),
596-
"int": tm.makeIntIndex(100),
597-
"uint": tm.makeUIntIndex(100),
598596
"range": tm.makeRangeIndex(100),
599-
"float": tm.makeFloatIndex(100),
600-
"complex64": tm.makeNumericIndex(100, dtype="float64").astype("complex64"),
601-
"complex128": tm.makeNumericIndex(100, dtype="float64").astype("complex128"),
602-
"num_int64": tm.makeNumericIndex(100, dtype="int64"),
603-
"num_int32": tm.makeNumericIndex(100, dtype="int32"),
604-
"num_int16": tm.makeNumericIndex(100, dtype="int16"),
605-
"num_int8": tm.makeNumericIndex(100, dtype="int8"),
606-
"num_uint64": tm.makeNumericIndex(100, dtype="uint64"),
607-
"num_uint32": tm.makeNumericIndex(100, dtype="uint32"),
608-
"num_uint16": tm.makeNumericIndex(100, dtype="uint16"),
609-
"num_uint8": tm.makeNumericIndex(100, dtype="uint8"),
610-
"num_float64": tm.makeNumericIndex(100, dtype="float64"),
611-
"num_float32": tm.makeNumericIndex(100, dtype="float32"),
597+
"int8": tm.makeIntIndex(100, dtype="int8"),
598+
"int16": tm.makeIntIndex(100, dtype="int16"),
599+
"int32": tm.makeIntIndex(100, dtype="int32"),
600+
"int64": tm.makeIntIndex(100, dtype="int64"),
601+
"uint8": tm.makeUIntIndex(100, dtype="uint8"),
602+
"uint16": tm.makeUIntIndex(100, dtype="uint16"),
603+
"uint32": tm.makeUIntIndex(100, dtype="uint32"),
604+
"uint64": tm.makeUIntIndex(100, dtype="uint64"),
605+
"float32": tm.makeFloatIndex(100, dtype="float32"),
606+
"float64": tm.makeFloatIndex(100, dtype="float64"),
612607
"bool-object": tm.makeBoolIndex(10).astype(object),
613608
"bool-dtype": Index(np.random.randn(10) < 0),
609+
"complex64": tm.makeNumericIndex(100, dtype="float64").astype("complex64"),
610+
"complex128": tm.makeNumericIndex(100, dtype="float64").astype("complex128"),
614611
"categorical": tm.makeCategoricalIndex(100),
615612
"interval": tm.makeIntervalIndex(100),
616613
"empty": Index([]),
@@ -670,8 +667,10 @@ def index_flat(request):
670667
key
671668
for key, value in indices_dict.items()
672669
if not (
673-
key in ["int", "uint", "range", "empty", "repeats", "bool-dtype"]
674-
or key.startswith("num_")
670+
key.startswith("int")
671+
or key.startswith("uint")
672+
or key.startswith("float")
673+
or key in ["range", "empty", "repeats", "bool-dtype"]
675674
)
676675
and not isinstance(value, MultiIndex)
677676
]

pandas/tests/indexes/test_base.py

+52-14
Original file line numberDiff line numberDiff line change
@@ -340,14 +340,17 @@ def test_constructor_empty_special(self, empty, klass):
340340
"index",
341341
[
342342
"datetime",
343-
"float",
344-
"int",
343+
"float64",
344+
"float32",
345+
"int64",
346+
"int32",
345347
"period",
346348
"range",
347349
"repeats",
348350
"timedelta",
349351
"tuples",
350-
"uint",
352+
"uint64",
353+
"uint32",
351354
],
352355
indirect=True,
353356
)
@@ -375,7 +378,11 @@ def test_view_with_args_object_array_raises(self, index):
375378
with pytest.raises(TypeError, match=msg):
376379
index.view("i8")
377380

378-
@pytest.mark.parametrize("index", ["int", "range"], indirect=True)
381+
@pytest.mark.parametrize(
382+
"index",
383+
["int64", "int32", "range"],
384+
indirect=True,
385+
)
379386
def test_astype(self, index):
380387
casted = index.astype("i8")
381388

@@ -474,7 +481,11 @@ def test_fancy(self, simple_index):
474481
for i in sl:
475482
assert i == sl[sl.get_loc(i)]
476483

477-
@pytest.mark.parametrize("index", ["string", "int", "float"], indirect=True)
484+
@pytest.mark.parametrize(
485+
"index",
486+
["string", "int64", "int32", "uint64", "uint32", "float64", "float32"],
487+
indirect=True,
488+
)
478489
@pytest.mark.parametrize("dtype", [np.int_, np.bool_])
479490
def test_empty_fancy(self, index, dtype):
480491
empty_arr = np.array([], dtype=dtype)
@@ -483,7 +494,11 @@ def test_empty_fancy(self, index, dtype):
483494
assert index[[]].identical(empty_index)
484495
assert index[empty_arr].identical(empty_index)
485496

486-
@pytest.mark.parametrize("index", ["string", "int", "float"], indirect=True)
497+
@pytest.mark.parametrize(
498+
"index",
499+
["string", "int64", "int32", "uint64", "uint32", "float64", "float32"],
500+
indirect=True,
501+
)
487502
def test_empty_fancy_raises(self, index):
488503
# DatetimeIndex is excluded, because it overrides getitem and should
489504
# be tested separately.
@@ -638,9 +653,13 @@ def test_append_empty_preserve_name(self, name, expected):
638653
("bool-object", False),
639654
("bool-dtype", False),
640655
("categorical", False),
641-
("int", True),
656+
("int64", True),
657+
("int32", True),
658+
("uint64", True),
659+
("uint32", True),
642660
("datetime", False),
643-
("float", True),
661+
("float64", True),
662+
("float32", True),
644663
],
645664
indirect=["index"],
646665
)
@@ -654,9 +673,13 @@ def test_is_numeric(self, index, expected):
654673
("bool-object", True),
655674
("bool-dtype", False),
656675
("categorical", False),
657-
("int", False),
676+
("int64", False),
677+
("int32", False),
678+
("uint64", False),
679+
("uint32", False),
658680
("datetime", False),
659-
("float", False),
681+
("float64", False),
682+
("float32", False),
660683
],
661684
indirect=["index"],
662685
)
@@ -700,7 +723,9 @@ def test_logical_compat(self, op, simple_index):
700723
index = simple_index
701724
assert getattr(index, op)() == getattr(index.values, op)()
702725

703-
@pytest.mark.parametrize("index", ["string", "int", "float"], indirect=True)
726+
@pytest.mark.parametrize(
727+
"index", ["string", "int64", "int32", "float64", "float32"], indirect=True
728+
)
704729
def test_drop_by_str_label(self, index):
705730
n = len(index)
706731
drop = index[list(range(5, 10))]
@@ -713,13 +738,17 @@ def test_drop_by_str_label(self, index):
713738
expected = index[1:]
714739
tm.assert_index_equal(dropped, expected)
715740

716-
@pytest.mark.parametrize("index", ["string", "int", "float"], indirect=True)
741+
@pytest.mark.parametrize(
742+
"index", ["string", "int64", "int32", "float64", "float32"], indirect=True
743+
)
717744
@pytest.mark.parametrize("keys", [["foo", "bar"], ["1", "bar"]])
718745
def test_drop_by_str_label_raises_missing_keys(self, index, keys):
719746
with pytest.raises(KeyError, match=""):
720747
index.drop(keys)
721748

722-
@pytest.mark.parametrize("index", ["string", "int", "float"], indirect=True)
749+
@pytest.mark.parametrize(
750+
"index", ["string", "int64", "int32", "float64", "float32"], indirect=True
751+
)
723752
def test_drop_by_str_label_errors_ignore(self, index):
724753
n = len(index)
725754
drop = index[list(range(5, 10))]
@@ -940,7 +969,16 @@ def test_slice_keep_name(self):
940969

941970
@pytest.mark.parametrize(
942971
"index",
943-
["string", "datetime", "int", "uint", "float"],
972+
[
973+
"string",
974+
"datetime",
975+
"int64",
976+
"int32",
977+
"uint64",
978+
"uint32",
979+
"float64",
980+
"float32",
981+
],
944982
indirect=True,
945983
)
946984
def test_join_self(self, index, join_type):

pandas/tests/resample/test_time_grouper.py

+7-6
Original file line numberDiff line numberDiff line change
@@ -78,17 +78,18 @@ def f(df):
7878

7979

8080
@pytest.mark.parametrize(
81-
"name, func",
81+
"func",
8282
[
83-
("Int64Index", tm.makeIntIndex),
84-
("Index", tm.makeStringIndex),
85-
("Float64Index", tm.makeFloatIndex),
86-
("MultiIndex", lambda m: tm.makeCustomIndex(m, 2)),
83+
tm.makeIntIndex,
84+
tm.makeStringIndex,
85+
tm.makeFloatIndex,
86+
(lambda m: tm.makeCustomIndex(m, 2)),
8787
],
8888
)
89-
def test_fails_on_no_datetime_index(name, func):
89+
def test_fails_on_no_datetime_index(func):
9090
n = 2
9191
index = func(n)
92+
name = type(index).__name__
9293
df = DataFrame({"a": np.random.randn(n)}, index=index)
9394

9495
msg = (

pandas/tseries/frequencies.py

+3-5
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131

3232
from pandas.core.dtypes.common import (
3333
is_datetime64_dtype,
34+
is_numeric_dtype,
3435
is_period_dtype,
3536
is_timedelta64_dtype,
3637
)
@@ -130,10 +131,7 @@ def infer_freq(index) -> str | None:
130131
"""
131132
from pandas.core.api import (
132133
DatetimeIndex,
133-
Float64Index,
134134
Index,
135-
Int64Index,
136-
RangeIndex,
137135
)
138136

139137
if isinstance(index, ABCSeries):
@@ -164,9 +162,9 @@ def infer_freq(index) -> str | None:
164162
return inferer.get_freq()
165163

166164
if isinstance(index, Index) and not isinstance(index, DatetimeIndex):
167-
if isinstance(index, (Int64Index, Float64Index, RangeIndex)):
165+
if is_numeric_dtype(index):
168166
raise TypeError(
169-
f"cannot infer freq from a non-convertible index type {type(index)}"
167+
f"cannot infer freq from a non-convertible index of dtype {index.dtype}"
170168
)
171169
index = index._values
172170

0 commit comments

Comments
 (0)