[Python-Dev] Not all public names in C API have the "Py" prefix

Serhiy Storchaka storchaka at gmail.com
Mon Mar 27 06:22:01 EDT 2017


A number of public typedef names without the "Py" prefix survived the 
Grand Renaming [1]. A couple of new names without the "Py" prefix were 
added after the Grand Renaming (e.g. getter and setter [2]).

That names were included in the Stable ABI. The long list of such names 
can be found in PEP 384 [3]:

unaryfunc binaryfunc ternaryfunc inquiry lenfunc ssizeargfunc 
ssizessizeargfunc ssizeobjargproc ssizessizeobjargproc objobjargproc 
objobjproc visitproc traverseproc destructor getattrfunc getattrofunc 
setattrfunc setattrofunc reprfunc hashfunc richcmpfunc getiterfunc 
iternextfunc descrgetfunc descrsetfunc initproc newfunc allocfunc getter 
setter

And I suppose new names were added since Python 3.2.

A couple of underscored name without the "_Py" prefix (e.g. _object, 
_typeobject) are defined when include "Python.h".

Should we to do something with this? Maybe add Py-prefixed aliases and 
temporary keep old names for compatibility (but allow to hide them if 
define a special macro)?

[1] https://python-history.blogspot.com/2009/03/great-or-grand-renaming.html
[2] 
https://github.com/python/cpython/commit/6d6c1a35e08b95a83dbe47dbd9e6474daff00354
[3] https://www.python.org/dev/peps/pep-0384/



More information about the Python-Dev mailing list