1
- use pyo3:: type_object:: PyTypeInfo ;
2
1
use pyo3:: types:: * ;
3
2
use serde:: de:: { self , IntoDeserializer } ;
4
3
use serde:: Deserialize ;
@@ -67,32 +66,34 @@ impl<'a, 'de> de::Deserializer<'de> for &'a mut Depythonizer<'de> {
67
66
68
67
if obj. is_none ( ) {
69
68
self . deserialize_unit ( visitor)
70
- } else if PyBool :: is_instance ( obj ) {
69
+ } else if obj . is_instance :: < PyBool > ( ) ? {
71
70
self . deserialize_bool ( visitor)
72
- } else if PyByteArray :: is_instance ( obj ) || PyBytes :: is_instance ( obj ) {
71
+ } else if obj . is_instance :: < PyByteArray > ( ) ? || obj . is_instance :: < PyBytes > ( ) ? {
73
72
self . deserialize_bytes ( visitor)
74
- } else if PyDict :: is_instance ( obj ) {
73
+ } else if obj . is_instance :: < PyDict > ( ) ? {
75
74
self . deserialize_map ( visitor)
76
- } else if PyFloat :: is_instance ( obj ) {
75
+ } else if obj . is_instance :: < PyFloat > ( ) ? {
77
76
self . deserialize_f64 ( visitor)
78
- } else if PyFrozenSet :: is_instance ( obj ) {
77
+ } else if obj . is_instance :: < PyFrozenSet > ( ) ? {
79
78
self . deserialize_tuple ( obj. len ( ) ?, visitor)
80
- } else if PyInt :: is_instance ( obj ) {
79
+ } else if obj . is_instance :: < PyInt > ( ) ? {
81
80
self . deserialize_i64 ( visitor)
82
- } else if PyList :: is_instance ( obj ) {
81
+ } else if obj . is_instance :: < PyList > ( ) ? {
83
82
self . deserialize_tuple ( obj. len ( ) ?, visitor)
84
- } else if PyLong :: is_instance ( obj ) {
83
+ } else if obj . is_instance :: < PyLong > ( ) ? {
85
84
self . deserialize_i64 ( visitor)
86
- } else if PySet :: is_instance ( obj ) {
85
+ } else if obj . is_instance :: < PySet > ( ) ? {
87
86
self . deserialize_tuple ( obj. len ( ) ?, visitor)
88
- } else if PyString :: is_instance ( obj ) {
87
+ } else if obj . is_instance :: < PyString > ( ) ? {
89
88
self . deserialize_str ( visitor)
90
- } else if PyTuple :: is_instance ( obj ) {
89
+ } else if obj . is_instance :: < PyTuple > ( ) ? {
91
90
self . deserialize_tuple ( obj. len ( ) ?, visitor)
92
- } else if PyUnicode :: is_instance ( obj ) {
91
+ } else if obj . is_instance :: < PyUnicode > ( ) ? {
93
92
self . deserialize_str ( visitor)
94
93
} else {
95
- Err ( PythonizeError :: unsupported_type ( obj. get_type ( ) . name ( ) ) )
94
+ Err ( PythonizeError :: unsupported_type (
95
+ obj. get_type ( ) . name ( ) . unwrap_or ( "<unknown>" ) ,
96
+ ) )
96
97
}
97
98
}
98
99
@@ -247,7 +248,7 @@ impl<'a, 'de> de::Deserializer<'de> for &'a mut Depythonizer<'de> {
247
248
V : de:: Visitor < ' de > ,
248
249
{
249
250
let item = self . input ;
250
- if PyDict :: is_instance ( item ) {
251
+ if item . is_instance :: < PyDict > ( ) ? {
251
252
// Get the enum variant from the dict key
252
253
let d: & PyDict = item. cast_as ( ) . unwrap ( ) ;
253
254
if d. len ( ) != 1 {
@@ -261,7 +262,7 @@ impl<'a, 'de> de::Deserializer<'de> for &'a mut Depythonizer<'de> {
261
262
let value = d. get_item ( variant) . unwrap ( ) ;
262
263
let mut de = Depythonizer :: from_object ( value) ;
263
264
visitor. visit_enum ( PyEnumAccess :: new ( & mut de, variant) )
264
- } else if PyString :: is_instance ( item ) {
265
+ } else if item . is_instance :: < PyString > ( ) ? {
265
266
let s: & PyString = self . input . cast_as ( ) ?;
266
267
visitor. visit_enum ( s. to_str ( ) ?. into_deserializer ( ) )
267
268
} else {
0 commit comments