Skip to content

Commit e269b09

Browse files
removing usage of Ops mixin in tests/indexes
1 parent 199896f commit e269b09

File tree

5 files changed

+55
-50
lines changed

5 files changed

+55
-50
lines changed

pandas/conftest.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -841,6 +841,16 @@ def tick_classes(request):
841841
)
842842

843843

844+
@pytest.fixture
845+
def datetime_series():
846+
"""
847+
Fixture for Series of floats with DatetimeIndex
848+
"""
849+
s = tm.makeTimeSeries()
850+
s.name = "ts"
851+
return s
852+
853+
844854
@pytest.fixture
845855
def float_frame():
846856
"""

pandas/tests/indexes/datetimes/test_ops.py

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -16,35 +16,39 @@
1616
bdate_range,
1717
date_range,
1818
)
19-
from pandas.tests.base.test_ops import Ops
19+
from pandas.tests.base.utils import (
20+
check_ops_properties_invalid,
21+
check_ops_properties_valid,
22+
)
2023
import pandas.util.testing as tm
2124

2225
from pandas.tseries.offsets import BDay, BMonthEnd, CDay, Day, Hour
2326

2427
START, END = datetime(2009, 1, 1), datetime(2010, 1, 1)
2528

2629

27-
class TestDatetimeIndexOps(Ops):
28-
def setup_method(self, method):
29-
super().setup_method(method)
30-
mask = lambda x: (isinstance(x, DatetimeIndex) or isinstance(x, PeriodIndex))
31-
self.is_valid_objs = [o for o in self.objs if mask(o)]
32-
self.not_valid_objs = [o for o in self.objs if not mask(o)]
33-
34-
def test_ops_properties(self):
35-
f = lambda x: isinstance(x, DatetimeIndex)
36-
self.check_ops_properties(DatetimeIndex._field_ops, f)
37-
self.check_ops_properties(DatetimeIndex._object_ops, f)
38-
self.check_ops_properties(DatetimeIndex._bool_ops, f)
30+
class TestDatetimeIndexOps:
31+
def test_ops_properties(self, index_or_series_obj):
32+
obj = index_or_series_obj
33+
is_valid = isinstance(obj, (DatetimeIndex, PeriodIndex))
34+
if is_valid:
35+
filter_ = lambda x: isinstance(x, DatetimeIndex)
36+
check_ops_properties_valid(obj, DatetimeIndex._field_ops, filter_)
37+
check_ops_properties_valid(obj, DatetimeIndex._object_ops, filter_)
38+
check_ops_properties_valid(obj, DatetimeIndex._bool_ops, filter_)
39+
else:
40+
check_ops_properties_invalid(obj, DatetimeIndex._field_ops)
41+
check_ops_properties_invalid(obj, DatetimeIndex._object_ops)
42+
check_ops_properties_invalid(obj, DatetimeIndex._bool_ops)
3943

40-
def test_ops_properties_basic(self):
44+
def test_ops_properties_basic(self, datetime_series):
4145

4246
# sanity check that the behavior didn't change
4347
# GH#7206
4448
msg = "'Series' object has no attribute '{}'"
4549
for op in ["year", "day", "second", "weekday"]:
4650
with pytest.raises(AttributeError, match=msg.format(op)):
47-
getattr(self.dt_series, op)
51+
getattr(datetime_series, op)
4852

4953
# attribute access should still work!
5054
s = Series(dict(year=2000, month=1, day=10))

pandas/tests/indexes/period/test_ops.py

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,22 +4,26 @@
44
import pandas as pd
55
from pandas import DatetimeIndex, Index, NaT, PeriodIndex, Series
66
from pandas.core.arrays import PeriodArray
7-
from pandas.tests.base.test_ops import Ops
7+
from pandas.tests.base.utils import (
8+
check_ops_properties_invalid,
9+
check_ops_properties_valid,
10+
)
811
import pandas.util.testing as tm
912

1013

11-
class TestPeriodIndexOps(Ops):
12-
def setup_method(self, method):
13-
super().setup_method(method)
14-
mask = lambda x: (isinstance(x, DatetimeIndex) or isinstance(x, PeriodIndex))
15-
self.is_valid_objs = [o for o in self.objs if mask(o)]
16-
self.not_valid_objs = [o for o in self.objs if not mask(o)]
17-
18-
def test_ops_properties(self):
19-
f = lambda x: isinstance(x, PeriodIndex)
20-
self.check_ops_properties(PeriodArray._field_ops, f)
21-
self.check_ops_properties(PeriodArray._object_ops, f)
22-
self.check_ops_properties(PeriodArray._bool_ops, f)
14+
class TestPeriodIndexOps:
15+
def test_ops_properties(self, index_or_series_obj):
16+
obj = index_or_series_obj
17+
is_valid = isinstance(obj, (DatetimeIndex, PeriodIndex))
18+
if is_valid:
19+
filter_ = lambda x: isinstance(x, PeriodIndex)
20+
check_ops_properties_valid(obj, PeriodArray._field_ops, filter_)
21+
check_ops_properties_valid(obj, PeriodArray._object_ops, filter_)
22+
check_ops_properties_valid(obj, PeriodArray._bool_ops, filter_)
23+
else:
24+
check_ops_properties_invalid(obj, PeriodArray._field_ops)
25+
check_ops_properties_invalid(obj, PeriodArray._object_ops)
26+
check_ops_properties_invalid(obj, PeriodArray._bool_ops)
2327

2428
def test_resolution(self):
2529
for freq, expected in zip(

pandas/tests/indexes/timedeltas/test_ops.py

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,23 +7,20 @@
77

88
import pandas as pd
99
from pandas import Series, TimedeltaIndex, timedelta_range
10-
from pandas.tests.base.test_ops import Ops
10+
from pandas.tests.base.utils import check_ops_properties_valid
1111
import pandas.util.testing as tm
1212

1313
from pandas.tseries.offsets import Day, Hour
1414

1515

16-
class TestTimedeltaIndexOps(Ops):
17-
def setup_method(self, method):
18-
super().setup_method(method)
19-
mask = lambda x: isinstance(x, TimedeltaIndex)
20-
self.is_valid_objs = [o for o in self.objs if mask(o)]
21-
self.not_valid_objs = []
22-
23-
def test_ops_properties(self):
24-
f = lambda x: isinstance(x, TimedeltaIndex)
25-
self.check_ops_properties(TimedeltaIndex._field_ops, f)
26-
self.check_ops_properties(TimedeltaIndex._object_ops, f)
16+
class TestTimedeltaIndexOps:
17+
def test_ops_properties(self, index_or_series_obj):
18+
obj = index_or_series_obj
19+
is_valid = isinstance(obj, TimedeltaIndex)
20+
if is_valid:
21+
filter_ = lambda x: isinstance(x, TimedeltaIndex)
22+
check_ops_properties_valid(obj, TimedeltaIndex._field_ops, filter_)
23+
check_ops_properties_valid(obj, TimedeltaIndex._object_ops, filter_)
2724

2825
def test_value_counts_unique(self):
2926
# GH 7735

pandas/tests/series/conftest.py

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,6 @@
33
import pandas.util.testing as tm
44

55

6-
@pytest.fixture
7-
def datetime_series():
8-
"""
9-
Fixture for Series of floats with DatetimeIndex
10-
"""
11-
s = tm.makeTimeSeries()
12-
s.name = "ts"
13-
return s
14-
15-
166
@pytest.fixture
177
def string_series():
188
"""

0 commit comments

Comments
 (0)