+++ /dev/null
-#
-# This example demonstrates how to access the internals
-# of a Numeric array object.
-#
-
-cdef extern from "Numeric/arrayobject.h":
-
- struct PyArray_Descr:
- int type_num, elsize
- char type
-
- ctypedef class Numeric.ArrayType [object PyArrayObject]:
- cdef char *data
- cdef int nd
- cdef int *dimensions, *strides
- cdef object base
- cdef PyArray_Descr *descr
- cdef int flags
-
-def print_2d_array(ArrayType a):
- print "Type:", chr(a.descr.type)
- if chr(a.descr.type) <> "f":
- raise TypeError("Float array required")
- if a.nd <> 2:
- raise ValueError("2 dimensional array required")
- cdef int nrows, ncols
- cdef float *elems, x
- nrows = a.dimensions[0]
- ncols = a.dimensions[1]
- elems = <float *>a.data
- hyphen = "-"
- divider = ("+" + 10 * hyphen) * ncols + "+"
- print divider
- for row in range(nrows):
- for col in range(ncols):
- x = elems[row * ncols + col]
- print "| %8f" % x,
- print "|"
- print divider
-import glob
+# Run as:
+# python setup.py build_ext --inplace
from distutils.core import setup
from distutils.extension import Extension
-from Cython.Distutils import build_ext
+from Cython.Build import cythonize
+ext_modules = cythonize("*.pyx", exclude="numpy_*.pyx")
+
+# Only compile the following if numpy is installed.
try:
from numpy.distutils.misc_util import get_numpy_include_dirs
- numpy_include_dirs = get_numpy_include_dirs()
-except:
- numpy_include_dirs = []
-
-ext_modules=[
- Extension("primes", ["primes.pyx"]),
- Extension("spam", ["spam.pyx"]),
-]
-
-for file in glob.glob("*.pyx"):
- if file != "numeric_demo.pyx":
- ext_modules.append(Extension(file[:-4], [file], include_dirs = numpy_include_dirs))
+ numpy_demo = Extension("*",
+ ["numpy_*.pyx"],
+ include_dirs=get_numpy_include_dirs())
+ ext_modules.extend(cythonize(numpy_demo))
+except ImportError:
+ pass
setup(
name = 'Demos',
- cmdclass = {'build_ext': build_ext},
ext_modules = ext_modules,
)