@@ -4696,13 +4696,9 @@ _lite_rule_alias = {
46964696 " BYS" : " BYS-JAN" , # BYearBegin(month=1),
46974697
46984698 " Min" : " min" ,
4699- " min" : " min" ,
4700- " ms" : " ms" ,
4701- " us" : " us" ,
4702- " ns" : " ns" ,
47034699}
47044700
4705- _dont_uppercase = {" h" , " bh" , " cbh" , " MS " , " ms" , " s " }
4701+ _dont_uppercase = {" min " , " h" , " bh" , " cbh" , " s " , " ms" , " us " , " ns " }
47064702
47074703
47084704INVALID_FREQ_ERR_MSG = " Invalid frequency: {0}"
@@ -4712,6 +4708,80 @@ INVALID_FREQ_ERR_MSG = "Invalid frequency: {0}"
47124708_offset_map = {}
47134709
47144710
4711+ def _warn_about_deprecated_aliases (name: str , is_period: bool ) -> str:
4712+ if name == "Min":
4713+ # Not deprecated (yet? should it be?)
4714+ return "min"
4715+ if is_period:
4716+ if name.upper() in c_PERIOD_TO_OFFSET_FREQSTR:
4717+ if name.upper() != name:
4718+ raise ValueError(
4719+ f"\'{name}\' is no longer supported , "
4720+ f"please use \'{name.upper()}\' instead.",
4721+ )
4722+ return c_PERIOD_TO_OFFSET_FREQSTR[name.upper()]
4723+
4724+ if name in c_PERIOD_AND_OFFSET_DEPR_FREQSTR:
4725+ warnings.warn(
4726+ f"\'{name}\' is deprecated and will be removed "
4727+ f"in a future version , please use "
4728+ f"\'{c_PERIOD_AND_OFFSET_DEPR_FREQSTR.get(name )}\' "
4729+ f" instead.",
4730+ FutureWarning ,
4731+ stacklevel = find_stack_level(),
4732+ )
4733+ return c_PERIOD_AND_OFFSET_DEPR_FREQSTR[name]
4734+
4735+ if not is_period and name in c_OFFSET_RENAMED_FREQSTR:
4736+ warnings.warn(
4737+ f"\'{name}\' is deprecated and will be removed "
4738+ f"in a future version , please use "
4739+ f"\'{c_OFFSET_RENAMED_FREQSTR[name]}\' "
4740+ f" instead.",
4741+ FutureWarning ,
4742+ stacklevel = find_stack_level(),
4743+ )
4744+ return c_OFFSET_RENAMED_FREQSTR[name]
4745+
4746+ for _name in (name.lower(), name.upper()):
4747+ if name != _name and _name in c_PERIOD_AND_OFFSET_DEPR_FREQSTR.values():
4748+ warnings.warn(
4749+ f" \' {name}\' is deprecated and will be removed "
4750+ f" in a future version, please use "
4751+ f" \' {_name}\' "
4752+ f" instead." ,
4753+ FutureWarning ,
4754+ stacklevel = find_stack_level(),
4755+ )
4756+ return _name
4757+ if (
4758+ not is_period
4759+ and name != _name
4760+ and _name in c_OFFSET_RENAMED_FREQSTR.values()
4761+ ):
4762+ warnings.warn(
4763+ f" \' {name}\' is deprecated and will be removed "
4764+ f" in a future version, please use "
4765+ f" \' {_name}\' "
4766+ f" instead." ,
4767+ FutureWarning ,
4768+ stacklevel = find_stack_level(),
4769+ )
4770+ return _name
4771+ if _name in _lite_rule_alias and name != _name:
4772+ warnings.warn(
4773+ f" \' {name}\' is deprecated and will be removed "
4774+ f" in a future version, please use "
4775+ f" \' {_name}\' "
4776+ f" instead." ,
4777+ FutureWarning ,
4778+ stacklevel = find_stack_level(),
4779+ )
4780+ return _name
4781+
4782+ return name
4783+
4784+
47154785def _validate_to_offset_alias (alias: str , is_period: bool ) -> None:
47164786 if not is_period:
47174787 if alias.upper() in c_OFFSET_RENAMED_FREQSTR:
@@ -4749,35 +4819,6 @@ def _get_offset(name: str) -> BaseOffset:
47494819 --------
47504820 _get_offset('EOM') --> BMonthEnd(1)
47514821 """
4752- if (
4753- name not in _lite_rule_alias
4754- and (name.upper() in _lite_rule_alias )
4755- and name != "ms"
4756- ):
4757- warnings.warn(
4758- f" \' {name}\' is deprecated and will be removed "
4759- f" in a future version, please use \' {name.upper()}\' instead." ,
4760- FutureWarning ,
4761- stacklevel = find_stack_level(),
4762- )
4763- elif (
4764- name not in _lite_rule_alias
4765- and (name.lower() in _lite_rule_alias)
4766- and name != " MS"
4767- ):
4768- warnings.warn(
4769- f" \' {name}\' is deprecated and will be removed "
4770- f" in a future version, please use \' {name.lower()}\' instead." ,
4771- FutureWarning ,
4772- stacklevel = find_stack_level(),
4773- )
4774- if name not in _dont_uppercase:
4775- name = name.upper()
4776- name = _lite_rule_alias.get(name, name)
4777- name = _lite_rule_alias.get(name.lower(), name)
4778- else :
4779- name = _lite_rule_alias.get(name, name)
4780-
47814822 if name not in _offset_map:
47824823 try:
47834824 split = name.split(" -" )
@@ -4880,38 +4921,21 @@ cpdef to_offset(freq, bint is_period=False):
48804921 tups = zip (split[0 ::4 ], split[1 ::4 ], split[2 ::4 ])
48814922 for n, (sep, stride, name) in enumerate (tups):
48824923 _validate_to_offset_alias(name, is_period)
4883- if is_period:
4884- if name.upper() in c_PERIOD_TO_OFFSET_FREQSTR:
4885- if name.upper() != name:
4886- raise ValueError (
4887- f" \' {name}\' is no longer supported, "
4888- f" please use \' {name.upper()}\' instead." ,
4889- )
4890- name = c_PERIOD_TO_OFFSET_FREQSTR.get(name.upper())
4891-
4892- if name in c_PERIOD_AND_OFFSET_DEPR_FREQSTR:
4893- warnings.warn(
4894- f" \' {name}\' is deprecated and will be removed "
4895- f" in a future version, please use "
4896- f" \' {c_PERIOD_AND_OFFSET_DEPR_FREQSTR.get(name)}\' "
4897- f" instead." ,
4898- FutureWarning ,
4899- stacklevel = find_stack_level(),
4900- )
4901- name = c_PERIOD_AND_OFFSET_DEPR_FREQSTR.get(name)
4924+ name = _warn_about_deprecated_aliases(name, is_period)
4925+ name = _lite_rule_alias.get(name, name)
4926+
49024927 if sep != " " and not sep.isspace():
49034928 raise ValueError (" separator must be spaces" )
4904- prefix = _lite_rule_alias.get(name) or name
49054929 if stride_sign is None :
49064930 stride_sign = - 1 if stride.startswith(" -" ) else 1
49074931 if not stride:
49084932 stride = 1
49094933
4910- if prefix in {" D" , " h" , " min" , " s" , " ms" , " us" , " ns" }:
4934+ if name in {" D" , " h" , " min" , " s" , " ms" , " us" , " ns" }:
49114935 # For these prefixes, we have something like "3h" or
49124936 # "2.5min", so we can construct a Timedelta with the
49134937 # matching unit and get our offset from delta_to_tick
4914- td = Timedelta(1 , unit = prefix )
4938+ td = Timedelta(1 , unit = name )
49154939 off = delta_to_tick(td)
49164940 offset = off * float (stride)
49174941 if n != 0 :
@@ -4920,7 +4944,7 @@ cpdef to_offset(freq, bint is_period=False):
49204944 offset *= stride_sign
49214945 else :
49224946 stride = int (stride)
4923- offset = _get_offset(prefix )
4947+ offset = _get_offset(name )
49244948 offset = offset * int (np.fabs(stride) * stride_sign)
49254949
49264950 if result is None :
@@ -4930,7 +4954,7 @@ cpdef to_offset(freq, bint is_period=False):
49304954 except (ValueError , TypeError ) as err:
49314955 raise ValueError (INVALID_FREQ_ERR_MSG.format(
49324956 f" {freq}, failed to parse with error message: {repr(err)}" )
4933- )
4957+ ) from err
49344958 else :
49354959 result = None
49364960
0 commit comments