Skip to content

Commit 8f49265

Browse files
started to fixturize pandas/tests/base (#31701)
1 parent bead1c3 commit 8f49265

File tree

5 files changed

+84
-46
lines changed

5 files changed

+84
-46
lines changed

pandas/conftest.py

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
from pandas import DataFrame
1818
import pandas._testing as tm
1919
from pandas.core import ops
20+
from pandas.core.indexes.api import Index, MultiIndex
2021

2122
hypothesis.settings.register_profile(
2223
"ci",
@@ -953,3 +954,69 @@ def __len__(self):
953954
return self._data.__len__()
954955

955956
return TestNonDictMapping
957+
958+
959+
indices_dict = {
960+
"unicode": tm.makeUnicodeIndex(100),
961+
"string": tm.makeStringIndex(100),
962+
"datetime": tm.makeDateIndex(100),
963+
"datetime-tz": tm.makeDateIndex(100, tz="US/Pacific"),
964+
"period": tm.makePeriodIndex(100),
965+
"timedelta": tm.makeTimedeltaIndex(100),
966+
"int": tm.makeIntIndex(100),
967+
"uint": tm.makeUIntIndex(100),
968+
"range": tm.makeRangeIndex(100),
969+
"float": tm.makeFloatIndex(100),
970+
"bool": tm.makeBoolIndex(2),
971+
"categorical": tm.makeCategoricalIndex(100),
972+
"interval": tm.makeIntervalIndex(100),
973+
"empty": Index([]),
974+
"tuples": MultiIndex.from_tuples(zip(["foo", "bar", "baz"], [1, 2, 3])),
975+
"repeats": Index([0, 0, 1, 1, 2, 2]),
976+
}
977+
978+
979+
@pytest.fixture(params=indices_dict.keys())
980+
def indices(request):
981+
# copy to avoid mutation, e.g. setting .name
982+
return indices_dict[request.param].copy()
983+
984+
985+
def _create_series(index):
986+
""" Helper for the _series dict """
987+
size = len(index)
988+
data = np.random.randn(size)
989+
return pd.Series(data, index=index, name="a")
990+
991+
992+
_series = {
993+
f"series-with-{index_id}-index": _create_series(index)
994+
for index_id, index in indices_dict.items()
995+
}
996+
997+
998+
_narrow_dtypes = [
999+
np.float16,
1000+
np.float32,
1001+
np.int8,
1002+
np.int16,
1003+
np.int32,
1004+
np.uint8,
1005+
np.uint16,
1006+
np.uint32,
1007+
]
1008+
_narrow_series = {
1009+
f"{dtype.__name__}-series": tm.makeFloatSeries(name="a").astype(dtype)
1010+
for dtype in _narrow_dtypes
1011+
}
1012+
1013+
_index_or_series_objs = {**indices_dict, **_series, **_narrow_series}
1014+
1015+
1016+
@pytest.fixture(params=_index_or_series_objs.keys())
1017+
def index_or_series_obj(request):
1018+
"""
1019+
Fixture for tests on indexes, series and series with a narrow dtype
1020+
copy to avoid mutation, e.g. setting .name
1021+
"""
1022+
return _index_or_series_objs[request.param].copy(deep=True)

pandas/tests/base/test_ops.py

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -109,26 +109,26 @@ def test_binary_ops(klass, op_name, op):
109109
assert expected_str in getattr(klass, "r" + op_name).__doc__
110110

111111

112-
class TestTranspose(Ops):
112+
class TestTranspose:
113113
errmsg = "the 'axes' parameter is not supported"
114114

115-
def test_transpose(self):
116-
for obj in self.objs:
117-
tm.assert_equal(obj.transpose(), obj)
115+
def test_transpose(self, index_or_series_obj):
116+
obj = index_or_series_obj
117+
tm.assert_equal(obj.transpose(), obj)
118118

119-
def test_transpose_non_default_axes(self):
120-
for obj in self.objs:
121-
with pytest.raises(ValueError, match=self.errmsg):
122-
obj.transpose(1)
123-
with pytest.raises(ValueError, match=self.errmsg):
124-
obj.transpose(axes=1)
119+
def test_transpose_non_default_axes(self, index_or_series_obj):
120+
obj = index_or_series_obj
121+
with pytest.raises(ValueError, match=self.errmsg):
122+
obj.transpose(1)
123+
with pytest.raises(ValueError, match=self.errmsg):
124+
obj.transpose(axes=1)
125125

126-
def test_numpy_transpose(self):
127-
for obj in self.objs:
128-
tm.assert_equal(np.transpose(obj), obj)
126+
def test_numpy_transpose(self, index_or_series_obj):
127+
obj = index_or_series_obj
128+
tm.assert_equal(np.transpose(obj), obj)
129129

130-
with pytest.raises(ValueError, match=self.errmsg):
131-
np.transpose(obj, axes=1)
130+
with pytest.raises(ValueError, match=self.errmsg):
131+
np.transpose(obj, axes=1)
132132

133133

134134
class TestIndexOps(Ops):

pandas/tests/indexes/conftest.py

Lines changed: 0 additions & 29 deletions
This file was deleted.

pandas/tests/indexes/test_base.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
period_range,
3535
)
3636
import pandas._testing as tm
37+
from pandas.conftest import indices_dict
3738
from pandas.core.indexes.api import (
3839
Index,
3940
MultiIndex,
@@ -42,7 +43,6 @@
4243
ensure_index_from_sequences,
4344
)
4445
from pandas.tests.indexes.common import Base
45-
from pandas.tests.indexes.conftest import indices_dict
4646

4747

4848
class TestIndex(Base):

pandas/tests/indexes/test_setops.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
from pandas import Float64Index, Int64Index, RangeIndex, UInt64Index
1414
import pandas._testing as tm
1515
from pandas.api.types import pandas_dtype
16-
from pandas.tests.indexes.conftest import indices_dict
16+
from pandas.conftest import indices_dict
1717

1818
COMPATIBLE_INCONSISTENT_PAIRS = {
1919
(Int64Index, RangeIndex): (tm.makeIntIndex, tm.makeRangeIndex),

0 commit comments

Comments
 (0)