Stefan Behnel added the comment:

FYI, I've finally managed to find the time for implementing PEP 489 style 
module initialisation in Cython. It was so easy that I'm sorry it took me so 
long to get started. Cython 0.26 is fresh out, so the feature should go into 
0.27.
https://github.com/cython/cython/pull/1794

Note that I ended up implementing the Py_mod_create function which is now 
copying attributes from the spec right after creation. While not strictly 
required, I guess, it turned out to be easiest, but it seems like this does now 
conflict with the current "-m" implementation. I asked on the github commit why 
that restriction exists.

One thing I stumbled over: exec_in_module() is a Python level function. Would 
that make it possible to re-execute an already imported module? That could be 
dangerous, because C level module code often initialises resources that a 
simple re-execution of the module exec function would overwrite without 
cleaning up the old state. I did not (yet?) implement support for m_clear() 
etc., and that might actually turn out to be really risky when it comes to 
supporting arbitrary user code.

OTOH, that case is easy to detect because the module is already completely 
initialised at that point.

As far as I understand it, all that this PEP really changes from the POV of the 
extension module is that it calls the exec function with a different module 
name ("__main__"). Cython already provides that feature itself (by embedding 
CPython in a C main function), so this should be easy to support.

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue30403>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to