On Sun, 11 Aug 2013 12:33:16 +0200 Antoine Pitrou <solip...@pitrou.net> wrote: > So, the PEP 3121 "module state" pointer (the optional opaque void* > thing) should only be used to hold non-PyObjects. PyObjects should go > to the module dict, like they do in normal Python modules. Now, the > reason our PEP 3121 extension modules abuse the module state pointer to > keep PyObjects is two-fold: > > 1. it's surprisingly easier (it's actually a one-liner if you don't > handle errors - a rather bad thing, but all PEP 3121 extension modules > currently don't handle a NULL return from PyState_FindModule...) > > 2. it protects the module from any module dict monkeypatching. It's not > important if you are using a generic API on the PyObject, but it is if > the PyObject is really a custom C type with well-defined fields.
I overlooked a third reason which is performance. But, those lookups are generally not performance-critical. Regards Antoine. _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com