[Python-Dev] [Python-3000] How to specify keyword-only arguments from C? (original) (raw)

Alexandre Vassalotti alexandre at peadrop.com
Fri Jun 6 05:43:59 CEST 2008


On Thu, Jun 5, 2008 at 11:18 PM, Alexandre Vassalotti <alexandre at peadrop.com> wrote:

On Thu, Jun 5, 2008 at 10:14 PM, Mark Hammond <mhammond at skippinet.com.au> wrote:

Set an error if the 'arg' tuple doesn't have a length of zero?

Oh, that isn't a bad idea at all. I will try this. Thanks!

Worked flawlessly!

Just for the archives, here's how it looks like:

static int Unpickler_init(UnpicklerObject *self, PyObject *args, PyObject *kwds) { static char *kwlist[] = {"file", "encoding", "errors", 0}; PyObject *file; char *encoding = NULL; char *errors = NULL;

if (Py_SIZE(args) != 1) {
    PyErr_Format(PyExc_TypeError,
                 "%s takes exactly one 1 positional argument (%zd given)",
                 Py_TYPE(self)->tp_name, Py_SIZE(args));
    return -1;
}

if (!PyArg_ParseTupleAndKeywords(args, kwds, "O|ss:Unpickler", kwlist,
                                 &file, &encoding, &errors))
    return -1;

...

Thank you, Mark, for the tip!

-- Alexandre



More information about the Python-Dev mailing list