Skip to content

Commit c778746

Browse files
authored
REGR: freq "m" (as alias of deprecated "M") raises an error (#56849)
* dont raise if users use (undocumented) "m" for "month end", warn to use "ME" instead * fixup test * lint
1 parent 9ad6bb6 commit c778746

File tree

3 files changed

+15
-3
lines changed

3 files changed

+15
-3
lines changed

pandas/_libs/tslibs/offsets.pyx

+3-3
Original file line numberDiff line numberDiff line change
@@ -4860,15 +4860,15 @@ cpdef to_offset(freq, bint is_period=False):
48604860

48614861
tups = zip(split[0::4], split[1::4], split[2::4])
48624862
for n, (sep, stride, name) in enumerate(tups):
4863-
if is_period is False and name in c_OFFSET_DEPR_FREQSTR:
4863+
if is_period is False and name.upper() in c_OFFSET_DEPR_FREQSTR:
48644864
warnings.warn(
48654865
f"\'{name}\' is deprecated and will be removed "
48664866
f"in a future version, please use "
4867-
f"\'{c_OFFSET_DEPR_FREQSTR.get(name)}\' instead.",
4867+
f"\'{c_OFFSET_DEPR_FREQSTR.get(name.upper())}\' instead.",
48684868
FutureWarning,
48694869
stacklevel=find_stack_level(),
48704870
)
4871-
name = c_OFFSET_DEPR_FREQSTR[name]
4871+
name = c_OFFSET_DEPR_FREQSTR[name.upper()]
48724872
if is_period is True and name in c_REVERSE_OFFSET_DEPR_FREQSTR:
48734873
if name.startswith("Y"):
48744874
raise ValueError(

pandas/tests/indexes/datetimes/test_date_range.py

+11
Original file line numberDiff line numberDiff line change
@@ -818,6 +818,17 @@ def test_frequencies_A_deprecated_Y_renamed(self, freq, freq_depr):
818818
result = date_range("1/1/2000", periods=2, freq=freq_depr)
819819
tm.assert_index_equal(result, expected)
820820

821+
def test_to_offset_with_lowercase_deprecated_freq(self) -> None:
822+
# https://github.com/pandas-dev/pandas/issues/56847
823+
msg = (
824+
"'m' is deprecated and will be removed in a future version, please use "
825+
"'ME' instead."
826+
)
827+
with tm.assert_produces_warning(FutureWarning, match=msg):
828+
result = date_range("2010-01-01", periods=2, freq="m")
829+
expected = DatetimeIndex(["2010-01-31", "2010-02-28"], freq="ME")
830+
tm.assert_index_equal(result, expected)
831+
821832
def test_date_range_bday(self):
822833
sdate = datetime(1999, 12, 25)
823834
idx = date_range(start=sdate, freq="1B", periods=20)

pandas/tests/tslibs/test_to_offset.py

+1
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ def test_to_offset_negative(freqstr, expected):
4444
assert result.n == expected
4545

4646

47+
@pytest.mark.filterwarnings("ignore:.*'m' is deprecated.*:FutureWarning")
4748
@pytest.mark.parametrize(
4849
"freqstr",
4950
[

0 commit comments

Comments
 (0)