예제 #1
0
 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
예제 #2
0
    '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),
예제 #3
0
 def test_offset_corner_case(self):
     # corner
     offset = BQuarterBegin(n=-1, startingMonth=1)
     assert datetime(2007, 4, 3) + offset == datetime(2007, 4, 2)
예제 #4
0
 def test_isAnchored(self):
     assert BQuarterBegin(startingMonth=1).isAnchored()
     assert BQuarterBegin().isAnchored()
     assert not BQuarterBegin(2, startingMonth=1).isAnchored()
예제 #5
0
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)
예제 #6
0
    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
예제 #7
0
    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


# --------------------------------------------------------------------
예제 #8
0
    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
예제 #9
0
    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):