(zelf: PyRef<Self>, needle: PyObjectRef, vm: &VirtualMachine)
| 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 { |
nothing calls this directly
no test coverage detected