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

Method __setitem__

flow-message/src/cross/python/list.rs:20–46  ·  view source on GitHub ↗
(&mut self, idx: isize, value: PyObject)

Source from the content-addressed store, hash-verified

18 }
19
20 fn __setitem__(&mut self, idx: isize, value: PyObject) -> PyResult<()> {
21 let gil = Python::acquire_gil();
22 let py = gil.python();
23 let value = value.as_ref(py);
24 let len = self.as_ref().len();
25 let idx = cvt_idx(len, idx);
26 if value.is_instance::<pyo3::types::PyInt>()?
27 || value.is_instance::<pyo3::types::PyLong>()?
28 {
29 let value: i64 = value.extract()?;
30 match self.as_ref().ty() {
31 data::DataType::Collection(data::CollectionType::List(data::ValueType::Byte)) => {
32 self.as_mut().xset(idx, value as u8);
33 }
34 _ => self.as_mut().xset(idx, value),
35 }
36 } else if value.is_instance::<pyo3::types::PyBool>()? {
37 let value: bool = value.extract()?;
38 self.as_mut().xset(idx, value);
39 } else if value.is_instance::<pyo3::types::PyFloat>()? {
40 let value: f64 = value.extract()?;
41 self.as_mut().xset(idx, value);
42 } else {
43 unimplemented!()
44 }
45 Ok(())
46 }
47
48 fn __getitem__(&self, idx: isize) -> PyResult<PyObject> {
49 let gil = Python::acquire_gil();

Callers

nothing calls this directly

Calls 5

cvt_idxFunction · 0.85
as_refMethod · 0.80
tyMethod · 0.80
lenMethod · 0.45
xsetMethod · 0.45

Tested by

no test coverage detected