\documentclass{howto}

%  This is a template for short or medium-size Python-related documents, 
% mostly notably the series of HOWTOs, but it can be used for any
% document you like.   

% The title should be descriptive enough for people to be able to find
% the relevant document. 
\title{Spammifying Sprockets in Python}

% Increment the release number whenever significant changes are made.
% The author and/or editor can define 'significant' however they like.
\release{0.00}

% At minimum, give your name and an e-mail address.  You can include a
% snail-mail address if you like.
\author{Me, 'cause I wrote it}
\authoraddress{Me, 'cause I'm self-employed.}

\begin{document}
\maketitle

% This makes the Abstract go on a separate page in the HTML version;
% if a copyright notice is used, it should go immediately after this.
%
\ifhtml
\chapter*{Front Matter\label{front}}
\fi

% Copyright statement should go here, if needed.
% ...

% The abstract should be a paragraph or two long, and describe the
% scope of the document.
\begin{abstract}
\noindent
This document describes how to spammify sprockets.  It is a useful
example of a Python HOWTO document.  It is not dependent on any
particular sprocket implementation, and includes a Python-based
implementation in the \module{sprunkit} module.
\end{abstract}

\tableofcontents

Spammifying sprockets from Python is both fun and entertaining.
Applying the techniques described here, you can also fill your hard
disk quite effectively.

\section{What is Sprocket Spammification?}

You have to ask?  It's the only thing to do to your sprockets!


\section{Why Use Python?}

Python is an excellent language from which to spammify your sprockets
since you can do it on any platform.


\section{Software Requirements}

You need to have the following software installed:

% The {itemize} environment uses a bullet for each \item.  If you want the 
% \item's numbered, use the {enumerate} environment instead.
\begin{itemize}
  \item  Python 1.9.
  \item  Some sprocket definition files.
  \item  At least one sprocket system implementation.
\end{itemize}

Note that the \module{sprunkit} is provided with this package and
implements ActiveSprockets in Python.


% The preceding sections will have been written in a gentler,
% introductory style.  You may also wish to include a reference
% section, documenting all the functions/exceptions/constants.
% The following is a model for such a reference section, for
% an extension module written in C.

\section{Extension Module \module{spamsprock}}
\exmodindex{spamsprock}		% Set the module name for the index
\label{module-spamsprock}       % Create a label for cross-references

A \C{} module is provided to perform spammification operations very
quickly.  It exports a function, an exception, and some constants.

% A function definition
\begin{funcdesc}{spammify}{sprocket\optional{, options}}
Spammify the sprocket given as \var{sprocket}.  Flags my be
bitwise-ORed together and passed as \var{options}.
\end{funcdesc}

% An exception definition
\begin{excdesc}{SpamError}
The exception that is raised when spammification fails, or just takes
too long.
\end{excdesc}

% A definition of two constants
\begin{datadesc}{FROBNICATE}
Value to be used for the \var{options} parameter to
\function{spammify()} to indicate that the \var{sprocket} parameter to 
that function should be frobnicated as well as spammified.
\end{datadesc}

\begin{datadesc}{NO_FROBNICATE}
As with \constant{FROBNICATE}, but indicates that frobnication should
not be performed.  The default is to frobnicate randomly.
\end{datadesc}


% The following section is a model for documenting modules written in
% Python. 

\section{Module \module{sprunkit}}
\modindex{ezspam}
\label{module-sprunkit}

This module provides a high level interface to spammification
operations.  It provides an interesting base class and an exception.

% A class definition
\begin{classdesc}{SprunkSprocket}{\optional{path}}
A Python-only implementation of a persistent sprocket.  The \var{path} 
parameter should refer to a spocket definition file.  If omitted, a
new sprocket is created.
\end{classdesc}

% An exception definition
\begin{excdesc}{PersistenceError}
Exception raised when the \method{save()} method of a
\class{SprunkSprockit} instance fails.
\end{excdesc}


\subsection{\class{SprunkSprocket} Objects}

\class{SprunkSprocket} objects have the following methods:

\begin{funcdesc}{save}{\optional{path}}
Save the sprocket in the file specified by \var{path}.  If \var{path}
is omitted, the \var{path} specified to the constructor is used.  If
neither was specified, raises the \exception{PersistenceError}
exception.
\end{funcdesc}


\begin{funcdesc}{persist}{path}
Set the default file name that the \method{save()} method will use.
\end{funcdesc}


\begin{funcdesc}{insist}{}
Make the sprocket assert itself.  This method cannot fail.
\end{funcdesc}


\appendix

\section{This is an Appendix}

To create an appendix in a Python HOWTO document, use markup like
this:

\begin{verbatim}
\appendix

\section{This is an Appendix}

To create an appendix in a Python HOWTO document, ....


\section{This is another}

Just add another \section{}, but don't say \appendix again.
\end{verbatim}


\end{document}
