diff --git a/pandas/_libs/tslibs/frequencies.pxd b/pandas/_libs/tslibs/frequencies.pxd index c96661aaab443..09397a02c5ea0 100644 --- a/pandas/_libs/tslibs/frequencies.pxd +++ b/pandas/_libs/tslibs/frequencies.pxd @@ -3,6 +3,5 @@ cdef dict attrname_to_abbrevs cpdef str get_rule_month(object source, str default=*) cpdef get_freq_code(freqstr) -cpdef str get_base_alias(freqstr) cpdef int get_to_timestamp_base(int base) cpdef str get_freq_str(base, mult=*) diff --git a/pandas/_libs/tslibs/frequencies.pyx b/pandas/_libs/tslibs/frequencies.pyx index 60f750da92091..ad00299bb9b25 100644 --- a/pandas/_libs/tslibs/frequencies.pyx +++ b/pandas/_libs/tslibs/frequencies.pyx @@ -297,21 +297,6 @@ cpdef str get_freq_str(base, mult=1): return str(mult) + code -cpdef str get_base_alias(freqstr): - """ - Returns the base frequency alias, e.g., '5D' -> 'D' - - Parameters - ---------- - freqstr : str - - Returns - ------- - base_alias : str - """ - return base_and_stride(freqstr)[0] - - cpdef int get_to_timestamp_base(int base): """ Return frequency code group used for base of to_timestamp against diff --git a/pandas/core/arrays/period.py b/pandas/core/arrays/period.py index f1f8abb9e93a2..8b2925b2c0827 100644 --- a/pandas/core/arrays/period.py +++ b/pandas/core/arrays/period.py @@ -665,7 +665,7 @@ def _addsub_int_array( res_values[self._isnan] = iNaT return type(self)(res_values, freq=self.freq) - def _add_offset(self, other): + def _add_offset(self, other: DateOffset): assert not isinstance(other, Tick) if other.base != self.freq.base: diff --git a/pandas/plotting/_matplotlib/timeseries.py b/pandas/plotting/_matplotlib/timeseries.py index f6e120e2f91e7..f62340ee8f756 100644 --- a/pandas/plotting/_matplotlib/timeseries.py +++ b/pandas/plotting/_matplotlib/timeseries.py @@ -1,12 +1,13 @@ # TODO: Use the fact that axis can have units to simplify the process import functools +from typing import Optional import numpy as np from pandas._libs.tslibs.frequencies import ( FreqGroup, - get_base_alias, + base_and_stride, get_freq_code, is_subperiod, is_superperiod, @@ -165,6 +166,16 @@ def _get_ax_freq(ax): return ax_freq +def get_period_alias(freq) -> Optional[str]: + if isinstance(freq, DateOffset): + freq = freq.rule_code + else: + freq = base_and_stride(freq)[0] + + freq = frequencies.get_period_alias(freq) + return freq + + def _get_freq(ax, series): # get frequency from data freq = getattr(series.index, "freq", None) @@ -178,12 +189,7 @@ def _get_freq(ax, series): freq = ax_freq # get the period frequency - if isinstance(freq, DateOffset): - freq = freq.rule_code - else: - freq = get_base_alias(freq) - - freq = frequencies.get_period_alias(freq) + freq = get_period_alias(freq) return freq, ax_freq @@ -200,11 +206,7 @@ def _use_dynamic_x(ax, data): if freq is None: return False - if isinstance(freq, DateOffset): - freq = freq.rule_code - else: - freq = get_base_alias(freq) - freq = frequencies.get_period_alias(freq) + freq = get_period_alias(freq) if freq is None: return False @@ -238,8 +240,6 @@ def _maybe_convert_index(ax, data): if freq is None: freq = getattr(data.index, "inferred_freq", None) - if isinstance(freq, DateOffset): - freq = freq.rule_code if freq is None: freq = _get_ax_freq(ax) @@ -247,8 +247,7 @@ def _maybe_convert_index(ax, data): if freq is None: raise ValueError("Could not get frequency alias for plotting") - freq = get_base_alias(freq) - freq = frequencies.get_period_alias(freq) + freq = get_period_alias(freq) if isinstance(data.index, ABCDatetimeIndex): data = data.tz_localize(None).to_period(freq=freq)