Пример #1
0
def test_get_offset():
    with pytest.raises(ValueError, match=INVALID_FREQ_ERR_MSG):
        get_offset("gibberish")
    with pytest.raises(ValueError, match=INVALID_FREQ_ERR_MSG):
        get_offset("QS-JAN-B")

    pairs = [
        ("RE-N-DEC-MON", makeFY5253NearestEndMonth(weekday=0,
                                                   startingMonth=12)),
        ("RE-L-DEC-TUE", makeFY5253LastOfMonth(weekday=1, startingMonth=12)),
        (
            "REQ-L-MAR-TUE-4",
            makeFY5253LastOfMonthQuarter(weekday=1,
                                         startingMonth=3,
                                         qtr_with_extra_week=4),
        ),
        (
            "REQ-L-DEC-MON-3",
            makeFY5253LastOfMonthQuarter(weekday=0,
                                         startingMonth=12,
                                         qtr_with_extra_week=3),
        ),
        (
            "REQ-N-DEC-MON-3",
            makeFY5253NearestEndMonthQuarter(weekday=0,
                                             startingMonth=12,
                                             qtr_with_extra_week=3),
        ),
    ]

    for name, expected in pairs:
        offset = get_offset(name)
        assert offset == expected, (
            f"Expected {repr(name)} to yield {repr(expected)} "
            f"(actual: {repr(offset)})")
Пример #2
0
def test_get_offset():
    with pytest.raises(ValueError, match=INVALID_FREQ_ERR_MSG):
        get_offset('gibberish')
    with pytest.raises(ValueError, match=INVALID_FREQ_ERR_MSG):
        get_offset('QS-JAN-B')

    pairs = [("RE-N-DEC-MON",
              makeFY5253NearestEndMonth(weekday=0, startingMonth=12)),
             ("RE-L-DEC-TUE", makeFY5253LastOfMonth(weekday=1,
                                                    startingMonth=12)),
             ("REQ-L-MAR-TUE-4",
              makeFY5253LastOfMonthQuarter(weekday=1,
                                           startingMonth=3,
                                           qtr_with_extra_week=4)),
             ("REQ-L-DEC-MON-3",
              makeFY5253LastOfMonthQuarter(weekday=0,
                                           startingMonth=12,
                                           qtr_with_extra_week=3)),
             ("REQ-N-DEC-MON-3",
              makeFY5253NearestEndMonthQuarter(weekday=0,
                                               startingMonth=12,
                                               qtr_with_extra_week=3))]

    for name, expected in pairs:
        offset = get_offset(name)
        assert offset == expected, ("Expected %r to yield %r (actual: %r)" %
                                    (name, expected, offset))
Пример #3
0
def test_get_offset():
    with pytest.raises(ValueError, match=INVALID_FREQ_ERR_MSG):
        get_offset('gibberish')
    with pytest.raises(ValueError, match=INVALID_FREQ_ERR_MSG):
        get_offset('QS-JAN-B')

    pairs = [
        ("RE-N-DEC-MON",
         makeFY5253NearestEndMonth(weekday=0, startingMonth=12)),
        ("RE-L-DEC-TUE",
         makeFY5253LastOfMonth(weekday=1, startingMonth=12)),
        ("REQ-L-MAR-TUE-4",
         makeFY5253LastOfMonthQuarter(weekday=1,
                                      startingMonth=3,
                                      qtr_with_extra_week=4)),
        ("REQ-L-DEC-MON-3",
         makeFY5253LastOfMonthQuarter(weekday=0,
                                      startingMonth=12,
                                      qtr_with_extra_week=3)),
        ("REQ-N-DEC-MON-3",
         makeFY5253NearestEndMonthQuarter(weekday=0,
                                          startingMonth=12,
                                          qtr_with_extra_week=3))]

    for name, expected in pairs:
        offset = get_offset(name)
        assert offset == expected, ("Expected %r to yield %r (actual: %r)" %
                                    (name, expected, offset))
Пример #4
0
    def test_legacy_offset_warnings(self):
        for k, v in compat.iteritems(frequencies._rule_aliases):
            with tm.assert_produces_warning(FutureWarning):
                result = frequencies.get_offset(k)
            exp = frequencies.get_offset(v)
            self.assertEqual(result, exp)

            with tm.assert_produces_warning(FutureWarning, check_stacklevel=False):
                idx = date_range('2011-01-01', periods=5, freq=k)
            exp = date_range('2011-01-01', periods=5, freq=v)
            self.assert_index_equal(idx, exp)
Пример #5
0
    def test_legacy_offset_warnings(self):
        freqs = [
            "WEEKDAY",
            "EOM",
            "W@MON",
            "W@TUE",
            "W@WED",
            "W@THU",
            "W@FRI",
            "W@SAT",
            "W@SUN",
            "Q@JAN",
            "Q@FEB",
            "Q@MAR",
            "A@JAN",
            "A@FEB",
            "A@MAR",
            "A@APR",
            "A@MAY",
            "A@JUN",
            "A@JUL",
            "A@AUG",
            "A@SEP",
            "A@OCT",
            "A@NOV",
            "A@DEC",
            "WOM@1MON",
            "WOM@2MON",
            "WOM@3MON",
            "WOM@4MON",
            "WOM@1TUE",
            "WOM@2TUE",
            "WOM@3TUE",
            "WOM@4TUE",
            "WOM@1WED",
            "WOM@2WED",
            "WOM@3WED",
            "WOM@4WED",
            "WOM@1THU",
            "WOM@2THU",
            "WOM@3THU",
            "WOM@4THU" "WOM@1FRI",
            "WOM@2FRI",
            "WOM@3FRI",
            "WOM@4FRI",
        ]

        msg = frequencies._INVALID_FREQ_ERROR
        for freq in freqs:
            with tm.assertRaisesRegexp(ValueError, msg):
                frequencies.get_offset(freq)

            with tm.assertRaisesRegexp(ValueError, msg):
                date_range("2011-01-01", periods=5, freq=freq)
Пример #6
0
    def test_legacy_offset_warnings(self):
        for k, v in compat.iteritems(frequencies._rule_aliases):
            with tm.assert_produces_warning(FutureWarning):
                result = frequencies.get_offset(k)
            exp = frequencies.get_offset(v)
            self.assertEqual(result, exp)

            with tm.assert_produces_warning(FutureWarning):
                idx = date_range('2011-01-01', periods=5, freq=k)
            exp = date_range('2011-01-01', periods=5, freq=v)
            self.assert_index_equal(idx, exp)
Пример #7
0
def generate_range(start=None, end=None, periods=None,
                   offset=BDay(), time_rule=None):
    """
    Generates a sequence of dates corresponding to the specified time
    offset. Similar to dateutil.rrule except uses pandas DateOffset
    objects to represent time increments

    Parameters
    ----------
    start : datetime (default None)
    end : datetime (default None)
    periods : int, optional

    Note
    ----
    * This method is faster for generating weekdays than dateutil.rrule
    * At least two of (start, end, periods) must be specified.
    * If both start and end are specified, the returned dates will
    satisfy start <= date <= end.

    Returns
    -------
    dates : generator object

    """
    if time_rule is not None:
        from pandas.tseries.frequencies import get_offset
        offset = get_offset(time_rule)

    start = to_datetime(start)
    end = to_datetime(end)

    if start and not offset.onOffset(start):
        start = offset.rollforward(start)

    if end and not offset.onOffset(end):
        end = offset.rollback(end)

        if periods is None and end < start:
            end = None
            periods = 0

    if end is None:
        end = start + (periods - 1) * offset

    if start is None:
        start = end - (periods - 1) * offset

    cur = start

    next_date = cur
    while cur <= end:
        yield cur

        # faster than cur + offset
        next_date = offset.apply(cur)
        if next_date <= cur:
            raise ValueError('Offset %s did not increment date' % offset)
        cur = next_date
Пример #8
0
def generate_range(start=None, end=None, periods=None,
                   offset=BDay(), time_rule=None):
    """
    Generates a sequence of dates corresponding to the specified time
    offset. Similar to dateutil.rrule except uses pandas DateOffset
    objects to represent time increments

    Parameters
    ----------
    start : datetime (default None)
    end : datetime (default None)
    periods : int, optional

    Note
    ----
    * This method is faster for generating weekdays than dateutil.rrule
    * At least two of (start, end, periods) must be specified.
    * If both start and end are specified, the returned dates will
    satisfy start <= date <= end.

    Returns
    -------
    dates : generator object

    """
    if time_rule is not None:
        from pandas.tseries.frequencies import get_offset
        offset = get_offset(time_rule)

    start = to_datetime(start)
    end = to_datetime(end)

    if start and not offset.onOffset(start):
        start = offset.rollforward(start)

    if end and not offset.onOffset(end):
        end = offset.rollback(end)

        if periods is None and end < start:
            end = None
            periods = 0

    if end is None:
        end = start + (periods - 1) * offset

    if start is None:
        start = end - (periods - 1) * offset

    cur = start

    next_date = cur
    while cur <= end:
        yield cur

        # faster than cur + offset
        next_date = offset.apply(cur)
        if next_date <= cur:
            raise ValueError('Offset %s did not increment date' % offset)
        cur = next_date
Пример #9
0
    def test_legacy_offset_warnings(self):
        freqs = ['WEEKDAY', 'EOM', 'W@MON', 'W@TUE', 'W@WED', 'W@THU',
                 'W@FRI', 'W@SAT', 'W@SUN', 'Q@JAN', 'Q@FEB', 'Q@MAR',
                 'A@JAN', 'A@FEB', 'A@MAR', 'A@APR', 'A@MAY', 'A@JUN',
                 'A@JUL', 'A@AUG', 'A@SEP', 'A@OCT', 'A@NOV', 'A@DEC',
                 'WOM@1MON', 'WOM@2MON', 'WOM@3MON', 'WOM@4MON',
                 'WOM@1TUE', 'WOM@2TUE', 'WOM@3TUE', 'WOM@4TUE',
                 'WOM@1WED', 'WOM@2WED', 'WOM@3WED', 'WOM@4WED',
                 'WOM@1THU', 'WOM@2THU', 'WOM@3THU', 'WOM@4THU'
                 'WOM@1FRI', 'WOM@2FRI', 'WOM@3FRI', 'WOM@4FRI']

        msg = frequencies._INVALID_FREQ_ERROR
        for freq in freqs:
            with tm.assertRaisesRegexp(ValueError, msg):
                frequencies.get_offset(freq)

            with tm.assertRaisesRegexp(ValueError, msg):
                date_range('2011-01-01', periods=5, freq=freq)
Пример #10
0
    def test_legacy_offset_warnings(self):
        freqs = ['WEEKDAY', 'EOM', 'W@MON', 'W@TUE', 'W@WED', 'W@THU',
                 'W@FRI', 'W@SAT', 'W@SUN', 'Q@JAN', 'Q@FEB', 'Q@MAR',
                 'A@JAN', 'A@FEB', 'A@MAR', 'A@APR', 'A@MAY', 'A@JUN',
                 'A@JUL', 'A@AUG', 'A@SEP', 'A@OCT', 'A@NOV', 'A@DEC',
                 'WOM@1MON', 'WOM@2MON', 'WOM@3MON', 'WOM@4MON',
                 'WOM@1TUE', 'WOM@2TUE', 'WOM@3TUE', 'WOM@4TUE',
                 'WOM@1WED', 'WOM@2WED', 'WOM@3WED', 'WOM@4WED',
                 'WOM@1THU', 'WOM@2THU', 'WOM@3THU', 'WOM@4THU'
                 'WOM@1FRI', 'WOM@2FRI', 'WOM@3FRI', 'WOM@4FRI']

        msg = frequencies._INVALID_FREQ_ERROR
        for freq in freqs:
            with tm.assertRaisesRegexp(ValueError, msg):
                frequencies.get_offset(freq)

            with tm.assertRaisesRegexp(ValueError, msg):
                date_range('2011-01-01', periods=5, freq=freq)
Пример #11
0
 def __getitem__(self, key):
     return get_offset(key)
Пример #12
0
def test_ms_vs_MS():
    left = frequencies.get_offset('ms')
    right = frequencies.get_offset('MS')
    assert left == offsets.Milli()
    assert right == offsets.MonthBegin()
Пример #13
0
# statsmodel ARMA function is incompatiable with Pandas?
from pandas.tseries.frequencies import get_offset

get_offset('30s')
Пример #14
0
 def test_ms_vs_MS(self):
     left = get_offset('ms')
     right = get_offset('MS')
     self.assertEqual(left, Milli())
     self.assertEqual(right, MonthBegin())
Пример #15
0
def test_ms_vs_capital_ms():
    left = frequencies.get_offset("ms")
    right = frequencies.get_offset("MS")

    assert left == offsets.Milli()
    assert right == offsets.MonthBegin()
Пример #16
0
def test_ms_vs_MS():
    left = frequencies.get_offset('ms')
    right = frequencies.get_offset('MS')
    assert left == offsets.Milli()
    assert right == offsets.MonthBegin()
Пример #17
0
def test_ms_vs_capital_ms():
    left = frequencies.get_offset("ms")
    right = frequencies.get_offset("MS")

    assert left == offsets.Milli()
    assert right == offsets.MonthBegin()
Пример #18
0
# statsmodel ARMA function is incompatiable with Pandas?
from pandas.tseries.frequencies import get_offset
get_offset('30s')