From 51b83c4a475d5b0d61c762d1f22335c1afd2f74d Mon Sep 17 00:00:00 2001 From: JaceJung-dev Date: Sun, 12 Jul 2026 20:06:56 +0900 Subject: [PATCH] itertools: fix count() repr to show float step 1.0 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 e7c764815d1..e865c9bf059 100644 --- a/Lib/test/test_itertools.py +++ b/Lib/test/test_itertools.py @@ -538,7 +538,6 @@ def test_count(self): #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 8a78c698ed3..041620298e7 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()); }