Issue 20225: Argument Clinic: simplify METH_NOARGS generated code (original) (raw)

Created on 2014-01-12 10:20 by georg.brandl, last changed 2022-04-11 14:57 by admin. This issue is now closed.

Messages (4)
msg207943 - (view) Author: Georg Brandl (georg.brandl) * (Python committer) Date: 2014-01-12 10:20
For METH_NOARGS, you can get rid of the separate _impl function. This makes the generated code much smaller.
msg207944 - (view) Author: Serhiy Storchaka (serhiy.storchaka) * (Python committer) Date: 2014-01-12 10:23
Seconded. But only if there are no self or result converters.
msg207954 - (view) Author: Larry Hastings (larry) * (Python committer) Date: 2014-01-12 13:42
(Actually a self converter would be fine too. Those are only allowed to cast.) I'm not doing this; here's why. I want the call signature to the impl function to be the *idealized* signature of that function. And METH_NOARGS passes in a dumb stupid second argument that is always a NULL pointer. I just don't want that there. The long-term goal of Clinic is to let us speed up argument parsing. We'll do this by rewriting the whole approach to argument parsing. I suspect this will include not just PyArg_ParseTuple but even the whole callback mechanism, METH_O METH_NOARGS and all that. So I can live with the extra three-line function for now. Also, I assert that compilers are sufficiently smart today to fold the impl function back into the parsing function. Therefore this approach has no run-time cost. Finally, if you're trying to reduce the number of lines of generated code stomping on your poor tired eyes, consider playing with the Clinic buffer prototype: https://bitbucket.org/larry/python-clinic-buffer You can at least prototype with it before checking in for now.
msg207955 - (view) Author: Georg Brandl (georg.brandl) * (Python committer) Date: 2014-01-12 13:51
Sure, I wasn't concerned with compilation, only saving lines of code. But I agree that the buffer way sounds much more promising. Just seemed odd that METH_O was clean and METH_NOARGS less so :)
History
Date User Action Args
2022-04-11 14:57:56 admin set github: 64424
2014-01-12 13:51:34 georg.brandl set messages: +
2014-01-12 13:42:30 larry set status: open -> closedcomponents: + Demos and Toolsversions: + Python 3.4messages: + type: enhancementresolution: rejectedstage: resolved
2014-01-12 10:30:04 georg.brandl set assignee: larrynosy: + larry
2014-01-12 10:23:00 serhiy.storchaka set nosy: + serhiy.storchakamessages: +
2014-01-12 10:20:28 georg.brandl create