[Cython] Cannot cythonize subclasses of setuptools.extension._Extension

Robert Bradshaw robertwb at gmail.com
Fri Apr 15 00:19:21 EDT 2016


I agree that we shouldn't disallow distutils' Extensions just because
setuptools was imported.

https://github.com/cython/cython/commit/d804bd2d8d9aac04b92d4bfb8dbc7f8a4c8079ac

On Thu, Apr 14, 2016 at 12:07 PM, Manuel Nuno Melo <
manuel.nuno.melo at gmail.com> wrote:

> Our need to control cythonization comes from the fact that we implement
> cython as a lazy and optional dependency. Lazy in the sense that we delay
> as much as possible cythonization so that setuptools or pip have time to
> install cython, if needed. Optional because we distribute both .pyx and
> cythonized .c files, and decide on which to use based on user flags.
>
> We, therefore, need an Extension class that only cythonizes if we decide
> to.
>
> Thanks for the feedback,
> Manel
>
> On Apr 14, 2016 8:17 PM, "Matthew Brett" <matthew.brett at gmail.com> wrote:
> >
> > On Thu, Apr 14, 2016 at 6:08 AM, Erik Bray <erik.m.bray at gmail.com>
> wrote:
> > > On Wed, Apr 13, 2016 at 9:35 PM, Manuel Nuno Melo
> > > <manuel.nuno.melo at gmail.com> wrote:
> > >> Hello devs,
> > >>
> > >> I'm developing the setup.py for a scientific package, MDAnalysis (see
> PR
> > >> #799). We depend on distutils and setuptool. Namely, we use
> > >> setuptools.extension.Extension class for our extensions.
> > >>
> > >> Some older versions of setuptools (<18.0) do filename cythonization
> > >> themselves upon initialization of the Extension object.
> > >>
> > >> Because we want to control name cythonization ourselves I try to
> directly
> > >> use distutils.extension.Extension, which has none of setuptools'
> > >> cythonization. However, this doesn't work because setuptools patches
> > >> distutils, so that distutils.extension.Extension effectively becomes
> > >> setuptools.extension.Extension.
> > >
> > > I'm wondering what it is specifically you need to do in your
> > > subclass--might it still be possible to do with a subclass of the
> > > setuptools Extension?  Not saying I disagree with the overall idea,
> > > but I also wonder if there isn't a better way.
> >
> > I know this is a terrible and ugly hack, but the projects I work in
> > have a 'fake_pyrex' directory, that fools setuptools into thinking
> > that 'pyrex' is installed, and therefore prevents it from doing the
> > .pyx -> .c filename conversions in the extension:
> >
> > https://github.com/regreg/regreg/blob/master/setup.py#L33
> >
> > Cheers,
> >
> > Matthew
> > _______________________________________________
> > cython-devel mailing list
> > cython-devel at python.org
> > https://mail.python.org/mailman/listinfo/cython-devel
>
> _______________________________________________
> cython-devel mailing list
> cython-devel at python.org
> https://mail.python.org/mailman/listinfo/cython-devel
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/cython-devel/attachments/20160414/48df18dc/attachment-0001.html>


More information about the cython-devel mailing list