From 0705a53b3fc21e9260e6055a72712b2a18167848 Mon Sep 17 00:00:00 2001 From: zhan7236 <76658920+zhan7236@users.noreply.github.com> Date: Fri, 28 Nov 2025 01:50:46 +0000 Subject: [PATCH 1/3] TST: Add regression test for infer_freq stateful behavior (#55794) --- .../tests/tseries/frequencies/test_inference.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/pandas/tests/tseries/frequencies/test_inference.py b/pandas/tests/tseries/frequencies/test_inference.py index 7563fbdd56a12..1c0063624192c 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) + frequencies.infer_freq(times) + + # After calling on full index, slice should still return "D" + assert frequencies.infer_freq(times[:3]) == "D" From c314835640063a0d38e010fd70d0a92d54265410 Mon Sep 17 00:00:00 2001 From: zhan7236 <76658920+zhan7236@users.noreply.github.com> Date: Tue, 2 Dec 2025 01:14:49 +0000 Subject: [PATCH 2/3] Address review: assert infer_freq returns None for duplicates --- pandas/tests/tseries/frequencies/test_inference.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pandas/tests/tseries/frequencies/test_inference.py b/pandas/tests/tseries/frequencies/test_inference.py index 1c0063624192c..b8de879a37ec4 100644 --- a/pandas/tests/tseries/frequencies/test_inference.py +++ b/pandas/tests/tseries/frequencies/test_inference.py @@ -565,7 +565,7 @@ def test_infer_freq_no_stateful_behavior(): assert frequencies.infer_freq(times[:3]) == "D" # Call on full index (which has duplicates, so returns None) - frequencies.infer_freq(times) + assert frequencies.infer_freq(times) is None # After calling on full index, slice should still return "D" assert frequencies.infer_freq(times[:3]) == "D" From e3e824e25c5e7a8130e9c7ca00dba00674a837ec Mon Sep 17 00:00:00 2001 From: zhan7236 <76658920+zhan7236@users.noreply.github.com> Date: Tue, 2 Dec 2025 09:51:58 +0000 Subject: [PATCH 3/3] Trigger CI rerun