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

Method __getitem__

crates/vm/src/builtins/memory.rs:670–690  ·  view source on GitHub ↗
(zelf: PyRef<Self>, needle: PyObjectRef, vm: &VirtualMachine)

Source from the content-addressed store, hash-verified

668 }
669
670 fn __getitem__(zelf: PyRef<Self>, needle: PyObjectRef, vm: &VirtualMachine) -> PyResult {
671 zelf.try_not_released(vm)?;
672 if zelf.desc.ndim() == 0 {
673 // 0-d memoryview can be referenced using mv[...] or mv[()] only
674 if needle.is(&vm.ctx.ellipsis) {
675 return Ok(zelf.into());
676 }
677 if let Some(tuple) = needle.downcast_ref::<PyTuple>()
678 && tuple.is_empty()
679 {
680 return zelf.unpack_single(0, vm);
681 }
682 return Err(vm.new_type_error("invalid indexing of 0-dim memory"));
683 }
684
685 match SubscriptNeedle::try_from_object(vm, needle)? {
686 SubscriptNeedle::Index(i) => zelf.getitem_by_idx(i, vm),
687 SubscriptNeedle::Slice(slice) => zelf.getitem_by_slice(&slice, vm),
688 SubscriptNeedle::MultiIndex(indices) => zelf.getitem_by_multi_idx(&indices, vm),
689 }
690 }
691
692 fn __delitem__(&self, _needle: PyObjectRef, vm: &VirtualMachine) -> PyResult<()> {
693 if self.desc.readonly {

Callers

nothing calls this directly

Calls 9

try_not_releasedMethod · 0.80
isMethod · 0.80
unpack_singleMethod · 0.80
getitem_by_idxMethod · 0.80
getitem_by_multi_idxMethod · 0.80
ErrClass · 0.50
ndimMethod · 0.45
is_emptyMethod · 0.45
getitem_by_sliceMethod · 0.45

Tested by

no test coverage detected