117 lines
4.1 KiB
Python
117 lines
4.1 KiB
Python
|
# -*- coding: utf-8 -*-
|
||
|
|
||
|
import pandas.util.testing as tm
|
||
|
|
||
|
from pandas.tseries import offsets
|
||
|
from pandas._libs.tslibs.frequencies import (get_rule_month,
|
||
|
_period_str_to_code,
|
||
|
_INVALID_FREQ_ERROR,
|
||
|
is_superperiod, is_subperiod)
|
||
|
|
||
|
|
||
|
def assert_aliases_deprecated(freq, expected, aliases):
|
||
|
assert isinstance(aliases, list)
|
||
|
assert (_period_str_to_code(freq) == expected)
|
||
|
|
||
|
for alias in aliases:
|
||
|
with tm.assert_raises_regex(ValueError, _INVALID_FREQ_ERROR):
|
||
|
_period_str_to_code(alias)
|
||
|
|
||
|
|
||
|
def test_get_rule_month():
|
||
|
result = get_rule_month('W')
|
||
|
assert (result == 'DEC')
|
||
|
result = get_rule_month(offsets.Week())
|
||
|
assert (result == 'DEC')
|
||
|
|
||
|
result = get_rule_month('D')
|
||
|
assert (result == 'DEC')
|
||
|
result = get_rule_month(offsets.Day())
|
||
|
assert (result == 'DEC')
|
||
|
|
||
|
result = get_rule_month('Q')
|
||
|
assert (result == 'DEC')
|
||
|
result = get_rule_month(offsets.QuarterEnd(startingMonth=12))
|
||
|
|
||
|
result = get_rule_month('Q-JAN')
|
||
|
assert (result == 'JAN')
|
||
|
result = get_rule_month(offsets.QuarterEnd(startingMonth=1))
|
||
|
assert (result == 'JAN')
|
||
|
|
||
|
result = get_rule_month('A-DEC')
|
||
|
assert (result == 'DEC')
|
||
|
result = get_rule_month('Y-DEC')
|
||
|
assert (result == 'DEC')
|
||
|
result = get_rule_month(offsets.YearEnd())
|
||
|
assert (result == 'DEC')
|
||
|
|
||
|
result = get_rule_month('A-MAY')
|
||
|
assert (result == 'MAY')
|
||
|
result = get_rule_month('Y-MAY')
|
||
|
assert (result == 'MAY')
|
||
|
result = get_rule_month(offsets.YearEnd(month=5))
|
||
|
assert (result == 'MAY')
|
||
|
|
||
|
|
||
|
def test_period_str_to_code():
|
||
|
assert (_period_str_to_code('A') == 1000)
|
||
|
assert (_period_str_to_code('A-DEC') == 1000)
|
||
|
assert (_period_str_to_code('A-JAN') == 1001)
|
||
|
assert (_period_str_to_code('Y') == 1000)
|
||
|
assert (_period_str_to_code('Y-DEC') == 1000)
|
||
|
assert (_period_str_to_code('Y-JAN') == 1001)
|
||
|
|
||
|
assert (_period_str_to_code('Q') == 2000)
|
||
|
assert (_period_str_to_code('Q-DEC') == 2000)
|
||
|
assert (_period_str_to_code('Q-FEB') == 2002)
|
||
|
|
||
|
assert_aliases_deprecated("M", 3000, ["MTH", "MONTH", "MONTHLY"])
|
||
|
|
||
|
assert (_period_str_to_code('W') == 4000)
|
||
|
assert (_period_str_to_code('W-SUN') == 4000)
|
||
|
assert (_period_str_to_code('W-FRI') == 4005)
|
||
|
|
||
|
assert_aliases_deprecated("B", 5000, ["BUS", "BUSINESS",
|
||
|
"BUSINESSLY", "WEEKDAY"])
|
||
|
assert_aliases_deprecated("D", 6000, ["DAY", "DLY", "DAILY"])
|
||
|
assert_aliases_deprecated("H", 7000, ["HR", "HOUR", "HRLY", "HOURLY"])
|
||
|
|
||
|
assert_aliases_deprecated("T", 8000, ["minute", "MINUTE", "MINUTELY"])
|
||
|
assert (_period_str_to_code('Min') == 8000)
|
||
|
|
||
|
assert_aliases_deprecated("S", 9000, ["sec", "SEC", "SECOND", "SECONDLY"])
|
||
|
assert_aliases_deprecated("L", 10000, ["MILLISECOND", "MILLISECONDLY"])
|
||
|
assert (_period_str_to_code('ms') == 10000)
|
||
|
|
||
|
assert_aliases_deprecated("U", 11000, ["MICROSECOND", "MICROSECONDLY"])
|
||
|
assert (_period_str_to_code('US') == 11000)
|
||
|
|
||
|
assert_aliases_deprecated("N", 12000, ["NANOSECOND", "NANOSECONDLY"])
|
||
|
assert (_period_str_to_code('NS') == 12000)
|
||
|
|
||
|
|
||
|
def test_is_superperiod_subperiod():
|
||
|
|
||
|
# input validation
|
||
|
assert not (is_superperiod(offsets.YearEnd(), None))
|
||
|
assert not (is_subperiod(offsets.MonthEnd(), None))
|
||
|
assert not (is_superperiod(None, offsets.YearEnd()))
|
||
|
assert not (is_subperiod(None, offsets.MonthEnd()))
|
||
|
assert not (is_superperiod(None, None))
|
||
|
assert not (is_subperiod(None, None))
|
||
|
|
||
|
assert (is_superperiod(offsets.YearEnd(), offsets.MonthEnd()))
|
||
|
assert (is_subperiod(offsets.MonthEnd(), offsets.YearEnd()))
|
||
|
|
||
|
assert (is_superperiod(offsets.Hour(), offsets.Minute()))
|
||
|
assert (is_subperiod(offsets.Minute(), offsets.Hour()))
|
||
|
|
||
|
assert (is_superperiod(offsets.Second(), offsets.Milli()))
|
||
|
assert (is_subperiod(offsets.Milli(), offsets.Second()))
|
||
|
|
||
|
assert (is_superperiod(offsets.Milli(), offsets.Micro()))
|
||
|
assert (is_subperiod(offsets.Micro(), offsets.Milli()))
|
||
|
|
||
|
assert (is_superperiod(offsets.Micro(), offsets.Nano()))
|
||
|
assert (is_subperiod(offsets.Nano(), offsets.Micro()))
|