[Python-Dev] [Python-3000] How to specify keyword-only arguments from C?

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