@@ -5188,6 +5188,27 @@ INVALID_FREQ_ERR_MSG = "Invalid frequency: {0}"
5188
5188
_offset_map = {}
5189
5189
5190
5190
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
+
5191
5212
def _warn_about_deprecated_aliases(name: str , is_period: bool ) -> str:
5192
5213
if name in _lite_rule_alias:
5193
5214
return name
@@ -5236,7 +5257,7 @@ def _validate_to_offset_alias(alias: str, is_period: bool) -> None:
5236
5257
if (alias.upper() != alias and
5237
5258
alias.lower() not in {"s", "ms", "us", "ns"} and
5238
5259
alias.upper().split("-")[0].endswith(("S", "E"))):
5239
- raise ValueError (INVALID_FREQ_ERR_MSG.format( alias))
5260
+ raise ValueError (raise_invalid_freq( freq = alias))
5240
5261
if (
5241
5262
is_period and
5242
5263
alias in c_OFFSET_TO_PERIOD_FREQSTR and
@@ -5267,27 +5288,16 @@ def _get_offset(name: str) -> BaseOffset:
5267
5288
offset = klass._from_name(* split[1 :])
5268
5289
except (ValueError , TypeError , KeyError ) as err:
5269
5290
# 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)}."
5272
5294
)
5273
5295
# cache
5274
5296
_offset_map[name] = offset
5275
5297
5276
5298
return _offset_map[name]
5277
5299
5278
5300
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
-
5291
5301
cpdef to_offset(freq , bint is_period = False ):
5292
5302
"""
5293
5303
Return DateOffset object from string or datetime.timedelta object.
@@ -5371,11 +5381,6 @@ cpdef to_offset(freq, bint is_period=False):
5371
5381
5372
5382
tups = zip (split[0 ::4 ], split[1 ::4 ], split[2 ::4 ], strict = False )
5373
5383
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
-
5379
5384
name = _warn_about_deprecated_aliases(name, is_period)
5380
5385
_validate_to_offset_alias(name, is_period)
5381
5386
if is_period:
@@ -5416,9 +5421,10 @@ cpdef to_offset(freq, bint is_period=False):
5416
5421
else :
5417
5422
result = result + offset
5418
5423
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
+ )
5422
5428
5423
5429
# TODO(3.0?) once deprecation of "d" is enforced, the check for it here
5424
5430
# can be removed
@@ -5434,7 +5440,7 @@ cpdef to_offset(freq, bint is_period=False):
5434
5440
result = None
5435
5441
5436
5442
if result is None :
5437
- raise ValueError (INVALID_FREQ_ERR_MSG.format( freq) )
5443
+ raise_invalid_freq( freq = freq )
5438
5444
5439
5445
try :
5440
5446
has_period_dtype_code = hasattr (result, " _period_dtype_code" )
0 commit comments