\section{Developing Soya}

This section is for ( potential ) developers of soya.

\subsection{Soya Source Code}
This section will describe the source code structure and hints to start 
hacking soya. 

Soya is written using Pyrex.

XXX TODO write where things live in the source code. 

\begin{seealso}
\seelink{http://nz.cosc.canterbury.ac.nz/~greg/python/Pyrex/}{Pyrex}{Pyrex lets you write code that mixes Python and C data types any way you want, and compiles it into a C extension for Python.}
\end{seealso}


\subsection{Soya Documentation}
This section will describe how the documentation for soya is created and
maintained. 

This Soya documentation is written using latex and the Python documentation 
tools. It is important to use the latest tools from Python's CVS repository
as bundled tools can often be broken. 

You can checkout just the documentation tools as follows:
\begin{verbatim}
cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/python login 
[you will be prompted for a password, just press enter]

cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/python co -P python/python/dist/src/Doc/
\end{verbatim}

To convert from the Latex files to HTML and PDF you need to create a symlink 
from \file{cvs/python/python/dist/src/Doc/tools/mkhowto} to 
\file{cvs/soya/doc/mkhowto}:
\begin{verbatim}
cd ~/cvs/soya/doc
ln -s ~/cvs/python/python/dist/src/Doc/tools/mkhowto ./
\end{verbatim}

Then you can do the following to create the output:
\begin{verbatim}
./mkhowto --pdf soya.tex
./mkhowto --html soya.tex
\end{verbatim}

For more options to \file{mkhowto} check \file{mkhowto ----help}.

The reference sections for this document have been created using a tool
to automatically extract docstrings to Python's Latex format. This tool
currently has no home, contact \email{dunk@dunkfordyce.co.uk} for more 
information.

\begin{seealso}
\seelink{http://python.org/doc/2.3.4/doc/doc.html}{Documenting Python}{Describes the format of Python Documentation}
\seelink{http://cvs.sourceforge.net/viewcvs.py/python/python/dist/src/Doc/}{Python Documentation tools CVS}{Always use the latest tools for generating documentation.}
\end{seealso}
