with self.assertRaisesRegex(TypeError, error_msg):
object.__init__(E(), 42)
+ def testClassWithExtCall(self):
+ class Meta(int):
+ def __init__(*args, **kwargs):
+ pass
+
+ def __new__(cls, name, bases, attrs, **kwargs):
+ return bases, kwargs
+
+ d = {'metaclass': Meta}
+
+ class A(**d): pass
+ self.assertEqual(A, ((), {}))
+ class A(0, 1, 2, 3, 4, 5, 6, 7, **d): pass
+ self.assertEqual(A, (tuple(range(8)), {}))
+ class A(0, *range(1, 8), **d, foo='bar'): pass
+ self.assertEqual(A, (tuple(range(8)), {'foo': 'bar'}))
+
+
if __name__ == '__main__':
unittest.main()
Py_INCREF(val);
PyTuple_SET_ITEM(folded, i, val);
}
- if (tuple) {
+ if (tuple && !pushed) {
ADDOP_LOAD_CONST_NEW(c, folded);
} else {
if (add == SET_ADD) {
ADDOP_I(c, build, pushed);
ADDOP_LOAD_CONST_NEW(c, folded);
ADDOP_I(c, extend, 1);
+ if (tuple) {
+ ADDOP(c, LIST_TO_TUPLE);
+ }
}
return 1;
}