\documentstyle[twoside,11pt,myformat]{report}

% NOTE: this file controls which chapters/sections of the library
% manual are actually printed.  It is easy to customize your manual
% by commenting out sections that you're not interested in.

\title{Python Library Reference}

\input{boilerplate}

\makeindex			% tell \index to actually write the .idx file


\begin{document}

\pagenumbering{roman}

\maketitle

\input{copyright}

\begin{abstract}

\noindent
Python is an extensible, interpreted, object-oriented programming
language.  It supports a wide range of applications, from simple text
processing scripts to interactive WWW browsers.

While the {\em Python Reference Manual} describes the exact syntax and
semantics of the language, it does not describe the standard library
that is distributed with the language, and which greatly enhances its
immediate usability.  This library contains built-in modules (written
in C) that provide access to system functionality such as file I/O
that would otherwise be inaccessible to Python programmers, as well as
modules written in Python that provide standardized solutions for many
problems that occur in everyday programming.  Some of these modules
are explicitly designed to encourage and enhance the portability of
Python programs.

This library reference manual documents Python's standard library, as
well as many optional library modules (which may or may not be
available, depending on whether the underlying platform supports them
and on the configuration choices made at compile time).  It also
documents the standard types of the language and its built-in
functions and exceptions, many of which are not or incompletely
documented in the Reference Manual.

This manual assumes basic knowledge about the Python language.  For an
informal introduction to Python, see the {\em Python Tutorial}; the
Python Reference Manual remains the highest authority on syntactic and
semantic questions.  Finally, the manual entitled {\em Extending and
Embedding the Python Interpreter} describes how to add new extensions
to Python and how to embed it in other applications.

\end{abstract}

\pagebreak

{
\parskip = 0mm
\tableofcontents
}

\pagebreak

\pagenumbering{arabic}

				% Chapter title:

\input{libintro}		% Introduction

\input{libobjs}			% Built-in Types, Exceptions and Functions
\input{libtypes}
\input{libexcs}
\input{libfuncs}

\input{libpython}		% Python Services
\input{libsys}
\input{libtypes2}		% types is already taken :-(
\input{libtraceback}
\input{libpickle}
\input{libshelve}
\input{libcopy}
\input{libmarshal}
\input{libimp}
\input{libparser}
\input{libbltin}		% really __builtin__
\input{libmain}			% really __main__

\input{libstrings}		% String Services
\input{libstring}
\input{libregex}
\input{libregsub}
\input{libstruct}

\input{libmisc}			% Miscellaneous Services
\input{libmath}
\input{librand}
\input{libwhrandom}
\input{libarray}

\input{liballos}		% Generic Operating System Services
\input{libos}
\input{libtime}
\input{libgetopt}
\input{libtempfile}

\input{libsomeos}		% Optional Operating System Services
\input{libsignal}
\input{libsocket}
\input{libselect}
\input{libthread}

\input{libunix}			% UNIX Specific Services
\input{libposix}
\input{libppath}		% == posixpath
\input{libpwd}
\input{libgrp}
\input{libcrypt}
\input{libdbm}
\input{libgdbm}
\input{libtermios}
\input{libfcntl}
\input{libposixfile}
\input{libsyslog}

\input{libpdb}			% The Python Debugger

\input{libprofile}		% The Python Profiler

\input{libwww}			% Internet and WWW Services
\input{libcgi}
\input{liburllib}
\input{libhttplib}
\input{libftplib}
\input{libgopherlib}
\input{libnntplib}
\input{liburlparse}
\input{libhtmllib}
\input{libsgmllib}
\input{librfc822}
\input{libmimetools}
\input{libbinascii}

\input{libmm}			% Multimedia Services
\input{libaudioop}
\input{libimageop}
\input{libaifc}
\input{libjpeg}
\input{librgbimg}

\input{libcrypto}		% Cryptographic Services
\input{libmd5}
\input{libmpz}
\input{librotor}

%\input{libamoeba}		% AMOEBA ONLY

\input{libmac}			% MACINTOSH ONLY
\input{libctb}
\input{libmacconsole}
\input{libmacdnr}
\input{libmacfs}
\input{libmacos}
\input{libmacostools}
\input{libmactcp}
\input{libmacspeech}
\input{libmacui}

\input{libstdwin}		% STDWIN ONLY

\input{libsgi}			% SGI IRIX ONLY
\input{libal}
%\input{libaudio}
\input{libcd}
\input{libfl}
\input{libfm}
\input{libgl}
\input{libimgfile}
%\input{libpanel}

\input{libsun}			% SUNOS ONLY

\input{lib.ind}			% Index

\end{document}
