(self, visitor: V)
| 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 |
nothing calls this directly
no test coverage detected