diff --git a/crates/stdlib/src/array.rs b/crates/stdlib/src/array.rs index 2e28714611c..463027d9baa 100644 --- a/crates/stdlib/src/array.rs +++ b/crates/stdlib/src/array.rs @@ -996,7 +996,6 @@ mod array { } } - #[pymethod] fn __getitem__(&self, needle: PyObjectRef, vm: &VirtualMachine) -> PyResult { self.getitem_inner(&needle, vm) } @@ -1038,7 +1037,6 @@ mod array { } } - #[pymethod] fn __setitem__( zelf: &Py, needle: PyObjectRef, @@ -1055,7 +1053,6 @@ mod array { } } - #[pymethod] fn __delitem__(&self, needle: PyObjectRef, vm: &VirtualMachine) -> PyResult<()> { self.delitem_inner(&needle, vm) } diff --git a/crates/stdlib/src/contextvars.rs b/crates/stdlib/src/contextvars.rs index 658d0906b24..329342fe6dc 100644 --- a/crates/stdlib/src/contextvars.rs +++ b/crates/stdlib/src/contextvars.rs @@ -189,7 +189,6 @@ mod _contextvars { } } - #[pymethod] fn __getitem__( &self, var: PyRef, diff --git a/crates/stdlib/src/mmap.rs b/crates/stdlib/src/mmap.rs index 191a330d536..d3895521096 100644 --- a/crates/stdlib/src/mmap.rs +++ b/crates/stdlib/src/mmap.rs @@ -1240,12 +1240,10 @@ mod mmap { Ok(()) } - #[pymethod] fn __getitem__(&self, needle: PyObjectRef, vm: &VirtualMachine) -> PyResult { self.getitem_inner(&needle, vm) } - #[pymethod] fn __setitem__( zelf: &Py, needle: PyObjectRef, diff --git a/crates/vm/src/builtins/bytearray.rs b/crates/vm/src/builtins/bytearray.rs index e1e437310eb..0f9dce7230b 100644 --- a/crates/vm/src/builtins/bytearray.rs +++ b/crates/vm/src/builtins/bytearray.rs @@ -238,12 +238,10 @@ impl PyByteArray { Ok(zelf) } - #[pymethod] fn __getitem__(&self, needle: PyObjectRef, vm: &VirtualMachine) -> PyResult { self._getitem(&needle, vm) } - #[pymethod] pub fn __delitem__(&self, needle: PyObjectRef, vm: &VirtualMachine) -> PyResult<()> { self._delitem(&needle, vm) } @@ -549,7 +547,6 @@ impl PyByteArray { #[pyclass] impl Py { - #[pymethod] fn __setitem__( &self, needle: PyObjectRef, diff --git a/crates/vm/src/builtins/bytes.rs b/crates/vm/src/builtins/bytes.rs index 57aed481dd4..01e67358aae 100644 --- a/crates/vm/src/builtins/bytes.rs +++ b/crates/vm/src/builtins/bytes.rs @@ -241,7 +241,6 @@ impl PyBytes { PyBytesInner::maketrans(from, to, vm) } - #[pymethod] fn __getitem__(&self, needle: PyObjectRef, vm: &VirtualMachine) -> PyResult { self._getitem(&needle, vm) } diff --git a/crates/vm/src/builtins/dict.rs b/crates/vm/src/builtins/dict.rs index 19b14688994..43f7100e963 100644 --- a/crates/vm/src/builtins/dict.rs +++ b/crates/vm/src/builtins/dict.rs @@ -225,7 +225,6 @@ impl PyDict { self.entries.contains(vm, &*key) } - #[pymethod] fn __delitem__(&self, key: PyObjectRef, vm: &VirtualMachine) -> PyResult<()> { self.inner_delitem(&*key, vm) } @@ -235,7 +234,6 @@ impl PyDict { self.entries.clear() } - #[pymethod] fn __setitem__( &self, key: PyObjectRef, @@ -372,7 +370,6 @@ impl Py { Ok(Implemented(true)) } - #[pymethod] #[cfg_attr(feature = "flame-it", flame("PyDictRef"))] fn __getitem__(&self, key: PyObjectRef, vm: &VirtualMachine) -> PyResult { self.inner_getitem(&*key, vm) diff --git a/crates/vm/src/builtins/genericalias.rs b/crates/vm/src/builtins/genericalias.rs index 99c1eacc3ec..e9150e4c088 100644 --- a/crates/vm/src/builtins/genericalias.rs +++ b/crates/vm/src/builtins/genericalias.rs @@ -189,7 +189,6 @@ impl PyGenericAlias { } } - #[pymethod] fn __getitem__(zelf: PyRef, needle: PyObjectRef, vm: &VirtualMachine) -> PyResult { let new_args = subs_parameters( zelf.to_owned().into(), diff --git a/crates/vm/src/builtins/list.rs b/crates/vm/src/builtins/list.rs index eaff4a54688..02475ee12b6 100644 --- a/crates/vm/src/builtins/list.rs +++ b/crates/vm/src/builtins/list.rs @@ -213,7 +213,6 @@ impl PyList { } } - #[pymethod] fn __getitem__(&self, needle: PyObjectRef, vm: &VirtualMachine) -> PyResult { self._getitem(&needle, vm) } @@ -228,7 +227,6 @@ impl PyList { } } - #[pymethod] fn __setitem__( &self, needle: PyObjectRef, @@ -308,7 +306,6 @@ impl PyList { } } - #[pymethod] fn __delitem__(&self, subscript: PyObjectRef, vm: &VirtualMachine) -> PyResult<()> { self._delitem(&subscript, vm) } diff --git a/crates/vm/src/builtins/mappingproxy.rs b/crates/vm/src/builtins/mappingproxy.rs index c8f77c5c5fc..f7fb64fa6ab 100644 --- a/crates/vm/src/builtins/mappingproxy.rs +++ b/crates/vm/src/builtins/mappingproxy.rs @@ -111,7 +111,6 @@ impl PyMappingProxy { )?)) } - #[pymethod] pub fn __getitem__(&self, key: PyObjectRef, vm: &VirtualMachine) -> PyResult { self.get_inner(key.clone(), vm)? .ok_or_else(|| vm.new_key_error(key)) diff --git a/crates/vm/src/builtins/memory.rs b/crates/vm/src/builtins/memory.rs index 5ca4257cded..6db260c80e0 100644 --- a/crates/vm/src/builtins/memory.rs +++ b/crates/vm/src/builtins/memory.rs @@ -659,7 +659,6 @@ impl PyMemoryView { self.release(); } - #[pymethod] fn __getitem__(zelf: PyRef, needle: PyObjectRef, vm: &VirtualMachine) -> PyResult { zelf.try_not_released(vm)?; if zelf.desc.ndim() == 0 { @@ -682,7 +681,6 @@ impl PyMemoryView { } } - #[pymethod] fn __delitem__(&self, _needle: PyObjectRef, vm: &VirtualMachine) -> PyResult<()> { if self.desc.readonly { return Err(vm.new_type_error("cannot modify read-only memory")); @@ -847,7 +845,6 @@ impl PyMemoryView { #[pyclass] impl Py { - #[pymethod] fn __setitem__( &self, needle: PyObjectRef, diff --git a/crates/vm/src/builtins/range.rs b/crates/vm/src/builtins/range.rs index 957a66020c1..49f50ffbaa2 100644 --- a/crates/vm/src/builtins/range.rs +++ b/crates/vm/src/builtins/range.rs @@ -279,7 +279,6 @@ impl PyRange { (vm.ctx.types.range_type.to_owned(), range_parameters_tuple) } - #[pymethod] fn __getitem__(&self, subscript: PyObjectRef, vm: &VirtualMachine) -> PyResult { match RangeIndex::try_from_object(vm, subscript)? { RangeIndex::Slice(slice) => { diff --git a/crates/vm/src/builtins/str.rs b/crates/vm/src/builtins/str.rs index d14bcd92bbe..4931a748198 100644 --- a/crates/vm/src/builtins/str.rs +++ b/crates/vm/src/builtins/str.rs @@ -584,7 +584,6 @@ impl PyStr { Ok(item) } - #[pymethod] fn __getitem__(&self, needle: PyObjectRef, vm: &VirtualMachine) -> PyResult { self._getitem(&needle, vm) } diff --git a/crates/vm/src/builtins/tuple.rs b/crates/vm/src/builtins/tuple.rs index e7271f9b6fd..f6eff5b91e5 100644 --- a/crates/vm/src/builtins/tuple.rs +++ b/crates/vm/src/builtins/tuple.rs @@ -315,7 +315,6 @@ impl PyTuple { } } - #[pymethod] fn __getitem__(&self, needle: PyObjectRef, vm: &VirtualMachine) -> PyResult { self._getitem(&needle, vm) } diff --git a/crates/vm/src/builtins/type.rs b/crates/vm/src/builtins/type.rs index e2e69c7bffc..b6995d6f595 100644 --- a/crates/vm/src/builtins/type.rs +++ b/crates/vm/src/builtins/type.rs @@ -439,7 +439,10 @@ impl PyType { slot_name_set.insert(name); } } - for attr_name in slot_name_set { + // Sort for deterministic iteration order (important for slot processing) + let mut slot_names: Vec<_> = slot_name_set.into_iter().collect(); + slot_names.sort_by_key(|name| name.as_str()); + for attr_name in slot_names { self.update_slot::(attr_name, ctx); } diff --git a/crates/vm/src/stdlib/collections.rs b/crates/vm/src/stdlib/collections.rs index 86caef7a25f..fd48cea0598 100644 --- a/crates/vm/src/stdlib/collections.rs +++ b/crates/vm/src/stdlib/collections.rs @@ -278,7 +278,6 @@ mod _collections { self.maxlen } - #[pymethod] fn __getitem__(&self, idx: isize, vm: &VirtualMachine) -> PyResult { let deque = self.borrow_deque(); idx.wrapped_at(deque.len()) @@ -286,7 +285,6 @@ mod _collections { .ok_or_else(|| vm.new_index_error("deque index out of range")) } - #[pymethod] fn __setitem__(&self, idx: isize, value: PyObjectRef, vm: &VirtualMachine) -> PyResult<()> { let mut deque = self.borrow_deque_mut(); idx.wrapped_at(deque.len()) @@ -295,7 +293,6 @@ mod _collections { .ok_or_else(|| vm.new_index_error("deque index out of range")) } - #[pymethod] fn __delitem__(&self, idx: isize, vm: &VirtualMachine) -> PyResult<()> { let mut deque = self.borrow_deque_mut(); idx.wrapped_at(deque.len()) diff --git a/crates/vm/src/stdlib/ctypes/array.rs b/crates/vm/src/stdlib/ctypes/array.rs index d808f967a0f..eea1fd765d5 100644 --- a/crates/vm/src/stdlib/ctypes/array.rs +++ b/crates/vm/src/stdlib/ctypes/array.rs @@ -940,7 +940,6 @@ impl PyCArray { } // Array_subscript - #[pymethod] fn __getitem__(zelf: &Py, item: PyObjectRef, vm: &VirtualMachine) -> PyResult { // PyIndex_Check if let Some(i) = item.downcast_ref::() { @@ -1047,7 +1046,6 @@ impl PyCArray { } // Array_ass_subscript - #[pymethod] fn __setitem__( zelf: &Py, item: PyObjectRef, @@ -1074,7 +1072,6 @@ impl PyCArray { } // Array does not support item deletion - #[pymethod] fn __delitem__(&self, _item: PyObjectRef, vm: &VirtualMachine) -> PyResult<()> { Err(vm.new_type_error("Array does not support item deletion")) } diff --git a/crates/vm/src/stdlib/ctypes/pointer.rs b/crates/vm/src/stdlib/ctypes/pointer.rs index 8a0f7cb0f6a..875d78a0010 100644 --- a/crates/vm/src/stdlib/ctypes/pointer.rs +++ b/crates/vm/src/stdlib/ctypes/pointer.rs @@ -346,7 +346,6 @@ impl PyCPointer { } // Pointer_subscript - #[pymethod] fn __getitem__(zelf: &Py, item: PyObjectRef, vm: &VirtualMachine) -> PyResult { // PyIndex_Check if let Some(i) = item.downcast_ref::() { @@ -529,7 +528,6 @@ impl PyCPointer { } // Pointer_ass_item - #[pymethod] fn __setitem__( zelf: &Py, item: PyObjectRef, diff --git a/crates/vm/src/stdlib/sre.rs b/crates/vm/src/stdlib/sre.rs index b950db9e1ff..33f884e1adc 100644 --- a/crates/vm/src/stdlib/sre.rs +++ b/crates/vm/src/stdlib/sre.rs @@ -737,7 +737,6 @@ mod _sre { }) } - #[pymethod] fn __getitem__( &self, group: PyObjectRef,