Cython - Usage Instructions
==========================

Building Cython extensions using distutils
-----------------------------------------

Cython comes with an experimental distutils extension for compiling
Cython modules, contributed by Graham Fawcett of the University of
Windsor (fawcett@uwindsor.ca).

The Demos directory contains a setup.py file demonstrating its use. To
compile the demos:

(1)  cd Demos

(2)  python setup.py build_ext --inplace

         or

     python setup.py build --build-lib=.

(You may get a screed of warnings from the C compiler, but you can
ignore these -- as long as there are no actual errors, things are
probably okay.)

Try out the extensions with:

     python run_primes.py
     python run_spam.py
     python run_numeric_demo.py


Building Cython extensions by hand
---------------------------------

You can also invoke the Cython compiler on its own to translate a .pyx
file to a .c file. On Unix,

     cython filename.pyx

On other platforms,

     python cython.py filename.pyx

It's then up to you to compile and link the .c file using whatever
procedure is appropriate for your platform. The file
Makefile.nodistutils in the Demos directory shows how to do this for
one particular Unix system.


Command line options
--------------------

The cython command supports the following options:

  Short Long              Argument    Description
  -----------------------------------------------------------------------------
  -v    --version                     Display version number of cython compiler
  -l    --create-listing              Write error messages to a .lis file
  -I    --include-dir     <directory> Search for include files in named
                                      directory (may be repeated)
  -o    --output-file     <filename>  Specify name of generated C file (only
                                      one source file allowed if this is used)
  -p, --embed-positions               If specified, the positions in Cython files of each
                                      function definition is embedded in its docstring.
  -z, --pre-import <module>           If specified, assume undeclared names in this
                                      module. Emulates the behavior of putting
                                      "from <module> import *" at the top of the file.


Anything else is taken as the name of a Cython source file and compiled
to a C source file. Multiple Cython source files can be specified
(unless -o is used), in which case each source file is treated as the
source of a distinct extension module and compiled separately to
produce its own C file.
