[Python-Dev] Strange artifacts with PEP 3121 and monkey-patching sys.modules (in csv, ElementTree and others) (original) (raw)

Nick Coghlan ncoghlan at gmail.com
Sun Aug 11 13:04:40 CEST 2013


On 11 August 2013 06:33, Antoine Pitrou <solipsis at pitrou.net> wrote:

So code can be written like:

PyObject *dialects = PyStateGetModuleAttr( &csvmodule, "dialects", &PyDictType); if (dialects == NULL) return NULL;

This sounds like a good near term solution to me.

Longer term, I think there may be value in providing a richer extension module initialisation API that lets extension modules be represented as module subclasses in sys.modules, since that would get us to a position where it is possible to have multiple instances of an extension module in the same subinterpreter by holding on to external references after removing them from sys.modules (which is what we do in the test suite for pure Python modules). Enabling that also ties into the question of passing info to the extension module about how it is being loaded (e.g. as a submodule of a larger package), as well as allowing extension modules to cleanly handle reload(). However, that's dependent on the ModuleSpec idea we're currently thrashing out on import-sig (and should be able to bring to python-dev soon), and I think getting that integrated at all will be ambitious enough for 3.4 - using it to improve extension module handling would then be a project for 3.5.

Cheers, Nick.

-- Nick Coghlan | ncoghlan at gmail.com | Brisbane, Australia



More information about the Python-Dev mailing list