MCPcopy Index your code
hub / github.com/davidhewitt/pythonize / deserialize_any

Method deserialize_any

src/de.rs:135–176  ·  view source on GitHub ↗
(self, visitor: V)

Source from the content-addressed store, hash-verified

133 type Error = PythonizeError;
134
135 fn deserialize_any<V>(self, visitor: V) -> Result<V::Value>
136 where
137 V: de::Visitor<'de>,
138 {
139 let obj = self.input;
140
141 // First check for cases which are cheap to check due to pointer
142 // comparison or bitflag checks
143 if obj.is_none() {
144 self.deserialize_unit(visitor)
145 } else if obj.is_instance_of::<PyBool>() {
146 self.deserialize_bool(visitor)
147 } else if let Ok(x) = obj.cast::<PyInt>() {
148 self.deserialize_any_int(x, visitor)
149 } else if obj.is_instance_of::<PyList>() || obj.is_instance_of::<PyTuple>() {
150 self.deserialize_tuple(obj.len()?, visitor)
151 } else if obj.is_instance_of::<PyDict>() {
152 self.deserialize_map(visitor)
153 } else if obj.is_instance_of::<PyString>() {
154 self.deserialize_str(visitor)
155 }
156 // Continue with cases which are slower to check because they go
157 // through `isinstance` machinery
158 else if obj.is_instance_of::<PyBytes>() || obj.is_instance_of::<PyByteArray>() {
159 self.deserialize_bytes(visitor)
160 } else if obj.is_instance_of::<PyFloat>() {
161 self.deserialize_f64(visitor)
162 } else if obj.is_instance_of::<PyFrozenSet>() || obj.is_instance_of::<PySet>() {
163 self.deserialize_seq(visitor)
164 } else if obj.cast::<PySequence>().is_ok() {
165 self.deserialize_tuple(obj.len()?, visitor)
166 } else if obj.cast::<PyMapping>().is_ok() {
167 self.deserialize_map(visitor)
168 } else if let Some(dc) = DataclassCandidate::try_new(obj) {
169 visitor.visit_map(PyDataclassAccess::new(dc)?)
170 } else {
171 Err(obj.get_type().qualname().map_or_else(
172 |_| PythonizeError::unsupported_type("unknown"),
173 PythonizeError::unsupported_type,
174 ))
175 }
176 }
177
178 fn deserialize_bool<V>(self, visitor: V) -> Result<V::Value>
179 where

Callers

nothing calls this directly

Calls 8

deserialize_unitMethod · 0.80
deserialize_boolMethod · 0.80
deserialize_any_intMethod · 0.80
deserialize_tupleMethod · 0.80
deserialize_mapMethod · 0.80
deserialize_strMethod · 0.80
deserialize_bytesMethod · 0.80
deserialize_seqMethod · 0.80

Tested by

no test coverage detected