INADA Naoki added the comment: AST type doesn't have any information about optional fields. And I don't know it's worth enough to add it. When AST is instantiated by keyword arguments, there are no check about absence of some fields. I suppose we can just loosen positional arguments too.
current: if (PyTuple_GET_SIZE(args) > 0) { if (numfields != PyTuple_GET_SIZE(args)) { PyErr_Format(PyExc_TypeError, "%.400s constructor takes %s" "%zd positional argument%s", Py_TYPE(self)->tp_name, numfields == 0 ? "" : "either 0 or ", numfields, numfields == 1 ? "" : "s"); will be: if (PyTuple_GET_SIZE(args) > 0) { if (numfields > PyTuple_GET_SIZE(args)) { PyErr_Format(PyExc_TypeError, "%.400s constructor takes at most " "%zd positional argument%s", Py_TYPE(self)->tp_name, numfields, numfields == 1 ? "" : "s"); ---------- _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue29622> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com