[Python-Dev] Changing Clinic's output

Larry Hastings larry at hastings.org
Wed Jan 8 16:46:21 CET 2014



On 01/08/2014 07:33 AM, Brett Cannon wrote:
> So let's make this idea concrete to focus a possible discussion. Using 
> the example from the Clinic HOWTO and converting to how I see it working:
> [...]

Yep.  And what I was proposing is much the same, except there are a 
couple extra lines in the "generated code" section.  I'd keep the 
#define for the methoddef there, and add a prototype for the generated 
parsing function (_pickle_Pickler_dump) and the docstring.


####################

/*[clinic input]
pickle.Pickler.dump

     obj: 'O'
         The object to be pickled.
     /

Write a pickled representation of obj to the open file.
[clinic start generated code]*/
PyDoc_VAR(pickle_Pickler_dump__doc__);

static PyObject *
_pickle_Pickler_dump(PyObject *args);

#define _PICKLE_PICKLER_DUMP_METHODDEF    \
{"dump", (PyCFunction)_pickle_Pickler_dump, METH_O, 
_pickle_Pickler_dump__doc__},

static PyObject *
pickle_Pickler_dump_impl(PyObject *self, PyObject *obj)
/*[clinic end generated code: 
checksum=3bd30745bf206a48f8b576a1da3d90f55a0a4187]*/
{
     /* Check whether the Pickler was initialized correctly (issue3664).
        Developers often forget to call __init__() in their subclasses, 
which
        would trigger a segfault without this check. */
     ...
}

> Another potential perk of doing a gathering of Clinic output is that 
> if we take it to it's logical conclusion, then you can start to do 
> things like define a method like pickle.Pickler.__init__, etc., have 
> Clinic handle docstrings for modules and classes, and then it can end 
> up spitting out the type struct entirely for you, negating the typical 
> need to do all of that by hand (I don't know about the rest of you but 
> I always just copy and paste that struct anyway, so having a tool slot 
> in the right method names for the right positions would save me busy 
> work).

Surely new code should use the functional API for creating types?  
Anyway, yes, in the future it would be nice to get rid of a bunch of the 
busywork associated with implementing a Python builtin type, and 
Argument Clinic could definitely help with that.


//arry/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-dev/attachments/20140108/678e5ca4/attachment-0001.html>


More information about the Python-Dev mailing list