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 <[email protected]>
<http://bugs.python.org/issue30403>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com