% Template for a library manual section.
% PLEASE REMOVE THE COMMENTS AFTER USING THE TEMPLATE


% ==== 1. ====
% Choose one of the following section headers and index entries;
% \section{} generates the section header,
% \bimodindex{} or \stmodundex{} generates an index entry for this module

\section{Built-in Module \sectcode{spam}}	% If implemented in C
\bimodindex[spam}

\section{Standard module \sectcode{spam}}	% If implemented in Python
\stmodindex{spam}


% ==== 2. ====
% Give a short overview of what the module does.
% If it is platform specific, mention this.
% Mention other important restrictions or general operating principles.
% For example:

The \code{spam} module defines operations for handling cans of Spam.
It knows the four generally available Spam varieties and understands
both can sizes.

Because spamification requires UNIX process management, the module is
only available on genuine UNIX systems.


% ==== 3. ====
% List the public functions defined by the module.  Begin with a
% standard phrase.  You may also list the exceptions and other data
% items defined in the module, insofar as they are important for the
% user.

The \code{spam} module defines the following functions:

% ---- 3.1. ----
% Redefine the ``indexsubitem'' macro to point to this module
% (alternatively, you can put this at the top of the file):

\renewcommand{\indexsubitem}{(in module spam)}

% ---- 3.2. ----
% For each function, use a ``funcdesc'' block.  This has exactly two
% parameters (each parameters is contained in a set of curly braces):
% the first parameter is the function name (this automatically
% generates an index entry); the second parameter is the function's
% argument list.  If there are no arguments, use an empty pair of
% curly braces.  If there is more than one argument, separate the
% arguments with backslash-comma.  Optional parts of the parameter
% list are contained in \optional{...} (this generates a set of square
% brackets around its parameter).  Arguments are automatically set in
% italics in the parameter list.  Each argument should be mentioned at
% least once in the description; each usage (even inside \code{...})
% should be enclosed in \var{...}.

\begin{funcdesc}{open}{filename\optional{\, mode\, buffersize}}
Open the file \var{filename} as a can of Spam.  The optional
\var{mode} and \var{buffersize} arguments specify the read-write mode
(\code{'r'} (default) or \code{'w'}) and the buffer size (default:
system dependent).
\end{funcdesc}

% ---- 3.3. ----
% Data items are described using a ``datadesc'' block.  This has only
% one parameter: the item's name.

\begin{datadesc}{cansize}
The default can size, in ounces.  Legal values are 7 and 12.  The
default varies per supermarket.  This variable should not be changed
once the \code{open()} function has been called.
\end{datadesc}

% --- 3.4. ---
% Exceptions are described using a ``excdesc'' block.  This has only
% one parameter: the exception name.

\begin{excdesc}{error}
Exception raised when an operation fails for a Spam specific reason.
The exception argument is a string describing the reason of the
failure.
\end{excdesc}

% ---- 3.5. ----
% There is no standard block type for classes.  I generally use
% ``funcdesc'' blocks, since class instantiation looks very much like
% a function call.


% ==== 4. ====
% Now is probably a good time for a complete example.  (Alternatively,
% an example giving the flavor of the module may be given before the
% detailed list of functions.)

Example:

\begin{verbatim}
>>> import spam
>>> can = spam.open('/etc/passwd')
>>> can.empty()
>>> can.close()
\end{verbatim}

% ==== 5. ====
% If your module defines new object types (for a built-in module) or
% classes (for a module written in Python), you should list the
% methods and instance variables (if any) of each type or class in a
% separate subsection.  It is important to redefine ``indexsubitem''
% for each subsection.

\subsection{Spam Objects}

Spam objects (returned by \code{open()} above) have the following
methods.

\renewcommand{\indexsubitem}{(spam method)}

\begin{funcdesc}{empty}{}
Empty the can into the trash.
\end{funcdesc}
