def test_repr(self): expected = "<BusinessQuarterBegin: startingMonth=3>" assert repr(BQuarterBegin()) == expected expected = "<BusinessQuarterBegin: startingMonth=3>" assert repr(BQuarterBegin(startingMonth=3)) == expected expected = "<BusinessQuarterBegin: startingMonth=1>" assert repr(BQuarterBegin(startingMonth=1)) == expected
'BQ-FEB' : BQuarterEnd(startingMonth=2), 'BQ-MAR' : BQuarterEnd(startingMonth=3), # 'BQ' : BQuarterEnd(startingMonth=3), 'BQ-APR' : BQuarterEnd(startingMonth=4), 'BQ-MAY' : BQuarterEnd(startingMonth=5), 'BQ-JUN' : BQuarterEnd(startingMonth=6), 'BQ-JUL' : BQuarterEnd(startingMonth=7), 'BQ-AUG' : BQuarterEnd(startingMonth=8), 'BQ-SEP' : BQuarterEnd(startingMonth=9), 'BQ-OCT' : BQuarterEnd(startingMonth=10), 'BQ-NOV' : BQuarterEnd(startingMonth=11), 'BQ-DEC' : BQuarterEnd(startingMonth=12), # Quarterly - Business (Start) 'BQS-JAN' : BQuarterBegin(startingMonth=1), 'BQS' : BQuarterBegin(startingMonth=1), 'BQS-FEB' : BQuarterBegin(startingMonth=2), 'BQS-MAR' : BQuarterBegin(startingMonth=3), 'BQS-APR' : BQuarterBegin(startingMonth=4), 'BQS-MAY' : BQuarterBegin(startingMonth=5), 'BQS-JUN' : BQuarterBegin(startingMonth=6), 'BQS-JUL' : BQuarterBegin(startingMonth=7), 'BQS-AUG' : BQuarterBegin(startingMonth=8), 'BQS-SEP' : BQuarterBegin(startingMonth=9), 'BQS-OCT' : BQuarterBegin(startingMonth=10), 'BQS-NOV' : BQuarterBegin(startingMonth=11), 'BQS-DEC' : BQuarterBegin(startingMonth=12), # Weekly 'W-MON' : Week(weekday=0),
def test_offset_corner_case(self): # corner offset = BQuarterBegin(n=-1, startingMonth=1) assert datetime(2007, 4, 3) + offset == datetime(2007, 4, 2)
def test_isAnchored(self): assert BQuarterBegin(startingMonth=1).isAnchored() assert BQuarterBegin().isAnchored() assert not BQuarterBegin(2, startingMonth=1).isAnchored()
class TestBQuarterBegin(Base): _offset = BQuarterBegin def test_repr(self): expected = "<BusinessQuarterBegin: startingMonth=3>" assert repr(BQuarterBegin()) == expected expected = "<BusinessQuarterBegin: startingMonth=3>" assert repr(BQuarterBegin(startingMonth=3)) == expected expected = "<BusinessQuarterBegin: startingMonth=1>" assert repr(BQuarterBegin(startingMonth=1)) == expected def test_isAnchored(self): assert BQuarterBegin(startingMonth=1).isAnchored() assert BQuarterBegin().isAnchored() assert not BQuarterBegin(2, startingMonth=1).isAnchored() def test_offset_corner_case(self): # corner offset = BQuarterBegin(n=-1, startingMonth=1) assert datetime(2007, 4, 3) + offset == datetime(2007, 4, 2) offset_cases = [] offset_cases.append((BQuarterBegin(startingMonth=1), { datetime(2008, 1, 1): datetime(2008, 4, 1), datetime(2008, 1, 31): datetime(2008, 4, 1), datetime(2008, 2, 15): datetime(2008, 4, 1), datetime(2008, 2, 29): datetime(2008, 4, 1), datetime(2008, 3, 15): datetime(2008, 4, 1), datetime(2008, 3, 31): datetime(2008, 4, 1), datetime(2008, 4, 15): datetime(2008, 7, 1), datetime(2007, 3, 15): datetime(2007, 4, 2), datetime(2007, 2, 28): datetime(2007, 4, 2), datetime(2007, 1, 1): datetime(2007, 4, 2), datetime(2007, 4, 15): datetime(2007, 7, 2), datetime(2007, 7, 1): datetime(2007, 7, 2), datetime(2007, 4, 1): datetime(2007, 4, 2), datetime(2007, 4, 2): datetime(2007, 7, 2), datetime(2008, 4, 30): datetime(2008, 7, 1)})) offset_cases.append((BQuarterBegin(startingMonth=2), { datetime(2008, 1, 1): datetime(2008, 2, 1), datetime(2008, 1, 31): datetime(2008, 2, 1), datetime(2008, 1, 15): datetime(2008, 2, 1), datetime(2008, 2, 29): datetime(2008, 5, 1), datetime(2008, 3, 15): datetime(2008, 5, 1), datetime(2008, 3, 31): datetime(2008, 5, 1), datetime(2008, 4, 15): datetime(2008, 5, 1), datetime(2008, 8, 15): datetime(2008, 11, 3), datetime(2008, 9, 15): datetime(2008, 11, 3), datetime(2008, 11, 1): datetime(2008, 11, 3), datetime(2008, 4, 30): datetime(2008, 5, 1)})) offset_cases.append((BQuarterBegin(startingMonth=1, n=0), { datetime(2008, 1, 1): datetime(2008, 1, 1), datetime(2007, 12, 31): datetime(2008, 1, 1), datetime(2008, 2, 15): datetime(2008, 4, 1), datetime(2008, 2, 29): datetime(2008, 4, 1), datetime(2008, 1, 15): datetime(2008, 4, 1), datetime(2008, 2, 27): datetime(2008, 4, 1), datetime(2008, 3, 15): datetime(2008, 4, 1), datetime(2007, 4, 1): datetime(2007, 4, 2), datetime(2007, 4, 2): datetime(2007, 4, 2), datetime(2007, 7, 1): datetime(2007, 7, 2), datetime(2007, 4, 15): datetime(2007, 7, 2), datetime(2007, 7, 2): datetime(2007, 7, 2)})) offset_cases.append((BQuarterBegin(startingMonth=1, n=-1), { datetime(2008, 1, 1): datetime(2007, 10, 1), datetime(2008, 1, 31): datetime(2008, 1, 1), datetime(2008, 2, 15): datetime(2008, 1, 1), datetime(2008, 2, 29): datetime(2008, 1, 1), datetime(2008, 3, 15): datetime(2008, 1, 1), datetime(2008, 3, 31): datetime(2008, 1, 1), datetime(2008, 4, 15): datetime(2008, 4, 1), datetime(2007, 7, 3): datetime(2007, 7, 2), datetime(2007, 4, 3): datetime(2007, 4, 2), datetime(2007, 7, 2): datetime(2007, 4, 2), datetime(2008, 4, 1): datetime(2008, 1, 1)})) offset_cases.append((BQuarterBegin(startingMonth=1, n=2), { datetime(2008, 1, 1): datetime(2008, 7, 1), datetime(2008, 1, 15): datetime(2008, 7, 1), datetime(2008, 2, 29): datetime(2008, 7, 1), datetime(2008, 3, 15): datetime(2008, 7, 1), datetime(2007, 3, 31): datetime(2007, 7, 2), datetime(2007, 4, 15): datetime(2007, 10, 1), datetime(2008, 4, 30): datetime(2008, 10, 1)})) @pytest.mark.parametrize('case', offset_cases) def test_offset(self, case): offset, cases = case for base, expected in compat.iteritems(cases): assert_offset_equal(offset, base, expected)
rng = pd.date_range(start='1/1/2000', periods=100000, freq='T') ser = pd.Series(rng) res = rng + offset res_v2 = offset.apply_index(rng) assert (res == res_v2).all() assert res[0] == rng[0] + offset assert res[-1] == rng[-1] + offset res2 = ser + offset # apply_index is only for indexes, not series, so no res2_v2 assert res2.iloc[0] == ser.iloc[0] + offset assert res2.iloc[-1] == ser.iloc[-1] + offset @pytest.mark.parametrize('offset', [QuarterBegin(), QuarterEnd(), BQuarterBegin(), BQuarterEnd()]) def test_on_offset(offset): dates = [datetime(2016, m, d) for m in [10, 11, 12] for d in [1, 2, 3, 28, 29, 30, 31] if not (m == 11 and d == 31)] for date in dates: res = offset.onOffset(date) slow_version = date == (date + offset) - offset assert res == slow_version # -------------------------------------------------------------------- # Months class TestMonthBegin(Base): _offset = MonthBegin
ser = pd.Series(rng) res = rng + offset assert res.freq is None # not retained res_v2 = offset.apply_index(rng) assert (res == res_v2).all() assert res[0] == rng[0] + offset assert res[-1] == rng[-1] + offset res2 = ser + offset # apply_index is only for indexes, not series, so no res2_v2 assert res2.iloc[0] == ser.iloc[0] + offset assert res2.iloc[-1] == ser.iloc[-1] + offset @pytest.mark.parametrize( "offset", [QuarterBegin(), QuarterEnd(), BQuarterBegin(), BQuarterEnd()] ) def test_on_offset(offset): dates = [ datetime(2016, m, d) for m in [10, 11, 12] for d in [1, 2, 3, 28, 29, 30, 31] if not (m == 11 and d == 31) ] for date in dates: res = offset.is_on_offset(date) slow_version = date == (date + offset) - offset assert res == slow_version # --------------------------------------------------------------------
res = rng + offset res_v2 = offset.apply_index(rng) assert (res == res_v2).all() assert res[0] == rng[0] + offset assert res[-1] == rng[-1] + offset res2 = ser + offset # apply_index is only for indexes, not series, so no res2_v2 assert res2.iloc[0] == ser.iloc[0] + offset assert res2.iloc[-1] == ser.iloc[-1] + offset @pytest.mark.parametrize( 'offset', [QuarterBegin(), QuarterEnd(), BQuarterBegin(), BQuarterEnd()]) def test_on_offset(offset): dates = [ datetime(2016, m, d) for m in [10, 11, 12] for d in [1, 2, 3, 28, 29, 30, 31] if not (m == 11 and d == 31) ] for date in dates: res = offset.onOffset(date) slow_version = date == (date + offset) - offset assert res == slow_version # -------------------------------------------------------------------- # Months
BQuarterBegin, BQuarterEnd, ) def test_quarterly_dont_normalize(): date = datetime(2012, 3, 31, 5, 30) offsets = (BQuarterEnd, BQuarterBegin) for klass in offsets: result = date + klass() assert result.time() == date.time() @pytest.mark.parametrize("offset", [BQuarterBegin(), BQuarterEnd()]) def test_on_offset(offset): dates = [ datetime(2016, m, d) for m in [10, 11, 12] for d in [1, 2, 3, 28, 29, 30, 31] if not (m == 11 and d == 31) ] for date in dates: res = offset.is_on_offset(date) slow_version = date == (date + offset) - offset assert res == slow_version class TestBQuarterBegin(Base): _offset: type[QuarterOffset] = BQuarterBegin def test_repr(self):