From 3106c30d581faf7cfbdca364cff429c57b13a413 Mon Sep 17 00:00:00 2001 From: Lee Dogeon Date: Sat, 14 Mar 2026 09:45:43 +0900 Subject: [PATCH] Make singleton builtin types immutable (#7423) --- Lib/test/test_builtin.py | 1 - crates/vm/src/builtins/singletons.rs | 2 +- crates/vm/src/builtins/slice.rs | 2 +- 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/Lib/test/test_builtin.py b/Lib/test/test_builtin.py index 2f38550ff..9be8ed716 100644 --- a/Lib/test/test_builtin.py +++ b/Lib/test/test_builtin.py @@ -2434,7 +2434,6 @@ class BuiltinTest(ComplexesAreIdenticalMixin, unittest.TestCase): with self.assertRaisesRegex(TypeError, msg): not NotImplemented - @unittest.expectedFailure # TODO: RUSTPYTHON; AssertionError: TypeError not raised def test_singleton_attribute_access(self): for singleton in (NotImplemented, Ellipsis): with self.subTest(singleton): diff --git a/crates/vm/src/builtins/singletons.rs b/crates/vm/src/builtins/singletons.rs index 9794a58d4..c70ed08e3 100644 --- a/crates/vm/src/builtins/singletons.rs +++ b/crates/vm/src/builtins/singletons.rs @@ -98,7 +98,7 @@ impl Constructor for PyNotImplemented { } } -#[pyclass(with(Constructor, AsNumber, Representable))] +#[pyclass(with(Constructor, AsNumber, Representable), flags(IMMUTABLETYPE))] impl PyNotImplemented { #[pymethod] fn __reduce__(&self, vm: &VirtualMachine) -> PyStrRef { diff --git a/crates/vm/src/builtins/slice.rs b/crates/vm/src/builtins/slice.rs index b46f7a3a5..9c6fa5b59 100644 --- a/crates/vm/src/builtins/slice.rs +++ b/crates/vm/src/builtins/slice.rs @@ -393,7 +393,7 @@ impl Constructor for PyEllipsis { } } -#[pyclass(with(Constructor, Representable))] +#[pyclass(with(Constructor, Representable), flags(IMMUTABLETYPE))] impl PyEllipsis { #[pymethod] fn __reduce__(&self, vm: &VirtualMachine) -> PyStrRef {