@@ -4696,13 +4696,9 @@ _lite_rule_alias = {
4696
4696
" BYS" : " BYS-JAN" , # BYearBegin(month=1),
4697
4697
4698
4698
" Min" : " min" ,
4699
- " min" : " min" ,
4700
- " ms" : " ms" ,
4701
- " us" : " us" ,
4702
- " ns" : " ns" ,
4703
4699
}
4704
4700
4705
- _dont_uppercase = {" h" , " bh" , " cbh" , " MS " , " ms" , " s " }
4701
+ _dont_uppercase = {" min " , " h" , " bh" , " cbh" , " s " , " ms" , " us " , " ns " }
4706
4702
4707
4703
4708
4704
INVALID_FREQ_ERR_MSG = " Invalid frequency: {0}"
@@ -4712,6 +4708,80 @@ INVALID_FREQ_ERR_MSG = "Invalid frequency: {0}"
4712
4708
_offset_map = {}
4713
4709
4714
4710
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
+
4715
4785
def _validate_to_offset_alias (alias: str , is_period: bool ) -> None:
4716
4786
if not is_period:
4717
4787
if alias.upper() in c_OFFSET_RENAMED_FREQSTR:
@@ -4749,35 +4819,6 @@ def _get_offset(name: str) -> BaseOffset:
4749
4819
--------
4750
4820
_get_offset('EOM') --> BMonthEnd(1)
4751
4821
"""
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
-
4781
4822
if name not in _offset_map:
4782
4823
try:
4783
4824
split = name.split(" -" )
@@ -4880,38 +4921,21 @@ cpdef to_offset(freq, bint is_period=False):
4880
4921
tups = zip (split[0 ::4 ], split[1 ::4 ], split[2 ::4 ])
4881
4922
for n, (sep, stride, name) in enumerate (tups):
4882
4923
_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
+
4902
4927
if sep != " " and not sep.isspace():
4903
4928
raise ValueError (" separator must be spaces" )
4904
- prefix = _lite_rule_alias.get(name) or name
4905
4929
if stride_sign is None :
4906
4930
stride_sign = - 1 if stride.startswith(" -" ) else 1
4907
4931
if not stride:
4908
4932
stride = 1
4909
4933
4910
- if prefix in {" D" , " h" , " min" , " s" , " ms" , " us" , " ns" }:
4934
+ if name in {" D" , " h" , " min" , " s" , " ms" , " us" , " ns" }:
4911
4935
# For these prefixes, we have something like "3h" or
4912
4936
# "2.5min", so we can construct a Timedelta with the
4913
4937
# matching unit and get our offset from delta_to_tick
4914
- td = Timedelta(1 , unit = prefix )
4938
+ td = Timedelta(1 , unit = name )
4915
4939
off = delta_to_tick(td)
4916
4940
offset = off * float (stride)
4917
4941
if n != 0 :
@@ -4920,7 +4944,7 @@ cpdef to_offset(freq, bint is_period=False):
4920
4944
offset *= stride_sign
4921
4945
else :
4922
4946
stride = int (stride)
4923
- offset = _get_offset(prefix )
4947
+ offset = _get_offset(name )
4924
4948
offset = offset * int (np.fabs(stride) * stride_sign)
4925
4949
4926
4950
if result is None :
@@ -4930,7 +4954,7 @@ cpdef to_offset(freq, bint is_period=False):
4930
4954
except (ValueError , TypeError ) as err:
4931
4955
raise ValueError (INVALID_FREQ_ERR_MSG.format(
4932
4956
f" {freq}, failed to parse with error message: {repr(err)}" )
4933
- )
4957
+ ) from err
4934
4958
else :
4935
4959
result = None
4936
4960
0 commit comments