
2008/6/3 Raymond Hettinger <python@rcn.com>:
Given the other grossly inaccurate statement in that post, I conclude that drinking and posting on python-ideas are incompatible occupations. So I will refrain from any further claim on that subject till tomorrow morning.
No worries, except that mailman saves a copy, google indexes it, and all of your posts will be visible to your great-great grandchildren for all eternity. Other than that, it's just a casual idea session between friends ;-)
Raymond
I have looked at setobject.c, it seems mostly straightforward to make the change, e.g. for union this is the current union method: static PyObject * set_union(PySetObject *so, PyObject *other) { PySetObject *result; result = (PySetObject *)set_copy(so); if (result == NULL) return NULL; if ((PyObject *)so == other) return (PyObject *)result; if (set_update_internal(result, other) == -1) { Py_DECREF(result); return NULL; } return (PyObject *)result; } A slight change makes it accept variable number of arguments (note that I haven't tried to optimize it by rearranging the order of arguments): static PyObject * set_union(PySetObject *so, PyObject *args) { PySetObject *result; PyObject *arg; Py_ssize_t nargs; Py_ssize_t i; result = (PySetObject *)set_copy(so); if (result == NULL) return NULL; nargs = PyTuple_GET_SIZE(args); for (i = 0; i < nargs; i++) { arg = PyTuple_GET_ITEM(args, i); if ((PyObject *)so != arg && set_update_internal(result, arg) == -1) { Py_DECREF(result); return NULL; } } return (PyObject *)result; } And then in set_methods[], change {"union", (PyCFunction)set_union, METH_O, union_doc}, to {"union", (PyCFunction)set_union, METH_VARARGS, vunion_doc}, I would go through the whole of setobjects.c and try to do this for each relevant method. However I have not touched Python source code before, and I am not at all confident that I would make a good job of it. If someone offered to review my effort privately, I'd be happy to have a go but OTOH I don't want to waste anyone's time. -- Arnaud