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

Function to_data

flow-message/src/cross/python/mod.rs:59–97  ·  view source on GitHub ↗
(py: Python, object: PyObject)

Source from the content-addressed store, hash-verified

57}
58
59fn to_data(py: Python, object: PyObject) -> PyResult<data::Data> {
60 let value = object.as_ref(py);
61 if value.is_instance::<pyo3::types::PyInt>()? || value.is_instance::<pyo3::types::PyLong>()? {
62 let value: i64 = value.extract()?;
63 Ok(data::Data::from(value))
64 } else if value.is_instance::<pyo3::types::PyBool>()? {
65 let value: bool = value.extract()?;
66 Ok(data::Data::from(value))
67 } else if value.is_instance::<pyo3::types::PyFloat>()? {
68 let value: f64 = value.extract()?;
69 Ok(data::Data::from(value))
70 } else if value.is_instance::<pyo3::types::PyBytes>()?
71 || value.is_instance::<pyo3::types::PyByteArray>()?
72 {
73 let value: Vec<u8> = value.extract()?;
74 Ok(data::Data::from(value))
75 } else if value.is_instance::<pyo3::types::PyString>()? {
76 let value: String = value.extract()?;
77 Ok(data::Data::from(value.into_bytes()))
78 } else if value.is_instance::<PyList>()? {
79 let value: Py<PyList> = value.extract()?;
80 let mut b = value.borrow_mut(py);
81 Ok(b.take())
82 } else if value.is_instance::<PyMap>()? {
83 let value: Py<PyMap> = value.extract()?;
84 let mut b = value.borrow_mut(py);
85 Ok(data::Data::from(b.take()))
86 } else if value.is_instance::<PyCowList>()? {
87 let value: Py<PyCowList> = value.extract()?;
88 let mut b = value.borrow_mut(py);
89 Ok(data::Data::from(b.take()))
90 } else if value.is_instance::<PyCowMap>()? {
91 let value: Py<PyCowMap> = value.extract()?;
92 let mut b = value.borrow_mut(py);
93 Ok(data::Data::from(b.take()))
94 } else {
95 unimplemented!()
96 }
97}
98
99fn from_data(py: Python, data: impl std::ops::Deref<Target = data::Data>) -> PyResult<PyObject> {
100 match data.ty() {

Callers 3

__setitem__Method · 0.85
__setitem__Method · 0.85
__setitem__Method · 0.85

Calls 2

as_refMethod · 0.80
takeMethod · 0.80

Tested by

no test coverage detected