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

Method index

crates/vm/src/builtins/memory.rs:771–806  ·  view source on GitHub ↗
(
        &self,
        value: PyObjectRef,
        start: OptionalArg<isize>,
        stop: OptionalArg<isize>,
        vm: &VirtualMachine,
    )

Source from the content-addressed store, hash-verified

769
770 #[pymethod]
771 fn index(
772 &self,
773 value: PyObjectRef,
774 start: OptionalArg<isize>,
775 stop: OptionalArg<isize>,
776 vm: &VirtualMachine,
777 ) -> PyResult<usize> {
778 self.try_not_released(vm)?;
779 if self.desc.ndim() != 1 {
780 return Err(
781 vm.new_not_implemented_error("multi-dimensional sub-views are not implemented")
782 );
783 }
784 let len = self.desc.dim_desc[0].0;
785 let start = start.unwrap_or(0);
786 let stop = stop.unwrap_or(len as isize);
787
788 let start = if start < 0 {
789 (start + len as isize).max(0) as usize
790 } else {
791 (start as usize).min(len)
792 };
793 let stop = if stop < 0 {
794 (stop + len as isize).max(0) as usize
795 } else {
796 (stop as usize).min(len)
797 };
798
799 for i in start..stop {
800 let item = self.getitem_by_idx(i as isize, vm)?;
801 if vm.bool_eq(&item, &value)? {
802 return Ok(i);
803 }
804 }
805 Err(vm.new_value_error("memoryview.index(x): x not in memoryview"))
806 }
807
808 fn cast_to_1d(&self, format: PyUtf8StrRef, vm: &VirtualMachine) -> PyResult<Self> {
809 let format_str = format.as_str();

Callers

nothing calls this directly

Calls 7

try_not_releasedMethod · 0.80
getitem_by_idxMethod · 0.80
bool_eqMethod · 0.80
ErrClass · 0.50
ndimMethod · 0.45
maxMethod · 0.45
minMethod · 0.45

Tested by

no test coverage detected