Subject: Revert: Bumped Pyo3 to 0.19

--- b/src/de.rs
+++ a/src/de.rs
@@ -61,29 +61,29 @@
 
         if obj.is_none() {
             self.deserialize_unit(visitor)
+        } else if obj.is_instance_of::<PyBool>()? {
-        } else if obj.is_instance_of::<PyBool>() {
             self.deserialize_bool(visitor)
+        } else if obj.is_instance_of::<PyByteArray>()? || obj.is_instance_of::<PyBytes>()? {
-        } else if obj.is_instance_of::<PyByteArray>() || obj.is_instance_of::<PyBytes>() {
             self.deserialize_bytes(visitor)
+        } else if obj.is_instance_of::<PyDict>()? {
-        } else if obj.is_instance_of::<PyDict>() {
             self.deserialize_map(visitor)
+        } else if obj.is_instance_of::<PyFloat>()? {
-        } else if obj.is_instance_of::<PyFloat>() {
             self.deserialize_f64(visitor)
+        } else if obj.is_instance_of::<PyFrozenSet>()? {
-        } else if obj.is_instance_of::<PyFrozenSet>() {
             self.deserialize_tuple(obj.len()?, visitor)
+        } else if obj.is_instance_of::<PyInt>()? {
-        } else if obj.is_instance_of::<PyInt>() {
             self.deserialize_i64(visitor)
+        } else if obj.is_instance_of::<PyList>()? {
-        } else if obj.is_instance_of::<PyList>() {
             self.deserialize_tuple(obj.len()?, visitor)
+        } else if obj.is_instance_of::<PyLong>()? {
-        } else if obj.is_instance_of::<PyLong>() {
             self.deserialize_i64(visitor)
+        } else if obj.is_instance_of::<PySet>()? {
-        } else if obj.is_instance_of::<PySet>() {
             self.deserialize_tuple(obj.len()?, visitor)
+        } else if obj.is_instance_of::<PyString>()? {
-        } else if obj.is_instance_of::<PyString>() {
             self.deserialize_str(visitor)
+        } else if obj.is_instance_of::<PyTuple>()? {
-        } else if obj.is_instance_of::<PyTuple>() {
             self.deserialize_tuple(obj.len()?, visitor)
+        } else if obj.is_instance_of::<PyUnicode>()? {
-        } else if obj.is_instance_of::<PyUnicode>() {
             self.deserialize_str(visitor)
         } else if let Ok(_) = obj.downcast::<PySequence>() {
             self.deserialize_tuple(obj.len()?, visitor)
@@ -247,7 +247,7 @@
         V: de::Visitor<'de>,
     {
         let item = self.input;
+        if item.is_instance_of::<PyDict>()? {
-        if item.is_instance_of::<PyDict>() {
             // Get the enum variant from the dict key
             let d: &PyDict = item.downcast().unwrap();
             if d.len() != 1 {
@@ -261,7 +261,7 @@
             let value = d.get_item(variant).unwrap();
             let mut de = Depythonizer::from_object(value);
             visitor.visit_enum(PyEnumAccess::new(&mut de, variant))
+        } else if item.is_instance_of::<PyString>()? {
-        } else if item.is_instance_of::<PyString>() {
             let s: &PyString = self.input.downcast()?;
             visitor.visit_enum(s.to_str()?.into_deserializer())
         } else {
--- b/src/lib.rs
+++ a/src/lib.rs
@@ -18,23 +18,23 @@
 //!     bar: Option<usize>
 //! }
 //!
+//! let gil = Python::acquire_gil();
+//! let py = gil.python();
-//! Python::with_gil(|py| {
-//!     let sample = Sample {
-//!         foo: "Foo".to_string(),
-//!         bar: None
-//!     };
 //!
+//! let sample = Sample {
+//!     foo: "Foo".to_string(),
+//!     bar: None
+//! };
-//!     // Rust -> Python
-//!     let obj = pythonize(py, &sample).unwrap();
 //!
+//! // Rust -> Python
+//! let obj = pythonize(py, &sample).unwrap();
-//!     assert_eq!("{'foo': 'Foo', 'bar': None}", &format!("{}", obj.as_ref(py).repr().unwrap()));
 //!
+//! assert_eq!("{'foo': 'Foo', 'bar': None}", &format!("{}", obj.as_ref(py).repr().unwrap()));
-//!     // Python -> Rust
-//!     let new_sample: Sample = depythonize(obj.as_ref(py)).unwrap();
 //!
+//! // Python -> Rust
+//! let new_sample: Sample = depythonize(obj.as_ref(py)).unwrap();
-//!     assert_eq!(new_sample, sample);
-//! });
 //!
+//! assert_eq!(new_sample, sample);
 //! ```
 mod de;
 mod error;
--- b/tests/test_custom_types.rs
+++ a/tests/test_custom_types.rs
@@ -66,7 +66,7 @@
         let serialized = pythonize_custom::<PythonizeCustomList, _>(py, &json!([1, 2, 3]))
             .unwrap()
             .into_ref(py);
+        assert!(serialized.is_instance_of::<CustomList>().unwrap());
-        assert!(serialized.is_instance_of::<CustomList>());
 
         let deserialized: Value = depythonize(serialized).unwrap();
         assert_eq!(deserialized, json!([1, 2, 3]));
@@ -131,7 +131,7 @@
             pythonize_custom::<PythonizeCustomDict, _>(py, &json!({ "hello": 1, "world": 2 }))
                 .unwrap()
                 .into_ref(py);
+        assert!(serialized.is_instance_of::<CustomDict>().unwrap());
-        assert!(serialized.is_instance_of::<CustomDict>());
 
         let deserialized: Value = depythonize(serialized).unwrap();
         assert_eq!(deserialized, json!({ "hello": 1, "world": 2 }));
