Skip to content

Commit 931610a

Browse files
committed
address PR comments
1 parent 51c55cd commit 931610a

File tree

1 file changed

+30
-24
lines changed

1 file changed

+30
-24
lines changed

pandas/_libs/tslibs/offsets.pyx

Lines changed: 30 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -5188,6 +5188,27 @@ INVALID_FREQ_ERR_MSG = "Invalid frequency: {0}"
51885188
_offset_map = {}
51895189

51905190

5191+
deprec_to_valid_alias = {
5192+
"H": "h",
5193+
"BH": "bh",
5194+
"CBH": "cbh",
5195+
"T": "min",
5196+
"S": "s",
5197+
"L": "ms",
5198+
"U": "us",
5199+
"N": "ns",
5200+
}
5201+
5202+
5203+
def raise_invalid_freq(freq: str, extra_message: str | None = None) -> None:
5204+
msg = f"Invalid frequency: {freq}."
5205+
if extra_message is not None:
5206+
msg += " " + extra_message
5207+
if freq in deprec_to_valid_alias:
5208+
msg += " " + "Did you mean {deprec_to_valid_alias[name]}?"
5209+
raise ValueError(msg)
5210+
5211+
51915212
def _warn_about_deprecated_aliases(name: str, is_period: bool) -> str:
51925213
if name in _lite_rule_alias:
51935214
return name
@@ -5236,7 +5257,7 @@ def _validate_to_offset_alias(alias: str, is_period: bool) -> None:
52365257
if (alias.upper() != alias and
52375258
alias.lower() not in {"s", "ms", "us", "ns"} and
52385259
alias.upper().split("-")[0].endswith(("S", "E"))):
5239-
raise ValueError(INVALID_FREQ_ERR_MSG.format(alias))
5260+
raise ValueError(raise_invalid_freq(freq=alias))
52405261
if (
52415262
is_period and
52425263
alias in c_OFFSET_TO_PERIOD_FREQSTR and
@@ -5267,27 +5288,16 @@ def _get_offset(name: str) -> BaseOffset:
52675288
offset = klass._from_name(*split[1:])
52685289
except (ValueError, TypeError, KeyError) as err:
52695290
# bad prefix or suffix
5270-
raise ValueError(INVALID_FREQ_ERR_MSG.format(
5271-
f"{name}, failed to parse with error message: {repr(err)}")
5291+
raise_invalid_freq(
5292+
freq=name,
5293+
extra_message=f"Failed to parse with error message: {repr(err)}."
52725294
)
52735295
# cache
52745296
_offset_map[name] = offset
52755297

52765298
return _offset_map[name]
52775299

52785300

5279-
deprec_to_valid_alias = {
5280-
"H": "h",
5281-
"BH": "bh",
5282-
"CBH": "cbh",
5283-
"T": "min",
5284-
"S": "s",
5285-
"L": "ms",
5286-
"U": "us",
5287-
"N": "ns",
5288-
}
5289-
5290-
52915301
cpdef to_offset(freq, bint is_period=False):
52925302
"""
52935303
Return DateOffset object from string or datetime.timedelta object.
@@ -5371,11 +5381,6 @@ cpdef to_offset(freq, bint is_period=False):
53715381

53725382
tups = zip(split[0::4], split[1::4], split[2::4], strict=False)
53735383
for n, (sep, stride, name) in enumerate(tups):
5374-
if name in deprec_to_valid_alias:
5375-
raise ValueError(INVALID_FREQ_ERR_MSG.format(
5376-
f"{name}. Did you mean {deprec_to_valid_alias[name]}?")
5377-
)
5378-
53795384
name = _warn_about_deprecated_aliases(name, is_period)
53805385
_validate_to_offset_alias(name, is_period)
53815386
if is_period:
@@ -5416,9 +5421,10 @@ cpdef to_offset(freq, bint is_period=False):
54165421
else:
54175422
result = result + offset
54185423
except (ValueError, TypeError) as err:
5419-
raise ValueError(INVALID_FREQ_ERR_MSG.format(
5420-
f"{freq}, failed to parse with error message: {repr(err)}")
5421-
) from err
5424+
raise_invalid_freq(
5425+
freq=freq,
5426+
extra_message=f"Failed to parse with error message: {repr(err)}"
5427+
)
54225428

54235429
# TODO(3.0?) once deprecation of "d" is enforced, the check for it here
54245430
# can be removed
@@ -5434,7 +5440,7 @@ cpdef to_offset(freq, bint is_period=False):
54345440
result = None
54355441

54365442
if result is None:
5437-
raise ValueError(INVALID_FREQ_ERR_MSG.format(freq))
5443+
raise_invalid_freq(freq=freq)
54385444

54395445
try:
54405446
has_period_dtype_code = hasattr(result, "_period_dtype_code")

0 commit comments

Comments
 (0)