@@ -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,70 @@ 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
+
4713
+ if name in c_PERIOD_AND_OFFSET_DEPR_FREQSTR:
4714
+ warnings.warn(
4715
+ f"\'{name}\' is deprecated and will be removed "
4716
+ f"in a future version , please use "
4717
+ f"\'{c_PERIOD_AND_OFFSET_DEPR_FREQSTR.get(name )}\' "
4718
+ f" instead.",
4719
+ FutureWarning ,
4720
+ stacklevel = find_stack_level(),
4721
+ )
4722
+ return c_PERIOD_AND_OFFSET_DEPR_FREQSTR[name]
4723
+
4724
+ if not is_period and name in c_OFFSET_RENAMED_FREQSTR:
4725
+ warnings.warn(
4726
+ f"\'{name}\' is deprecated and will be removed "
4727
+ f"in a future version , please use "
4728
+ f"\'{c_OFFSET_RENAMED_FREQSTR[name]}\' "
4729
+ f" instead.",
4730
+ FutureWarning ,
4731
+ stacklevel = find_stack_level(),
4732
+ )
4733
+ return c_OFFSET_RENAMED_FREQSTR[name]
4734
+
4735
+ for _name in (name.lower(), name.upper()):
4736
+ if name == _name:
4737
+ continue
4738
+ if _name in c_PERIOD_AND_OFFSET_DEPR_FREQSTR.values():
4739
+ warnings.warn(
4740
+ f" \' {name}\' is deprecated and will be removed "
4741
+ f" in a future version, please use "
4742
+ f" \' {_name}\' "
4743
+ f" instead." ,
4744
+ FutureWarning ,
4745
+ stacklevel = find_stack_level(),
4746
+ )
4747
+ return _name
4748
+ if (
4749
+ not is_period
4750
+ and _name in c_OFFSET_RENAMED_FREQSTR.values()
4751
+ ):
4752
+ warnings.warn(
4753
+ f" \' {name}\' is deprecated and will be removed "
4754
+ f" in a future version, please use "
4755
+ f" \' {_name}\' "
4756
+ f" instead." ,
4757
+ FutureWarning ,
4758
+ stacklevel = find_stack_level(),
4759
+ )
4760
+ return _name
4761
+ if _name in _lite_rule_alias and name != _name:
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
+
4772
+ return name
4773
+
4774
+
4715
4775
def _validate_to_offset_alias (alias: str , is_period: bool ) -> None:
4716
4776
if not is_period:
4717
4777
if alias.upper() in c_OFFSET_RENAMED_FREQSTR:
@@ -4749,35 +4809,6 @@ def _get_offset(name: str) -> BaseOffset:
4749
4809
--------
4750
4810
_get_offset('EOM') --> BMonthEnd(1)
4751
4811
"""
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
4812
if name not in _offset_map:
4782
4813
try:
4783
4814
split = name.split(" -" )
@@ -4879,39 +4910,30 @@ cpdef to_offset(freq, bint is_period=False):
4879
4910
4880
4911
tups = zip (split[0 ::4 ], split[1 ::4 ], split[2 ::4 ])
4881
4912
for n, (sep, stride, name) in enumerate (tups):
4913
+ name = _warn_about_deprecated_aliases(name, is_period)
4882
4914
_validate_to_offset_alias(name, is_period)
4915
+ name = _lite_rule_alias.get(name, name)
4883
4916
if is_period:
4884
4917
if name.upper() in c_PERIOD_TO_OFFSET_FREQSTR:
4885
4918
if name.upper() != name:
4886
4919
raise ValueError (
4887
4920
f" \' {name}\' is no longer supported, "
4888
4921
f" please use \' {name.upper()}\' instead." ,
4889
4922
)
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)
4923
+ name = c_PERIOD_TO_OFFSET_FREQSTR[name.upper()]
4924
+
4902
4925
if sep != " " and not sep.isspace():
4903
4926
raise ValueError (" separator must be spaces" )
4904
- prefix = _lite_rule_alias.get(name) or name
4905
4927
if stride_sign is None :
4906
4928
stride_sign = - 1 if stride.startswith(" -" ) else 1
4907
4929
if not stride:
4908
4930
stride = 1
4909
4931
4910
- if prefix in {" D" , " h" , " min" , " s" , " ms" , " us" , " ns" }:
4932
+ if name in {" D" , " h" , " min" , " s" , " ms" , " us" , " ns" }:
4911
4933
# For these prefixes, we have something like "3h" or
4912
4934
# "2.5min", so we can construct a Timedelta with the
4913
4935
# matching unit and get our offset from delta_to_tick
4914
- td = Timedelta(1 , unit = prefix )
4936
+ td = Timedelta(1 , unit = name )
4915
4937
off = delta_to_tick(td)
4916
4938
offset = off * float (stride)
4917
4939
if n != 0 :
@@ -4920,7 +4942,7 @@ cpdef to_offset(freq, bint is_period=False):
4920
4942
offset *= stride_sign
4921
4943
else :
4922
4944
stride = int (stride)
4923
- offset = _get_offset(prefix )
4945
+ offset = _get_offset(name )
4924
4946
offset = offset * int (np.fabs(stride) * stride_sign)
4925
4947
4926
4948
if result is None :
@@ -4930,7 +4952,7 @@ cpdef to_offset(freq, bint is_period=False):
4930
4952
except (ValueError , TypeError ) as err:
4931
4953
raise ValueError (INVALID_FREQ_ERR_MSG.format(
4932
4954
f" {freq}, failed to parse with error message: {repr(err)}" )
4933
- )
4955
+ ) from err
4934
4956
else :
4935
4957
result = None
4936
4958
0 commit comments