From: Robert Bradshaw Date: Thu, 27 Dec 2012 22:40:49 +0000 (-0800) Subject: Clarify declaration sharing example. X-Git-Tag: 0.18b1~63 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=4cf1df5c31915e728ca980397a8e17be0d402d20;p=platform%2Fupstream%2Fpython-cython.git Clarify declaration sharing example. --- diff --git a/docs/src/userguide/sharing_declarations.rst b/docs/src/userguide/sharing_declarations.rst index 90c7fac..8f2719e 100644 --- a/docs/src/userguide/sharing_declarations.rst +++ b/docs/src/userguide/sharing_declarations.rst @@ -8,7 +8,7 @@ Sharing Declarations Between Cython Modules This section describes a new set of facilities for making C declarations, functions and extension types in one Cython module available for use in -another Cython module. These facilities are closely modelled on the Python +another Cython module. These facilities are closely modeled on the Python import mechanism, and can be thought of as a compile-time version of it. Definition and Implementation files @@ -24,7 +24,8 @@ statement. A ``.pxd`` file that consists solely of extern declarations does not need to correspond to an actual ``.pyx`` file or Python module. This can make it a convenient place to put common declarations, for example declarations of -functions from an :ref:`external library ` that one wants to use in several modules. +functions from an :ref:`external library ` that one +wants to use in several modules. What a Definition File contains ================================ @@ -113,7 +114,7 @@ you imported it. Using :keyword:`cimport` to import extension types is covered i detail below. If a ``.pxd`` file changes, any modules that :keyword:`cimport` from it may need to be -recompiled. +recompiled. The ``Cython.Build.cythonize`` utility can take care of this for you. Search paths for definition files ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -207,7 +208,7 @@ Python methods. Here is an example of a module which defines and exports an extension type, and another module which uses it: -:file:`Shrubbing.pyd`:: +:file:`Shrubbing.pxd`:: cdef class Shrubbery: cdef int width @@ -231,7 +232,15 @@ and another module which uses it: cdef Shrubbing.Shrubbery sh sh = Shrubbing.standard_shrubbery() print "Shrubbery size is %d x %d" % (sh.width, sh.length) - + +One would then need to compile both of these modules, e.g. using + +:file:`setup.py`:: + + from distutils.core import setup + from Cython.Build import cythonize + setup(ext_modules = cythonize(["Landscaping.pyx", "Shrubbing.pyx"])) + Some things to note about this example: * There is a :keyword:`cdef` class Shrubbery declaration in both