MCPcopy Create free account
hub / github.com/MegEngine/MegFlow / __getitem__

Method __getitem__

flow-message/src/cross/python/list.rs:48–87  ·  view source on GitHub ↗
(&self, idx: isize)

Source from the content-addressed store, hash-verified

46 }
47
48 fn __getitem__(&self, idx: isize) -> PyResult<PyObject> {
49 let gil = Python::acquire_gil();
50 let py = gil.python();
51 let len = self.as_ref().len();
52 let idx = cvt_idx(len, idx);
53
54 match self.as_ref().ty() {
55 data::DataType::Collection(data::CollectionType::List(data::ValueType::Int)) => {
56 let value: PyResult<i64> = self
57 .as_ref()
58 .xget(&(idx))
59 .ok_or_else(|| pyo3::exceptions::PyTypeError::new_err("Idx out of bound"));
60 value.map(|value| value.to_object(py))
61 }
62 data::DataType::Collection(data::CollectionType::List(data::ValueType::Float)) => {
63 let value: PyResult<f64> = self
64 .as_ref()
65 .xget(&(idx))
66 .ok_or_else(|| pyo3::exceptions::PyTypeError::new_err("Idx out of bound"));
67 value.map(|value| value.to_object(py))
68 }
69 data::DataType::Collection(data::CollectionType::List(data::ValueType::Bool)) => {
70 let value: PyResult<bool> = self
71 .as_ref()
72 .xget(&(idx))
73 .ok_or_else(|| pyo3::exceptions::PyTypeError::new_err("Idx out of bound"));
74 value.map(|value| value.to_object(py))
75 }
76 data::DataType::Collection(data::CollectionType::List(data::ValueType::Byte)) => {
77 let value: PyResult<u8> = self
78 .as_ref()
79 .xget(&(idx))
80 .ok_or_else(|| pyo3::exceptions::PyTypeError::new_err("Idx out of bound"));
81 value.map(|value| value.to_object(py))
82 }
83 _ => {
84 unimplemented!()
85 }
86 }
87 }
88}

Callers

nothing calls this directly

Calls 6

cvt_idxFunction · 0.85
as_refMethod · 0.80
tyMethod · 0.80
to_objectMethod · 0.80
lenMethod · 0.45
xgetMethod · 0.45

Tested by

no test coverage detected