classification
Title: The Great Argument Clinic Conversion Derby Meta-Issue
Type: enhancement Stage: needs patch
Components: Argument Clinic, email Versions: Python 3.4
process
Status: open Resolution:
Dependencies: 20133 20148 20151 20152 20159 20168 20170 20171 20172 20173 20174 20175 20177 20178 20179 20180 20181 20182 20183 20184 20185 20186 Superseder:
Assigned To: larry Nosy List: barry, larry, r.david.murray, serhiy.storchaka
Priority: normal Keywords:

Created on 2014-01-08 00:31 by larry, last changed 2018-06-14 17:51 by BreamoreBoy.

Messages (9)
msg207649 - (view) Author: Larry Hastings (larry) * (Python committer) Date: 2014-01-08 00:31
This is a meta-issue tracking all the Argument Clinic Derby sub-issues.
msg207650 - (view) Author: Larry Hastings (larry) * (Python committer) Date: 2014-01-08 00:34
The issue tracker isn't letting me add all the dependencies to the dependency list.  For the record, here are the numbers:

#20133
#20148
#20151
#20152
#20159
#20168
#20170
#20171
#20172
#20173
#20174
#20175
#20177
#20178
#20179
#20180
#20181
#20182
#20183
#20184
#20185
#20186

(so far)
msg207697 - (view) Author: Larry Hastings (larry) * (Python committer) Date: 2014-01-08 20:33
Here's how the files were parceled out into the various bundles:


#20170
Derby #1: Convert 137 sites to Argument Clinic in Modules/posixmodule.c

    Modules/posixmodule.c: 137 sites

#20171
Derby #2: Convert 115 sites to Argument Clinic in Modules/_cursesmodule.c

    Modules/_cursesmodule.c: 115 sites

#20172
Derby #3: Convert 67 sites to Argument Clinic across 4 files

    PC/msvcrtmodule.c: 18 sites
    PC/winreg.c: 24 sites
    PC/winsound.c: 3 sites
    Modules/_winapi.c: 22 sites

#20173
Derby #4: Convert 53 sites to Argument Clinic across 5 files

    Modules/_codecsmodule.c: 43 sites
    Modules/sha1module.c: 2 sites
    Modules/sha256module.c: 3 sites
    Modules/sha512module.c: 3 sites
    Modules/md5module.c: 2 sites

#20174
Derby #5: Convert 50 sites to Argument Clinic across 3 files

    Modules/socketmodule.c: 47 sites
    Modules/socketmodule.h: 1 sites
    Modules/_functoolsmodule.c: 2 sites

#20175
Derby #6: Convert 50 sites to Argument Clinic across 8 files

    Modules/_io/bufferedio.c: 13 sites
    Modules/_io/bytesio.c: 6 sites
    Modules/_io/fileio.c: 6 sites
    Modules/_io/iobase.c: 4 sites
    Modules/_io/stringio.c: 5 sites
    Modules/_io/textio.c: 8 sites
    Modules/_multiprocessing/multiprocessing.c: 3 sites
    Modules/_multiprocessing/semaphore.c: 5 sites

#20159
Derby #7: Convert 51 sites to Argument Clinic across 3 files

    Modules/_elementtree.c: 31 sites
    PC/_msi.c: 15 sites
    PC/bdist_wininst/install.c: 5 sites

#20177
Derby #8: Convert 52 sites to Argument Clinic across 3 files

    Modules/_datetimemodule.c: 20 sites
    Modules/timemodule.c: 8 sites
    Modules/_decimal/_decimal.c: 24 sites

#20178
Derby #9: Convert 52 sites to Argument Clinic across 11 files

    Modules/_ctypes/_ctypes.c: 8 sites
    Modules/_ctypes/_ctypes_test.c: 1 sites
    Modules/_ctypes/callproc.c: 14 sites
    Modules/_ctypes/stgdict.c: 0 sites
    Modules/_curses_panel.c: 3 sites
    Modules/_sqlite/cache.c: 1 sites
    Modules/_sqlite/connection.c: 12 sites
    Modules/_sqlite/cursor.c: 5 sites
    Modules/_sqlite/microprotocols.c: 1 sites
    Modules/_sqlite/module.c: 6 sites
    Modules/_sqlite/row.c: 1 sites

#20179
Derby #10: Convert 50 sites to Argument Clinic across 4 files

    Modules/overlapped.c: 21 sites
    Modules/_ssl.c: 20 sites
    Objects/bytes_methods.c: 1 sites
    Objects/bytesobject.c: 8 sites

#20180
Derby #11: Convert 50 sites to Argument Clinic across 9 files

    Modules/_collectionsmodule.c: 4 sites
    Modules/itertoolsmodule.c: 11 sites
    Modules/_randommodule.c: 1 sites
    Objects/unicodeobject.c: 14 sites
    Modules/xxlimited.c: 4 sites
    Modules/xxmodule.c: 5 sites
    Modules/xxsubtype.c: 5 sites
    Objects/stringlib/find.h: 1 sites
    Objects/stringlib/transmogrify.h: 5 sites

#20181
Derby #12: Convert 50 sites to Argument Clinic across 4 files

    Objects/bytearrayobject.c: 13 sites
    Modules/parsermodule.c: 13 sites
    Modules/unicodedata.c: 12 sites
    Modules/readline.c: 12 sites

#20182
Derby #13: Convert 50 sites to Argument Clinic across 5 files

    Modules/signalmodule.c: 12 sites
    Modules/selectmodule.c: 12 sites
    Modules/zlibmodule.c: 11 sites
    Python/sysmodule.c: 10 sites
    Modules/_hashopenssl.c: 5 sites

#20183
Derby #14: Convert 50 sites to Argument Clinic across 6 files

    Modules/mmapmodule.c: 10 sites
    Modules/_localemodule.c: 10 sites
    Modules/zipimport.c: 9 sites
    Modules/ossaudiodev.c: 9 sites
    Modules/_testbuffer.c: 9 sites
    Modules/_struct.c: 3 sites

#20152
Derby #15: Convert 50 sites to Argument Clinic across 9 files

    Python/import.c: 8 sites
    Modules/cmathmodule.c: 8 sites
    Modules/cjkcodecs/multibytecodec.c: 8 sites
    Modules/arraymodule.c: 8 sites
    Modules/pyexpat.c: 7 sites
    Modules/fcntlmodule.c: 7 sites
    Modules/pwdmodule.c: 2 sites
    Modules/spwdmodule.c: 1 sites
    Modules/grpmodule.c: 1 sites

#20184
Derby #16: Convert 50 sites to Argument Clinic across 9 files

    Modules/faulthandler.c: 7 sites
    Modules/_pickle.c: 7 sites
    Modules/_lzmamodule.c: 7 sites
    Python/bltinmodule.c: 6 sites
    Modules/termios.c: 6 sites
    Modules/syslogmodule.c: 6 sites
    Modules/_dbmmodule.c: 4 sites
    Modules/_gdbmmodule.c: 2 sites
    Modules/_json.c: 5 sites

#20185
Derby #17: Convert 50 sites to Argument Clinic across 14 files

    Objects/typeobject.c: 5 sites
    Objects/longobject.c: 5 sites
    Objects/listobject.c: 5 sites
    Objects/floatobject.c: 4 sites
    Modules/resource.c: 4 sites
    Modules/_threadmodule.c: 4 sites
    Modules/_bz2module.c: 4 sites
    Modules/_bisectmodule.c: 4 sites
    Python/marshal.c: 3 sites
    Objects/exceptions.c: 3 sites
    Modules/nismodule.c: 3 sites
    Modules/gcmodule.c: 3 sites
    Python/_warnings.c: 2 sites
    Modules/_cryptmodule.c: 1 sites

#20186
Derby #18: Convert 31 sites to Argument Clinic across 23 files

    Objects/tupleobject.c: 2 sites
    Objects/memoryobject.c: 2 sites
    Objects/descrobject.c: 2 sites
    Objects/complexobject.c: 2 sites
    Modules/_operator.c: 2 sites
    Modules/_opcode.c: 2 sites
    Modules/_lsprof.c: 2 sites
    Modules/_heapqmodule.c: 2 sites
    Objects/weakrefobject.c: 1 sites
    Objects/structseq.c: 1 sites
    Objects/rangeobject.c: 1 sites
    Objects/object.c: 1 sites
    Objects/moduleobject.c: 1 sites
    Objects/funcobject.c: 1 sites
    Objects/fileobject.c: 1 sites
    Objects/enumobject.c: 1 sites
    Objects/codeobject.c: 1 sites
    Objects/boolobject.c: 1 sites
    Modules/symtablemodule.c: 1 sites
    Modules/mathmodule.c: 1 sites
    Modules/_tracemalloc.c: 1 sites
    Modules/_io/_iomodule.c: 1 sites
    Modules/_csv.c: 1 sites
msg208152 - (view) Author: Serhiy Storchaka (serhiy.storchaka) * (Python committer) Date: 2014-01-15 10:27
I want to warn against the converting of base objects (whose sources lie in Objects/). Their performance is critical and the converting can worsen it. Often they even don't use PyArg_ParseTuple due to performance reasons or because argument parsing is too special for PyArg_ParseTuple. I would suggest to postpone it until Argument Clinic will generate optimized parsing code.

The same is true for some modules. The performance of struct and operator is important. In any case these modules almost not use PyArg_ParseTuple and can be omitted.
msg208170 - (view) Author: Larry Hastings (larry) * (Python committer) Date: 2014-01-15 15:42
Can you give me an example of performance degradation due to Argument Clinic?  What percentage slowdown is common?
msg208171 - (view) Author: Serhiy Storchaka (serhiy.storchaka) * (Python committer) Date: 2014-01-15 16:07
I have no any numbers.
msg208172 - (view) Author: Larry Hastings (larry) * (Python committer) Date: 2014-01-15 16:10
Until you have some numbers, your assertion has no weight and should be ignored.

(As Carl Sagan once wrote: "That which can be asserted without evidence can be dismissed without evidence."  And as Donald Knuth wrote: "Premature optimization is the root of all evil.")
msg208686 - (view) Author: Tal Einat (taleinat) * (Python committer) Date: 2014-01-21 19:15
I've been working on converting unicode, bytes and bytearray, but their files are separated into Derby groups #10, #11 and #12. Could we create a new issue and move the relevant files to it?

The files I'd like to move:

From Derby #10 (issue20179):
    Objects/bytes_methods.c
    Objects/bytesobject.c

From Derby #11 (issue20180):
    Objects/unicodeobject.c
    Objects/stringlib/find.h
    Objects/stringlib/transmogrify.h

From Derby #12 (issue 20181):
    Objects/bytearrayobject.c: 13 sites
msg208687 - (view) Author: Tal Einat (taleinat) * (Python committer) Date: 2014-01-21 19:20
Never mind my previous comment; I realize it would create to much of a mess. Sorry for the noise.
History
Date User Action Args
2018-06-14 17:51:04BreamoreBoysetnosy: - BreamoreBoy
2018-06-14 17:28:25taleinatsetnosy: - taleinat
2015-02-25 15:24:15serhiy.storchakasetcomponents: + Argument Clinic
2014-07-10 10:43:46berker.peksagsetnosy: - berker.peksag
2014-07-06 22:30:26BreamoreBoysetnosy: + BreamoreBoy
2014-01-21 19:20:44taleinatsetmessages: + msg208687
2014-01-21 19:15:55taleinatsetnosy: + taleinat
messages: + msg208686
2014-01-15 16:10:14larrysetmessages: + msg208172
2014-01-15 16:07:32serhiy.storchakasetmessages: + msg208171
2014-01-15 15:42:54larrysetmessages: + msg208170
2014-01-15 10:27:54serhiy.storchakasetnosy: + serhiy.storchaka
messages: + msg208152
2014-01-08 20:33:36larrysetmessages: + msg207697
2014-01-08 01:54:16berker.peksagsetnosy: + berker.peksag
2014-01-08 01:36:37r.david.murraysetdependencies: + Derby: Convert the audioop module to use Argument Clinic, Derby: Convert the binascii module to use Argument Clinic, Derby #15: Convert 50 sites to Argument Clinic across 9 files, Derby #7: Convert 51 sites to Argument Clinic across 3 files -> Derby: Convert the ElementTree module to use Argument Clinic, Derby: Convert the _tkinter module to use Argument Clinic, Derby #1: Convert 137 sites to Argument Clinic in Modules/posixmodule.c, Derby #2: Convert 115 sites to Argument Clinic in Modules/_cursesmodule.c, Derby #3: Convert 67 sites to Argument Clinic across 4 files (Windows), Derby #4: Convert 53 sites to Argument Clinic across 5 files, Derby #5: Convert 50 sites to Argument Clinic across 3 files, Derby #6: Convert 50 sites to Argument Clinic across 8 files, Derby #8: Convert 28 sites to Argument Clinic across 2 files, Derby #9: Convert 52 sites to Argument Clinic across 11 files, Derby #10: Convert 50 sites to Argument Clinic across 4 files, Derby #11: Convert 50 sites to Argument Clinic across 9 files, Derby #12: Convert 50 sites to Argument Clinic across 4 files, Derby #13: Convert 50 sites to Argument Clinic across 5 files, Derby #14: Convert 41 sites to Argument Clinic across 5 files, Derby #16: Convert 50 sites to Argument Clinic across 9 files, Derby #17: Convert 49 sites to Argument Clinic across 13 files, Derby #18: Convert 31 sites to Argument Clinic across 23 files
2014-01-08 00:34:48larrysetmessages: + msg207650
2014-01-08 00:33:08larrysetdependencies: + Derby: Convert the _sre module to use Argument Clinic, - Derby: Convert the audioop module to use Argument Clinic
2014-01-08 00:33:00larrysetdependencies: + Derby: Convert the audioop module to use Argument Clinic
2014-01-08 00:31:45larrycreate