diff --git a/pandas/tests/tseries/frequencies/test_inference.py b/pandas/tests/tseries/frequencies/test_inference.py index 7563fbdd56a12..b8de879a37ec4 100644 --- a/pandas/tests/tseries/frequencies/test_inference.py +++ b/pandas/tests/tseries/frequencies/test_inference.py @@ -553,3 +553,19 @@ def test_infer_freq_pyarrow(): assert frequencies.infer_freq(pd_series.values) == "30s" assert frequencies.infer_freq(pd_index) == "30s" assert frequencies.infer_freq(pd_series) == "30s" + + +def test_infer_freq_no_stateful_behavior(): + # GH#55794 infer_freq should not have stateful behavior + # calling infer_freq on a full index with duplicates should not + # affect the result of calling it on a slice without duplicates + times = to_datetime(["2019-01-01", "2019-01-02", "2019-01-03", "2019-01-03"]) + + # Before calling infer_freq on full index + assert frequencies.infer_freq(times[:3]) == "D" + + # Call on full index (which has duplicates, so returns None) + assert frequencies.infer_freq(times) is None + + # After calling on full index, slice should still return "D" + assert frequencies.infer_freq(times[:3]) == "D"