[Python-Dev] Changing Clinic's output
storchaka at gmail.com
Tue Jan 7 21:39:02 CET 2014
07.01.14 21:53, Antoine Pitrou написав(ла):
> Several core developers a bit unhappy with the way Argument Clinic
> currently scatters generated code into hand-written C modules. The
> opinion is that it makes C files more confusing and annoying to
> navigate through.
> Several solutions have been proposed:
> - move all generated code to separate C files, which would then be
> #included'd into the main module file
Only this option will solve all my issues.
My arguments against current behavior:
* It increases the number of lines of code.
now with Argument Clinic
1770 2704 Modules/audioop.c
1572 1997 Modules/binascii.c
3772 4558 Modules/_elementtree.c
2712 3360 Modules/_sre.c
3060 3742 Modules/_tkinter.c
More PageUp/PageDown needed to list the sources, and you should be more
accurate wish positioning the scrollbar.
* It adds a lot of names which clutter up lists for navigation in your
editor/IDE. For example if now there is only one name for the a2b_uu
function in navigation list, with Argument Clinic there are three names:
BINASCII_A2B_UU_METHODDEF, binascii_a2b_uu, and binascii_a2b_uu_impl
(and only the last is interested for humans). If now the list of names
fits in one screen, with Argument Clinic it will need three screens.
* It makes harder to use search for navigation. Now a2b_uu is occurred
in the source file 6 times, and with Argument Clinic it will be occurred
13 times (however moving generated code to separate file will decrease
this number to 3).
* It mixes manually written code with generated boilerplate
* It clutters up hg log and hg blame results. Every time when you change
clinic.py to generate different output, it touches multiple lines in all
files which use Argument Clinic and clutters up their history.
* It makes the code more errorprone. Peoples can edit generated code
instead of clinic declaration.
I have converted enough code to Argument Clinic last days and I seen how
peoples work with already converted code, so I known what I say. If this
doesn't convince you, I don't know what I can add.
More information about the Python-Dev