with self.assertRaises(RuntimeWarning):
type("SouthPonies", (Model,), {})
+ def test_tuple_subclass_as_bases(self):
+ # gh-132176: it used to crash on using
+ # tuple subclass for as base classes.
+ class TupleSubclass(tuple): pass
+
+ typ = type("typ", TupleSubclass((int, object)), {})
+ self.assertEqual(typ.__bases__, (int, object))
+ self.assertEqual(type(typ.__bases__), TupleSubclass)
+
class SimpleNamespaceTests(unittest.TestCase):
static inline void
set_tp_bases(PyTypeObject *self, PyObject *bases, int initial)
{
- assert(PyTuple_CheckExact(bases));
+ assert(PyTuple_Check(bases));
if (self->tp_flags & _Py_TPFLAGS_STATIC_BUILTIN) {
// XXX tp_bases can probably be statically allocated for each
// static builtin type.
+ assert(PyTuple_CheckExact(bases));
assert(initial);
assert(self->tp_bases == NULL);
if (PyTuple_GET_SIZE(bases) == 0) {