Merged changes from the 1.5.2p2 release.
(Very rough.)
diff --git a/Doc/lib/internet.tex b/Doc/lib/internet.tex
index 52985dc..b426132 100644
--- a/Doc/lib/internet.tex
+++ b/Doc/lib/internet.tex
@@ -6,8 +6,8 @@
 
 The modules described in this chapter implement Internet protocols and 
 support for related technology.  They are all implemented in Python.
-Some of these modules require the presence of the system-dependent
-module \refmodule{socket}\refbimodindex{socket}, which is currently only
-fully supported on \UNIX{} and Windows NT.  Here is an overview:
+Most of these modules require the presence of the system-dependent
+module \refmodule{socket}\refbimodindex{socket}, which is currently
+supported on most popular platforms.  Here is an overview:
 
 \localmoduletable
diff --git a/Doc/lib/libarray.tex b/Doc/lib/libarray.tex
index 84b2812..0e1a411 100644
--- a/Doc/lib/libarray.tex
+++ b/Doc/lib/libarray.tex
@@ -76,11 +76,11 @@
 operations are applied to it.
 \end{methoddesc}
 
-\begin{methoddesc}[array]{byteswap}{x}
+\begin{methoddesc}[array]{byteswap}{}
 ``Byteswap'' all items of the array.  This is only supported for
-integer values; for other types of values, \exception{RuntimeError} is
-raised.  It is useful when reading data from a file written on a
-machine with a different byte order.
+values which are 1, 2, 4, or 8 bytes in size; for other types of
+values, \exception{RuntimeError} is raised.  It is useful when reading
+data from a file written on a machine with a different byte order.
 \end{methoddesc}
 
 \begin{methoddesc}[array]{fromfile}{f, n}
@@ -150,7 +150,8 @@
 string if the \var{typecode} is \code{'c'}, otherwise it is a list of
 numbers.  The string is guaranteed to be able to be converted back to
 an array with the same type and value using reverse quotes
-(\code{``}).  Examples:
+(\code{``}), so long as the \function{array()} function has been
+imported using \samp{from array import array}.  Examples:
 
 \begin{verbatim}
 array('l')
@@ -163,4 +164,10 @@
 \begin{seealso}
   \seemodule{struct}{packing and unpacking of heterogeneous binary data}
   \seemodule{xdrlib}{packing and unpacking of XDR data}
+  \seetext{The Numeric Python extension (NumPy) defines another array
+           type; see \emph{The Numerical Python Manual} for additional 
+           information (available online at
+           \url{ftp://ftp-icf.llnl.gov/pub/python/numericalpython.pdf}). 
+           Further information about NumPy is available at
+           \url{http://www.python.org/topics/scicomp/numpy.html}.}
 \end{seealso}
diff --git a/Doc/lib/libasyncore.tex b/Doc/lib/libasyncore.tex
index 5a57146..4bcd496 100644
--- a/Doc/lib/libasyncore.tex
+++ b/Doc/lib/libasyncore.tex
@@ -1,18 +1,16 @@
 \section{\module{asyncore} ---
-         Asyncronous socket handler}
+         Asynchronous socket handler}
 
 \declaremodule{builtin}{asyncore}
-\modulesynopsis{A base class for developing asyncronous socket 
+\modulesynopsis{A base class for developing asynchronous socket 
                 handling services.}
 \moduleauthor{Sam Rushing}{rushing@nightmare.com}
 \sectionauthor{Christopher Petrilli}{petrilli@amber.org}
 % Heavily adapted from original documentation by Sam Rushing.
 
-This module provides the basic infrastructure for writing asyncronous 
+This module provides the basic infrastructure for writing asynchronous 
 socket service clients and servers.
 
-%\subsection{Why Asyncronous?}
-
 There are only two ways to have a program on a single processor do 
 ``more than one thing at a time.'' Multi-threaded programming is the 
 simplest and most popular way to do it, but there is another very 
diff --git a/Doc/lib/libbase64.tex b/Doc/lib/libbase64.tex
index a59332b..bede708 100644
--- a/Doc/lib/libbase64.tex
+++ b/Doc/lib/libbase64.tex
@@ -10,14 +10,14 @@
 
 This module performs base64 encoding and decoding of arbitrary binary
 strings into text strings that can be safely emailed or posted.  The
-encoding scheme is defined in \rfc{1421} (``Privacy Enhancement for
-Internet Electronic Mail: Part I: Message Encryption and
-Authentication Procedures'', section 4.3.2.4, ``Step 4: Printable
-Encoding'') and is used for MIME email and
-various other Internet-related applications; it is not the same as the
-output produced by the \program{uuencode} program.  For example, the
-string \code{'www.python.org'} is encoded as the string
-\code{'d3d3LnB5dGhvbi5vcmc=\e n'}.  
+encoding scheme is defined in \rfc{1521} (\emph{MIME
+(Multipurpose Internet Mail Extensions) Part One: Mechanisms for
+Specifying and Describing the Format of Internet Message Bodies},
+section 5.2, ``Base64 Content-Transfer-Encoding'') and is used for
+MIME email and various other Internet-related applications; it is not
+the same as the output produced by the \program{uuencode} program.
+For example, the string \code{'www.python.org'} is encoded as the
+string \code{'d3d3LnB5dGhvbi5vcmc=\e n'}.  
 
 
 \begin{funcdesc}{decode}{input, output}
@@ -52,4 +52,9 @@
 \begin{seealso}
   \seemodule{binascii}{support module containing \ASCII{}-to-binary
                        and binary-to-\ASCII{} conversions}
+  \seetext{Internet \rfc{1521}, \emph{MIME (Multipurpose Internet
+           Mail Extensions) Part One: Mechanisms for Specifying and
+           Describing the Format of Internet Message Bodies}, section
+           5.2, ``Base64 Content-Transfer-Encoding,'' provides the
+           definition of the base64 encoding.}
 \end{seealso}
diff --git a/Doc/lib/libbisect.tex b/Doc/lib/libbisect.tex
index 2b3f117..555e3a7 100644
--- a/Doc/lib/libbisect.tex
+++ b/Doc/lib/libbisect.tex
@@ -1,12 +1,12 @@
-% LaTeX produced by Fred L. Drake, Jr. <fdrake@acm.org>, with an
-% example based on the PyModules FAQ entry by Aaron Watters
-% <arw@pythonpros.com>.
-
 \section{\module{bisect} ---
          Array bisection algorithm}
 
 \declaremodule{standard}{bisect}
 \modulesynopsis{Array bisection algorithms for binary searching.}
+\sectionauthor{Fred L. Drake, Jr.}{fdrake@acm.org}
+% LaTeX produced by Fred L. Drake, Jr. <fdrake@acm.org>, with an
+% example based on the PyModules FAQ entry by Aaron Watters
+% <arw@pythonpros.com>.
 
 
 This module provides support for maintaining a list in sorted order
diff --git a/Doc/lib/libbsddb.tex b/Doc/lib/libbsddb.tex
index cd0dc07..6a27a3b 100644
--- a/Doc/lib/libbsddb.tex
+++ b/Doc/lib/libbsddb.tex
@@ -7,59 +7,71 @@
 \sectionauthor{Skip Montanaro}{skip@mojam.com}
 
 
-The \module{bsddb} module provides an interface to the Berkeley DB library.
-Users can create hash, btree or record based library files using the
-appropriate open call. Bsddb objects behave generally like dictionaries.
-Keys and values must be strings, however, so to use other objects as keys or 
-to store other kinds of objects the user must serialize them somehow,
-typically using marshal.dumps or pickle.dumps.
+The \module{bsddb} module provides an interface to the Berkeley DB
+library.  Users can create hash, btree or record based library files
+using the appropriate open call. Bsddb objects behave generally like
+dictionaries.  Keys and values must be strings, however, so to use
+other objects as keys or to store other kinds of objects the user must
+serialize them somehow, typically using marshal.dumps or pickle.dumps.
 
-The \module{bsddb} module is only available on \UNIX{} systems, so it is not
-built by default in the standard Python distribution.  Also, there are two
-incompatible versions of the underlying library.  Version 1.85 is widely
-available, but has some known bugs.  Version 2 is not quite as widely used,
-but does offer some improvements.  The \module{bsddb} module uses the 1.85
-interface.  Users wishing to use version 2 of the Berkeley DB library will
-have to modify the source for the module to include db_185.h instead of
-db.h.
+The \module{bsddb} module is only available on \UNIX{} systems, so it
+is not built by default in the standard Python distribution.  Also,
+there are two incompatible versions of the underlying library.
+Version 1.85 is widely available, but has some known bugs.  Version 2
+is not quite as widely used, but does offer some improvements.  The
+\module{bsddb} module uses the 1.85 interface.  Users wishing to use
+version 2 of the Berkeley DB library will have to modify the source
+for the module to include \file{db_185.h} instead of
+\file{db.h} (\file{db_185.h} contains the version 1.85 compatibility
+interface).
 
 The \module{bsddb} module defines the following functions that create
-objects that access the appropriate type of Berkeley DB file.  The first two
-arguments of each function are the same.  For ease of portability, only the
-first two arguments should be used in most instances.
+objects that access the appropriate type of Berkeley DB file.  The
+first two arguments of each function are the same.  For ease of
+portability, only the first two arguments should be used in most
+instances.
 
 \begin{funcdesc}{hashopen}{filename\optional{, flag\optional{,
-mode\optional{, bsize\optional{, ffactor\optional{, nelem\optional{,
-cachesize\optional{, hash\optional{, lorder}}}}}}}}}
-Open the hash format file named \var{filename}.  The optional \var{flag}
-identifies the mode used to open the file.  It may be ``r'' (read only),
-``w'' (read-write), ``c'' (read-write - create if necessary) or ``n''
-(read-write - truncate to zero length).  The other arguments are rarely used
-and are just passed to the low-level dbopen function.  Consult the
-Berkeley DB documentation for their use and interpretation.
+                           mode\optional{, bsize\optional{,
+                           ffactor\optional{, nelem\optional{,
+                           cachesize\optional{, hash\optional{,
+                           lorder}}}}}}}}}
+Open the hash format file named \var{filename}.  The optional
+\var{flag} identifies the mode used to open the file.  It may be
+\character{r} (read only), \character{w} (read-write),
+\character{c} (read-write - create if necessary) or
+\character{n} (read-write - truncate to zero length).  The other
+arguments are rarely used and are just passed to the low-level
+\cfunction{dbopen()} function.  Consult the Berkeley DB documentation
+for their use and interpretation.
 \end{funcdesc}
 
-
 \begin{funcdesc}{btopen}{filename\optional{, flag\optional{,
 mode\optional{, btflags\optional{, cachesize\optional{, maxkeypage\optional{,
 minkeypage\optional{, psize\optional{, lorder}}}}}}}}}
-Open the btree format file named \var{filename}.  The optional \var{flag}
-identifies the mode used to open the file.  It may be ``r'' (read only),
-``w'' (read-write), ``c'' (read-write - create if necessary) or ``n''
-(read-write - truncate to zero length).  The other arguments are rarely used
-and are just passed to the low-level dbopen function.  Consult the
-Berkeley DB documentation for their use and interpretation.
+
+Open the btree format file named \var{filename}.  The optional
+\var{flag} identifies the mode used to open the file.  It may be
+\character{r} (read only), \character{w} (read-write),
+\character{c} (read-write - create if necessary) or
+\character{n} (read-write - truncate to zero length).  The other
+arguments are rarely used and are just passed to the low-level dbopen
+function.  Consult the Berkeley DB documentation for their use and
+interpretation.
 \end{funcdesc}
 
 \begin{funcdesc}{rnopen}{filename\optional{, flag\optional{, mode\optional{,
 rnflags\optional{, cachesize\optional{, psize\optional{, lorder\optional{,
 reclen\optional{, bval\optional{, bfname}}}}}}}}}}
-Open a DB record format file named \var{filename}.  The optional \var{flag}
-identifies the mode used to open the file.  It may be ``r'' (read only),
-``w'' (read-write), ``c'' (read-write - create if necessary) or ``n''
-(read-write - truncate to zero length).  The other arguments are rarely used
-and are just passed to the low-level dbopen function.  Consult the
-Berkeley DB documentation for their use and interpretation.
+
+Open a DB record format file named \var{filename}.  The optional
+\var{flag} identifies the mode used to open the file.  It may be
+\character{r} (read only), \character{w} (read-write),
+\character{c} (read-write - create if necessary) or
+\character{n} (read-write - truncate to zero length).  The other
+arguments are rarely used and are just passed to the low-level dbopen
+function.  Consult the Berkeley DB documentation for their use and
+interpretation.
 \end{funcdesc}
 
 
@@ -86,7 +98,7 @@
 \end{methoddesc}
 
 \begin{methoddesc}{has_key}{key}
-Return 1 if the DB file contains the argument as a key.
+Return \code{1} if the DB file contains the argument as a key.
 \end{methoddesc}
 
 \begin{methoddesc}{set_location}{key}
diff --git a/Doc/lib/libcalendar.tex b/Doc/lib/libcalendar.tex
index 59e3443..ef715f5 100644
--- a/Doc/lib/libcalendar.tex
+++ b/Doc/lib/libcalendar.tex
@@ -1,18 +1,18 @@
-% This section was contributed by Drew Csillag <drew_csillag@geocities.com>.
-
 \section{\module{calendar} ---
-         Functions that emulate the \UNIX{} \program{cal} program.}
+         General calendar-related functions}
+
 \declaremodule{standard}{calendar}
-
-\modulesynopsis{Functions that emulate the \UNIX{} \program{cal}
-program.}
-
+\modulesynopsis{General functions for working with the calendar,
+                including some emulation of the \UNIX{} \program{cal}
+                program.}
+\sectionauthor{Drew Csillag}{drew_csillag@geocities.com}
 
 This module allows you to output calendars like the \UNIX{}
-\manpage{cal}{1} program.
+\program{cal} program, and provides additional useful functions
+related to the calendar.
 
 \begin{funcdesc}{isleap}{year}
-Returns \code{1} if \var{year} is a leap year.
+Returns true if \var{year} is a leap year.
 \end{funcdesc}
 
 \begin{funcdesc}{leapdays}{year1, year2}
@@ -48,9 +48,14 @@
 \end{funcdesc}
 
 \begin{funcdesc}{timegm}{tuple}
-An unrelated but handy function that takes a time tuple such are
-returned by the \function{gmtime()} function in the \module{time}
+An unrelated but handy function that takes a time tuple such as
+returned by the \function{gmtime()} function in the \refmodule{time}
 module, and returns the corresponding Unix timestamp value, assuming
 an epoch of 1970, and the POSIX encoding.  In fact,
-\function{gmtime()} and \function{timegm()} are each others inverse.
+\function{time.gmtime()} and \function{timegm()} are each others' inverse.
 \end{funcdesc}
+
+
+\begin{seealso}
+  \seemodule{time}{Low-level time related functions.}
+\end{seealso}
diff --git a/Doc/lib/libcfgparser.tex b/Doc/lib/libcfgparser.tex
index fa76b22..50af056 100644
--- a/Doc/lib/libcfgparser.tex
+++ b/Doc/lib/libcfgparser.tex
@@ -3,6 +3,8 @@
 
 \declaremodule{standard}{ConfigParser}
 \modulesynopsis{Configuration file parser.}
+\moduleauthor{Ken Manheimer}{klm@digicool.com}
+\moduleauthor{Barry Warsaw}{bwarsaw@python.org}
 \sectionauthor{Christopher G. Petrilli}{petrilli@amber.org}
 
 This module defines the class \class{ConfigParser}.
@@ -16,24 +18,27 @@
 The configuration file consists of sections, lead by a
 \samp{[section]} header and followed by \samp{name: value} entries,
 with continuations in the style of \rfc{822}; \samp{name=value} is
-also accepted.  The optional values can contain format strings which
-refer to other values in the same section, or values in a special
+also accepted.  Note that leading whitespace is removed from values.
+The optional values can contain format strings which refer to other
+values in the same section, or values in a special
 \code{DEFAULT} section.  Additional defaults can be provided upon
-initialization and retrieval.  Lines beginning with \character{\#} are 
-ignored and may be used to provide comments.
+initialization and retrieval.  Lines beginning with \character{\#} or
+\character{;} are ignored and may be used to provide comments.
 
 For example:
 
 \begin{verbatim}
 foodir: %(dir)s/whatever
+dir=frob
 \end{verbatim}
 
-would resolve the \samp{\%(dir)s} to the value of dir. All reference
-expansions are done late, on demand.
+would resolve the \samp{\%(dir)s} to the value of
+\samp{dir} (\samp{frob} in this case).  All reference expansions are
+done on demand.
 
-Intrinsic defaults can be specified by passing them into the
-\class{ConfigParser} constructor as a dictionary.  Additional defaults
-may be passed into the \method{get} method which will override all
+Default values can be specified by passing them into the
+\class{ConfigParser} constructor as a dictionary.  Additional defaults 
+may be passed into the \method{get()} method which will override all
 others.
 
 \begin{classdesc}{ConfigParser}{\optional{defaults}}
@@ -50,7 +55,9 @@
 \end{excdesc}
 
 \begin{excdesc}{DuplicateSectionError}
-Exception raised when mutliple sections with the same name are found.
+Exception raised when mutliple sections with the same name are found,
+or if \method{add_section()} is called with the name of a section that 
+is already present.
 \end{excdesc}
 
 \begin{excdesc}{NoOptionError}
@@ -87,7 +94,14 @@
 \end{methoddesc}
 
 \begin{methoddesc}{sections}{}
-Return a list of the sections available.
+Return a list of the sections available; \code{DEFAULT} is not
+included in the list.
+\end{methoddesc}
+
+\begin{methoddesc}{add_section}{section}
+Add a section named \var{section} to the instance.  If a section by
+the given name already exists, \exception{DuplicateSectionError} is
+raised.
 \end{methoddesc}
 
 \begin{methoddesc}{has_section}{section}
@@ -123,6 +137,6 @@
 \begin{methoddesc}{getboolean}{section, option}
 A convenience method which coerces the \var{option} in the specified
 \var{section} to a boolean value.  Note that the only accepted values
-for the option are \code{0} and \code{1}, any others will raise
+for the option are \samp{0} and \samp{1}, any others will raise
 \exception{ValueError}.
 \end{methoddesc}
diff --git a/Doc/lib/libcgi.tex b/Doc/lib/libcgi.tex
index 1c565fd..3b755a0 100644
--- a/Doc/lib/libcgi.tex
+++ b/Doc/lib/libcgi.tex
@@ -195,7 +195,7 @@
 Parse a query string given as a string argument (data of type 
 \mimetype{application/x-www-form-urlencoded}).  Data are
 returned as a dictionary.  The dictionary keys are the unique query
-variable names and the values are lists of vales for each name.
+variable names and the values are lists of values for each name.
 
 The optional argument \var{keep_blank_values} is
 a flag indicating whether blank values in
diff --git a/Doc/lib/libcgihttp.tex b/Doc/lib/libcgihttp.tex
index fd8e09b..a2f453a 100644
--- a/Doc/lib/libcgihttp.tex
+++ b/Doc/lib/libcgihttp.tex
@@ -3,6 +3,7 @@
 
 
 \declaremodule{standard}{CGIHTTPServer}
+  \platform{Unix}
 \sectionauthor{Moshe Zadka}{mzadka@geocities.com}
 \modulesynopsis{This module provides a request handler for HTTP servers
                 which can run CGI scripts.}
@@ -14,6 +15,9 @@
 from \class{SimpleHTTPServer.SimpleHTTPRequestHandler} but can also
 run CGI scripts.
 
+\strong{Note:}  This module is \UNIX{} dependent since it creates the
+CGI process using \function{os.fork()} and \function{os.exec()}.
+
 The \module{CGIHTTPServer} module defines the following class:
 
 \begin{classdesc}{CGIHTTPRequestHandler}{request, client_address, server}
diff --git a/Doc/lib/libcode.tex b/Doc/lib/libcode.tex
index 877b7a4..4b66394 100644
--- a/Doc/lib/libcode.tex
+++ b/Doc/lib/libcode.tex
@@ -1,30 +1,173 @@
 \section{\module{code} ---
-         Code object services.}
+         Interpreter base classes}
 \declaremodule{standard}{code}
 
-\modulesynopsis{Code object services.}
+\modulesynopsis{Base classes for interactive Python interpreters.}
 
 
-The \code{code} module defines operations pertaining to Python code
-objects.  It defines the following function:
+The \code{code} module provides facilities to implement
+read-eval-print loops in Python.  Two classes and convenience
+functions are included which can be used to build applications which
+provide an interactive interpreter prompt.
 
 
-\begin{funcdesc}{compile_command}{source, \optional{filename\optional{, symbol}}}
+\begin{classdesc}{InteractiveInterpreter}{\optional{locals}}
+This class deals with parsing and interpreter state (the user's
+namespace); it does not deal with input buffering or prompting or
+input file naming (the filename is always passed in explicitly).
+The optional \var{locals} argument specifies the dictionary in
+which code will be executed; it defaults to a newly created
+dictionary with key \code{'__name__'} set to \code{'__console__'}
+and key \code{'__doc__'} set to \code{None}.
+\end{classdesc}
+
+\begin{classdesc}{InteractiveConsole}{\optional{locals\optional{, filename}}}
+Closely emulate the behavior of the interactive Python interpreter.
+This class builds on \class{InteractiveInterpreter} and adds
+prompting using the familiar \code{sys.ps1} and \code{sys.ps2}, and
+input buffering.
+\end{classdesc}
+
+
+\begin{funcdesc}{interact}{\optional{banner\optional{,
+                           readfunc\optional{, local}}}}
+Convenience function to run a read-eval-print loop.  This creates a
+new instance of \class{InteractiveConsole} and sets \var{readfunc}
+to be used as the \method{raw_input()} method, if provided.  If
+\var{local} is provided, it is passed to the
+\class{InteractiveConsole} constructor for use as the default
+namespace for the interpreter loop.  The \method{interact()} method
+of the instance is then run with \var{banner} passed as the banner
+to use, if provided.  The console object is discarded after use.
+\end{funcdesc}
+
+\begin{funcdesc}{compile_command}{source\optional{,
+                                  filename\optional{, symbol}}}
 This function is useful for programs that want to emulate Python's
 interpreter main loop (a.k.a. the read-eval-print loop).  The tricky
 part is to determine when the user has entered an incomplete command
-that can be completed by entering more text (as opposed to a complete
-command or a syntax error).  This function \emph{almost} always makes
-the same decision as the real interpreter main loop.
+that can be completed by entering more text (as opposed to a
+complete command or a syntax error).  This function
+\emph{almost} always makes the same decision as the real interpreter
+main loop.
 
-Arguments: \var{source} is the source string; \var{filename} is the
-optional filename from which source was read, defaulting to
-\code{'<input>'}; and \var{symbol} is the optional grammar start
-symbol, which should be either \code{'single'} (the default) or
-\code{'eval'}.
+\var{source} is the source string; \var{filename} is the optional
+filename from which source was read, defaulting to \code{'<input>'};
+and \var{symbol} is the optional grammar start symbol, which should
+be either \code{'single'} (the default) or \code{'eval'}.
 
-Return a code object (the same as \code{compile(\var{source},
-\var{filename}, \var{symbol})}) if the command is complete and valid;
-return \code{None} if the command is incomplete; raise
-\exception{SyntaxError} if the command is a syntax error.
+Returns a code object (the same as \code{compile(\var{source},
+\var{filename}, \var{symbol})}) if the command is complete and
+valid; \code{None} if the command is incomplete; raises
+\exception{SyntaxError} if the command is complete and contains a
+syntax error, or raises \exception{OverflowError} if the command
+includes a numeric constant which exceeds the range of the
+appropriate numeric type.
 \end{funcdesc}
+
+
+\subsection{Interactive Interpreter Objects
+            \label{interpreter-objects}}
+
+\begin{methoddesc}{runsource}{source\optional{, filename\optional{, symbol}}}
+Compile and run some source in the interpreter.
+Arguments are the same as for \function{compile_command()}; the
+default for \var{filename} is \code{'<input>'}, and for
+\var{symbol} is \code{'single'}.  One several things can happen:
+
+\begin{itemize}
+\item
+The input is incorrect; \function{compile_command()} raised an
+exception (\exception{SyntaxError} or \exception{OverflowError}).  A
+syntax traceback will be printed by calling the
+\method{showsyntaxerror()} method.  \method{runsource()} returns
+\code{0}.
+
+\item
+The input is incomplete, and more input is required;
+\function{compile_command()} returned \code{None}.
+\method{runsource()} returns \code{1}.
+
+\item
+The input is complete; \function{compile_command()} returned a code
+object.  The code is executed by calling the \method{runcode()} (which
+also handles run-time exceptions, except for \exception{SystemExit}).
+\method{runsource()} returns \code{0}.
+\end{itemize}
+
+The return value can be used to decide whether to use
+\code{sys.ps1} or \code{sys.ps2} to prompt the next line.
+\end{methoddesc}
+
+\begin{methoddesc}{runcode}{code}
+Execute a code object.
+When an exception occurs, \method{showtraceback()} is called to
+display a traceback.  All exceptions are caught except
+\exception{SystemExit}, which is allowed to propogate.
+
+A note about \exception{KeyboardInterrupt}: this exception may occur
+elsewhere in this code, and may not always be caught.  The caller
+should be prepared to deal with it.
+\end{methoddesc}
+
+\begin{methoddesc}{showsyntaxerror}{\optional{filename}}
+Display the syntax error that just occurred.  This does not display
+a stack trace because there isn't one for syntax errors.
+If \var{filename} is given, it is stuffed into the exception instead
+of the default filename provided by Python's parser, because it
+always uses \code{'<string>'} when reading from a string.
+The output is written by the \method{write()} method.
+\end{methoddesc}
+
+\begin{methoddesc}{showtraceback}{}
+Display the exception that just occurred.  We remove the first stack
+item because it is within the interpreter object implementation.
+The output is written by the \method{write()} method.
+\end{methoddesc}
+
+\begin{methoddesc}{write}{data}
+Write a string to standard output.  Derived classes should override
+this to provide the appropriate output handling as needed.
+\end{methoddesc}
+
+
+\subsection{Interactive Console Objects
+            \label{console-objects}}
+
+The \class{InteractiveConsole} class is a subclass of
+\class{InteractiveInterpreter}, and so offers all the methods of the
+interpreter objects as well as the following additions.
+
+\begin{methoddesc}{interact}{\optional{banner}}
+Closely emulate the interactive Python console.
+The optional banner argument specify the banner to print before the
+first interaction; by default it prints a banner similar to the one
+printed by the standard Python interpreter, followed by the class
+name of the console object in parentheses (so as not to confuse this
+with the real interpreter -- since it's so close!).
+\end{methoddesc}
+
+\begin{methoddesc}{push}{line}
+Push a line of source text to the interpreter.
+The line should not have a trailing newline; it may have internal
+newlines.  The line is appended to a buffer and the interpreter's
+\method{runsource()} method is called with the concatenated contents
+of the buffer as source.  If this indicates that the command was
+executed or invalid, the buffer is reset; otherwise, the command is
+incomplete, and the buffer is left as it was after the line was
+appended.  The return value is \code{1} if more input is required,
+\code{0} if the line was dealt with in some way (this is the same as
+\method{runsource()}).
+\end{methoddesc}
+
+\begin{methoddesc}{resetbuffer}{}
+Remove any unhandled source text from the input buffer.
+\end{methoddesc}
+
+\begin{methoddesc}{raw_input}{\optional{prompt}}
+Write a prompt and read a line.  The returned line does not include
+the trailing newline.  When the user enters the \EOF{} key sequence,
+\exception{EOFError} is raised.  The base implementation uses the
+built-in function \function{raw_input()}; a subclass may replace this
+with a different implementation.
+\end{methoddesc}
diff --git a/Doc/lib/libcodeop.tex b/Doc/lib/libcodeop.tex
index a0b58a5..cd9cb63 100644
--- a/Doc/lib/libcodeop.tex
+++ b/Doc/lib/libcodeop.tex
@@ -1,13 +1,14 @@
-% LaTeXed from excellent doc-string.
 \section{\module{codeop} ---
          Compile Python code}
 
+% LaTeXed from excellent doc-string.
+
 \declaremodule{standard}{codeop}
 \sectionauthor{Moshe Zadka}{mzadka@geocities.com}
 \modulesynopsis{Compile (possibly incomplete) Python code.}
 
 The \module{codeop} module provides a function to compile Python code
-with hints on whether it certainly complete, possible complete or
+with hints on whether it is certainly complete, possibly complete or
 definitely incomplete.  This is used by the \refmodule{code} module
 and should not normally be used directly.
 
@@ -15,25 +16,22 @@
 
 \begin{funcdesc}{compile_command}
                 {source\optional{, filename\optional{, symbol}}}
-
-Try to compile \var{source}, which should be a string of Python
-code. Return a code object if \var{source} is valid
+Tries to compile \var{source}, which should be a string of Python
+code and return a code object if \var{source} is valid
 Python code. In that case, the filename attribute of the code object
 will be \var{filename}, which defaults to \code{'<input>'}.
-
-Return \code{None} if \var{source} is \emph{not} valid Python
+Returns \code{None} if \var{source} is \emph{not} valid Python
 code, but is a prefix of valid Python code.
 
-Raise an exception if there is a problem with \var{source}:
-\begin{itemize}
-        \item \exception{SyntaxError}
-              if there is invalid Python syntax.
-        \item \exception{OverflowError}
-              if there is an invalid numeric constant.
-\end{itemize}
+If there is a problem with \var{source}, an exception will be raised.
+\exception{SyntaxError} is raised if there is invalid Python syntax,
+and \exception{OverflowError} if there is an invalid numeric
+constant.
 
-The \var{symbol} argument means whether to compile it as a statement
-(\code{'single'}, the default) or as an expression (\code{'eval'}).
+The \var{symbol} argument determines whether \var{source} is compiled
+as a statement (\code{'single'}, the default) or as an expression
+(\code{'eval'}).  Any other value will cause \exception{ValueError} to 
+be raised.
 
 \strong{Caveat:}
 It is possible (but not likely) that the parser stops parsing
diff --git a/Doc/lib/libcompileall.tex b/Doc/lib/libcompileall.tex
index 64e8a9e..a731245 100644
--- a/Doc/lib/libcompileall.tex
+++ b/Doc/lib/libcompileall.tex
@@ -1,13 +1,9 @@
-% Documentation based on module docstrings, by Fred L. Drake, Jr.
-% <fdrake@acm.org>
-
 \section{\module{compileall} ---
-         Byte-compile Python libraries.}
+         Byte-compile Python libraries}
 
 \declaremodule{standard}{compileall}
-
 \modulesynopsis{Tools for byte-compiling all Python source files in a
-directory tree.}
+                directory tree.}
 
 
 This module provides some utility functions to support installing
@@ -20,19 +16,24 @@
 \code{sys.path}.
 
 
-\begin{funcdesc}{compile_dir}{dir\optional{, maxlevels\optional{, ddir}}}
+\begin{funcdesc}{compile_dir}{dir\optional{, maxlevels\optional{,
+                              ddir\optional{, force}}}}
   Recursively descend the directory tree named by \var{dir}, compiling
   all \file{.py} files along the way.  The \var{maxlevels} parameter
   is used to limit the depth of the recursion; it defaults to
   \code{10}.  If \var{ddir} is given, it is used as the base path from 
-  which the filenames used in error messages will be generated.
+  which the filenames used in error messages will be generated.  If
+  \var{force} is true, modules are re-compiled even if the timestamps
+  are up to date.
 \end{funcdesc}
 
-\begin{funcdesc}{compile_path}{\optional{skip_curdir\optional{, maxlevels}}}
+\begin{funcdesc}{compile_path}{\optional{skip_curdir\optional{,
+                               maxlevels\optional{, force}}}}
   Byte-compile all the \file{.py} files found along \code{sys.path}.
-  If \var{skip_curdir} is true (the default), the current directory is 
-  not included in the search.  The \var{maxlevels} parameter defaults
-  to \code{0} and is passed to the \function{compile_dir()} function.
+  If \var{skip_curdir} is true (the default), the current directory is
+  not included in the search.  The \var{maxlevels} and
+  \var{force} parameters default to \code{0} and are passed to the
+  \function{compile_dir()} function.
 \end{funcdesc}
 
 
diff --git a/Doc/lib/libcrypt.tex b/Doc/lib/libcrypt.tex
index f9d1615..e3936b7 100644
--- a/Doc/lib/libcrypt.tex
+++ b/Doc/lib/libcrypt.tex
@@ -1,29 +1,46 @@
 \section{\module{crypt} ---
-         Function used to check \UNIX{} passwords}
+         Function to check \UNIX{} passwords}
 
 \declaremodule{builtin}{crypt}
   \platform{Unix}
-\modulesynopsis{The \cfunction{crypt()} function used to check \UNIX{}
-  passwords.}
+\modulesynopsis{The \cfunction{crypt()} function used to check
+  \UNIX{} passwords.}
 \moduleauthor{Steven D. Majewski}{sdm7g@virginia.edu}
 \sectionauthor{Steven D. Majewski}{sdm7g@virginia.edu}
+\sectionauthor{Peter Funk}{pf@artcom-gmbh.de}
 
 
-This module implements an interface to the \manpage{crypt}{3} routine,
-which is a one-way hash function based upon a modified DES algorithm;
-see the \UNIX{} man page for further details.  Possible uses include
+This module implements an interface to the
+\manpage{crypt}{3}\index{crypt(3)} routine, which is a one-way hash
+function based upon a modified DES\indexii{cipher}{DES} algorithm; see
+the \UNIX{} man page for further details.  Possible uses include
 allowing Python scripts to accept typed passwords from the user, or
 attempting to crack \UNIX{} passwords with a dictionary.
-\index{crypt(3)}
 
 \begin{funcdesc}{crypt}{word, salt} 
-\var{word} will usually be a user's password.  \var{salt} is a
-2-character string which will be used to select one of 4096 variations
-of DES\indexii{cipher}{DES}.  The characters in \var{salt} must be
-either \character{.}, \character{/}, or an alphanumeric character.
-Returns the hashed password as a string, which will be composed of
-characters from the same alphabet as the salt.
+  \var{word} will usually be a user's password as typed at a prompt or 
+  in a graphical interface.  \var{salt} is usually a random
+  two-character string which will be used to perturb the DES algorithm
+  in one of 4096 ways.  The characters in \var{salt} must be in the
+  set \regexp{[./a-zA-Z0-9]}.  Returns the hashed password as a
+  string, which will be composed of characters from the same alphabet
+   as the salt (the first two characters represent the salt itself).
 \end{funcdesc}
 
-The module and documentation were written by Steve Majewski.
-\index{Majewski, Steve}
+
+A simple example illustrating typical use:
+
+\begin{verbatim}
+import crypt, getpass, pwd
+
+def login():
+    username = raw_input('Python login:')
+    cryptedpasswd = pwd.getpwnam(username)[1]
+    if cryptedpasswd:
+        if cryptedpasswd == 'x' or cryptedpasswd == '*': 
+            raise "Sorry, currently no support for shadow passwords"
+        cleartext = getpass.getpass()
+        return crypt.crypt(cleartext, cryptedpasswd[:2]) == cryptedpasswd
+    else:
+        return 1
+\end{verbatim}
diff --git a/Doc/lib/libexcs.tex b/Doc/lib/libexcs.tex
index 1c57ee8..81532ce 100644
--- a/Doc/lib/libexcs.tex
+++ b/Doc/lib/libexcs.tex
@@ -11,18 +11,6 @@
 exceptions is present in the standard library module
 \module{exceptions}; this module never needs to be imported explicitly.
 
-For backward compatibility, when Python is invoked with the
-\programopt{-X} option, most of the standard exceptions are
-strings\footnote{
-  For forward-compatibility the new exceptions \exception{Exception},
-  \exception{LookupError}, \exception{ArithmeticError},
-  \exception{EnvironmentError}, and \exception{StandardError} are
-  tuples.
-}.  This option may be used to run code that breaks because of the
-different semantics of class based exceptions.  The
-\programopt{-X} option will become obsolete in future Python versions,
-so the recommended solution is to fix the code.
-
 Two distinct string objects with the same value are considered different
 exceptions.  This is done to force programmers to use exception names
 rather than their string value when specifying exception handlers.
@@ -30,29 +18,27 @@
 not a requirement for user-defined exceptions or exceptions defined by
 library modules.
 
-For class exceptions, in a \keyword{try} statement with an \keyword{except}
-clause that mentions a particular class, that clause also handles
-any exception classes derived from that class (but not exception
-classes from which \emph{it} is derived).  Two exception classes
-that are not related via subclassing are never equivalent, even if
-they have the same name.
-\stindex{try}
-\stindex{except}
+For class exceptions, in a \keyword{try}\stindex{try} statement with
+an \keyword{except}\stindex{except} clause that mentions a particular
+class, that clause also handles any exception classes derived from
+that class (but not exception classes from which \emph{it} is
+derived).  Two exception classes that are not related via subclassing
+are never equivalent, even if they have the same name.
 
 The built-in exceptions listed below can be generated by the
 interpreter or built-in functions.  Except where mentioned, they have
 an ``associated value'' indicating the detailed cause of the error.
 This may be a string or a tuple containing several items of
 information (e.g., an error code and a string explaining the code).
-The associated value is the second argument to the \keyword{raise}
-statement.  For string exceptions, the associated value itself will be
-stored in the variable named as the second argument of the
-\keyword{except} clause (if any).  For class exceptions, that variable
-receives the exception instance.  If the exception class is derived
-from the standard root class \exception{Exception}, the associated
-value is present as the exception instance's \member{args} attribute,
-and possibly on other attributes as well.
-\stindex{raise}
+The associated value is the second argument to the
+\keyword{raise}\stindex{raise} statement.  For string exceptions, the
+associated value itself will be stored in the variable named as the
+second argument of the \keyword{except} clause (if any).  For class
+exceptions, that variable receives the exception instance.  If the
+exception class is derived from the standard root class
+\exception{Exception}, the associated value is present as the
+exception instance's \member{args} attribute, and possibly on other
+attributes as well.
 
 User code can raise built-in exceptions.  This can be used to test an
 exception handler or to report an error condition ``just like'' the
@@ -65,6 +51,7 @@
 The following exceptions are only used as base classes for other
 exceptions.  When string-based standard exceptions are used, they
 are tuples containing the directly derived classes.
+\strong{Note:}  These will always be classes in Python 1.6.
 
 \begin{excdesc}{Exception}
 The root class for exceptions.  All built-in exceptions are derived
@@ -128,8 +115,8 @@
 to revert back to string-based standard exceptions.
 
 \begin{excdesc}{AssertionError}
-Raised when an \keyword{assert} statement fails.
 \stindex{assert}
+Raised when an \keyword{assert} statement fails.
 \end{excdesc}
 
 \begin{excdesc}{AttributeError}
diff --git a/Doc/lib/libfcntl.tex b/Doc/lib/libfcntl.tex
index 6312222..ea17665 100644
--- a/Doc/lib/libfcntl.tex
+++ b/Doc/lib/libfcntl.tex
@@ -1,10 +1,10 @@
-% Manual text by Jaap Vermeulen
 \section{\module{fcntl} ---
          The \function{fcntl()} and \function{ioctl()} system calls}
 
 \declaremodule{builtin}{fcntl}
   \platform{Unix}
 \modulesynopsis{The \function{fcntl()} and \function{ioctl()} system calls.}
+\sectionauthor{Jaap Vermeulen}{}
 
 \indexii{UNIX@\UNIX{}}{file control}
 \indexii{UNIX@\UNIX{}}{I/O control}
diff --git a/Doc/lib/libfileinput.tex b/Doc/lib/libfileinput.tex
index 8bc93af..97caaf9 100644
--- a/Doc/lib/libfileinput.tex
+++ b/Doc/lib/libfileinput.tex
@@ -75,11 +75,13 @@
 \end{funcdesc}
 
 \begin{funcdesc}{isfirstline}{}
-  Return true iff the line just read is the first line of its file.
+  Returns true the line just read is the first line of its file,
+  otherwise returns false.
 \end{funcdesc}
 
 \begin{funcdesc}{isstdin}{}
-  Returns true iff the last line was read from \code{sys.stdin}.
+  Returns true if the last line was read from \code{sys.stdin},
+  otherwise returns false.
 \end{funcdesc}
 
 \begin{funcdesc}{nextfile}{}
diff --git a/Doc/lib/libfnmatch.tex b/Doc/lib/libfnmatch.tex
index 7d97461..527358b 100644
--- a/Doc/lib/libfnmatch.tex
+++ b/Doc/lib/libfnmatch.tex
@@ -5,42 +5,45 @@
 \modulesynopsis{\UNIX{} shell style filename pattern matching.}
 
 
+\index{filenames!wildcard expansion}
+
 This module provides support for \UNIX{} shell-style wildcards, which
 are \emph{not} the same as regular expressions (which are documented
 in the \refmodule{re}\refstmodindex{re} module).  The special
 characters used in shell-style wildcards are:
-\index{filenames!wildcard expansion}
 
-\begin{list}{}{\leftmargin 0.5in \labelwidth 0.45in}
-\item[\code{*}] matches everything
-\item[\code{?}]	matches any single character
-\item[\code{[}\var{seq}\code{]}] matches any character in \var{seq}
-\item[\code{[!}\var{seq}\code{]}] matches any character not in \var{seq}
-\end{list}
+\begin{tableii}{c|l}{code}{Pattern}{Meaning}
+  \lineii{*}{matches everything}
+  \lineii{?}{matches any single character}
+  \lineii{[\var{seq}]}{matches any character in \var{seq}}
+  \lineii{[!\var{seq}]}{matches any character not in \var{seq}}
+\end{tableii}
 
 Note that the filename separator (\code{'/'} on \UNIX{}) is \emph{not}
 special to this module.  See module
 \refmodule{glob}\refstmodindex{glob} for pathname expansion
-(\refmodule{glob} uses \function{fnmatch()} to match filename
-segments).
+(\refmodule{glob} uses \function{fnmatch()} to match pathname
+segments).  Similarly, filenames starting with a period are
+not special for this module, and are matched by the \code{*} and
+\code{?} patterns.
 
 
 \begin{funcdesc}{fnmatch}{filename, pattern}
 Test whether the \var{filename} string matches the \var{pattern}
 string, returning true or false.  If the operating system is
 case-insensitive, then both parameters will be normalized to all
-lower- or upper-case before the comparision is performed.  If you
-require a case-sensitive comparision regardless of whether that's
+lower- or upper-case before the comparison is performed.  If you
+require a case-sensitive comparison regardless of whether that's
 standard for your operating system, use \function{fnmatchcase()}
 instead.
 \end{funcdesc}
 
 \begin{funcdesc}{fnmatchcase}{filename, pattern}
 Test whether \var{filename} matches \var{pattern}, returning true or
-false; the comparision is case-sensitive.
+false; the comparison is case-sensitive.
 \end{funcdesc}
 
 
 \begin{seealso}
-  \seemodule{glob}{Shell-style path expansion}
+  \seemodule{glob}{\UNIX{} shell-style path expansion.}
 \end{seealso}
diff --git a/Doc/lib/libgetopt.tex b/Doc/lib/libgetopt.tex
index 1c17ab5..56a8b3c 100644
--- a/Doc/lib/libgetopt.tex
+++ b/Doc/lib/libgetopt.tex
@@ -33,9 +33,10 @@
 program arguments left after the option list was stripped (this is a
 trailing slice of the first argument).
 Each option-and-value pair returned has the option as its first
-element, prefixed with a hyphen (e.g., \code{'-x'}), and the option
-argument as its second element, or an empty string if the option has
-no argument.
+element, prefixed with a hyphen for short options (e.g., \code{'-x'})
+or two hyphens for long options (e.g., \code{'-}\code{-long-option'}),
+and the option argument as its second element, or an empty string if
+the option has no argument.
 The options occur in the list in the same order in which they were
 found, thus allowing multiple occurrences.  Long and short options may
 be mixed.
diff --git a/Doc/lib/libgrp.tex b/Doc/lib/libgrp.tex
index 10f12e8..2925297 100644
--- a/Doc/lib/libgrp.tex
+++ b/Doc/lib/libgrp.tex
@@ -11,10 +11,14 @@
 
 Group database entries are reported as 4-tuples containing the
 following items from the group database (see \code{<grp.h>}), in order:
-\code{gr_name},
-\code{gr_passwd},
-\code{gr_gid},
-\code{gr_mem}.
+
+\begin{tableiii}{r|l|l}{textrm}{Index}{Field}{Meaning}
+  \lineiii{0}{gr_name}{the name of the group}
+  \lineiii{1}{gr_passwd}{the (encrypted) group password; often empty}
+  \lineiii{2}{gr_gid}{the numerical group ID}
+  \lineiii{3}{gr_mem}{all the group member's  user  names}
+\end{tableiii}
+
 The gid is an integer, name and password are strings, and the member
 list is a list of strings.
 (Note that most users are not explicitly listed as members of the
@@ -34,3 +38,8 @@
 \begin{funcdesc}{getgrall}{}
 Return a list of all available group entries, in arbitrary order.
 \end{funcdesc}
+
+
+\begin{seealso}
+  \seemodule{pwd}{An interface to the user database, similar to this.}
+\end{seealso}
diff --git a/Doc/lib/libimaplib.tex b/Doc/lib/libimaplib.tex
index 80bd01e..5725fd3 100644
--- a/Doc/lib/libimaplib.tex
+++ b/Doc/lib/libimaplib.tex
@@ -1,6 +1,3 @@
-% Based on HTML documentation by Piers Lauder <piers@staff.cs.usyd.edu.au>;
-% converted by Fred L. Drake, Jr. <fdrake@acm.org>.
-
 \section{\module{imaplib} ---
          IMAP4 protocol client}
 
@@ -9,6 +6,9 @@
 \moduleauthor{Piers Lauder}{piers@staff.cs.usyd.edu.au}
 \sectionauthor{Piers Lauder}{piers@staff.cs.usyd.edu.au}
 
+% Based on HTML documentation by Piers Lauder <piers@staff.cs.usyd.edu.au>;
+% converted by Fred L. Drake, Jr. <fdrake@acm.org>.
+
 \indexii{IMAP4}{protocol}
 
 This module defines a class, \class{IMAP4}, which encapsulates a
diff --git a/Doc/lib/libintro.tex b/Doc/lib/libintro.tex
index a4bc67e..70c7c70 100644
--- a/Doc/lib/libintro.tex
+++ b/Doc/lib/libintro.tex
@@ -22,14 +22,15 @@
 written in Python and imported in source form.  Some modules provide
 interfaces that are highly specific to Python, like printing a stack
 trace; some provide interfaces that are specific to particular
-operating systems, like socket I/O; others provide interfaces that are
+operating systems, such as access to specific hardware; others provide
+interfaces that are
 specific to a particular application domain, like the World-Wide Web.
 Some modules are avaiable in all versions and ports of Python; others
 are only available when the underlying system supports or requires
 them; yet others are available only when a particular configuration
 option was chosen at the time when Python was compiled and installed.
 
-This manual is organized ``from the inside out'': it first describes
+This manual is organized ``from the inside out:'' it first describes
 the built-in data types, then the built-in functions and exceptions,
 and finally the modules, grouped in chapters of related modules.  The
 ordering of the chapters as well as the ordering of the modules within
diff --git a/Doc/lib/liblinecache.tex b/Doc/lib/liblinecache.tex
index fb71d7a..1273521 100644
--- a/Doc/lib/liblinecache.tex
+++ b/Doc/lib/liblinecache.tex
@@ -17,7 +17,9 @@
 
 \begin{funcdesc}{getline}{filename, lineno}
 Get line \var{lineno} from file named \var{filename}. This function
-will never throw an exception --- it will return \code{''} on errors.
+will never throw an exception --- it will return \code{''} on errors
+(the terminating newline character will be included for lines that are
+found).
 
 If a file named \var{filename} is not found, the function will look
 for it in the module\indexiii{module}{search}{path} search path,
@@ -25,9 +27,8 @@
 \end{funcdesc}
 
 \begin{funcdesc}{clearcache}{}
-Clear the cache.  Use this function if you know that you do not need
-to read lines from many of files you already read from using this
-module.
+Clear the cache.  Use this function if you no longer need lines from
+files previously read using \function{getline()}.
 \end{funcdesc}
 
 \begin{funcdesc}{checkcache}{}
diff --git a/Doc/lib/libmarshal.tex b/Doc/lib/libmarshal.tex
index be2a717..f24399e 100644
--- a/Doc/lib/libmarshal.tex
+++ b/Doc/lib/libmarshal.tex
@@ -62,7 +62,8 @@
   Write the value on the open file.  The value must be a supported
   type.  The file must be an open file object such as
   \code{sys.stdout} or returned by \function{open()} or
-  \function{posix.popen()}.
+  \function{posix.popen()}.  It must be opened in binary mode
+  (\code{'wb'} or \code{'w+b'}).
 
   If the value has (or contains an object that has) an unsupported type,
   a \exception{ValueError} exception is raised --- but garbage data
@@ -73,7 +74,8 @@
 \begin{funcdesc}{load}{file}
   Read one value from the open file and return it.  If no valid value
   is read, raise \exception{EOFError}, \exception{ValueError} or
-  \exception{TypeError}.  The file must be an open file object.
+  \exception{TypeError}.  The file must be an open file object opened
+  in binary mode (\code{'rb'} or \code{'r+b'}).
 
   \strong{Warning:} If an object containing an unsupported type was
   marshalled with \function{dump()}, \function{load()} will substitute
diff --git a/Doc/lib/libmath.tex b/Doc/lib/libmath.tex
index 0a45fb3..af1ac10 100644
--- a/Doc/lib/libmath.tex
+++ b/Doc/lib/libmath.tex
@@ -5,7 +5,19 @@
 \modulesynopsis{Mathematical functions (\function{sin()} etc.).}
 
 This module is always available.  It provides access to the
-mathematical functions defined by the C standard.  They are:
+mathematical functions defined by the C standard.
+
+These functions cannot be used with complex numbers; use the functions
+of the same name from the \refmodule{cmath} module if you require
+support for complex numbers.  The distinction between functions which
+support complex numbers and those which don't is made since most users
+do not want to learn quite as much mathematics as required to
+understand complex numbers.  Receiving an exception instead of a
+complex result allows earlier detection of the unexpected complex
+number used as a parameter, so that the programmer can determine how
+and why it was generated in the first place.
+
+The following functions provided by this module:
 
 \begin{funcdesc}{acos}{x}
 Return the arc cosine of \var{x}.
diff --git a/Doc/lib/libmhlib.tex b/Doc/lib/libmhlib.tex
index 27b71b0..3e70663 100644
--- a/Doc/lib/libmhlib.tex
+++ b/Doc/lib/libmhlib.tex
@@ -1,9 +1,9 @@
-% LaTeX'ized from the comments in the module by Skip Montanaro
-% <skip@mojam.com>.
-
 \section{\module{mhlib} ---
          Access to MH mailboxes}
 
+% LaTeX'ized from the comments in the module by Skip Montanaro
+% <skip@mojam.com>.
+
 \declaremodule{standard}{mhlib}
 \modulesynopsis{Manipulate MH mailboxes from Python.}
 
diff --git a/Doc/lib/libmimetools.tex b/Doc/lib/libmimetools.tex
index 82b42ac..eb469b1 100644
--- a/Doc/lib/libmimetools.tex
+++ b/Doc/lib/libmimetools.tex
@@ -2,7 +2,7 @@
          Tools for parsing MIME messages}
 
 \declaremodule{standard}{mimetools}
-\modulesynopsis{Tools for parsing MIME style message bodies.}
+\modulesynopsis{Tools for parsing MIME-style message bodies.}
 
 
 This module defines a subclass of the \class{rfc822.Message} class and
@@ -38,7 +38,7 @@
 \end{funcdesc}
 
 \begin{funcdesc}{copyliteral}{input, output}
-Read lines until \EOF{} from open file \var{input} and write them to
+Read lines from open file \var{input} until \EOF{} and write them to
 open file \var{output}.
 \end{funcdesc}
 
@@ -48,6 +48,12 @@
 \end{funcdesc}
 
 
+\begin{seealso}
+  \seemodule{rfc822}{Provides the base class for
+                     \class{mimetools.Message}.}
+\end{seealso}
+
+
 \subsection{Additional Methods of Message objects}
 \nodename{mimetools.Message Methods}
 
diff --git a/Doc/lib/libmimetypes.tex b/Doc/lib/libmimetypes.tex
index c85eb6f..b0c0bb8 100644
--- a/Doc/lib/libmimetypes.tex
+++ b/Doc/lib/libmimetypes.tex
@@ -1,7 +1,3 @@
-% This document section was written by Fred L. Drake, Jr.
-% <fdrake@acm.org>, based in part on original docstrings in the
-% mimetypes module.
-
 \section{\module{mimetypes} ---
          Map filenames to MIME types}
 
diff --git a/Doc/lib/libmimewriter.tex b/Doc/lib/libmimewriter.tex
index ec57584..fbf2490 100644
--- a/Doc/lib/libmimewriter.tex
+++ b/Doc/lib/libmimewriter.tex
@@ -54,7 +54,7 @@
                    boundary\optional{, plist\optional{, prefix}}}}
 Returns a file-like object which can be used to write to the
 body of the message.  Additionally, this method initializes the
-multi-part code, where \var{subtype} provides the mutlipart subtype,
+multi-part code, where \var{subtype} provides the multipart subtype,
 \var{boundary} may provide a user-defined boundary specification, and
 \var{plist} provides optional parameters for the subtype.
 \var{prefix} functions as in \method{startbody()}.  Subparts should be
diff --git a/Doc/lib/libnetrc.tex b/Doc/lib/libnetrc.tex
index 47b704b..9ad8d70 100644
--- a/Doc/lib/libnetrc.tex
+++ b/Doc/lib/libnetrc.tex
@@ -1,5 +1,3 @@
-% Module and documentation by Eric S. Raymond, 21 Dec 1998 
-
 \section{\module{netrc} ---
          netrc file processing}
 
@@ -45,7 +43,7 @@
 Instances of \class{netrc} have public instance variables:
 
 \begin{memberdesc}{hosts}
-Dictionmary mapping host names to \code{(\var{login}, \var{account},
+Dictionary mapping host names to \code{(\var{login}, \var{account},
 \var{password})} tuples.  The `default' entry, if any, is represented
 as a pseudo-host by that name.
 \end{memberdesc}
diff --git a/Doc/lib/libnis.tex b/Doc/lib/libnis.tex
index 0181b06..d7060fa 100644
--- a/Doc/lib/libnis.tex
+++ b/Doc/lib/libnis.tex
@@ -5,7 +5,7 @@
   \platform{UNIX}
 \moduleauthor{Fred Gansevles}{Fred.Gansevles@cs.utwente.nl}
 \sectionauthor{Moshe Zadka}{mzadka@geocities.com}
-\modulesynopsis{Interface to Sun's N.I.S. (a.k.a. Yellow Pages) library.}
+\modulesynopsis{Interface to Sun's NIS (a.k.a. Yellow Pages) library.}
 
 The \module{nis} module gives a thin wrapper around the NIS library, useful
 for central administration of several hosts.
@@ -23,8 +23,6 @@
 and other joys).
 
 Note that \var{mapname} is first checked if it is an alias to another name.
-XXX Describe list of all aliases? Internal for the C code, so
-    I'm not sure it's a good idea.
 \end{funcdesc}
 
 \begin{funcdesc}{cat}{mapname}
diff --git a/Doc/lib/libos.tex b/Doc/lib/libos.tex
index 5239fcb..4001447 100644
--- a/Doc/lib/libos.tex
+++ b/Doc/lib/libos.tex
@@ -262,7 +262,9 @@
 the command (encoded in the format specified for \function{wait()}) is
 available as the return value of the \method{close()} method of the file
 object, except that when the exit status is zero (termination without
-errors), \code{None} is returned.
+errors), \code{None} is returned.  \strong{Note:} This function
+behaves unreliably under Windows due to the native implementation of
+\cfunction{popen()}.
 Availability: \UNIX{}, Windows.
 \end{funcdesc}
 
@@ -443,12 +445,35 @@
 \subsection{Files and Directories \label{os-file-dir}}
 
 \begin{funcdesc}{access}{path, mode}
-Check read/write/execute permissions for this process or extance of file
-\var{path}.  Return \code{1} if access is granted, \code{0} if not.
-See the \UNIX{} manual for the semantics.
+Check read/write/execute permissions for this process or existence of
+file \var{path}.  \var{mode} should be \constant{F_OK} to test the
+existence of \var{path}, or it can be the inclusive OR of one or more
+of \constant{R_OK}, \constant{W_OK}, and \constant{X_OK} to test
+permissions.  Return \code{1} if access is allowed, \code{0} if not.
+See the \UNIX{} man page \manpage{access}{2} for more information.
 Availability: \UNIX{}.
 \end{funcdesc}
 
+\begin{datadesc}{F_OK}
+  Value to pass as the \var{mode} parameter of \function{access()} to
+  test the existence of \var{path}.
+\end{datadesc}
+
+\begin{datadesc}{R_OK}
+  Value to include in the \var{mode} parameter of \function{access()}
+  to test the readability of \var{path}.
+\end{datadesc}
+
+\begin{datadesc}{W_OK}
+  Value to include in the \var{mode} parameter of \function{access()}
+  to test the writability of \var{path}.
+\end{datadesc}
+
+\begin{datadesc}{X_OK}
+  Value to include in the \var{mode} parameter of \function{access()}
+  to determine if \var{path} can be executed.
+\end{datadesc}
+
 \begin{funcdesc}{chdir}{path}
 \index{directory!changing}
 Change the current working directory to \var{path}.
@@ -877,9 +902,10 @@
 Availability: \UNIX{}.
 \end{datadesc}
 
-The following functions take a process stats code as returned by
-\function{waitpid()} as a parameter.  They may be used to determine
-the disposition of a process.
+The following functions take a process status code as returned by
+\function{system()}, \function{wait()}, or \function{waitpid()} as a
+parameter.  They may be used to determine the disposition of a
+process.
 
 \begin{funcdesc}{WIFSTOPPED}{status}
 Return true if the process has been stopped.
diff --git a/Doc/lib/libparser.tex b/Doc/lib/libparser.tex
index db49d89..ce84513 100644
--- a/Doc/lib/libparser.tex
+++ b/Doc/lib/libparser.tex
@@ -1,5 +1,6 @@
-% libparser.tex
-%
+\section{\module{parser} ---
+         Access Python parse trees}
+
 % Copyright 1995 Virginia Polytechnic Institute and State University
 % and Fred L. Drake, Jr.  This copyright notice must be distributed on
 % all copies, but this document otherwise may be distributed as part
@@ -7,10 +8,6 @@
 % in any representation, either on paper or electronically.  This
 % restriction does not affect other elements in a distributed package
 % in any way.
-%
-
-\section{\module{parser} ---
-         Access Python parse trees}
 
 \declaremodule{builtin}{parser}
 \modulesynopsis{Access parse trees for Python source code.}
@@ -166,7 +163,7 @@
 \begin{funcdesc}{ast2list}{ast\optional{, line_info}}
 This function accepts an AST object from the caller in
 \var{ast} and returns a Python list representing the
-equivelent parse tree.  The resulting list representation can be used
+equivalent parse tree.  The resulting list representation can be used
 for inspection or the creation of a new parse tree in list form.  This
 function does not fail so long as memory is available to build the
 list representation.  If the parse tree will only be used for
@@ -185,7 +182,7 @@
 \begin{funcdesc}{ast2tuple}{ast\optional{, line_info}}
 This function accepts an AST object from the caller in
 \var{ast} and returns a Python tuple representing the
-equivelent parse tree.  Other than returning a tuple instead of a
+equivalent parse tree.  Other than returning a tuple instead of a
 list, this function is identical to \function{ast2list()}.
 
 If \var{line_info} is true, line number information will be
@@ -238,7 +235,7 @@
 \begin{funcdesc}{issuite}{ast}
 This function mirrors \function{isexpr()} in that it reports whether an
 AST object represents an \code{'exec'} form, commonly known as a
-``suite.''  It is not safe to assume that this function is equivelent
+``suite.''  It is not safe to assume that this function is equivalent
 to \samp{not isexpr(\var{ast})}, as additional syntactic fragments may
 be supported in the future.
 \end{funcdesc}
@@ -274,9 +271,6 @@
 
 \subsection{AST Objects \label{AST Objects}}
 
-AST objects returned by \function{expr()}, \function{suite()} and
-\function{sequence2ast()} have no methods of their own.
-
 Ordered and equality comparisons are supported between AST objects.
 Pickling of AST objects (using the \refmodule{pickle} module) is also
 supported.
@@ -326,7 +320,7 @@
 While many useful operations may take place between parsing and
 bytecode generation, the simplest operation is to do nothing.  For
 this purpose, using the \module{parser} module to produce an
-intermediate data structure is equivelent to the code
+intermediate data structure is equivalent to the code
 
 \begin{verbatim}
 >>> code = compile('a + 5', 'eval')
@@ -335,7 +329,7 @@
 10
 \end{verbatim}
 
-The equivelent operation using the \module{parser} module is somewhat
+The equivalent operation using the \module{parser} module is somewhat
 longer, and allows the intermediate internal parse tree to be retained
 as an AST object:
 
@@ -474,7 +468,7 @@
 
 By replacing the actual docstring with something to signify a variable
 component of the tree, we allow a simple pattern matching approach to
-check any given subtree for equivelence to the general pattern for
+check any given subtree for equivalence to the general pattern for
 docstrings.  Since the example demonstrates information extraction, we
 can safely require that the tree be in tuple form rather than list
 form, allowing a simple variable representation to be
diff --git a/Doc/lib/libpickle.tex b/Doc/lib/libpickle.tex
index f6374d8..dca7820 100644
--- a/Doc/lib/libpickle.tex
+++ b/Doc/lib/libpickle.tex
@@ -3,6 +3,7 @@
 
 \declaremodule{standard}{pickle}
 \modulesynopsis{Convert Python objects to streams of bytes and back.}
+% Substantial improvements by Jim Kerr <jbkerr@sr.hp.com>.
 
 \index{persistency}
 \indexii{persistent}{objects}
@@ -37,17 +38,29 @@
 factory functions, not classes (so they cannot be used as base classes
 for inheritance).
 
-Unlike the built-in module \refmodule{marshal}\refbimodindex{marshal},
-\module{pickle} handles the following correctly:
-
+Although the \module{pickle} module can use the built-in module
+\refmodule{marshal}\refbimodindex{marshal} internally, it differs from 
+\refmodule{marshal} in the way it handles certain kinds of data:
 
 \begin{itemize}
 
-\item recursive objects (objects containing references to themselves)
+\item Recursive objects (objects containing references to themselves): 
+      \module{pickle} keeps track of the objects it has already
+      serialized, so later references to the same object won't be
+      serialized again.  (The \refmodule{marshal} module breaks for
+      this.)
 
-\item object sharing (references to the same object in different places)
+\item Object sharing (references to the same object in different
+      places):  This is similar to self-referencing objects;
+      \module{pickle} stores the object once, and ensures that all
+      other references point to the master copy.  Shared objects
+      remain shared, which can be very important for mutable objects.
 
-\item user-defined classes and their instances
+\item User-defined classes and their instances:  \refmodule{marshal}
+      does not support these at all, but \module{pickle} can save
+      and restore class instances transparently.  The class definition 
+      must be importable and live in the same module as when the
+      object was stored.
 
 \end{itemize}
 
@@ -177,16 +190,15 @@
 \end{verbatim}
 
 The \class{Pickler} class only calls the method \code{f.write()} with a
-\withsubitem{(class in pickle)}{
-  \ttindex{Unpickler}\ttindex{Pickler}}
+\withsubitem{(class in pickle)}{\ttindex{Unpickler}\ttindex{Pickler}}
 string argument.  The \class{Unpickler} calls the methods \code{f.read()}
 (with an integer argument) and \code{f.readline()} (without argument),
 both returning a string.  It is explicitly allowed to pass non-file
 objects here, as long as they have the right methods.
 
 The constructor for the \class{Pickler} class has an optional second
-argument, \var{bin}.  If this is present and nonzero, the binary
-pickle format is used; if it is zero or absent, the (less efficient,
+argument, \var{bin}.  If this is present and true, the binary
+pickle format is used; if it is absent or false, the (less efficient,
 but backwards compatible) text pickle format is used.  The
 \class{Unpickler} class does not have an argument to distinguish
 between binary and text pickle formats; it accepts either format.
@@ -203,6 +215,11 @@
 
 \item tuples, lists and dictionaries containing only picklable objects
 
+\item functions defined at the top level of a module (by name
+      reference, not storage of the implementation)
+
+\item built-in functions
+
 \item classes that are defined at the top level in a module
 
 \item instances of such classes whose \member{__dict__} or
@@ -276,11 +293,80 @@
 \end{seealso}
 
 
+\subsection{Example \label{pickle-example}}
+
+Here's a simple example of how to modify pickling behavior for a
+class.  The \class{TextReader} class opens a text file, and returns
+the line number and line contents each time its \method{readline()}
+method is called. If a \class{TextReader} instance is pickled, all
+attributes \emph{except} the file object member are saved. When the
+instance is unpickled, the file is reopened, and reading resumes from
+the last location. The \method{__setstate__()} and
+\method{__getstate__()} methods are used to implement this behavior.
+
+\begin{verbatim}
+# illustrate __setstate__ and __getstate__  methods
+# used in pickling.
+
+class TextReader:
+    "Print and number lines in a text file."
+    def __init__(self,file):
+        self.file = file
+        self.fh = open(file,'r')
+        self.lineno = 0
+
+    def readline(self):
+        self.lineno = self.lineno + 1
+        line = self.fh.readline()
+        if not line:
+            return None
+        return "%d: %s" % (self.lineno,line[:-1])
+
+    # return data representation for pickled object
+    def __getstate__(self):
+        odict = self.__dict__    # get attribute dictionary
+        del odict['fh']          # remove filehandle entry
+        return odict
+
+    # restore object state from data representation generated 
+    # by __getstate__
+    def __setstate__(self,dict):
+        fh = open(dict['file'])  # reopen file
+        count = dict['lineno']   # read from file...
+        while count:             # until line count is restored
+            fh.readline()
+            count = count - 1
+        dict['fh'] = fh          # create filehandle entry
+        self.__dict__ = dict     # make dict our attribute dictionary
+\end{verbatim}
+
+A sample usage might be something like this:
+
+\begin{verbatim}
+>>> import TextReader
+>>> obj = TextReader.TextReader("TextReader.py")
+>>> obj.readline()
+'1: #!/usr/local/bin/python'
+>>> # (more invocations of obj.readline() here)
+... obj.readline()
+'7: class TextReader:'
+>>> import pickle
+>>> pickle.dump(obj,open('save.p','w'))
+
+  (start another Python session)
+
+>>> import pickle
+>>> reader = pickle.load(open('save.p'))
+>>> reader.readline()
+'8:     "Print and number lines in a text file."'
+\end{verbatim}
+
+
 \section{\module{cPickle} ---
          Alternate implementation of \module{pickle}}
 
 \declaremodule{builtin}{cPickle}
-\modulesynopsis{Faster version of \module{pickle}, but not subclassable.}
+\modulesynopsis{Faster version of \refmodule{pickle}, but not subclassable.}
 \moduleauthor{Jim Fulton}{jfulton@digicool.com}
 \sectionauthor{Fred L. Drake, Jr.}{fdrake@acm.org}
 
diff --git a/Doc/lib/libpoplib.tex b/Doc/lib/libpoplib.tex
index fc73a31..4408ef3 100644
--- a/Doc/lib/libpoplib.tex
+++ b/Doc/lib/libpoplib.tex
@@ -1,14 +1,14 @@
-%By Andrew T. Csillag
-%Even though I put it into LaTeX, I cannot really claim that I wrote
-%it since I just stole most of it from the poplib.py source code and
-%the imaplib ``chapter''.
-
 \section{\module{poplib} ---
          POP3 protocol client}
 
 \declaremodule{standard}{poplib}
 \modulesynopsis{POP3 protocol client (requires sockets).}
 
+%By Andrew T. Csillag
+%Even though I put it into LaTeX, I cannot really claim that I wrote
+%it since I just stole most of it from the poplib.py source code and
+%the imaplib ``chapter''.
+
 \indexii{POP3}{protocol}
 
 This module defines a class, \class{POP3}, which encapsulates a
diff --git a/Doc/lib/libposixpath.tex b/Doc/lib/libposixpath.tex
index 7ab3713..4981ac0 100644
--- a/Doc/lib/libposixpath.tex
+++ b/Doc/lib/libposixpath.tex
@@ -127,8 +127,8 @@
 Normalize a pathname.  This collapses redundant separators and
 up-level references, e.g. \code{A//B}, \code{A/./B} and
 \code{A/foo/../B} all become \code{A/B}.  It does not normalize the
-case (use \function{normcase()} for that).  On Windows, it does
-converts forward slashes to backward slashes.
+case (use \function{normcase()} for that).  On Windows, it converts
+forward slashes to backward slashes.
 \end{funcdesc}
 
 \begin{funcdesc}{samefile}{path1, path2}
diff --git a/Doc/lib/libpty.tex b/Doc/lib/libpty.tex
index 85dd526..5ef3d0f 100644
--- a/Doc/lib/libpty.tex
+++ b/Doc/lib/libpty.tex
@@ -1,11 +1,7 @@
-%%%% LaTeX'ed and enhanced from comments in file
-%%%% Skipped some functions which seemed to be for private 
-%%%% usage (decision debatable).
-
 \section{\module{pty} ---
          Pseudo-terminal utilities}
 \declaremodule{standard}{pty}
-  \platform{IRIX, Linux} %XXX Is that the right way???
+  \platform{IRIX, Linux}
 \modulesynopsis{Pseudo-Terminal Handling for SGI and Linux.}
 \moduleauthor{Steen Lumholt}{}
 \sectionauthor{Moshe Zadka}{mzadka@geocities.com}
diff --git a/Doc/lib/libpwd.tex b/Doc/lib/libpwd.tex
index fb8d693..784f478 100644
--- a/Doc/lib/libpwd.tex
+++ b/Doc/lib/libpwd.tex
@@ -5,21 +5,33 @@
   \platform{Unix}
 \modulesynopsis{The password database (\function{getpwnam()} and friends).}
 
-This module provides access to the \UNIX{} password database.
-It is available on all \UNIX{} versions.
+This module provides access to the \UNIX{} user account and password
+database.  It is available on all \UNIX{} versions.
 
 Password database entries are reported as 7-tuples containing the
 following items from the password database (see \code{<pwd.h>}), in order:
-\code{pw_name},
-\code{pw_passwd},
-\code{pw_uid},
-\code{pw_gid},
-\code{pw_gecos},
-\code{pw_dir},
-\code{pw_shell}.
+
+\begin{tableiii}{r|l|l}{textrm}{Index}{Field}{Meaning}
+  \lineiii{0}{\code{pw_name}}{Login name}
+  \lineiii{1}{\code{pw_passwd}}{Optional encrypted password}
+  \lineiii{2}{\code{pw_uid}}{Numerical user ID}
+  \lineiii{3}{\code{pw_gid}}{Numerical group ID}
+  \lineiii{4}{\code{pw_gecos}}{User name or comment field}
+  \lineiii{5}{\code{pw_dir}}{User home directory}
+  \lineiii{6}{\code{pw_shell}}{User command interpreter}
+\end{tableiii}
+
 The uid and gid items are integers, all others are strings.
 \exception{KeyError} is raised if the entry asked for cannot be found.
 
+\strong{Note:} In traditional \UNIX{} the field \code{pw_passwd} usually
+contains a password encrypted with a DES derived algorithm (see module
+\refmodule{crypt}\refbimodindex{crypt}).  However most modern unices 
+use a so-called \emph{shadow password} system.  On those unices the
+field \code{pw_passwd} only contains a asterisk (\code{'*'}) or the 
+letter \character{x} where the encrypted password is stored in a file
+\file{/etc/shadow} which is not world readable.
+
 It defines the following items:
 
 \begin{funcdesc}{getpwuid}{uid}
@@ -33,3 +45,8 @@
 \begin{funcdesc}{getpwall}{}
 Return a list of all available password database entries, in arbitrary order.
 \end{funcdesc}
+
+
+\begin{seealso}
+  \seemodule{grp}{An interface to the group database, similar to this.}
+\end{seealso}
diff --git a/Doc/lib/libpycompile.tex b/Doc/lib/libpycompile.tex
index fad749b..ebbc9b9 100644
--- a/Doc/lib/libpycompile.tex
+++ b/Doc/lib/libpycompile.tex
@@ -1,9 +1,9 @@
+\section{\module{py_compile} ---
+         Compile Python source files}
+
 % Documentation based on module docstrings, by Fred L. Drake, Jr.
 % <fdrake@acm.org>
 
-\section{\module{py_compile} ---
-         Compile Python source files.}
-
 \declaremodule[pycompile]{standard}{py_compile}
 
 \modulesynopsis{Compile Python source files to byte-code files.}
diff --git a/Doc/lib/libqueue.tex b/Doc/lib/libqueue.tex
index a846036..2bb6a2f 100644
--- a/Doc/lib/libqueue.tex
+++ b/Doc/lib/libqueue.tex
@@ -32,7 +32,7 @@
 
 \begin{excdesc}{Full}
 Exception raised when non-blocking \method{put()} (or
-\method{get_nowait()}) is called on a \class{Queue} object which is
+\method{put_nowait()}) is called on a \class{Queue} object which is
 full or locked.
 \end{excdesc}
 
diff --git a/Doc/lib/librandom.tex b/Doc/lib/librandom.tex
index 1c39c15..e7f0d58 100644
--- a/Doc/lib/librandom.tex
+++ b/Doc/lib/librandom.tex
@@ -12,22 +12,25 @@
 distributions.  For generating distribution of angles, the circular
 uniform and von Mises distributions are available.
 
-The module exports the following functions, which are exactly
-equivalent to those in the \refmodule{whrandom} module:
-\function{choice()}, \function{randint()}, \function{random()} and
-\function{uniform()}.  See the documentation for the
-\refmodule{whrandom} module for these functions.
 
-The following functions specific to the \module{random} module are also
-defined, and all return real values.  Function parameters are named
-after the corresponding variables in the distribution's equation, as
-used in common mathematical practice; most of these equations can be
-found in any statistics text.
+The \module{random} module supports the \emph{Random Number
+Generator} interface, described in section \ref{rng-objects}.  This
+interface of the module, as well as the distribution-specific
+functions described below, all use the pseudo-random generator
+provided by the \refmodule{whrandom} module.
+
+
+The following functions are defined to support specific distributions,
+and all return real values.  Function parameters are named after the
+corresponding variables in the distribution's equation, as used in
+common mathematical practice; most of these equations can be found in
+any statistics text.  These are expected to become part of the Random
+Number Generator interface in a future release.
 
 \begin{funcdesc}{betavariate}{alpha, beta}
 Beta distribution.  Conditions on the parameters are
-\code{\var{alpha} >- 1} and \code{\var{beta} > -1}.
-Returned values will range between 0 and 1.
+\code{\var{alpha} > -1} and \code{\var{beta} > -1}.
+Returned values range between 0 and 1.
 \end{funcdesc}
 
 \begin{funcdesc}{cunifvariate}{mean, arc}
@@ -59,8 +62,8 @@
 \begin{funcdesc}{lognormvariate}{mu, sigma}
 Log normal distribution.  If you take the natural logarithm of this
 distribution, you'll get a normal distribution with mean \var{mu} and
-standard deviation \var{sigma}.  \var{mu} can have any value, and \var{sigma}
-must be greater than zero.  
+standard deviation \var{sigma}.  \var{mu} can have any value, and
+\var{sigma} must be greater than zero.  
 \end{funcdesc}
 
 \begin{funcdesc}{normalvariate}{mu, sigma}
@@ -86,5 +89,40 @@
 \end{funcdesc}
 
 \begin{seealso}
-  \seemodule{whrandom}{the standard Python random number generator}
+  \seemodule{whrandom}{The standard Python random number generator.}
 \end{seealso}
+
+
+\subsection{The Random Number Generator Interface
+            \label{rng-objects}}
+
+% XXX This *must* be updated before a future release!
+
+The \dfn{Random Number Generator} interface describes the methods
+which are available for all random number generators.  This will be
+enhanced in future releases of Python.
+
+In this release of Python, the modules \refmodule{random},
+\refmodule{whrandom}, and instances of the
+\class{whrandom.whrandom} class all conform to this interface.
+
+
+\begin{funcdesc}{choice}{seq}
+Chooses a random element from the non-empty sequence \var{seq} and
+returns it.
+\end{funcdesc}
+
+\begin{funcdesc}{randint}{a, b}
+Returns a random integer \var{N} such that
+\code{\var{a} <= \var{N} <= \var{b}}.
+\end{funcdesc}
+
+\begin{funcdesc}{random}{}
+Returns the next random floating point number in the range [0.0
+... 1.0).
+\end{funcdesc}
+
+\begin{funcdesc}{uniform}{a, b}
+Returns a random real number \var{N} such that
+\code{\var{a} <= \var{N} < \var{b}}.
+\end{funcdesc}
diff --git a/Doc/lib/librfc822.tex b/Doc/lib/librfc822.tex
index 6fecced..547923d 100644
--- a/Doc/lib/librfc822.tex
+++ b/Doc/lib/librfc822.tex
@@ -8,10 +8,11 @@
 collection of ``email headers'' as defined by the Internet standard
 \rfc{822}.  It is used in various contexts, usually to read such
 headers from a file.  This module also defines a helper class 
-\class{AddressList} for parsing \rfc{822} addresses.
+\class{AddressList} for parsing \rfc{822} addresses.  Please refer to
+the RFC for information on the specific syntax of \rfc{822} headers.
 
-Note that there's a separate module to read \UNIX{}, MH, and MMDF
-style mailbox files: \refmodule{mailbox}\refstmodindex{mailbox}.
+The \refmodule{mailbox}\refstmodindex{mailbox} module provides classes 
+to read mailboxes produced by various end-user mail programs.
 
 \begin{classdesc}{Message}{file\optional{, seekable}}
 A \class{Message} instance is instantiated with an input object as
@@ -61,7 +62,8 @@
 \code{'Mon, 20 Nov 1995 19:12:08 -0500'}.  If it succeeds in parsing
 the date, \function{parsedate()} returns a 9-tuple that can be passed
 directly to \function{time.mktime()}; otherwise \code{None} will be
-returned.  
+returned.  Note that fields 6, 7, and 8 of the result tuple are not
+usable.
 \end{funcdesc}
 
 \begin{funcdesc}{parsedate_tz}{date}
@@ -74,7 +76,8 @@
 variable for the same timezone; the latter variable follows the
 \POSIX{} standard while this module follows \rfc{822}.)  If the input
 string has no timezone, the last element of the tuple returned is
-\code{None}.
+\code{None}.  Note that fields 6, 7, and 8 of the result tuple are not
+usable.
 \end{funcdesc}
 
 \begin{funcdesc}{mktime_tz}{tuple}
@@ -87,6 +90,12 @@
 \end{funcdesc}
 
 
+\begin{seealso}
+  \seemodule{mailbox}{Classes to read various mailbox formats produced 
+                      by end-user mail programs.}
+\end{seealso}
+
+
 \subsection{Message Objects \label{message-objects}}
 
 A \class{Message} instance has the following methods:
@@ -180,7 +189,8 @@
 
 \begin{methoddesc}{getdate}{name}
 Retrieve a header using \method{getheader()} and parse it into a 9-tuple
-compatible with \function{time.mktime()}.  If there is no header matching
+compatible with \function{time.mktime()}; note that fields 6, 7, and 8 
+are not usable.  If there is no header matching
 \var{name}, or it is unparsable, return \code{None}.
 
 Date parsing appears to be a black art, and not all mailers adhere to
@@ -193,7 +203,8 @@
 Retrieve a header using \method{getheader()} and parse it into a
 10-tuple; the first 9 elements will make a tuple compatible with
 \function{time.mktime()}, and the 10th is a number giving the offset
-of the date's timezone from UTC.  Similarly to \method{getdate()}, if
+of the date's timezone from UTC.  Note that fields 6, 7, and 8 
+are not usable.  Similarly to \method{getdate()}, if
 there is no header matching \var{name}, or it is unparsable, return
 \code{None}. 
 \end{methoddesc}
diff --git a/Doc/lib/libsched.tex b/Doc/lib/libsched.tex
index baa2ffe..21366f5 100644
--- a/Doc/lib/libsched.tex
+++ b/Doc/lib/libsched.tex
@@ -1,7 +1,8 @@
-% LaTeXed and enhanced from comments in file
 \section{\module{sched} ---
          Event scheduler}
 
+% LaTeXed and enhanced from comments in file
+
 \declaremodule{standard}{sched}
 \sectionauthor{Moshe Zadka}{mzadka@geocities.com}
 \modulesynopsis{General purpose event scheduler.}
@@ -49,7 +50,8 @@
 
 \begin{methoddesc}{enterabs}{time, priority, action, argument}
 Schedule a new event. The \var{time} argument should be a numeric type
-compatible to the return value of \var{timefunc}. Events scheduled for
+compatible with the return value of the \var{timefunc} function passed 
+to the constructor. Events scheduled for
 the same \var{time} will be executed in the order of their
 \var{priority}.
 
diff --git a/Doc/lib/libselect.tex b/Doc/lib/libselect.tex
index 23b8b8d..f33dc44 100644
--- a/Doc/lib/libselect.tex
+++ b/Doc/lib/libselect.tex
@@ -9,7 +9,7 @@
 available in most operating systems.  Note that on Windows, it only
 works for sockets; on other operating systems, it also works for other
 file types (in particular, on \UNIX{}, it works on pipes).  It cannot
-be used or regular files to determine whether a file has grown since
+be used on regular files to determine whether a file has grown since
 it was last read.
 
 The module defines the following:
diff --git a/Doc/lib/libshlex.tex b/Doc/lib/libshlex.tex
index f33fa2a..174a39f 100644
--- a/Doc/lib/libshlex.tex
+++ b/Doc/lib/libshlex.tex
@@ -1,5 +1,3 @@
-% Module and documentation by Eric S. Raymond, 21 Dec 1998 
-
 \section{\module{shlex} ---
          Simple lexical analysis}
 
diff --git a/Doc/lib/libsmtplib.tex b/Doc/lib/libsmtplib.tex
index d366cca..445a417 100644
--- a/Doc/lib/libsmtplib.tex
+++ b/Doc/lib/libsmtplib.tex
@@ -74,6 +74,17 @@
 \end{excdesc}
 
 
+\begin{seealso}
+  \seetext{Internet \rfc{821}, \emph{Simple Mail Transfer Protocol}.
+           Available online at
+           \url{http://info.internet.isi.edu/in-notes/rfc/files/rfc821.txt}.}
+
+  \seetext{Internet \rfc{1869}, \emph{SMTP Service Extensions}.
+           Available online at
+           \url{http://info.internet.isi.edu/in-notes/rfc/files/rfc1869.txt}.}
+\end{seealso}
+
+
 \subsection{SMTP Objects \label{SMTP-objects}}
 
 An \class{SMTP} instance has the following methods:
@@ -160,6 +171,10 @@
 to use the low-level methods such as \method{mail}, \method{rcpt} and
 \method{data} to send the message.)
 
+\strong{Note:}  The \var{from_addr} and \var{to_addrs} parameters are
+used to construct the message envelope used by the transport agents.
+The \class{SMTP} does not modify the message headers in any way.
+
 If there has been no previous \samp{EHLO} or \samp{HELO} command this
 session, this method tries ESMTP \samp{EHLO} first. If the server does
 ESMTP, message size and each of the specified options will be passed
@@ -177,27 +192,25 @@
 
 This method may raise the following exceptions:
 
-\begin{itemize}
+\begin{description}
 \item[\exception{SMTPRecipientsRefused}]
 All recipients were refused.  Nobody got the mail.  The
-\var{recipients} attribute of the exception object is a dictionary
+\member{recipients} attribute of the exception object is a dictionary
 with information about the refused recipients (like the one returned
 when at least one recipient was accepted).
 
 \item[\exception{SMTPHeloError}]
-The server didn't reply properly to
-the helo greeting.
+The server didn't reply properly to the \samp{HELO} greeting.
 
 \item[\exception{SMTPSenderRefused}]
-The server didn't accept the from_addr.
+The server didn't accept the \var{from_addr}.
 
 \item[\exception{SMTPDataError}]
-The server replied with an unexpected
-error code (other than a refusal of
-a recipient).
-\end{itemize}
+The server replied with an unexpected error code (other than a refusal
+of a recipient).
+\end{description}
 
-Unless otherwise noted the connection will be open even after
+Unless otherwise noted, the connection will be open even after
 an exception is raised.
 
 \end{methoddesc}
@@ -216,33 +229,37 @@
 \subsection{SMTP Example \label{SMTP-example}}
 
 This example prompts the user for addresses needed in the message
-envelop (`To' and `From' addresses), and the message to be
+envelope (`To' and `From' addresses), and the message to be
 delivered.  Note that the headers to be included with the message must 
 be included in the message as entered; this example doesn't do any
 processing of the \rfc{822} headers.  In particular, the `To' and
 `From' addresses must be included in the message headers explicitly.
 
 \begin{verbatim}
-import rfc822, string, sys
 import smtplib
+import string
 
 def prompt(prompt):
-    sys.stdout.write(prompt + ": ")
-    return string.strip(sys.stdin.readline())
+    return string.strip(raw_input(prompt))
 
-fromaddr = prompt("From")
-toaddrs  = string.splitfields(prompt("To"), ',')
+fromaddr = prompt("From: ")
+toaddrs  = string.split(prompt("To: "))
 print "Enter message, end with ^D:"
-msg = ""
+
+# Add the From: and To: headers at the start!
+msg = ("From: %s\r\nTo: %s\r\n\r\n"
+       % (fromaddr, string.join(toaddrs, ", ")))
 while 1:
-    line = sys.stdin.readline()
+    line = raw_input()
     if not line:
         break
     msg = msg + line
+
 print "Message length is " + `len(msg)`
 
 server = smtplib.SMTP('localhost')
 server.set_debuglevel(1)
+server.connect()
 server.sendmail(fromaddr, toaddrs, msg)
 server.quit()
 \end{verbatim}
diff --git a/Doc/lib/libsocket.tex b/Doc/lib/libsocket.tex
index 4abe805..bcbb76f 100644
--- a/Doc/lib/libsocket.tex
+++ b/Doc/lib/libsocket.tex
@@ -6,16 +6,19 @@
 
 
 This module provides access to the BSD \emph{socket} interface.
-It is available on \UNIX{} systems that support this interface.
+It is available on all modern \UNIX{} systems, Windows, MacOS, BeOS,
+OS/2, and probably additional platforms.
 
 For an introduction to socket programming (in C), see the following
 papers: \citetitle{An Introductory 4.3BSD Interprocess Communication
 Tutorial}, by Stuart Sechrest and \citetitle{An Advanced 4.3BSD
 Interprocess Communication Tutorial}, by Samuel J.  Leffler et al,
 both in the \citetitle{\UNIX{} Programmer's Manual, Supplementary Documents 1}
-(sections PS1:7 and PS1:8).  The \UNIX{} manual pages for the various
-socket-related system calls are also a valuable source of information
-on the details of socket semantics.
+(sections PS1:7 and PS1:8).  The platform-specific reference material
+for the various socket-related system calls are also a valuable source
+of information on the details of socket semantics.  For \UNIX, refer
+to the manual pages; for Windows, see the WinSock (or Winsock 2)
+specification.
 
 The Python interface is a straightforward transliteration of the
 \UNIX{} system call and library interface for sockets to Python's
diff --git a/Doc/lib/libstatvfs.tex b/Doc/lib/libstatvfs.tex
index e71ad72..ca96212 100644
--- a/Doc/lib/libstatvfs.tex
+++ b/Doc/lib/libstatvfs.tex
@@ -22,6 +22,10 @@
 Fundamental file system block size.
 \end{datadesc}
 
+\begin{datadesc}{F_BLOCKS}
+Total number of blocks in the filesystem.
+\end{datadesc}
+
 \begin{datadesc}{F_BFREE}
 Total number of free blocks.
 \end{datadesc}
@@ -39,7 +43,7 @@
 \end{datadesc}
 
 \begin{datadesc}{F_FAVAIL}
-Free nodes available to non-superuser.
+Free nodes available to non-super user.
 \end{datadesc}
 
 \begin{datadesc}{F_FLAG}
diff --git a/Doc/lib/libstdtypes.tex b/Doc/lib/libstdtypes.tex
index 6ae216b..f4c0c8a 100644
--- a/Doc/lib/libstdtypes.tex
+++ b/Doc/lib/libstdtypes.tex
@@ -30,15 +30,17 @@
 \item	\code{None}
 	\withsubitem{(Built-in object)}{\ttindex{None}}
 
-\item	zero of any numeric type, e.g., \code{0}, \code{0L}, \code{0.0}.
+\item	zero of any numeric type, for example, \code{0}, \code{0L},
+        \code{0.0}, \code{0j}.
 
-\item	any empty sequence, e.g., \code{''}, \code{()}, \code{[]}.
+\item	any empty sequence, for example, \code{''}, \code{()}, \code{[]}.
 
-\item	any empty mapping, e.g., \code{\{\}}.
+\item	any empty mapping, for example, \code{\{\}}.
 
 \item	instances of user-defined classes, if the class defines a
 	\method{__nonzero__()} or \method{__len__()} method, when that
-	method returns zero.
+	method returns zero.\footnote{Additional information on these
+special methods may be found in the \emph{Python Reference Manual}.}
 
 \end{itemize}
 
@@ -77,9 +79,9 @@
 These only evaluate their second argument if needed for their outcome.
 
 \item[(2)]
-\samp{not} has a lower priority than non-Boolean operators, so e.g.
-\code{not a == b} is interpreted as \code{not(a == b)}, and
-\code{a == not b} is a syntax error.
+\samp{not} has a lower priority than non-Boolean operators, so
+\code{not \var{a} == \var{b}} is interpreted as \code{not (\var{a} ==
+\var{b})}, and \code{\var{a} == not \var{b}} is a syntax error.
 
 \end{description}
 
@@ -88,10 +90,11 @@
 
 Comparison operations are supported by all objects.  They all have the
 same priority (which is higher than that of the Boolean operations).
-Comparisons can be chained arbitrarily, e.g. \code{x < y <= z} is
-equivalent to \code{x < y and y <= z}, except that \code{y} is
-evaluated only once (but in both cases \code{z} is not evaluated at
-all when \code{x < y} is found to be false).
+Comparisons can be chained arbitrarily; for example, \code{\var{x} <
+\var{y} <= \var{z}} is equivalent to \code{\var{x} < \var{y} and
+\var{y} <= \var{z}}, except that \var{y} is evaluated only once (but
+in both cases \var{z} is not evaluated at all when \code{\var{x} <
+\var{y}} is found to be false).
 \indexii{chaining}{comparisons}
 
 This table summarizes the comparison operations:
@@ -123,26 +126,33 @@
 \index{ABC language@\ABC{} language}
 \index{language!ABC@\ABC{}}
 \indexii{C@\C{}}{language}
+\code{!=} is the preferred spelling; \code{<>} is obsolescent.
 
 \end{description}
 
 Objects of different types, except different numeric types, never
 compare equal; such objects are ordered consistently but arbitrarily
 (so that sorting a heterogeneous array yields a consistent result).
-Furthermore, some types (e.g., windows) support only a degenerate
-notion of comparison where any two objects of that type are unequal.
-Again, such objects are ordered arbitrarily but consistently.
-\indexii{types}{numeric}
+Furthermore, some types (for example, file objects) support only a
+degenerate notion of comparison where any two objects of that type are
+unequal.  Again, such objects are ordered arbitrarily but
+consistently.
+\indexii{object}{numeric}
 \indexii{objects}{comparing}
 
-(Implementation note: objects of different types except numbers are
-ordered by their type names; objects of the same types that don't
-support proper comparison are ordered by their address.)
+Instances of a class normally compare as non-equal unless the class
+\withsubitem{(instance method)}{\ttindex{__cmp__()}}
+defines the \method{__cmp__()} method.  Refer to the \emph{Python
+Reference Manual} for information on the use of this method to effect
+object comparisons.
 
-Two more operations with the same syntactic priority, \samp{in} and
-\samp{not in}, are supported only by sequence types (below).
-\opindex{in}
-\opindex{not in}
+\strong{Implementation note:} Objects of different types except
+numbers are ordered by their type names; objects of the same types
+that don't support proper comparison are ordered by their address.
+
+Two more operations with the same syntactic priority,
+\samp{in}\opindex{in} and \samp{not in}\opindex{not in}, are supported
+only by sequence types (below).
 
 
 \subsection{Numeric Types \label{typesnumeric}}
@@ -150,9 +160,9 @@
 There are four numeric types: \dfn{plain integers}, \dfn{long integers}, 
 \dfn{floating point numbers}, and \dfn{complex numbers}.
 Plain integers (also just called \dfn{integers})
-are implemented using \ctype{long} in \C{}, which gives them at least 32
+are implemented using \ctype{long} in C, which gives them at least 32
 bits of precision.  Long integers have unlimited precision.  Floating
-point numbers are implemented using \ctype{double} in \C{}.  All bets on
+point numbers are implemented using \ctype{double} in C.  All bets on
 their precision are off unless you happen to know the machine you are
 working with.
 \indexii{numeric}{types}
@@ -161,20 +171,20 @@
 \indexiii{long}{integer}{type}
 \indexii{floating point}{type}
 \indexii{complex number}{type}
-\indexii{C@\C{}}{language}
+\indexii{C}{language}
 
 Complex numbers have a real and imaginary part, which are both
-implemented using \ctype{double} in \C{}.  To extract these parts from
+implemented using \ctype{double} in C.  To extract these parts from
 a complex number \var{z}, use \code{\var{z}.real} and \code{\var{z}.imag}.  
 
 Numbers are created by numeric literals or as the result of built-in
 functions and operators.  Unadorned integer literals (including hex
-and octal numbers) yield plain integers.  Integer literals with an \samp{L}
-or \samp{l} suffix yield long integers
-(\samp{L} is preferred because \samp{1l} looks too much like eleven!).
-Numeric literals containing a decimal point or an exponent sign yield
-floating point numbers.  Appending \samp{j} or \samp{J} to a numeric
-literal yields a complex number.
+and octal numbers) yield plain integers.  Integer literals with an
+\character{L} or \character{l} suffix yield long integers
+(\character{L} is preferred because \samp{1l} looks too much like
+eleven!).  Numeric literals containing a decimal point or an exponent
+sign yield floating point numbers.  Appending \character{j} or
+\character{J} to a numeric literal yields a complex number.
 \indexii{numeric}{literals}
 \indexii{integer}{literals}
 \indexiii{long}{integer}{literals}
@@ -236,21 +246,23 @@
 \item[(1)]
 For (plain or long) integer division, the result is an integer.
 The result is always rounded towards minus infinity: 1/2 is 0, 
-(-1)/2 is -1, 1/(-2) is -1, and (-1)/(-2) is 0.
+(-1)/2 is -1, 1/(-2) is -1, and (-1)/(-2) is 0.  Note that the result
+is a long integer if either operand is a long integer, regardless of
+the numeric value.
 \indexii{integer}{division}
 \indexiii{long}{integer}{division}
 
 \item[(2)]
 Conversion from floating point to (long or plain) integer may round or
 truncate as in \C{}; see functions \function{floor()} and \function{ceil()} in
-module \module{math} for well-defined conversions.
+module \refmodule{math}\refbimodindex{math} for well-defined conversions.
 \withsubitem{(in module math)}{\ttindex{floor()}\ttindex{ceil()}}
 \indexii{numeric}{conversions}
-\refbimodindex{math}
 \indexii{C@\C{}}{language}
 
 \item[(3)]
-See the section on built-in functions for an exact definition.
+See section \ref{built-in-funcs}, ``Built-in Functions,'' for a full
+description.
 
 \end{description}
 % XXXJH exceptions: overflow (when? what operations?) zerodivision
@@ -302,7 +314,7 @@
 There are three sequence types: strings, lists and tuples.
 
 Strings literals are written in single or double quotes:
-\code{'xyzzy'}, \code{"frobozz"}.  See Chapter 2 of the
+\code{'xyzzy'}, \code{"frobozz"}.  See chapter 2 of the
 \citetitle[../ref/ref.html]{Python Reference Manual} for more about
 string literals.  Lists are constructed with square brackets,
 separating items with commas: \code{[a, b, c]}.  Tuples are
@@ -332,10 +344,10 @@
 equal to \var{x}, else \code{1}}{}
   \hline
   \lineiii{\var{s} + \var{t}}{the concatenation of \var{s} and \var{t}}{}
-  \lineiii{\var{s} * \var{n}\textrm{,} \var{n} * \var{s}}{\var{n} copies of \var{s} concatenated}{(3)}
+  \lineiii{\var{s} * \var{n}\textrm{,} \var{n} * \var{s}}{\var{n} copies of \var{s} concatenated}{(1)}
   \hline
-  \lineiii{\var{s}[\var{i}]}{\var{i}'th item of \var{s}, origin 0}{(1)}
-  \lineiii{\var{s}[\var{i}:\var{j}]}{slice of \var{s} from \var{i} to \var{j}}{(1), (2)}
+  \lineiii{\var{s}[\var{i}]}{\var{i}'th item of \var{s}, origin 0}{(2)}
+  \lineiii{\var{s}[\var{i}:\var{j}]}{slice of \var{s} from \var{i} to \var{j}}{(2), (3)}
   \hline
   \lineiii{len(\var{s})}{length of \var{s}}{}
   \lineiii{min(\var{s})}{smallest item of \var{s}}{}
@@ -356,23 +368,21 @@
 Notes:
 
 \begin{description}
-  
-\item[(1)] If \var{i} or \var{j} is negative, the index is relative to
+\item[(1)] Values of \var{n} less than \code{0} are treated as
+  \code{0} (which yields an empty sequence of the same type as
+  \var{s}).
+
+\item[(2)] If \var{i} or \var{j} is negative, the index is relative to
   the end of the string, i.e., \code{len(\var{s}) + \var{i}} or
   \code{len(\var{s}) + \var{j}} is substituted.  But note that \code{-0} is
   still \code{0}.
   
-\item[(2)] The slice of \var{s} from \var{i} to \var{j} is defined as
+\item[(3)] The slice of \var{s} from \var{i} to \var{j} is defined as
   the sequence of items with index \var{k} such that \code{\var{i} <=
   \var{k} < \var{j}}.  If \var{i} or \var{j} is greater than
   \code{len(\var{s})}, use \code{len(\var{s})}.  If \var{i} is omitted,
   use \code{0}.  If \var{j} is omitted, use \code{len(\var{s})}.  If
   \var{i} is greater than or equal to \var{j}, the slice is empty.
-
-\item[(3)] Values of \var{n} less than \code{0} are treated as
-  \code{0} (which yields an empty sequence of the same type as
-  \var{s}).
-
 \end{description}
 
 
@@ -452,24 +462,24 @@
   \lineiii{del \var{s}[\var{i}:\var{j}]}
 	{same as \code{\var{s}[\var{i}:\var{j}] = []}}{}
   \lineiii{\var{s}.append(\var{x})}
-	{same as \code{\var{s}[len(\var{s}):len(\var{s})] = [\var{x}]}}{}
+	{same as \code{\var{s}[len(\var{s}):len(\var{s})] = [\var{x}]}}{(1)}
   \lineiii{\var{s}.extend(\var{x})}
-        {same as \code{\var{s}[len(\var{s}):len(\var{s})] = \var{x}}}{(5)}
+        {same as \code{\var{s}[len(\var{s}):len(\var{s})] = \var{x}}}{(2)}
   \lineiii{\var{s}.count(\var{x})}
     {return number of \var{i}'s for which \code{\var{s}[\var{i}] == \var{x}}}{}
   \lineiii{\var{s}.index(\var{x})}
-    {return smallest \var{i} such that \code{\var{s}[\var{i}] == \var{x}}}{(1)}
+    {return smallest \var{i} such that \code{\var{s}[\var{i}] == \var{x}}}{(3)}
   \lineiii{\var{s}.insert(\var{i}, \var{x})}
 	{same as \code{\var{s}[\var{i}:\var{i}] = [\var{x}]}
 	  if \code{\var{i} >= 0}}{}
   \lineiii{\var{s}.pop(\optional{\var{i}})}
     {same as \code{\var{x} = \var{s}[\var{i}]; del \var{s}[\var{i}]; return \var{x}}}{(4)}
   \lineiii{\var{s}.remove(\var{x})}
-	{same as \code{del \var{s}[\var{s}.index(\var{x})]}}{(1)}
+	{same as \code{del \var{s}[\var{s}.index(\var{x})]}}{(3)}
   \lineiii{\var{s}.reverse()}
-	{reverses the items of \var{s} in place}{(3)}
+	{reverses the items of \var{s} in place}{(5)}
   \lineiii{\var{s}.sort(\optional{\var{cmpfunc}})}
-	{sort the items of \var{s} in place}{(2), (3)}
+	{sort the items of \var{s} in place}{(5), (6)}
 \end{tableiii}
 \indexiv{operations on}{mutable}{sequence}{types}
 \indexiii{operations on}{sequence}{types}
@@ -484,10 +494,29 @@
 \noindent
 Notes:
 \begin{description}
-\item[(1)] Raises \exception{ValueError} when \var{x} is not found in
+\item[(1)] The C implementation of Python has historically accepted
+  multiple parameters and implicitly joined them into a tuple; this
+  will no longer work in Python 1.6.  Use of this misfeature has been
+  deprecated since Python 1.4.
+
+\item[(2)] Raises an exception when \var{x} is not a list object.  The 
+  \method{extend()} method is experimental and not supported by
+  mutable sequence types other than lists.
+
+\item[(3)] Raises \exception{ValueError} when \var{x} is not found in
   \var{s}.
 
-\item[(2)] The \method{sort()} method takes an optional argument
+\item[(4)] The \method{pop()} method is experimental and not supported 
+  by other mutable sequence types than lists.  The optional argument
+  \var{i} defaults to \code{-1}, so that by default the last item is
+  removed and returned.
+
+\item[(5)] The \method{sort()} and \method{reverse()} methods modify the
+  list in place for economy of space when sorting or reversing a large
+  list.  They don't return the sorted or reversed list to remind you
+  of this side effect.
+
+\item[(6)] The \method{sort()} method takes an optional argument
   specifying a comparison function of two arguments (list items) which
   should return \code{-1}, \code{0} or \code{1} depending on whether
   the first argument is considered smaller than, equal to, or larger
@@ -497,24 +526,12 @@
   \method{reverse()} than to use the built-in function
   \function{sort()} with a comparison function that reverses the
   ordering of the elements.
-
-\item[(3)] The \method{sort()} and \method{reverse()} methods modify the
-  list in place for economy of space when sorting or reversing a large
-  list.  They don't return the sorted or reversed list to remind you
-  of this side effect.
-
-\item[(4)] The \method{pop()} method is experimental and not supported 
-  by other mutable sequence types than lists.  The optional argument
-  \var{i} defaults to \code{-1}, so that by default the last item is
-  removed and returned.
-
-\item[(5)] Raises an exception when \var{x} is not a list object.  The 
-  \method{extend()} method is experimental and not supported by
-  mutable types other than lists.
 \end{description}
 
 
 \subsection{Mapping Types \label{typesmapping}}
+\indexii{mapping}{types}
+\indexii{dictionary}{type}
 
 A \dfn{mapping} object maps values of one type (the key type) to
 arbitrary objects.  Mappings are mutable objects.  There is currently
@@ -527,9 +544,6 @@
 \code{1.0}) then they can be used interchangeably to index the same
 dictionary entry.
 
-\indexii{mapping}{types}
-\indexii{dictionary}{type}
-
 Dictionaries are created by placing a comma-separated list of
 \code{\var{key}: \var{value}} pairs within braces, for example:
 \code{\{'jack': 4098, 'sjoerd': 4127\}} or
@@ -586,12 +600,17 @@
 \item[(1)] Raises a \exception{KeyError} exception if \var{k} is not
 in the map.
 
-\item[(2)] Keys and values are listed in random order.
+\item[(2)] Keys and values are listed in random order.  If
+\method{keys()} and \method{values()} are called with no intervening
+modifications to the dictionary, the two lists will directly
+correspond.  This allows the creation of \code{(\var{value},
+\var{key})} pairs using \function{map()}: \samp{pairs = map(None,
+\var{a}.values(), \var{a}.keys())}.
 
 \item[(3)] \var{b} must be of the same type as \var{a}.
 
 \item[(4)] Never raises an exception if \var{k} is not in the map,
-instead it returns \var{f}.  \var{f} is optional; when \var{f} is not
+instead it returns \var{x}.  \var{x} is optional; when \var{x} is not
 provided and \var{k} is not in the map, \code{None} is returned.
 \end{description}
 
@@ -629,7 +648,7 @@
 \subsubsection{Classes and Class Instances \label{typesobjects}}
 \nodename{Classes and Instances}
 
-See Chapters 3 and 7 of the \citetitle[../ref/ref.html]{Python
+See chapters 3 and 7 of the \citetitle[../ref/ref.html]{Python
 Reference Manual} for these.
 
 
@@ -730,7 +749,7 @@
 
 File objects are implemented using \C{}'s \code{stdio}
 package and can be created with the built-in function
-\function{open()}\bifuncindex{open} described section
+\function{open()}\bifuncindex{open} described in section
 \ref{built-in-funcs}, ``Built-in Functions.''  They are also returned
 by some other built-in functions and methods, e.g.,
 \function{posix.popen()} and \function{posix.fdopen()} and the
@@ -793,7 +812,7 @@
   non-negative, it is a maximum byte count (including the trailing
   newline) and an incomplete line may be returned.
   An empty string is returned when \EOF{} is hit
-  immediately.  Note: unlike \code{stdio}'s \cfunction{fgets()}, the returned
+  immediately.  Note: Unlike \code{stdio}'s \cfunction{fgets()}, the returned
   string contains null characters (\code{'\e 0'}) if they occurred in the
   input.
 \end{methoddesc}
@@ -823,12 +842,12 @@
 Truncate the file's size.  If the optional size argument present, the
 file is truncated to (at most) that size.  The size defaults to the
 current position.  Availability of this function depends on the
-operating system version (e.g., not all \UNIX{} versions support this
+operating system version (for example, not all \UNIX{} versions support this
 operation).
 \end{methoddesc}
 
 \begin{methoddesc}[file]{write}{str}
-Write a string to the file.  There is no return value.  Note: due to
+Write a string to the file.  There is no return value.  Note: Due to
 buffering, the string may not actually show up in the file until
 the \method{flush()} or \method{close()} method is called.
 \end{methoddesc}
diff --git a/Doc/lib/libstruct.tex b/Doc/lib/libstruct.tex
index eef84a4..434b433 100644
--- a/Doc/lib/libstruct.tex
+++ b/Doc/lib/libstruct.tex
@@ -45,23 +45,35 @@
 Format characters have the following meaning; the conversion between
 C and Python values should be obvious given their types:
 
-\begin{tableiii}{c|l|l}{samp}{Format}{C Type}{Python}
-  \lineiii{x}{pad byte}{no value}
-  \lineiii{c}{\ctype{char}}{string of length 1}
-  \lineiii{b}{\ctype{signed char}}{integer}
-  \lineiii{B}{\ctype{unsigned char}}{integer}
-  \lineiii{h}{\ctype{short}}{integer}
-  \lineiii{H}{\ctype{unsigned short}}{integer}
-  \lineiii{i}{\ctype{int}}{integer}
-  \lineiii{I}{\ctype{unsigned int}}{integer}
-  \lineiii{l}{\ctype{long}}{integer}
-  \lineiii{L}{\ctype{unsigned long}}{integer}
-  \lineiii{f}{\ctype{float}}{float}
-  \lineiii{d}{\ctype{double}}{float}
-  \lineiii{s}{\ctype{char[]}}{string}
-  \lineiii{p}{\ctype{char[]}}{string}
-  \lineiii{P}{\ctype{void *}}{integer}
-\end{tableiii}
+\begin{tableiv}{c|l|l|c}{samp}{Format}{C Type}{Python}{Notes}
+  \lineiv{x}{pad byte}{no value}{}
+  \lineiv{c}{\ctype{char}}{string of length 1}{}
+  \lineiv{b}{\ctype{signed char}}{integer}{}
+  \lineiv{B}{\ctype{unsigned char}}{integer}{}
+  \lineiv{h}{\ctype{short}}{integer}{}
+  \lineiv{H}{\ctype{unsigned short}}{integer}{}
+  \lineiv{i}{\ctype{int}}{integer}{}
+  \lineiv{I}{\ctype{unsigned int}}{long}{(1)}
+  \lineiv{l}{\ctype{long}}{integer}{}
+  \lineiv{L}{\ctype{unsigned long}}{long}{}
+  \lineiv{f}{\ctype{float}}{float}{}
+  \lineiv{d}{\ctype{double}}{float}{}
+  \lineiv{s}{\ctype{char[]}}{string}{}
+  \lineiv{p}{\ctype{char[]}}{string}{}
+  \lineiv{P}{\ctype{void *}}{integer}{}
+\end{tableiv}
+
+\noindent
+Notes:
+
+\begin{description}
+\item[(1)]
+  The \character{I} conversion code will convert to a Python long if
+  the C \ctype{int} is the same size as a C \ctype{long}, which is
+  typical on most modern systems.  If a C \ctype{int} is smaller than
+  a C \ctype{long}, an Python integer will be created instead.
+\end{description}
+
 
 A format character may be preceded by an integral repeat count;
 e.g.\ the format string \code{'4h'} means exactly the same as
diff --git a/Doc/lib/libsys.tex b/Doc/lib/libsys.tex
index 08f49c7..af2d21f 100644
--- a/Doc/lib/libsys.tex
+++ b/Doc/lib/libsys.tex
@@ -31,6 +31,11 @@
 A string containing the copyright pertaining to the Python interpreter.
 \end{datadesc}
 
+\begin{datadesc}{dllhandle}
+Integer specifying the handle of the Python DLL.
+Availability: Windows.
+\end{datadesc}
+
 \begin{funcdesc}{exc_info}{}
 This function returns a tuple of three values that give information
 about the exception that is currently being handled.  The information
@@ -285,5 +290,26 @@
 \end{datadesc}
 
 \begin{datadesc}{version}
-A string containing the version number of the Python interpreter.
+A string containing the version number of the Python interpreter plus
+additional information on the build number and compiler used.  It has
+a value of the form \code{'\var{version} (\#\var{build_number},
+\var{build_date}, \var{build_time}) [\var{compiler}]'}.  The first
+three characters are used to identify the version in the installation
+directories (where appropriate on each platform).  An example:
+
+\begin{verbatim}
+>>> import sys
+>>> sys.version
+'1.5.2 (#0 Apr 13 1999, 10:51:12) [MSC 32 bit (Intel)]'
+\end{verbatim}
+\end{datadesc}
+
+\begin{datadesc}{winver}
+The version number used to form registry keys on Windows platforms.
+This is stored as string resource 1000 in the Python DLL.  The value
+is normally the first three characters of \constant{version}.  It is
+provided in the \module{sys} module for informational purposes;
+modifying this value has no effect on the registry keys used by
+Python.
+Availability: Windows.
 \end{datadesc}
diff --git a/Doc/lib/libtelnetlib.tex b/Doc/lib/libtelnetlib.tex
index f28833e..de88953 100644
--- a/Doc/lib/libtelnetlib.tex
+++ b/Doc/lib/libtelnetlib.tex
@@ -1,12 +1,9 @@
-% LaTeX'ized from the comments in the module by Skip Montanaro
-% <skip@mojam.com>.
-
 \section{\module{telnetlib} ---
          Telnet client}
 
 \declaremodule{standard}{telnetlib}
 \modulesynopsis{Telnet client class.}
-
+\sectionauthor{Skip Montanaro}{skip@mojam.com}
 
 The \module{telnetlib} module provides a \class{Telnet} class that
 implements the Telnet protocol.  See \rfc{854} for details about the
@@ -149,3 +146,32 @@
 or if more than one expression can match the same input, the
 results are undeterministic, and may depend on the I/O timing.
 \end{methoddesc}
+
+
+\subsection{Telnet Example \label{telnet-example}}
+\sectionauthor{Peter Funk}{pf@artcom-gmbh.de}
+
+A simple example illustrating typical use:
+
+\begin{verbatim}
+import getpass
+import sys
+import telnetlib
+
+HOST = "localhost"
+user = raw_input("Enter your remote account: ")
+password = getpass.getpass()
+
+tn = telnetlib.Telnet(HOST)
+
+tn.read_until("login: ")
+tn.write(user + "\n")
+if password:
+    tn.read_until("Password: ")
+    tn.write(password + "\n")
+
+tn.write("ls\n")
+tn.write("exit\n")
+
+print tn.read_all()
+\end{verbatim}
diff --git a/Doc/lib/libtime.tex b/Doc/lib/libtime.tex
index 0c28bf2..bca946d 100644
--- a/Doc/lib/libtime.tex
+++ b/Doc/lib/libtime.tex
@@ -1,12 +1,13 @@
 \section{\module{time} ---
-         Time access and conversions.}
-\declaremodule{builtin}{time}
+         Time access and conversions}
 
+\declaremodule{builtin}{time}
 \modulesynopsis{Time access and conversions.}
 
 
 This module provides various time-related functions.
-It is always available.
+It is always available, but not all functions are available
+on all platforms.
 
 An explanation of some terminology and conventions is in order.
 
@@ -72,17 +73,29 @@
 this, where available).
 
 \item
+
 The time tuple as returned by \function{gmtime()},
 \function{localtime()}, and \function{strptime()}, and accepted by
 \function{asctime()}, \function{mktime()} and \function{strftime()},
-is a tuple of 9 integers: year (e.g.\ 1993), month (1--12), day
-(1--31), hour (0--23), minute (0--59), second (0--59), weekday (0--6,
-monday is 0), Julian day (1--366) and daylight savings flag (-1, 0 or
-1).  Note that unlike the C structure, the month value is a range
-of 1-12, not 0-11.  A year value will be handled as descibed under
-``Year 2000 (Y2K) issues'' above.  A \code{-1} argument as daylight
-savings flag, passed to \function{mktime()} will usually result in the
-correct daylight savings state to be filled in.
+is a tuple of 9 integers:
+
+\begin{tableiii}{r|l|l}{textrm}{Index}{Field}{Values}
+  \lineiii{0}{year}{(e.g.\ 1993)}
+  \lineiii{1}{month}{range [1,12]}
+  \lineiii{2}{day}{range [1,31]}
+  \lineiii{3}{hour}{range [0,23]}
+  \lineiii{4}{minute}{range [0,59]}
+  \lineiii{5}{second}{range [0,61]; see \strong{(1)} in \function{strftime()} description}
+  \lineiii{6}{weekday}{range [0,6], monday is 0}
+  \lineiii{7}{Julian day}{range [1,366]}
+  \lineiii{8}{daylight savings flag}{0, 1 or -1; see below}
+\end{tableiii}
+
+Note that unlike the C structure, the month value is a
+range of 1-12, not 0-11.  A year value will be handled as described
+under ``Year 2000 (Y2K) issues'' above.  A \code{-1} argument as
+daylight savings flag, passed to \function{mktime()} will usually
+result in the correct daylight savings state to be filled in.
 
 \end{itemize}
 
@@ -168,34 +181,43 @@
 specification, and are replaced by the indicated characters in the
 \function{strftime()} result:
 
-\begin{tableii}{c|p{24em}}{code}{Directive}{Meaning}
-  \lineii{\%a}{Locale's abbreviated weekday name.}
-  \lineii{\%A}{Locale's full weekday name.}
-  \lineii{\%b}{Locale's abbreviated month name.}
-  \lineii{\%B}{Locale's full month name.}
-  \lineii{\%c}{Locale's appropriate date and time representation.}
-  \lineii{\%d}{Day of the month as a decimal number [01,31].}
-  \lineii{\%H}{Hour (24-hour clock) as a decimal number [00,23].}
-  \lineii{\%I}{Hour (12-hour clock) as a decimal number [01,12].}
-  \lineii{\%j}{Day of the year as a decimal number [001,366].}
-  \lineii{\%m}{Month as a decimal number [01,12].}
-  \lineii{\%M}{Minute as a decimal number [00,59].}
-  \lineii{\%p}{Locale's equivalent of either AM or PM.}
-  \lineii{\%S}{Second as a decimal number [00,61].}
-  \lineii{\%U}{Week number of the year (Sunday as the first day of the
-               week) as a decimal number [00,53].  All days in a new year
-               preceding the first Sunday are considered to be in week 0.}
-  \lineii{\%w}{Weekday as a decimal number [0(Sunday),6].}
-  \lineii{\%W}{Week number of the year (Monday as the first day of the
-               week) as a decimal number [00,53].  All days in a new year
-               preceding the first Sunday are considered to be in week 0.}
-  \lineii{\%x}{Locale's appropriate date representation.}
-  \lineii{\%X}{Locale's appropriate time representation.}
-  \lineii{\%y}{Year without century as a decimal number [00,99].}
-  \lineii{\%Y}{Year with century as a decimal number.}
-  \lineii{\%Z}{Time zone name (or by no characters if no time zone exists).}
-  \lineii{\%\%}{\%}
-\end{tableii}
+\begin{tableiii}{c|p{24em}|c}{code}{Directive}{Meaning}{Notes}
+  \lineiii{\%a}{Locale's abbreviated weekday name.}{}
+  \lineiii{\%A}{Locale's full weekday name.}{}
+  \lineiii{\%b}{Locale's abbreviated month name.}{}
+  \lineiii{\%B}{Locale's full month name.}{}
+  \lineiii{\%c}{Locale's appropriate date and time representation.}{}
+  \lineiii{\%d}{Day of the month as a decimal number [01,31].}{}
+  \lineiii{\%H}{Hour (24-hour clock) as a decimal number [00,23].}{}
+  \lineiii{\%I}{Hour (12-hour clock) as a decimal number [01,12].}{}
+  \lineiii{\%j}{Day of the year as a decimal number [001,366].}{}
+  \lineiii{\%m}{Month as a decimal number [01,12].}{}
+  \lineiii{\%M}{Minute as a decimal number [00,59].}{}
+  \lineiii{\%p}{Locale's equivalent of either AM or PM.}{}
+  \lineiii{\%S}{Second as a decimal number [00,61].}{(1)}
+  \lineiii{\%U}{Week number of the year (Sunday as the first day of the
+                week) as a decimal number [00,53].  All days in a new year
+                preceding the first Sunday are considered to be in week 0.}{}
+  \lineiii{\%w}{Weekday as a decimal number [0(Sunday),6].}{}
+  \lineiii{\%W}{Week number of the year (Monday as the first day of the
+                week) as a decimal number [00,53].  All days in a new year
+                preceding the first Sunday are considered to be in week 0.}{}
+  \lineiii{\%x}{Locale's appropriate date representation.}{}
+  \lineiii{\%X}{Locale's appropriate time representation.}{}
+  \lineiii{\%y}{Year without century as a decimal number [00,99].}{}
+  \lineiii{\%Y}{Year with century as a decimal number.}{}
+  \lineiii{\%Z}{Time zone name (or by no characters if no time zone exists).}{}
+  \lineiii{\%\%}{A literal \character{\%} character.}{}
+\end{tableiii}
+
+\noindent
+Notes:
+
+\begin{description}
+  \item[(1)]
+    The range really is \code{0} to \code{61}; this accounts for leap
+    seconds and the (very rare) double leap seconds.
+\end{description}
 
 Additional directives may be supported on certain platforms, but
 only the ones listed here have a meaning standardized by ANSI C.
@@ -215,8 +237,9 @@
 returned by \function{ctime()}.  The same platform caveats apply; see
 the local \UNIX{} documentation for restrictions or additional
 supported directives.  If \var{string} cannot be parsed according to
-\var{format}, \exception{ValueError} is raised.  This function may not
-be defined on all platforms.
+\var{format}, \exception{ValueError} is raised.
+
+Availability: Most modern \UNIX{} systems.
 \end{funcdesc}
 
 \begin{funcdesc}{time}{}
@@ -238,3 +261,9 @@
 timezone is defined, the second string should not be used.
 \end{datadesc}
 
+
+\begin{seealso}
+  \seemodule{locale}{Internationalization services.  The locale
+                     settings can affect the return values for some of 
+                     the functions in the \module{time} module.}
+\end{seealso}
diff --git a/Doc/lib/libtypes.tex b/Doc/lib/libtypes.tex
index 5f9034c..e48fcaf 100644
--- a/Doc/lib/libtypes.tex
+++ b/Doc/lib/libtypes.tex
@@ -1,11 +1,10 @@
 \section{\module{types} ---
-         Names for all built-in types.}
+         Names for all built-in types}
+
 \declaremodule{standard}{types}
-
 \modulesynopsis{Names for all built-in types.}
 
 
-
 This module defines names for all object types that are used by the
 standard Python interpreter, but not for the types defined by various
 extension modules.  It is safe to use \samp{from types import *} ---
@@ -141,3 +140,8 @@
 The type of frame objects such as found in \code{tb.tb_frame} if
 \code{tb} is a traceback object.
 \end{datadesc}
+
+\begin{datadesc}{BufferType}
+The type of buffer objects created by the
+\function{buffer()}\bifuncindex{buffer} function.
+\end{datadesc}
diff --git a/Doc/lib/libundoc.tex b/Doc/lib/libundoc.tex
index 5be93dd..fac635a 100644
--- a/Doc/lib/libundoc.tex
+++ b/Doc/lib/libundoc.tex
@@ -23,6 +23,9 @@
 \item[\module{Tkdnd}]
 --- Drag-and-drop support for \module{Tkinter}.
 
+\item[\module{turtle}]
+--- Turtle graphics in a Tk window.
+
 \item[\module{test}]
 --- Regression testing framework.  This is used for the Python
 regression test, but is useful for other Python libraries as well.
@@ -35,6 +38,11 @@
 Some of these are very old and/or not very robust; marked with ``hmm.''
 
 \begin{description}
+\item[\module{dircmp}]
+--- Class to build directory diff tools on (may become a demo or tool).
+\deprecated{1.6}{The \refmodule{filecmp} module will replace
+\module{dircmp}.}
+
 \item[\module{bdb}]
 --- A generic Python debugger base class (used by pdb)
 
@@ -72,7 +80,7 @@
 --- Platform-independent API for playing audio data
 
 \item[\module{sunaudio}]
---- interpret sun audio headers (may become obsolete or a tool/demo)
+--- Interpret Sun audio headers (may become obsolete or a tool/demo)
 
 \item[\module{toaiff}]
 --- Convert "arbitrary" sound files to AIFF files; should probably
@@ -80,14 +88,23 @@
 \end{description}
 
 
-\section{Obsolete}
+\section{Obsolete \label{obsolete-modules}}
 
-These modules are not on the standard module search path;
-\indexiii{module}{search}{path}
-but are available in the directory \file{lib-old/} installed  under
-\file{\textrm{\$prefix}/lib/python1.5/}. % $ <-- bow to font lock
-To use any of these modules, add that directory to \code{sys.path},
-possibly using \envvar{PYTHONPATH}.
+These modules are not normally available for import; additional work
+must be done to make them available.
+
+Those which are written in Python will be installed into the directory 
+\file{lib-old/} installed as part of the standard library.  To use
+these, the directory must be added to \code{sys.path}, possibly using
+\envvar{PYTHONPATH}.
+
+Obsolete extension modules written in C are not built by default.
+Under \UNIX, these must be enabled by uncommenting the appropriate
+lines in \file{Modules/Setup} in the build tree and either rebuilding
+Python if the modules are statically linked, or building and
+installing the shared object if using dynamically-loaded extensions.
+
+% XXX need Windows instructions!
 
 \begin{description}
 \item[\module{addpack}]
diff --git a/Doc/lib/liburllib.tex b/Doc/lib/liburllib.tex
index 73898f5..38ee09e 100644
--- a/Doc/lib/liburllib.tex
+++ b/Doc/lib/liburllib.tex
@@ -1,8 +1,8 @@
 \section{\module{urllib} ---
-         Open an arbitrary object given by URL.}
-\declaremodule{standard}{urllib}
+         Open an arbitrary resource by URL}
 
-\modulesynopsis{Open an arbitrary object given by URL (requires sockets).}
+\declaremodule{standard}{urllib}
+\modulesynopsis{Open an arbitrary network resource by URL (requires sockets).}
 
 \index{WWW}
 \index{World-Wide Web}
@@ -62,6 +62,37 @@
 must in standard \file{application/x-www-form-urlencoded} format;
 see the \function{urlencode()} function below.
 
+The \function{urlopen()} function works transparently with proxies.
+In a \UNIX{} or Windows environment, set the \envvar{http_proxy},
+\envvar{ftp_proxy} or \envvar{gopher_proxy} environment variables to a
+URL that identifies the proxy server before starting the Python
+interpreter.  For example (the \character{\%} is the command prompt):
+
+\begin{verbatim}
+% http_proxy="http://www.someproxy.com:3128"
+% export http_proxy
+% python
+...
+\end{verbatim}
+
+In a Macintosh environment, \function{urlopen()} will retrieve proxy
+information from Internet\index{Internet Config} Config.
+
+The \function{urlopen()} function works transparently with proxies.
+In a \UNIX{} or Windows environment, set the \envvar{http_proxy},
+\envvar{ftp_proxy} or \envvar{gopher_proxy} environment variables to a
+URL that identifies the proxy server before starting the Python
+interpreter, e.g.:
+
+\begin{verbatim}
+% http_proxy="http://www.someproxy.com:3128"
+% export http_proxy
+% python
+...
+\end{verbatim}
+
+In a Macintosh environment, \function{urlopen()} will retrieve proxy
+information from Internet Config.
 \end{funcdesc}
 
 \begin{funcdesc}{urlretrieve}{url\optional{, filename\optional{, hook}}}
@@ -127,6 +158,55 @@
 \function{quote_plus()} above.
 \end{funcdesc}
 
+The public functions \function{urlopen()} and \function{urlretrieve()}
+create an instance of the \class{FancyURLopener} class and use it to perform
+their requested actions.  To override this functionality, programmers can
+create a subclass of \class{URLopener} or \class{FancyURLopener}, then
+assign that class to the \var{urllib._urlopener} variable before calling the
+desired function.  For example, applications may want to specify a different
+\code{user-agent} header than \class{URLopener} defines.  This can be
+accomplished with the following code:
+
+\begin{verbatim}
+class AppURLopener(urllib.FancyURLopener):
+    def __init__(self, *args):
+        apply(urllib.FancyURLopener.__init__, (self,) + args)
+        self.version = "App/1.7"
+
+urllib._urlopener = AppURLopener
+\end{verbatim}
+
+\begin{classdesc}{URLopener}{\optional{proxies\optional{, **x509}}}
+Base class for opening and reading URLs.  Unless you need to support
+opening objects using schemes other than \file{http:}, \file{ftp:},
+\file{gopher:} or \file{file:}, you probably want to use
+\class{FancyURLopener}.
+
+By default, the \class{URLopener} class sends a
+\code{user-agent} header of \samp{urllib/\var{VVV}}, where
+\var{VVV} is the \module{urllib} version number.  Applications can
+define their own \code{user-agent} header by subclassing
+\class{URLopener} or \class{FancyURLopener} and setting the instance
+attribute \var{version} to an appropriate string value before the
+\method{open()} method is called.
+
+Additional keyword parameters, collected in \var{x509}, are used for
+authentication with the \file{https:} scheme.  The keywords
+\var{key_file} and \var{cert_file} are supported; both are needed to
+actually retrieve a resource at an \file{https:} URL.
+\end{classdesc}
+
+\begin{classdesc}{FancyURLopener}{...}
+\class{FancyURLopener} subclasses \class{URLopener} providing default
+handling for the following HTTP response codes: 301, 302 or 401.  For
+301 and 302 response codes, the \code{location} header is used to
+fetch the actual URL.  For 401 response codes (authentication
+required), basic HTTP authentication is performed.
+
+The parameters to the constructor are the same as those for
+\class{URLopener}.
+\end{classdesc}
+
 Restrictions:
 
 \begin{itemize}
@@ -175,3 +255,60 @@
 manipulation is in module \refmodule{urlparse}\refstmodindex{urlparse}.
 
 \end{itemize}
+
+
+\subsection{URLopener Objects \label{urlopener-objs}}
+\sectionauthor{Skip Montanaro}{skip@mojam.com}
+
+\class{URLopener} and \class{FancyURLopener} objects have the
+following methodsL
+
+\begin{methoddesc}{open}{fullurl\optional{, data}}
+Open \var{fullurl} using the appropriate protocol.  This method sets 
+up cache and proxy information, then calls the appropriate open method with
+its input arguments.  If the scheme is not recognized,
+\method{open_unknown()} is called.  The \var{data} argument 
+has the same meaning as the \var{data} argument of \function{urlopen()}.
+\end{methoddesc}
+
+\begin{methoddesc}{open_unknown}{fullurl\optional{, data}}
+Overridable interface to open unknown URL types.
+\end{methoddesc}
+
+\begin{methoddesc}{retrieve}{url\optional{, filename\optional{, reporthook}}}
+Retrieves the contents of \var{url} and places it in \var{filename}.  The
+return value is a tuple consisting of a local filename and either a
+\class{mimetools.Message} object containing the response headers (for remote
+URLs) or None (for local URLs).  The caller must then open and read the
+contents of \var{filename}.  If \var{filename} is not given and the URL
+refers to a local file, the input filename is returned.  If the URL is
+non-local and \var{filename} is not given, the filename is the output of
+\function{tempfile.mktemp()} with a suffix that matches the suffix of the last
+path component of the input URL.  If \var{reporthook} is given, it must be
+a function accepting three numeric parameters.  It will be called after each
+chunk of data is read from the network.  \var{reporthook} is ignored for
+local URLs.
+\end{methoddesc}
+
+
+\subsection{Examples}
+\nodename{Urllib Examples}
+
+Here is an example session that uses the \samp{GET} method to retrieve
+a URL containing parameters:
+
+\begin{verbatim}
+>>> import urllib
+>>> params = urllib.urlencode({'spam': 1, 'eggs': 2, 'bacon': 0})
+>>> f = urllib.urlopen("http://www.musi-cal.com/cgi-bin/query?%s" % params)
+>>> print f.read()
+\end{verbatim}
+
+The following example uses the \samp{POST} method instead:
+
+\begin{verbatim}
+>>> import urllib
+>>> params = urllib.urlencode({'spam': 1, 'eggs': 2, 'bacon': 0})
+>>> f = urllib.urlopen("http://www.musi-cal.com/cgi-bin/query", params)
+>>> print f.read()
+\end{verbatim}
diff --git a/Doc/lib/libwhrandom.tex b/Doc/lib/libwhrandom.tex
index b79377d..b745f5b 100644
--- a/Doc/lib/libwhrandom.tex
+++ b/Doc/lib/libwhrandom.tex
@@ -1,13 +1,27 @@
 \section{\module{whrandom} ---
-         Floating point pseudo-random number generator.}
-\declaremodule{standard}{whrandom}
+         Pseudo-random number generator}
 
+\declaremodule{standard}{whrandom}
 \modulesynopsis{Floating point pseudo-random number generator.}
 
 
 This module implements a Wichmann-Hill pseudo-random number generator
-class that is also named \code{whrandom}.  Instances of the
-\code{whrandom} class have the following methods:
+class that is also named \class{whrandom}.  Instances of the
+\class{whrandom} class conform to the Random Number Generator
+interface described in section \ref{rng-objects}.  They also offer the 
+following method, specific to the Wichmann-Hill algorithm:
+
+\begin{methoddesc}[whrandom]{seed}{\optional{x, y, z}}
+  Initializes the random number generator from the integers \var{x},
+  \var{y} and \var{z}.  When the module is first imported, the random
+  number is initialized using values derived from the current time.
+  If \var{x}, \var{y}, and \var{z} are either omitted or \code{0}, the 
+  seed will be computed from the current system time.  If one or two
+  of the parameters are \code{0}, but not all three, the zero values
+  are replaced by ones.  This causes some apparently different seeds
+  to be equal, with the corresponding result on the pseudo-random
+  series produced by the generator.
+\end{methoddesc}
 
 \begin{funcdesc}{choice}{seq}
 Chooses a random element from the non-empty sequence \var{seq} and returns it.
@@ -31,17 +45,23 @@
 Returns a random real number \var{N} such that \code{\var{a}<=\var{N}<\var{b}}.
 \end{funcdesc}
 
-When imported, the \code{whrandom} module also creates an instance of
-the \code{whrandom} class, and makes the methods of that instance
+When imported, the \module{whrandom} module also creates an instance of
+the \class{whrandom} class, and makes the methods of that instance
 available at the module level.  Therefore one can write either 
 \code{N = whrandom.random()} or:
+
 \begin{verbatim}
 generator = whrandom.whrandom()
 N = generator.random()
 \end{verbatim}
 
+Note that using separate instances of the generator leads to
+independent sequences of pseudo-random numbers.
+
 \begin{seealso}
-  \seemodule{random}{generators for various random distributions}
+  \seemodule{random}{Generators for various random distributions and
+                     documentation for the Random Number Generator
+                     interface.}
   \seetext{Wichmann, B. A. \& Hill, I. D., ``Algorithm AS 183: 
            An efficient and portable pseudo-random number generator'',
            \citetitle{Applied Statistics} 31 (1982) 188-190.}
diff --git a/Doc/lib/libxmllib.tex b/Doc/lib/libxmllib.tex
index c407629..afda815 100644
--- a/Doc/lib/libxmllib.tex
+++ b/Doc/lib/libxmllib.tex
@@ -98,11 +98,12 @@
 \code{'no'} respectively.
 \end{methoddesc}
 
-\begin{methoddesc}{handle_doctype}{tag, data}
+\begin{methoddesc}{handle_doctype}{tag, pubid, syslit, data}
 This method is called when the \samp{<!DOCTYPE...>} tag is processed.
-The arguments are the name of the root element and the uninterpreted
-contents of the tag, starting after the white space after the name of
-the root element.
+The arguments are the name of the root element, the Formal Public
+Identifier (or \code{None} if not specified), the system identifier,
+and the uninterpreted contents of the internal DTD subset as a string
+(or \code{None} if not present).
 \end{methoddesc}
 
 \begin{methoddesc}{handle_starttag}{tag, method, attributes}
@@ -226,6 +227,12 @@
 
 
 \begin{seealso}
+  \seetext{The XML specification, published by the World Wide Web
+           Consortium (W3C), is available online at
+           \url{http://www.w3.org/TR/REC-xml}.  References to
+           additional material on XML are available at
+           \url{http://www.w3.org/XML/}.}
+
   \seetext{The Python XML Topic Guide provides a great deal of information
            on using XML from Python and links to other sources of information
            on XML.  It's located on the Web at
diff --git a/Doc/lib/libzlib.tex b/Doc/lib/libzlib.tex
index d31af04..66fac4e 100644
--- a/Doc/lib/libzlib.tex
+++ b/Doc/lib/libzlib.tex
@@ -1,6 +1,3 @@
-% XXX The module has been extended (by Jeremy and Andrew) but this
-% documentation is incorrect in some cases.
-
 \section{\module{zlib} ---
          Compression compatible with \program{gzip}}
 
@@ -17,10 +14,6 @@
 is available.  There are known incompatibilities between the Python
 module and earlier versions of the zlib library.
 
-The documentation for this module is woefully out of date.  In some
-cases, the doc strings have been updated more recently.  In other
-cases, they are both stale.
-
 The available exception and functions in this module are:
 
 \begin{excdesc}{error}
@@ -68,12 +61,29 @@
   should not be used for authentication or digital signatures.
 \end{funcdesc}
 
-\begin{funcdesc}{decompress}{string\optional{, wbits\optional{, buffsize}}}
+\begin{funcdesc}{decompress}{string\optional{, wbits\optional{, bufsize}}}
   Decompresses the data in \var{string}, returning a string containing
   the uncompressed data.  The \var{wbits} parameter controls the size of
-  the window buffer.  If \var{buffsize} is given, it is used as the
+  the window buffer.  If \var{bufsize} is given, it is used as the
   initial size of the output buffer.  Raises the \exception{error}
   exception if any error occurs.
+
+The absolute value of \var{wbits} is the base two logarithm of the
+size of the history buffer (the ``window size'') used when compressing
+data.  Its absolute value should be between 8 and 15 for the most
+recent versions of the zlib library, larger values resulting in better
+compression at the expense of greater memory usage.  The default value
+is 15.  When \var{wbits} is negative, the standard
+\program{gzip} header is suppressed; this is an undocumented feature
+of the zlib library, used for compatibility with \program{unzip}'s
+compression file format.
+
+\var{bufsize} is the initial size of the buffer used to hold
+decompressed data.  If more space is required, the buffer size will be
+increased as needed, so you don't have to get this value exactly
+right; tuning it will only save a few calls to \cfunction{malloc()}.  The
+default size is 16384.
+   
 \end{funcdesc}
 
 \begin{funcdesc}{decompressobj}{\optional{wbits}}
@@ -106,7 +116,20 @@
 action is to delete the object.  
 \end{methoddesc}
 
-Decompression objects support the following methods:
+Decompression objects support the following methods, and a single attribute:
+
+\begin{memberdesc}{unused_data}
+A string which contains any unused data from the last string fed to
+this decompression object.  If the whole string turned out to contain
+compressed data, this is \code{""}, the empty string. 
+
+The only way to determine where a string of compressed data ends is by
+actually decompressing it.  This means that when compressed data is
+contained part of a larger file, you can only find the end of it by
+reading data and feeding it into a decompression object's
+\method{decompress} method until the \member{unused_data} attribute is
+no longer the empty string.  
+\end{memberdesc}
 
 \begin{methoddesc}[Decompress]{decompress}{string}
 Decompress \var{string}, returning a string containing the