[Python-Dev] Why is type_modified() in typeobject.c not a public function?

Stefan Behnel stefan_ml at behnel.de
Tue May 27 18:47:13 CEST 2008


[reposting this to python-dev, as it affects both 2.6 and 3.0]

Hi,

when we build extension classes in Cython, we have to first build the type to
make it available to user code, and then update the type's tp_dict while we
run the class body code (PyObject_SetAttr() does not work here). In Py2.6+,
this requires invalidating the method cache after each attribute change, which
Python does internally using the type_modified() function.

Could this function get a public interface? I do not think Cython is the only
case where C code wants to modify a type after its creation, and copying the
code over seems like a hack to me.

Stefan



More information about the Python-Dev mailing list