def test_str_for_named_is_name(self): # look at all the amazing combinations! month_prefixes = ["A", "AS", "BA", "BAS", "Q", "BQ", "BQS", "QS"] names = [ prefix + "-" + month for prefix in month_prefixes for month in [ "JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC", ] ] days = ["MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN"] names += ["W-" + day for day in days] names += [ "WOM-" + week + day for week in ("1", "2", "3", "4") for day in days ] _offset_map.clear() for name in names: offset = _get_offset(name) assert offset.freqstr == name
def test_offset_freqstr(self, offset_types): offset = self._get_offset(offset_types) freqstr = offset.freqstr if freqstr not in ("<Easter>", "<DateOffset: days=1>", "LWOM-SAT"): code = _get_offset(freqstr) assert offset.rule_code == code
def test_rule_code(self): lst = ["M", "MS", "BM", "BMS", "D", "B", "H", "T", "S", "L", "U"] for k in lst: assert k == _get_offset(k).rule_code # should be cached - this is kind of an internals test... assert k in _offset_map assert k == (_get_offset(k) * 3).rule_code suffix_lst = ["MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN"] base = "W" for v in suffix_lst: alias = "-".join([base, v]) assert alias == _get_offset(alias).rule_code assert alias == (_get_offset(alias) * 5).rule_code suffix_lst = [ "JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC", ] base_lst = ["A", "AS", "BA", "BAS", "Q", "QS", "BQ", "BQS"] for base in base_lst: for v in suffix_lst: alias = "-".join([base, v]) assert alias == _get_offset(alias).rule_code assert alias == (_get_offset(alias) * 5).rule_code
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 = [ ("B", BDay()), ("b", BDay()), ("bm", BMonthEnd()), ("Bm", BMonthEnd()), ("W-MON", Week(weekday=0)), ("W-TUE", Week(weekday=1)), ("W-WED", Week(weekday=2)), ("W-THU", Week(weekday=3)), ("W-FRI", Week(weekday=4)), ] for name, expected in pairs: offset = _get_offset(name) assert offset == expected, ( f"Expected {repr(name)} to yield {repr(expected)} " f"(actual: {repr(offset)})")
def get_offset(name: str) -> DateOffset: """ Return DateOffset object associated with rule name. .. deprecated:: 1.0.0 Examples -------- get_offset('EOM') --> BMonthEnd(1) """ warnings.warn( "get_offset is deprecated and will be removed in a future version, " "use to_offset instead", FutureWarning, stacklevel=2, ) return _get_offset(name)
def test_get_offset_legacy(): pairs = [("w@Sat", Week(weekday=5))] for name, expected in pairs: with pytest.raises(ValueError, match=INVALID_FREQ_ERR_MSG): _get_offset(name)