Skip to content

Commit 1c8cb64

Browse files
committed
run tests independently
1 parent 9a282a9 commit 1c8cb64

File tree

1 file changed

+123
-121
lines changed

1 file changed

+123
-121
lines changed

pandas/tests/indexes/datetimes/test_ops.py

Lines changed: 123 additions & 121 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
1+
import pytest
12
import warnings
23
import numpy as np
34
from datetime import timedelta
45

6+
from itertools import product
57
import pandas as pd
68
import pandas.tslib as tslib
79
import pandas.util.testing as tm
@@ -958,134 +960,134 @@ def test_second(self):
958960
tm.assert_index_equal(r1, r2)
959961

960962

961-
class TestDatetimeIndex(tm.TestCase):
962-
963-
# GH 10699
964-
def test_datetime64_with_DateOffset(self):
965-
for klass, assert_func in zip([Series, DatetimeIndex],
966-
[self.assert_series_equal,
967-
tm.assert_index_equal]):
968-
s = klass(date_range('2000-01-01', '2000-01-31'), name='a')
969-
result = s + pd.DateOffset(years=1)
970-
result2 = pd.DateOffset(years=1) + s
971-
exp = klass(date_range('2001-01-01', '2001-01-31'), name='a')
963+
# GH 10699
964+
@pytest.mark.parametrize('klass,assert_func', zip([Series, DatetimeIndex],
965+
[tm.assert_series_equal,
966+
tm.assert_index_equal]))
967+
def test_datetime64_with_DateOffset(klass, assert_func):
968+
s = klass(date_range('2000-01-01', '2000-01-31'), name='a')
969+
result = s + pd.DateOffset(years=1)
970+
result2 = pd.DateOffset(years=1) + s
971+
exp = klass(date_range('2001-01-01', '2001-01-31'), name='a')
972+
assert_func(result, exp)
973+
assert_func(result2, exp)
974+
975+
result = s - pd.DateOffset(years=1)
976+
exp = klass(date_range('1999-01-01', '1999-01-31'), name='a')
977+
assert_func(result, exp)
978+
979+
s = klass([Timestamp('2000-01-15 00:15:00', tz='US/Central'),
980+
pd.Timestamp('2000-02-15', tz='US/Central')], name='a')
981+
result = s + pd.offsets.Day()
982+
result2 = pd.offsets.Day() + s
983+
exp = klass([Timestamp('2000-01-16 00:15:00', tz='US/Central'),
984+
Timestamp('2000-02-16', tz='US/Central')], name='a')
985+
assert_func(result, exp)
986+
assert_func(result2, exp)
987+
988+
s = klass([Timestamp('2000-01-15 00:15:00', tz='US/Central'),
989+
pd.Timestamp('2000-02-15', tz='US/Central')], name='a')
990+
result = s + pd.offsets.MonthEnd()
991+
result2 = pd.offsets.MonthEnd() + s
992+
exp = klass([Timestamp('2000-01-31 00:15:00', tz='US/Central'),
993+
Timestamp('2000-02-29', tz='US/Central')], name='a')
994+
assert_func(result, exp)
995+
assert_func(result2, exp)
996+
997+
# array of offsets - valid for Series only
998+
if klass is Series:
999+
with tm.assert_produces_warning(PerformanceWarning):
1000+
s = klass([Timestamp('2000-1-1'), Timestamp('2000-2-1')])
1001+
result = s + Series([pd.offsets.DateOffset(years=1),
1002+
pd.offsets.MonthEnd()])
1003+
exp = klass([Timestamp('2001-1-1'), Timestamp('2000-2-29')
1004+
])
9721005
assert_func(result, exp)
973-
assert_func(result2, exp)
9741006

975-
result = s - pd.DateOffset(years=1)
976-
exp = klass(date_range('1999-01-01', '1999-01-31'), name='a')
1007+
# same offset
1008+
result = s + Series([pd.offsets.DateOffset(years=1),
1009+
pd.offsets.DateOffset(years=1)])
1010+
exp = klass([Timestamp('2001-1-1'), Timestamp('2001-2-1')])
9771011
assert_func(result, exp)
9781012

979-
s = klass([Timestamp('2000-01-15 00:15:00', tz='US/Central'),
980-
pd.Timestamp('2000-02-15', tz='US/Central')], name='a')
981-
result = s + pd.offsets.Day()
982-
result2 = pd.offsets.Day() + s
983-
exp = klass([Timestamp('2000-01-16 00:15:00', tz='US/Central'),
984-
Timestamp('2000-02-16', tz='US/Central')], name='a')
985-
assert_func(result, exp)
986-
assert_func(result2, exp)
987-
988-
s = klass([Timestamp('2000-01-15 00:15:00', tz='US/Central'),
989-
pd.Timestamp('2000-02-15', tz='US/Central')], name='a')
990-
result = s + pd.offsets.MonthEnd()
991-
result2 = pd.offsets.MonthEnd() + s
992-
exp = klass([Timestamp('2000-01-31 00:15:00', tz='US/Central'),
993-
Timestamp('2000-02-29', tz='US/Central')], name='a')
994-
assert_func(result, exp)
995-
assert_func(result2, exp)
996-
997-
# array of offsets - valid for Series only
998-
if klass is Series:
999-
with tm.assert_produces_warning(PerformanceWarning):
1000-
s = klass([Timestamp('2000-1-1'), Timestamp('2000-2-1')])
1001-
result = s + Series([pd.offsets.DateOffset(years=1),
1002-
pd.offsets.MonthEnd()])
1003-
exp = klass([Timestamp('2001-1-1'), Timestamp('2000-2-29')
1004-
])
1005-
assert_func(result, exp)
1006-
1007-
# same offset
1008-
result = s + Series([pd.offsets.DateOffset(years=1),
1009-
pd.offsets.DateOffset(years=1)])
1010-
exp = klass([Timestamp('2001-1-1'), Timestamp('2001-2-1')])
1011-
assert_func(result, exp)
1012-
1013-
s = klass([Timestamp('2000-01-05 00:15:00'),
1013+
s = klass([Timestamp('2000-01-05 00:15:00'),
1014+
Timestamp('2000-01-31 00:23:00'),
1015+
Timestamp('2000-01-01'),
1016+
Timestamp('2000-03-31'),
1017+
Timestamp('2000-02-29'),
1018+
Timestamp('2000-12-31'),
1019+
Timestamp('2000-05-15'),
1020+
Timestamp('2001-06-15')])
1021+
1022+
# DateOffset relativedelta fastpath
1023+
relative_kwargs = [('years', 2), ('months', 5), ('days', 3),
1024+
('hours', 5), ('minutes', 10), ('seconds', 2),
1025+
('microseconds', 5)]
1026+
for i, kwd in enumerate(relative_kwargs):
1027+
op = pd.DateOffset(**dict([kwd]))
1028+
assert_func(klass([x + op for x in s]), s + op)
1029+
assert_func(klass([x - op for x in s]), s - op)
1030+
op = pd.DateOffset(**dict(relative_kwargs[:i + 1]))
1031+
assert_func(klass([x + op for x in s]), s + op)
1032+
assert_func(klass([x - op for x in s]), s - op)
1033+
1034+
# assert these are equal on a piecewise basis
1035+
offsets = ['YearBegin', ('YearBegin', {'month': 5}),
1036+
'YearEnd', ('YearEnd', {'month': 5}),
1037+
'MonthBegin', 'MonthEnd',
1038+
'SemiMonthEnd', 'SemiMonthBegin',
1039+
'Week', ('Week', {'weekday': 3}),
1040+
'BusinessDay', 'BDay', 'QuarterEnd', 'QuarterBegin',
1041+
'CustomBusinessDay', 'CDay', 'CBMonthEnd',
1042+
'CBMonthBegin', 'BMonthBegin', 'BMonthEnd',
1043+
'BusinessHour', 'BYearBegin', 'BYearEnd',
1044+
'BQuarterBegin', ('LastWeekOfMonth', {'weekday': 2}),
1045+
('FY5253Quarter', {'qtr_with_extra_week': 1,
1046+
'startingMonth': 1,
1047+
'weekday': 2,
1048+
'variation': 'nearest'}),
1049+
('FY5253', {'weekday': 0,
1050+
'startingMonth': 2,
1051+
'variation':
1052+
'nearest'}),
1053+
('WeekOfMonth', {'weekday': 2,
1054+
'week': 2}),
1055+
'Easter', ('DateOffset', {'day': 4}),
1056+
('DateOffset', {'month': 5})]
1057+
1058+
with warnings.catch_warnings(record=True):
1059+
for normalize in (True, False):
1060+
for do in offsets:
1061+
if isinstance(do, tuple):
1062+
do, kwargs = do
1063+
else:
1064+
do = do
1065+
kwargs = {}
1066+
1067+
for n in [0, 5]:
1068+
if (do in ['WeekOfMonth', 'LastWeekOfMonth',
1069+
'FY5253Quarter', 'FY5253'] and n == 0):
1070+
continue
1071+
op = getattr(pd.offsets, do)(n,
1072+
normalize=normalize,
1073+
**kwargs)
1074+
assert_func(klass([x + op for x in s]), s + op)
1075+
assert_func(klass([x - op for x in s]), s - op)
1076+
assert_func(klass([op + x for x in s]), op + s)
1077+
1078+
1079+
@pytest.mark.parametrize('years,months', product([-1, 0, 1], [-2, 0, 2]))
1080+
def test_shift_months(years, months):
1081+
s = DatetimeIndex([Timestamp('2000-01-05 00:15:00'),
10141082
Timestamp('2000-01-31 00:23:00'),
10151083
Timestamp('2000-01-01'),
1016-
Timestamp('2000-03-31'),
10171084
Timestamp('2000-02-29'),
1018-
Timestamp('2000-12-31'),
1019-
Timestamp('2000-05-15'),
1020-
Timestamp('2001-06-15')])
1021-
1022-
# DateOffset relativedelta fastpath
1023-
relative_kwargs = [('years', 2), ('months', 5), ('days', 3),
1024-
('hours', 5), ('minutes', 10), ('seconds', 2),
1025-
('microseconds', 5)]
1026-
for i, kwd in enumerate(relative_kwargs):
1027-
op = pd.DateOffset(**dict([kwd]))
1028-
assert_func(klass([x + op for x in s]), s + op)
1029-
assert_func(klass([x - op for x in s]), s - op)
1030-
op = pd.DateOffset(**dict(relative_kwargs[:i + 1]))
1031-
assert_func(klass([x + op for x in s]), s + op)
1032-
assert_func(klass([x - op for x in s]), s - op)
1033-
1034-
# assert these are equal on a piecewise basis
1035-
offsets = ['YearBegin', ('YearBegin', {'month': 5}), 'YearEnd',
1036-
('YearEnd', {'month': 5}), 'MonthBegin', 'MonthEnd',
1037-
'SemiMonthEnd', 'SemiMonthBegin',
1038-
'Week', ('Week', {
1039-
'weekday': 3
1040-
}), 'BusinessDay', 'BDay', 'QuarterEnd', 'QuarterBegin',
1041-
'CustomBusinessDay', 'CDay', 'CBMonthEnd',
1042-
'CBMonthBegin', 'BMonthBegin', 'BMonthEnd',
1043-
'BusinessHour', 'BYearBegin', 'BYearEnd',
1044-
'BQuarterBegin', ('LastWeekOfMonth', {
1045-
'weekday': 2
1046-
}), ('FY5253Quarter', {'qtr_with_extra_week': 1,
1047-
'startingMonth': 1,
1048-
'weekday': 2,
1049-
'variation': 'nearest'}),
1050-
('FY5253', {'weekday': 0,
1051-
'startingMonth': 2,
1052-
'variation':
1053-
'nearest'}), ('WeekOfMonth', {'weekday': 2,
1054-
'week': 2}),
1055-
'Easter', ('DateOffset', {'day': 4}),
1056-
('DateOffset', {'month': 5})]
1057-
1058-
with warnings.catch_warnings(record=True):
1059-
for normalize in (True, False):
1060-
for do in offsets:
1061-
if isinstance(do, tuple):
1062-
do, kwargs = do
1063-
else:
1064-
do = do
1065-
kwargs = {}
1066-
1067-
for n in [0, 5]:
1068-
if (do in ['WeekOfMonth', 'LastWeekOfMonth',
1069-
'FY5253Quarter', 'FY5253'] and n == 0):
1070-
continue
1071-
op = getattr(pd.offsets, do)(n,
1072-
normalize=normalize,
1073-
**kwargs)
1074-
assert_func(klass([x + op for x in s]), s + op)
1075-
assert_func(klass([x - op for x in s]), s - op)
1076-
assert_func(klass([op + x for x in s]), op + s)
1077-
1078-
def test_shift_months(self):
1079-
s = DatetimeIndex([Timestamp('2000-01-05 00:15:00'), Timestamp(
1080-
'2000-01-31 00:23:00'), Timestamp('2000-01-01'), Timestamp(
1081-
'2000-02-29'), Timestamp('2000-12-31')])
1082-
for years in [-1, 0, 1]:
1083-
for months in [-2, 0, 2]:
1084-
actual = DatetimeIndex(tslib.shift_months(s.asi8, years * 12 +
1085-
months))
1086-
expected = DatetimeIndex([x + offsets.DateOffset(
1087-
years=years, months=months) for x in s])
1088-
tm.assert_index_equal(actual, expected)
1085+
Timestamp('2000-12-31')])
1086+
actual = DatetimeIndex(tslib.shift_months(s.asi8, years * 12 +
1087+
months))
1088+
expected = DatetimeIndex([x + offsets.DateOffset(
1089+
years=years, months=months) for x in s])
1090+
tm.assert_index_equal(actual, expected)
10891091

10901092

10911093
class TestBusinessDatetimeIndex(tm.TestCase):

0 commit comments

Comments
 (0)