The reason we haven't done that is we would like our setup.py script to be runnable without cython being installed. I think cythonize is being invoked (or something similar to it) by setuptools, using a feature added in setuptools 18.0: https://setuptools.readthedocs.io/en/latest/history.html#id60 Is there a way to use cythonize for this build workflow without importing it at the top-level in our setup.py file? FWIW, our setup.py file is here: https://bitbucket.org/yt_analysis/yt/src/yt/setup.py?at=yt&fileviewer=file-view-default On Fri, Jun 10, 2016 at 12:49 PM, Robert Bradshaw <robertwb@gmail.com> wrote:
You should be using cythonize rather than listing and maintaining the Extension definitions themselves.
http://docs.cython.org/src/quickstart/build.html#building-a-cython-module-us... https://github.com/cython/cython/wiki/enhancements-distutils_preprocessing
On Fri, Jun 10, 2016 at 9:18 AM, Nathan Goldbaum <nathan12343@gmail.com> wrote:
Hi all,
I'm working on a pretty large python/cython codebase (yt) that has many interdependent C extensions written in cython.
I've found it to be pretty hit or miss to depend on contributors to manually update cython dependency information in our setup.py file. The dependency information seems to only be used by setuptools to trigger recompilation, but critically setuptools will happily compile a C extension for the first time if the depends information is incomplete. This means that during development, if I update a cython routine, there's no way to ensure that other cython routines that cimport the one I modified will be recompiled unless I manually ensure the depends information is updated whenever cython code gains or loses a cimport.
To make that more concrete, here's a pull request I just made to yt that adds missing dependencies for a cython header. Without this pull request, setuptools fails to recompile these routines when selection_routines.pxd changes, causing a build failure.
https://bitbucket.org/yt_analysis/yt/pull-requests/2220
I think it should be possible to write a test for this by defining the dependency information outside of setup.py and parsing grep and looking for all cython files that cimport other cython files defined inside yt. However, before I do that, I'm curious whether anyone has done something similar, or if there is some other way of forcing the dependency information to be complete on the first compilation, rather than just for subsequent incremental recompilations during development.
Thanks for your help!
-Nathan
_______________________________________________ cython-devel mailing list cython-devel@python.org https://mail.python.org/mailman/listinfo/cython-devel
_______________________________________________ cython-devel mailing list cython-devel@python.org https://mail.python.org/mailman/listinfo/cython-devel