Use `_PyArg_NoKeywords` instead of `_PyArg_NoKwnames` when checking the `kwds` tuple when creating `GenericAlias`. This fixes an interpreter crash when passing in keyword arguments to `GenericAlias`'s constructor.
Needs backport to 3.9.
Automerge-Triggered-By: GH:gvanrossum
alias = t[int]
self.assertEqual(ref(alias)(), alias)
+ def test_no_kwargs(self):
+ # bpo-42576
+ with self.assertRaises(TypeError):
+ GenericAlias(bad=float)
+
if __name__ == "__main__":
unittest.main()
--- /dev/null
+``types.GenericAlias`` will now raise a ``TypeError`` when attempting to
+initialize with a keyword argument. Previously, this would cause the
+interpreter to crash. Patch by Ken Jin.
static PyObject *
ga_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
{
- if (!_PyArg_NoKwnames("GenericAlias", kwds)) {
+ if (!_PyArg_NoKeywords("GenericAlias", kwds)) {
return NULL;
}
if (!_PyArg_CheckPositional("GenericAlias", PyTuple_GET_SIZE(args), 2, 2)) {