MCPcopy Index your code
hub / github.com/RustPython/RustPython / __setitem__

Method __setitem__

crates/vm/src/builtins/memory.rs:914–944  ·  view source on GitHub ↗
(
        &self,
        needle: PyObjectRef,
        value: PyObjectRef,
        vm: &VirtualMachine,
    )

Source from the content-addressed store, hash-verified

912#[pyclass]
913impl Py<PyMemoryView> {
914 fn __setitem__(
915 &self,
916 needle: PyObjectRef,
917 value: PyObjectRef,
918 vm: &VirtualMachine,
919 ) -> PyResult<()> {
920 self.try_not_released(vm)?;
921 if self.desc.readonly {
922 return Err(vm.new_type_error("cannot modify read-only memory"));
923 }
924 if value.is(&vm.ctx.none) {
925 return Err(vm.new_type_error("cannot delete memory"));
926 }
927
928 if self.desc.ndim() == 0 {
929 // TODO: merge branches when we got conditional if let
930 if needle.is(&vm.ctx.ellipsis) {
931 return self.pack_single(0, value, vm);
932 } else if let Some(tuple) = needle.downcast_ref::<PyTuple>()
933 && tuple.is_empty()
934 {
935 return self.pack_single(0, value, vm);
936 }
937 return Err(vm.new_type_error("invalid indexing of 0-dim memory"));
938 }
939 match SubscriptNeedle::try_from_object(vm, needle)? {
940 SubscriptNeedle::Index(i) => self.setitem_by_idx(i, value, vm),
941 SubscriptNeedle::Slice(slice) => self.setitem_by_slice(&slice, value, vm),
942 SubscriptNeedle::MultiIndex(indices) => self.setitem_by_multi_idx(&indices, value, vm),
943 }
944 }
945
946 #[pymethod]
947 fn __reduce_ex__(&self, _proto: usize, vm: &VirtualMachine) -> PyResult {

Callers

nothing calls this directly

Calls 9

try_not_releasedMethod · 0.80
isMethod · 0.80
pack_singleMethod · 0.80
setitem_by_idxMethod · 0.80
setitem_by_multi_idxMethod · 0.80
ErrClass · 0.50
ndimMethod · 0.45
is_emptyMethod · 0.45
setitem_by_sliceMethod · 0.45

Tested by

no test coverage detected