From 755a2b7d26af91c5f20e75e44c4f8c54e3733042 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=A0=95=EC=A7=80=EC=9B=85?= Date: Mon, 13 Jul 2026 14:12:59 +0900 Subject: [PATCH] itertools: fix count() repr to show float step 1.0 (#8261) Assisted-by: Claude Code:claude-opus-4-8 --- Lib/test/test_itertools.py | 1 - crates/vm/src/stdlib/itertools.rs | 4 +++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/Lib/test/test_itertools.py b/Lib/test/test_itertools.py index e7c764815..e865c9bf0 100644 --- a/Lib/test/test_itertools.py +++ b/Lib/test/test_itertools.py @@ -538,7 +538,6 @@ class TestBasicOps(unittest.TestCase): #check proper internal error handling for large "step' sizes count(1, maxsize+5); sys.exc_info() - @unittest.expectedFailure # TODO: RUSTPYTHON; 'count(10.5)' != 'count(10.5, 1.0)' def test_count_with_step(self): self.assertEqual(lzip('abc',count(2,3)), [('a', 2), ('b', 5), ('c', 8)]) self.assertEqual(lzip('abc',count(start=2,step=3)), diff --git a/crates/vm/src/stdlib/itertools.rs b/crates/vm/src/stdlib/itertools.rs index 8a78c698e..041620298 100644 --- a/crates/vm/src/stdlib/itertools.rs +++ b/crates/vm/src/stdlib/itertools.rs @@ -225,7 +225,9 @@ mod decl { let step = &zelf.step; let mut result = Wtf8Buf::from("count("); result.push_wtf8(cur_repr.as_wtf8()); - if !vm.bool_eq(step, vm.ctx.new_int(1).as_object())? { + let step_is_int_one = step.fast_isinstance(vm.ctx.types.int_type) + && vm.bool_eq(step, vm.ctx.new_int(1).as_object())?; + if !step_is_int_one { result.push_str(", "); result.push_wtf8(step.repr(vm)?.as_wtf8()); }