From a3a6203da29c96a6816c7819daa9985fe1f64dfb Mon Sep 17 00:00:00 2001 From: "Miss Islington (bot)" <31488909+miss-islington@users.noreply.github.com> Date: Sat, 11 Jul 2026 20:19:00 +0200 Subject: [PATCH] [3.15] gh-153293: Clear opcode statistics in the live profiler's reset_stats() (GH-153295) (#153586) MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit gh-153293: Clear opcode statistics in the live profiler's reset_stats() (GH-153295) (cherry picked from commit 43b0e01b5098c9e796957c10a992d8e6e95e0ae1) Co-authored-by: Łukasz --- Lib/profiling/sampling/live_collector/collector.py | 1 + .../test_sampling_profiler/test_live_collector_interaction.py | 2 ++ .../next/Library/2026-07-07-22-06-52.gh-issue-153293.0DvYdc.rst | 2 ++ 3 files changed, 5 insertions(+) create mode 100644 Misc/NEWS.d/next/Library/2026-07-07-22-06-52.gh-issue-153293.0DvYdc.rst diff --git a/Lib/profiling/sampling/live_collector/collector.py b/Lib/profiling/sampling/live_collector/collector.py index a53cfc6b719a..c5bd0178f263 100644 --- a/Lib/profiling/sampling/live_collector/collector.py +++ b/Lib/profiling/sampling/live_collector/collector.py @@ -705,6 +705,7 @@ class LiveStatsCollector(Collector): def reset_stats(self): """Reset all collected statistics.""" self.result.clear() + self.opcode_stats.clear() self.per_thread_data.clear() self.thread_ids.clear() self.view_mode = "ALL" diff --git a/Lib/test/test_profiling/test_sampling_profiler/test_live_collector_interaction.py b/Lib/test/test_profiling/test_sampling_profiler/test_live_collector_interaction.py index baf478133fc6..6dfdb9a192e0 100644 --- a/Lib/test/test_profiling/test_sampling_profiler/test_live_collector_interaction.py +++ b/Lib/test/test_profiling/test_sampling_profiler/test_live_collector_interaction.py @@ -99,6 +99,7 @@ class TestLiveCollectorInteractiveControls(unittest.TestCase): "cumulative_calls": 75, "total_rec_calls": 0, } + self.collector.opcode_stats[("test.py", 1, "func")][100] = 5 # Reset self.collector.reset_stats() @@ -107,6 +108,7 @@ class TestLiveCollectorInteractiveControls(unittest.TestCase): self.assertEqual(self.collector.successful_samples, 0) self.assertEqual(self.collector.failed_samples, 0) self.assertEqual(len(self.collector.result), 0) + self.assertEqual(len(self.collector.opcode_stats), 0) def test_increase_refresh_rate(self): """Test increasing refresh rate (faster updates).""" diff --git a/Misc/NEWS.d/next/Library/2026-07-07-22-06-52.gh-issue-153293.0DvYdc.rst b/Misc/NEWS.d/next/Library/2026-07-07-22-06-52.gh-issue-153293.0DvYdc.rst new file mode 100644 index 000000000000..ac358bb7fc0a --- /dev/null +++ b/Misc/NEWS.d/next/Library/2026-07-07-22-06-52.gh-issue-153293.0DvYdc.rst @@ -0,0 +1,2 @@ +Fix the live sampling profiler TUI keeping stale aggregated opcode +statistics after a stats reset. -- 2.47.3