The "O!" format code should implement an isinstance() test
rather than a type equality test.
diff --git a/Python/getargs.c b/Python/getargs.c
index 9f76ac0..a4dc57a 100644
--- a/Python/getargs.c
+++ b/Python/getargs.c
@@ -875,7 +875,7 @@
 			type = va_arg(*p_va, PyTypeObject*);
 			p = va_arg(*p_va, PyObject **);
 			format++;
-			if (arg->ob_type == type)
+			if (PyType_IsSubtype(arg->ob_type, type))
 				*p = arg;
 			else
 				return converterr(type->tp_name, arg, msgbuf);