From 3f1ce34422e5810dfb20b82af7ae23195e3917a4 Mon Sep 17 00:00:00 2001 From: Lee Dogeon Date: Sat, 14 Mar 2026 20:21:23 +0900 Subject: [PATCH] Match divmod zero-division message with CPython (#7426) --- Lib/test/test_builtin.py | 1 - crates/vm/src/builtins/float.rs | 8 ++++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/Lib/test/test_builtin.py b/Lib/test/test_builtin.py index edf68287a..ff6175723 100644 --- a/Lib/test/test_builtin.py +++ b/Lib/test/test_builtin.py @@ -727,7 +727,6 @@ class BuiltinTest(ComplexesAreIdenticalMixin, unittest.TestCase): self.assertIs(None.__ne__(0), NotImplemented) self.assertIs(None.__ne__("abc"), NotImplemented) - @unittest.expectedFailure # TODO: RUSTPYTHON; wrong error message def test_divmod(self): self.assertEqual(divmod(12, 7), (1, 5)) self.assertEqual(divmod(-12, 7), (-2, 2)) diff --git a/crates/vm/src/builtins/float.rs b/crates/vm/src/builtins/float.rs index eeddd6b2e..4d7d7c710 100644 --- a/crates/vm/src/builtins/float.rs +++ b/crates/vm/src/builtins/float.rs @@ -119,11 +119,11 @@ macro_rules! impl_try_from_object_float { impl_try_from_object_float!(f32, f64); fn inner_div(v1: f64, v2: f64, vm: &VirtualMachine) -> PyResult { - float_ops::div(v1, v2).ok_or_else(|| vm.new_zero_division_error("float division by zero")) + float_ops::div(v1, v2).ok_or_else(|| vm.new_zero_division_error("division by zero")) } fn inner_mod(v1: f64, v2: f64, vm: &VirtualMachine) -> PyResult { - float_ops::mod_(v1, v2).ok_or_else(|| vm.new_zero_division_error("float mod by zero")) + float_ops::mod_(v1, v2).ok_or_else(|| vm.new_zero_division_error("division by zero")) } pub fn try_to_bigint(value: f64, vm: &VirtualMachine) -> PyResult { @@ -147,11 +147,11 @@ pub fn try_to_bigint(value: f64, vm: &VirtualMachine) -> PyResult { } fn inner_floordiv(v1: f64, v2: f64, vm: &VirtualMachine) -> PyResult { - float_ops::floordiv(v1, v2).ok_or_else(|| vm.new_zero_division_error("float floordiv by zero")) + float_ops::floordiv(v1, v2).ok_or_else(|| vm.new_zero_division_error("division by zero")) } fn inner_divmod(v1: f64, v2: f64, vm: &VirtualMachine) -> PyResult<(f64, f64)> { - float_ops::divmod(v1, v2).ok_or_else(|| vm.new_zero_division_error("float divmod()")) + float_ops::divmod(v1, v2).ok_or_else(|| vm.new_zero_division_error("division by zero")) } pub fn float_pow(v1: f64, v2: f64, vm: &VirtualMachine) -> PyResult {