\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 % 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}