summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason R. Coombs <jaraco@jaraco.com>2012-03-10 22:31:45 -0800
committerJason R. Coombs <jaraco@jaraco.com>2012-03-10 22:31:45 -0800
commitae23c2bec1cb457eccec03791b213cd1fde6469a (patch)
tree7598b63b90f2f5e79aca9843d5985ef09970a2d4
parent7c9a065104eda2faebefe3ec16801d7bf42fe918 (diff)
downloadpython-setuptools-bitbucket-ae23c2bec1cb457eccec03791b213cd1fde6469a.tar.gz
Converted have_pyrex into a function
-rw-r--r--setuptools/extension.py32
1 files changed, 19 insertions, 13 deletions
diff --git a/setuptools/extension.py b/setuptools/extension.py
index db563305..eb8b836c 100644
--- a/setuptools/extension.py
+++ b/setuptools/extension.py
@@ -6,16 +6,19 @@ from setuptools.dist import _get_unpatched
_Extension = _get_unpatched(distutils.core.Extension)
-# Prefer Cython to Pyrex
-pyrex_impls = 'Cython.Distutils.build_ext', 'Pyrex.Distutils.build_ext'
-for pyrex_impl in pyrex_impls:
- try:
- # from (pyrex_impl) import build_ext
- build_ext = __import__(pyrex_impl, fromlist=['build_ext']).build_ext
- break
- except:
- pass
-have_pyrex = 'build_ext' in globals()
+def have_pyrex():
+ """
+ Return True if Cython or Pyrex can be imported.
+ """
+ pyrex_impls = 'Cython.Distutils.build_ext', 'Pyrex.Distutils.build_ext'
+ for pyrex_impl in pyrex_impls:
+ try:
+ # from (pyrex_impl) import build_ext
+ __import__(pyrex_impl, fromlist=['build_ext']).build_ext
+ return True
+ except Exception:
+ pass
+ return False
class Extension(_Extension):
@@ -23,13 +26,16 @@ class Extension(_Extension):
def __init__(self, *args, **kw):
_Extension.__init__(self, *args, **kw)
- if not have_pyrex:
+ if not have_pyrex():
self._convert_pyx_sources_to_c()
def _convert_pyx_sources_to_c(self):
"convert .pyx extensions to .c"
- self.sources = [source[:-3] + 'c' for source in self.sources
- if source.endswith('.pyx')]
+ def pyx_to_c(source):
+ if source.endswith('.pyx'):
+ source = source[:-4] + '.c'
+ return source
+ self.sources = map(pyx_to_c, self.sources)
class Library(Extension):
"""Just like a regular Extension, but built as a library instead"""