[Python-checkins] CVS: python/dist/src/Doc/lib internet.tex,1.2,1.3 libarray.tex,1.23,1.24 libasyncore.tex,1.3,1.4 libbase64.tex,1.14,1.15 libbisect.tex,1.6,1.7 libbsddb.tex,1.3,1.4 libcalendar.tex,1.6,1.7 libcfgparser.tex,1.7,1.8 libcgi.tex,1.25,1.26 libcgihttp.tex,1.1,1.2 libcode.tex,1.9,1.10 libcodeop.tex,1.1,1.2 libcompileall.tex,1.1,1.2 libcrypt.tex,1.14,1.15 libexcs.tex,1.24,1.25 libfcntl.tex,1.21,1.22 libfileinput.tex,1.4,1.5 libfnmatch.tex,1.15,1.16 libgetopt.tex,1.12,1.13 libgrp.tex,1.13,1.14 libimaplib.tex,1.13,1.14 libintro.tex,1.5,1.6 liblinecache.tex,1.2,1.3 libmarshal.tex,1.16,1.17 libmath.tex,1.17,1.18 libmhlib.tex,1.2,1.3 libmimetools.tex,1.15,1.16 libmimetypes.tex,1.5,1.6 libmimewriter.tex,1.1,1.2 libnetrc.tex,1.5,1.6 libnis.tex,1.2,1.3 libos.tex,1.37,1.38 libparser.tex,1.33,1.34 libpickle.tex,1.23,1.24 libpoplib.tex,1.7,1.8 libposixpath.tex,1.14,1.15 libpty.tex,1.1,1.2 libpwd.tex,1.11,1.12 libpycompile.tex,1.1,1.2 libqueue.tex,1.9,1.10 librandom.tex,1.12,1.13 librfc! 822.tex,1.27,1.28 libsched.tex,1.2,1.3 libselect.tex,1.14,1.15 libshlex.tex,1.5,1.6 libsmtplib.tex,1.12,1.13 libsocket.tex,1.41,1.42 libstatvfs.tex,1.1,1.2 libstdtypes.tex,1.21,1.22 libstruct.tex,1.24,1.25 libsys.tex,1.31,1.32 libtelnetlib.tex,1.2,1.3 libtime.tex,1.28,1.29 libtypes.tex,1.47,1.48 libundoc.tex,1.72,1.73 liburllib.tex,1.20,1.21 libwhrandom.tex,1.11,1.12 libxmllib.tex,1.21,1.22 libzlib.tex,1.19,1.20

Fred Drake python-dev@python.org
Mon, 3 Apr 2000 16:14:01 -0400


Update of /projects/cvsroot/python/dist/src/Doc/lib
In directory seahag.cnri.reston.va.us:/home/fdrake/projects/python/Doc/lib

Modified Files:
	internet.tex libarray.tex libasyncore.tex libbase64.tex 
	libbisect.tex libbsddb.tex libcalendar.tex libcfgparser.tex 
	libcgi.tex libcgihttp.tex libcode.tex libcodeop.tex 
	libcompileall.tex libcrypt.tex libexcs.tex libfcntl.tex 
	libfileinput.tex libfnmatch.tex libgetopt.tex libgrp.tex 
	libimaplib.tex libintro.tex liblinecache.tex libmarshal.tex 
	libmath.tex libmhlib.tex libmimetools.tex libmimetypes.tex 
	libmimewriter.tex libnetrc.tex libnis.tex libos.tex 
	libparser.tex libpickle.tex libpoplib.tex libposixpath.tex 
	libpty.tex libpwd.tex libpycompile.tex libqueue.tex 
	librandom.tex librfc822.tex libsched.tex libselect.tex 
	libshlex.tex libsmtplib.tex libsocket.tex libstatvfs.tex 
	libstdtypes.tex libstruct.tex libsys.tex libtelnetlib.tex 
	libtime.tex libtypes.tex libundoc.tex liburllib.tex 
	libwhrandom.tex libxmllib.tex libzlib.tex 
Log Message:

Merged changes from the 1.5.2p2 release.
(Very rough.)


Index: internet.tex
===================================================================
RCS file: /projects/cvsroot/python/dist/src/Doc/lib/internet.tex,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -r1.2 -r1.3
*** internet.tex	1999/04/22 16:03:30	1.2
--- internet.tex	2000/04/03 20:13:52	1.3
***************
*** 7,13 ****
  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:
  
  \localmoduletable
--- 7,13 ----
  The modules described in this chapter implement Internet protocols and 
  support for related technology.  They are all implemented in Python.
! 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

Index: libarray.tex
===================================================================
RCS file: /projects/cvsroot/python/dist/src/Doc/lib/libarray.tex,v
retrieving revision 1.23
retrieving revision 1.24
diff -C2 -r1.23 -r1.24
*** libarray.tex	1999/06/29 15:58:00	1.23
--- libarray.tex	2000/04/03 20:13:52	1.24
***************
*** 77,85 ****
  \end{methoddesc}
  
! \begin{methoddesc}[array]{byteswap}{x}
  ``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.
  \end{methoddesc}
  
--- 77,85 ----
  \end{methoddesc}
  
! \begin{methoddesc}[array]{byteswap}{}
  ``Byteswap'' all items of the array.  This is only supported for
! 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}
  
***************
*** 151,155 ****
  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:
  
  \begin{verbatim}
--- 151,156 ----
  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{``}), so long as the \function{array()} function has been
! imported using \samp{from array import array}.  Examples:
  
  \begin{verbatim}
***************
*** 164,166 ****
--- 165,173 ----
    \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}

Index: libasyncore.tex
===================================================================
RCS file: /projects/cvsroot/python/dist/src/Doc/lib/libasyncore.tex,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -r1.3 -r1.4
*** libasyncore.tex	1999/07/06 21:00:18	1.3
--- libasyncore.tex	2000/04/03 20:13:52	1.4
***************
*** 1,7 ****
  \section{\module{asyncore} ---
!          Asyncronous socket handler}
  
  \declaremodule{builtin}{asyncore}
! \modulesynopsis{A base class for developing asyncronous socket 
                  handling services.}
  \moduleauthor{Sam Rushing}{rushing@nightmare.com}
--- 1,7 ----
  \section{\module{asyncore} ---
!          Asynchronous socket handler}
  
  \declaremodule{builtin}{asyncore}
! \modulesynopsis{A base class for developing asynchronous socket 
                  handling services.}
  \moduleauthor{Sam Rushing}{rushing@nightmare.com}
***************
*** 9,16 ****
  % Heavily adapted from original documentation by Sam Rushing.
  
! This module provides the basic infrastructure for writing asyncronous 
  socket service clients and servers.
- 
- %\subsection{Why Asyncronous?}
  
  There are only two ways to have a program on a single processor do 
--- 9,14 ----
  % Heavily adapted from original documentation by Sam Rushing.
  
! This module provides the basic infrastructure for writing asynchronous 
  socket service clients and servers.
  
  There are only two ways to have a program on a single processor do 

Index: libbase64.tex
===================================================================
RCS file: /projects/cvsroot/python/dist/src/Doc/lib/libbase64.tex,v
retrieving revision 1.14
retrieving revision 1.15
diff -C2 -r1.14 -r1.15
*** libbase64.tex	1999/04/23 15:52:18	1.14
--- libbase64.tex	2000/04/03 20:13:52	1.15
***************
*** 11,22 ****
  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'}.  
  
  
--- 11,22 ----
  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{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'}.  
  
  
***************
*** 53,55 ****
--- 53,60 ----
    \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}

Index: libbisect.tex
===================================================================
RCS file: /projects/cvsroot/python/dist/src/Doc/lib/libbisect.tex,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -r1.6 -r1.7
*** libbisect.tex	1999/02/20 00:14:11	1.6
--- libbisect.tex	2000/04/03 20:13:52	1.7
***************
*** 1,6 ****
- % 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}
--- 1,2 ----
***************
*** 8,11 ****
--- 4,11 ----
  \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>.
  
  

Index: libbsddb.tex
===================================================================
RCS file: /projects/cvsroot/python/dist/src/Doc/lib/libbsddb.tex,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -r1.3 -r1.4
*** libbsddb.tex	1999/04/23 20:32:59	1.3
--- libbsddb.tex	2000/04/03 20:13:52	1.4
***************
*** 8,53 ****
  
  
! 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 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.
  
  \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.
  \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.
  \end{funcdesc}
  
--- 8,62 ----
  
  
! 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 \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.
  
  \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
! \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
! \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}
  
***************
*** 55,64 ****
  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.
  \end{funcdesc}
  
--- 64,76 ----
  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
! \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}
  
***************
*** 87,91 ****
  
  \begin{methoddesc}{has_key}{key}
! Return 1 if the DB file contains the argument as a key.
  \end{methoddesc}
  
--- 99,103 ----
  
  \begin{methoddesc}{has_key}{key}
! Return \code{1} if the DB file contains the argument as a key.
  \end{methoddesc}
  

Index: libcalendar.tex
===================================================================
RCS file: /projects/cvsroot/python/dist/src/Doc/lib/libcalendar.tex,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -r1.6 -r1.7
*** libcalendar.tex	1999/06/09 15:11:58	1.6
--- libcalendar.tex	2000/04/03 20:13:52	1.7
***************
*** 1,17 ****
- % This section was contributed by Drew Csillag <drew_csillag@geocities.com>.
- 
  \section{\module{calendar} ---
!          Functions that emulate the \UNIX{} \program{cal} program.}
! \declaremodule{standard}{calendar}
! 
! \modulesynopsis{Functions that emulate the \UNIX{} \program{cal}
! program.}
  
  
  This module allows you to output calendars like the \UNIX{}
! \manpage{cal}{1} program.
  
  \begin{funcdesc}{isleap}{year}
! Returns \code{1} if \var{year} is a leap year.
  \end{funcdesc}
  
--- 1,17 ----
  \section{\module{calendar} ---
!          General calendar-related functions}
  
+ \declaremodule{standard}{calendar}
+ \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{}
! \program{cal} program, and provides additional useful functions
! related to the calendar.
  
  \begin{funcdesc}{isleap}{year}
! Returns true if \var{year} is a leap year.
  \end{funcdesc}
  
***************
*** 49,56 ****
  
  \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}
  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.
  \end{funcdesc}
--- 49,61 ----
  
  \begin{funcdesc}{timegm}{tuple}
! 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{time.gmtime()} and \function{timegm()} are each others' inverse.
  \end{funcdesc}
+ 
+ 
+ \begin{seealso}
+   \seemodule{time}{Low-level time related functions.}
+ \end{seealso}

Index: libcfgparser.tex
===================================================================
RCS file: /projects/cvsroot/python/dist/src/Doc/lib/libcfgparser.tex,v
retrieving revision 1.7
retrieving revision 1.8
diff -C2 -r1.7 -r1.8
*** libcfgparser.tex	1999/06/15 17:30:59	1.7
--- libcfgparser.tex	2000/04/03 20:13:52	1.8
***************
*** 4,7 ****
--- 4,9 ----
  \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}
  
***************
*** 17,25 ****
  \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
  \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.
  
  For example:
--- 19,28 ----
  \samp{[section]} header and followed by \samp{name: value} entries,
  with continuations in the style of \rfc{822}; \samp{name=value} is
! 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{\#} or
! \character{;} are ignored and may be used to provide comments.
  
  For example:
***************
*** 27,38 ****
  \begin{verbatim}
  foodir: %(dir)s/whatever
  \end{verbatim}
  
! would resolve the \samp{\%(dir)s} to the value of dir. All reference
! expansions are done late, 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
  others.
  
--- 30,43 ----
  \begin{verbatim}
  foodir: %(dir)s/whatever
+ dir=frob
  \end{verbatim}
  
! would resolve the \samp{\%(dir)s} to the value of
! \samp{dir} (\samp{frob} in this case).  All reference expansions are
! done on demand.
! 
! 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.
  
***************
*** 51,55 ****
  
  \begin{excdesc}{DuplicateSectionError}
! Exception raised when mutliple sections with the same name are found.
  \end{excdesc}
  
--- 56,62 ----
  
  \begin{excdesc}{DuplicateSectionError}
! 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}
  
***************
*** 88,92 ****
  
  \begin{methoddesc}{sections}{}
! Return a list of the sections available.
  \end{methoddesc}
  
--- 95,106 ----
  
  \begin{methoddesc}{sections}{}
! 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}
  
***************
*** 124,128 ****
  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
  \exception{ValueError}.
  \end{methoddesc}
--- 138,142 ----
  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 \samp{0} and \samp{1}, any others will raise
  \exception{ValueError}.
  \end{methoddesc}

Index: libcgi.tex
===================================================================
RCS file: /projects/cvsroot/python/dist/src/Doc/lib/libcgi.tex,v
retrieving revision 1.25
retrieving revision 1.26
diff -C2 -r1.25 -r1.26
*** libcgi.tex	1999/06/10 03:11:41	1.25
--- libcgi.tex	2000/04/03 20:13:52	1.26
***************
*** 196,200 ****
  \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.
  
  The optional argument \var{keep_blank_values} is
--- 196,200 ----
  \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 values for each name.
  
  The optional argument \var{keep_blank_values} is

Index: libcgihttp.tex
===================================================================
RCS file: /projects/cvsroot/python/dist/src/Doc/lib/libcgihttp.tex,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -r1.1 -r1.2
*** libcgihttp.tex	1999/06/14 19:47:47	1.1
--- libcgihttp.tex	2000/04/03 20:13:52	1.2
***************
*** 4,7 ****
--- 4,8 ----
  
  \declaremodule{standard}{CGIHTTPServer}
+   \platform{Unix}
  \sectionauthor{Moshe Zadka}{mzadka@geocities.com}
  \modulesynopsis{This module provides a request handler for HTTP servers
***************
*** 14,17 ****
--- 15,21 ----
  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:

Index: libcode.tex
===================================================================
RCS file: /projects/cvsroot/python/dist/src/Doc/lib/libcode.tex,v
retrieving revision 1.9
retrieving revision 1.10
diff -C2 -r1.9 -r1.10
*** libcode.tex	1999/01/27 15:48:23	1.9
--- libcode.tex	2000/04/03 20:13:52	1.10
***************
*** 1,30 ****
  \section{\module{code} ---
!          Code object services.}
  \declaremodule{standard}{code}
  
! \modulesynopsis{Code object services.}
  
  
! The \code{code} module defines operations pertaining to Python code
! objects.  It defines the following function:
! 
  
! \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.
! 
! 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'}.
! 
! 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.
  \end{funcdesc}
--- 1,173 ----
  \section{\module{code} ---
!          Interpreter base classes}
  \declaremodule{standard}{code}
  
! \modulesynopsis{Base classes for interactive Python interpreters.}
  
  
! 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{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.
! 
! \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'}.
! 
! 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}

Index: libcodeop.tex
===================================================================
RCS file: /projects/cvsroot/python/dist/src/Doc/lib/libcodeop.tex,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -r1.1 -r1.2
*** libcodeop.tex	1999/06/23 13:33:40	1.1
--- libcodeop.tex	2000/04/03 20:13:53	1.2
***************
*** 1,6 ****
- % LaTeXed from excellent doc-string.
  \section{\module{codeop} ---
           Compile Python code}
  
  \declaremodule{standard}{codeop}
  \sectionauthor{Moshe Zadka}{mzadka@geocities.com}
--- 1,7 ----
  \section{\module{codeop} ---
           Compile Python code}
  
+ % LaTeXed from excellent doc-string.
+ 
  \declaremodule{standard}{codeop}
  \sectionauthor{Moshe Zadka}{mzadka@geocities.com}
***************
*** 8,12 ****
  
  The \module{codeop} module provides a function to compile Python code
! with hints on whether it certainly complete, possible complete or
  definitely incomplete.  This is used by the \refmodule{code} module
  and should not normally be used directly.
--- 9,13 ----
  
  The \module{codeop} module provides a function to compile Python code
! 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.
***************
*** 16,38 ****
  \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
  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
  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}
  
! The \var{symbol} argument means whether to compile it as a statement
! (\code{'single'}, the default) or as an expression (\code{'eval'}).
  
  \strong{Caveat:}
--- 17,36 ----
  \begin{funcdesc}{compile_command}
                  {source\optional{, filename\optional{, symbol}}}
! 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>'}.
! Returns \code{None} if \var{source} is \emph{not} valid Python
  code, but is a prefix of valid Python code.
  
! 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 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:}

Index: libcompileall.tex
===================================================================
RCS file: /projects/cvsroot/python/dist/src/Doc/lib/libcompileall.tex,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -r1.1 -r1.2
*** libcompileall.tex	1998/08/11 15:46:42	1.1
--- libcompileall.tex	2000/04/03 20:13:53	1.2
***************
*** 1,12 ****
- % Documentation based on module docstrings, by Fred L. Drake, Jr.
- % <fdrake@acm.org>
- 
  \section{\module{compileall} ---
!          Byte-compile Python libraries.}
  
  \declaremodule{standard}{compileall}
- 
  \modulesynopsis{Tools for byte-compiling all Python source files in a
! directory tree.}
  
  
--- 1,8 ----
  \section{\module{compileall} ---
!          Byte-compile Python libraries}
  
  \declaremodule{standard}{compileall}
  \modulesynopsis{Tools for byte-compiling all Python source files in a
!                 directory tree.}
  
  
***************
*** 21,37 ****
  
  
! \begin{funcdesc}{compile_dir}{dir\optional{, maxlevels\optional{, ddir}}}
    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.
  \end{funcdesc}
  
! \begin{funcdesc}{compile_path}{\optional{skip_curdir\optional{, maxlevels}}}
    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.
  \end{funcdesc}
  
--- 17,38 ----
  
  
! \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.  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\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} and
!   \var{force} parameters default to \code{0} and are passed to the
!   \function{compile_dir()} function.
  \end{funcdesc}
  

Index: libcrypt.tex
===================================================================
RCS file: /projects/cvsroot/python/dist/src/Doc/lib/libcrypt.tex,v
retrieving revision 1.14
retrieving revision 1.15
diff -C2 -r1.14 -r1.15
*** libcrypt.tex	1999/03/02 17:03:35	1.14
--- libcrypt.tex	2000/04/03 20:13:53	1.15
***************
*** 1,29 ****
  \section{\module{crypt} ---
!          Function used to check \UNIX{} passwords}
  
  \declaremodule{builtin}{crypt}
    \platform{Unix}
! \modulesynopsis{The \cfunction{crypt()} function used to check \UNIX{}
!   passwords.}
  \moduleauthor{Steven D. Majewski}{sdm7g@virginia.edu}
  \sectionauthor{Steven D. Majewski}{sdm7g@virginia.edu}
  
  
! 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
  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.
  \end{funcdesc}
  
! The module and documentation were written by Steve Majewski.
! \index{Majewski, Steve}
--- 1,46 ----
  \section{\module{crypt} ---
!          Function to check \UNIX{} passwords}
  
  \declaremodule{builtin}{crypt}
    \platform{Unix}
! \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}\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.
  
  \begin{funcdesc}{crypt}{word, 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}
  
! 
! 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}

Index: libexcs.tex
===================================================================
RCS file: /projects/cvsroot/python/dist/src/Doc/lib/libexcs.tex,v
retrieving revision 1.24
retrieving revision 1.25
diff -C2 -r1.24 -r1.25
*** libexcs.tex	1999/11/10 16:21:36	1.24
--- libexcs.tex	2000/04/03 20:13:53	1.25
***************
*** 12,27 ****
  \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
--- 12,15 ----
***************
*** 31,42 ****
  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}
  
  The built-in exceptions listed below can be generated by the
--- 19,28 ----
  library modules.
  
! 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
***************
*** 45,57 ****
  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}
  
  User code can raise built-in exceptions.  This can be used to test an
--- 31,43 ----
  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}\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
***************
*** 66,69 ****
--- 52,56 ----
  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}
***************
*** 129,134 ****
  
  \begin{excdesc}{AssertionError}
- Raised when an \keyword{assert} statement fails.
  \stindex{assert}
  \end{excdesc}
  
--- 116,121 ----
  
  \begin{excdesc}{AssertionError}
  \stindex{assert}
+ Raised when an \keyword{assert} statement fails.
  \end{excdesc}
  

Index: libfcntl.tex
===================================================================
RCS file: /projects/cvsroot/python/dist/src/Doc/lib/libfcntl.tex,v
retrieving revision 1.21
retrieving revision 1.22
diff -C2 -r1.21 -r1.22
*** libfcntl.tex	1999/06/24 17:58:44	1.21
--- libfcntl.tex	2000/04/03 20:13:53	1.22
***************
*** 1,3 ****
- % Manual text by Jaap Vermeulen
  \section{\module{fcntl} ---
           The \function{fcntl()} and \function{ioctl()} system calls}
--- 1,2 ----
***************
*** 6,9 ****
--- 5,9 ----
    \platform{Unix}
  \modulesynopsis{The \function{fcntl()} and \function{ioctl()} system calls.}
+ \sectionauthor{Jaap Vermeulen}{}
  
  \indexii{UNIX@\UNIX{}}{file control}

Index: libfileinput.tex
===================================================================
RCS file: /projects/cvsroot/python/dist/src/Doc/lib/libfileinput.tex,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -r1.4 -r1.5
*** libfileinput.tex	1999/06/29 16:00:22	1.4
--- libfileinput.tex	2000/04/03 20:13:53	1.5
***************
*** 76,84 ****
  
  \begin{funcdesc}{isfirstline}{}
!   Return true iff the line just read is the first line of its file.
  \end{funcdesc}
  
  \begin{funcdesc}{isstdin}{}
!   Returns true iff the last line was read from \code{sys.stdin}.
  \end{funcdesc}
  
--- 76,86 ----
  
  \begin{funcdesc}{isfirstline}{}
!   Returns true the line just read is the first line of its file,
!   otherwise returns false.
  \end{funcdesc}
  
  \begin{funcdesc}{isstdin}{}
!   Returns true if the last line was read from \code{sys.stdin},
!   otherwise returns false.
  \end{funcdesc}
  

Index: libfnmatch.tex
===================================================================
RCS file: /projects/cvsroot/python/dist/src/Doc/lib/libfnmatch.tex,v
retrieving revision 1.15
retrieving revision 1.16
diff -C2 -r1.15 -r1.16
*** libfnmatch.tex	1999/06/10 21:23:31	1.15
--- libfnmatch.tex	2000/04/03 20:13:53	1.16
***************
*** 6,27 ****
  
  
  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}
  
  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).
  
  
--- 6,30 ----
  
  
+ \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:
  
! \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 pathname
! segments).  Similarly, filenames starting with a period are
! not special for this module, and are matched by the \code{*} and
! \code{?} patterns.
  
  
***************
*** 30,35 ****
  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
  standard for your operating system, use \function{fnmatchcase()}
  instead.
--- 33,38 ----
  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 comparison is performed.  If you
! require a case-sensitive comparison regardless of whether that's
  standard for your operating system, use \function{fnmatchcase()}
  instead.
***************
*** 38,46 ****
  \begin{funcdesc}{fnmatchcase}{filename, pattern}
  Test whether \var{filename} matches \var{pattern}, returning true or
! false; the comparision is case-sensitive.
  \end{funcdesc}
  
  
  \begin{seealso}
!   \seemodule{glob}{Shell-style path expansion}
  \end{seealso}
--- 41,49 ----
  \begin{funcdesc}{fnmatchcase}{filename, pattern}
  Test whether \var{filename} matches \var{pattern}, returning true or
! false; the comparison is case-sensitive.
  \end{funcdesc}
  
  
  \begin{seealso}
!   \seemodule{glob}{\UNIX{} shell-style path expansion.}
  \end{seealso}

Index: libgetopt.tex
===================================================================
RCS file: /projects/cvsroot/python/dist/src/Doc/lib/libgetopt.tex,v
retrieving revision 1.12
retrieving revision 1.13
diff -C2 -r1.12 -r1.13
*** libgetopt.tex	1999/12/21 22:50:05	1.12
--- libgetopt.tex	2000/04/03 20:13:53	1.13
***************
*** 34,40 ****
  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.
  The options occur in the list in the same order in which they were
  found, thus allowing multiple occurrences.  Long and short options may
--- 34,41 ----
  trailing slice of the first argument).
  Each option-and-value pair returned has the option as its first
! 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

Index: libgrp.tex
===================================================================
RCS file: /projects/cvsroot/python/dist/src/Doc/lib/libgrp.tex,v
retrieving revision 1.13
retrieving revision 1.14
diff -C2 -r1.13 -r1.14
*** libgrp.tex	1999/03/02 17:03:37	1.13
--- libgrp.tex	2000/04/03 20:13:53	1.14
***************
*** 12,19 ****
  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}.
  The gid is an integer, name and password are strings, and the member
  list is a list of strings.
--- 12,23 ----
  Group database entries are reported as 4-tuples containing the
  following items from the group database (see \code{<grp.h>}), in order:
! 
! \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.
***************
*** 35,36 ****
--- 39,45 ----
  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}

Index: libimaplib.tex
===================================================================
RCS file: /projects/cvsroot/python/dist/src/Doc/lib/libimaplib.tex,v
retrieving revision 1.13
retrieving revision 1.14
diff -C2 -r1.13 -r1.14
*** libimaplib.tex	1999/12/13 23:34:42	1.13
--- libimaplib.tex	2000/04/03 20:13:53	1.14
***************
*** 1,5 ****
- % 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}
--- 1,2 ----
***************
*** 9,12 ****
--- 6,12 ----
  \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}

Index: libintro.tex
===================================================================
RCS file: /projects/cvsroot/python/dist/src/Doc/lib/libintro.tex,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -r1.5 -r1.6
*** libintro.tex	1999/04/29 13:41:17	1.5
--- libintro.tex	2000/04/03 20:13:53	1.6
***************
*** 23,27 ****
  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
  specific to a particular application domain, like the World-Wide Web.
  Some modules are avaiable in all versions and ports of Python; others
--- 23,28 ----
  interfaces that are highly specific to Python, like printing a stack
  trace; some provide interfaces that are specific to particular
! 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
***************
*** 30,34 ****
  option was chosen at the time when Python was compiled and installed.
  
! 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
--- 31,35 ----
  option was chosen at the time when Python was compiled and installed.
  
! 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

Index: liblinecache.tex
===================================================================
RCS file: /projects/cvsroot/python/dist/src/Doc/lib/liblinecache.tex,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -r1.2 -r1.3
*** liblinecache.tex	1999/06/17 16:38:18	1.2
--- liblinecache.tex	2000/04/03 20:13:53	1.3
***************
*** 18,22 ****
  \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.
  
  If a file named \var{filename} is not found, the function will look
--- 18,24 ----
  \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
! (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
***************
*** 26,32 ****
  
  \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.
  \end{funcdesc}
  
--- 28,33 ----
  
  \begin{funcdesc}{clearcache}{}
! Clear the cache.  Use this function if you no longer need lines from
! files previously read using \function{getline()}.
  \end{funcdesc}
  

Index: libmarshal.tex
===================================================================
RCS file: /projects/cvsroot/python/dist/src/Doc/lib/libmarshal.tex,v
retrieving revision 1.16
retrieving revision 1.17
diff -C2 -r1.16 -r1.17
*** libmarshal.tex	1999/04/22 21:23:21	1.16
--- libmarshal.tex	2000/04/03 20:13:53	1.17
***************
*** 63,67 ****
    type.  The file must be an open file object such as
    \code{sys.stdout} or returned by \function{open()} or
!   \function{posix.popen()}.
  
    If the value has (or contains an object that has) an unsupported type,
--- 63,68 ----
    type.  The file must be an open file object such as
    \code{sys.stdout} or returned by \function{open()} or
!   \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,
***************
*** 74,78 ****
    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.
  
    \strong{Warning:} If an object containing an unsupported type was
--- 75,80 ----
    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 opened
!   in binary mode (\code{'rb'} or \code{'r+b'}).
  
    \strong{Warning:} If an object containing an unsupported type was

Index: libmath.tex
===================================================================
RCS file: /projects/cvsroot/python/dist/src/Doc/lib/libmath.tex,v
retrieving revision 1.17
retrieving revision 1.18
diff -C2 -r1.17 -r1.18
*** libmath.tex	1999/04/21 16:29:57	1.17
--- libmath.tex	2000/04/03 20:13:53	1.18
***************
*** 6,10 ****
  
  This module is always available.  It provides access to the
! mathematical functions defined by the C standard.  They are:
  
  \begin{funcdesc}{acos}{x}
--- 6,22 ----
  
  This module is always available.  It provides access to the
! 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}

Index: libmhlib.tex
===================================================================
RCS file: /projects/cvsroot/python/dist/src/Doc/lib/libmhlib.tex,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -r1.2 -r1.3
*** libmhlib.tex	1999/04/23 16:07:38	1.2
--- libmhlib.tex	2000/04/03 20:13:53	1.3
***************
*** 1,7 ****
- % LaTeX'ized from the comments in the module by Skip Montanaro
- % <skip@mojam.com>.
- 
  \section{\module{mhlib} ---
           Access to MH mailboxes}
  
  \declaremodule{standard}{mhlib}
--- 1,7 ----
  \section{\module{mhlib} ---
           Access to MH mailboxes}
+ 
+ % LaTeX'ized from the comments in the module by Skip Montanaro
+ % <skip@mojam.com>.
  
  \declaremodule{standard}{mhlib}

Index: libmimetools.tex
===================================================================
RCS file: /projects/cvsroot/python/dist/src/Doc/lib/libmimetools.tex,v
retrieving revision 1.15
retrieving revision 1.16
diff -C2 -r1.15 -r1.16
*** libmimetools.tex	1999/02/19 22:59:56	1.15
--- libmimetools.tex	2000/04/03 20:13:53	1.16
***************
*** 3,7 ****
  
  \declaremodule{standard}{mimetools}
! \modulesynopsis{Tools for parsing MIME style message bodies.}
  
  
--- 3,7 ----
  
  \declaremodule{standard}{mimetools}
! \modulesynopsis{Tools for parsing MIME-style message bodies.}
  
  
***************
*** 39,43 ****
  
  \begin{funcdesc}{copyliteral}{input, output}
! Read lines until \EOF{} from open file \var{input} and write them to
  open file \var{output}.
  \end{funcdesc}
--- 39,43 ----
  
  \begin{funcdesc}{copyliteral}{input, output}
! Read lines from open file \var{input} until \EOF{} and write them to
  open file \var{output}.
  \end{funcdesc}
***************
*** 47,50 ****
--- 47,56 ----
  open file \var{output}.  The block size is currently fixed at 8192.
  \end{funcdesc}
+ 
+ 
+ \begin{seealso}
+   \seemodule{rfc822}{Provides the base class for
+                      \class{mimetools.Message}.}
+ \end{seealso}
  
  

Index: libmimetypes.tex
===================================================================
RCS file: /projects/cvsroot/python/dist/src/Doc/lib/libmimetypes.tex,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -r1.5 -r1.6
*** libmimetypes.tex	1999/04/23 16:02:30	1.5
--- libmimetypes.tex	2000/04/03 20:13:53	1.6
***************
*** 1,6 ****
- % 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}
--- 1,2 ----

Index: libmimewriter.tex
===================================================================
RCS file: /projects/cvsroot/python/dist/src/Doc/lib/libmimewriter.tex,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -r1.1 -r1.2
*** libmimewriter.tex	1999/02/12 19:26:08	1.1
--- libmimewriter.tex	2000/04/03 20:13:53	1.2
***************
*** 55,59 ****
  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,
  \var{boundary} may provide a user-defined boundary specification, and
  \var{plist} provides optional parameters for the subtype.
--- 55,59 ----
  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 multipart subtype,
  \var{boundary} may provide a user-defined boundary specification, and
  \var{plist} provides optional parameters for the subtype.

Index: libnetrc.tex
===================================================================
RCS file: /projects/cvsroot/python/dist/src/Doc/lib/libnetrc.tex,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -r1.5 -r1.6
*** libnetrc.tex	1999/04/23 17:03:21	1.5
--- libnetrc.tex	2000/04/03 20:13:53	1.6
***************
*** 1,4 ****
- % Module and documentation by Eric S. Raymond, 21 Dec 1998 
- 
  \section{\module{netrc} ---
           netrc file processing}
--- 1,2 ----
***************
*** 46,50 ****
  
  \begin{memberdesc}{hosts}
! Dictionmary 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.
--- 44,48 ----
  
  \begin{memberdesc}{hosts}
! 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.

Index: libnis.tex
===================================================================
RCS file: /projects/cvsroot/python/dist/src/Doc/lib/libnis.tex,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -r1.2 -r1.3
*** libnis.tex	1999/07/06 15:43:55	1.2
--- libnis.tex	2000/04/03 20:13:53	1.3
***************
*** 6,10 ****
  \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.}
  
  The \module{nis} module gives a thin wrapper around the NIS library, useful
--- 6,10 ----
  \moduleauthor{Fred Gansevles}{Fred.Gansevles@cs.utwente.nl}
  \sectionauthor{Moshe Zadka}{mzadka@geocities.com}
! \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
***************
*** 24,29 ****
  
  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}
  
--- 24,27 ----

Index: libos.tex
===================================================================
RCS file: /projects/cvsroot/python/dist/src/Doc/lib/libos.tex,v
retrieving revision 1.37
retrieving revision 1.38
diff -C2 -r1.37 -r1.38
*** libos.tex	2000/02/29 05:19:38	1.37
--- libos.tex	2000/04/03 20:13:53	1.38
***************
*** 263,267 ****
  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.
  Availability: \UNIX{}, Windows.
  \end{funcdesc}
--- 263,269 ----
  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.  \strong{Note:} This function
! behaves unreliably under Windows due to the native implementation of
! \cfunction{popen()}.
  Availability: \UNIX{}, Windows.
  \end{funcdesc}
***************
*** 444,453 ****
  
  \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.
  Availability: \UNIX{}.
  \end{funcdesc}
  
  \begin{funcdesc}{chdir}{path}
  \index{directory!changing}
--- 446,478 ----
  
  \begin{funcdesc}{access}{path, mode}
! 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}
***************
*** 878,884 ****
  \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.
  
  \begin{funcdesc}{WIFSTOPPED}{status}
--- 903,910 ----
  \end{datadesc}
  
! 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}

Index: libparser.tex
===================================================================
RCS file: /projects/cvsroot/python/dist/src/Doc/lib/libparser.tex,v
retrieving revision 1.33
retrieving revision 1.34
diff -C2 -r1.33 -r1.34
*** libparser.tex	1999/11/10 16:21:36	1.33
--- libparser.tex	2000/04/03 20:13:53	1.34
***************
*** 1,4 ****
! % libparser.tex
! %
  % Copyright 1995 Virginia Polytechnic Institute and State University
  % and Fred L. Drake, Jr.  This copyright notice must be distributed on
--- 1,5 ----
! \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
***************
*** 8,16 ****
  % 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.}
--- 9,13 ----
***************
*** 167,171 ****
  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
  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
--- 164,168 ----
  This function accepts an AST object from the caller in
  \var{ast} and returns a Python list representing the
! 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
***************
*** 186,190 ****
  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
  list, this function is identical to \function{ast2list()}.
  
--- 183,187 ----
  This function accepts an AST object from the caller in
  \var{ast} and returns a Python tuple representing the
! equivalent parse tree.  Other than returning a tuple instead of a
  list, this function is identical to \function{ast2list()}.
  
***************
*** 239,243 ****
  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
  to \samp{not isexpr(\var{ast})}, as additional syntactic fragments may
  be supported in the future.
--- 236,240 ----
  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 equivalent
  to \samp{not isexpr(\var{ast})}, as additional syntactic fragments may
  be supported in the future.
***************
*** 275,281 ****
  \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
--- 272,275 ----
***************
*** 327,331 ****
  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
  
  \begin{verbatim}
--- 321,325 ----
  bytecode generation, the simplest operation is to do nothing.  For
  this purpose, using the \module{parser} module to produce an
! intermediate data structure is equivalent to the code
  
  \begin{verbatim}
***************
*** 336,340 ****
  \end{verbatim}
  
! The equivelent operation using the \module{parser} module is somewhat
  longer, and allows the intermediate internal parse tree to be retained
  as an AST object:
--- 330,334 ----
  \end{verbatim}
  
! 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:
***************
*** 475,479 ****
  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
  docstrings.  Since the example demonstrates information extraction, we
  can safely require that the tree be in tuple form rather than list
--- 469,473 ----
  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 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

Index: libpickle.tex
===================================================================
RCS file: /projects/cvsroot/python/dist/src/Doc/lib/libpickle.tex,v
retrieving revision 1.23
retrieving revision 1.24
diff -C2 -r1.23 -r1.24
*** libpickle.tex	1999/07/02 14:25:37	1.23
--- libpickle.tex	2000/04/03 20:13:53	1.24
***************
*** 4,7 ****
--- 4,8 ----
  \declaremodule{standard}{pickle}
  \modulesynopsis{Convert Python objects to streams of bytes and back.}
+ % Substantial improvements by Jim Kerr <jbkerr@sr.hp.com>.
  
  \index{persistency}
***************
*** 38,53 ****
  for inheritance).
  
! Unlike the built-in module \refmodule{marshal}\refbimodindex{marshal},
! \module{pickle} handles the following correctly:
  
- 
  \begin{itemize}
- 
- \item recursive objects (objects containing references to themselves)
  
! \item object sharing (references to the same object in different places)
  
- \item user-defined classes and their instances
- 
  \end{itemize}
  
--- 39,66 ----
  for inheritance).
  
! 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): 
!       \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):  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:  \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}
  
***************
*** 178,183 ****
  
  The \class{Pickler} class only calls the method \code{f.write()} with a
! \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),
--- 191,195 ----
  
  The \class{Pickler} class only calls the method \code{f.write()} with a
! \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),
***************
*** 186,191 ****
  
  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,
  but backwards compatible) text pickle format is used.  The
  \class{Unpickler} class does not have an argument to distinguish
--- 198,203 ----
  
  The constructor for the \class{Pickler} class has an optional second
! 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
***************
*** 204,207 ****
--- 216,224 ----
  \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
  
***************
*** 277,285 ****
  
  
  \section{\module{cPickle} ---
           Alternate implementation of \module{pickle}}
  
  \declaremodule{builtin}{cPickle}
! \modulesynopsis{Faster version of \module{pickle}, but not subclassable.}
  \moduleauthor{Jim Fulton}{jfulton@digicool.com}
  \sectionauthor{Fred L. Drake, Jr.}{fdrake@acm.org}
--- 294,371 ----
  
  
+ \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 \refmodule{pickle}, but not subclassable.}
  \moduleauthor{Jim Fulton}{jfulton@digicool.com}
  \sectionauthor{Fred L. Drake, Jr.}{fdrake@acm.org}

Index: libpoplib.tex
===================================================================
RCS file: /projects/cvsroot/python/dist/src/Doc/lib/libpoplib.tex,v
retrieving revision 1.7
retrieving revision 1.8
diff -C2 -r1.7 -r1.8
*** libpoplib.tex	1999/07/07 14:04:38	1.7
--- libpoplib.tex	2000/04/03 20:13:53	1.8
***************
*** 1,7 ****
- %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}
--- 1,2 ----
***************
*** 9,12 ****
--- 4,12 ----
  \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}

Index: libposixpath.tex
===================================================================
RCS file: /projects/cvsroot/python/dist/src/Doc/lib/libposixpath.tex,v
retrieving revision 1.14
retrieving revision 1.15
diff -C2 -r1.14 -r1.15
*** libposixpath.tex	1999/10/18 14:10:06	1.14
--- libposixpath.tex	2000/04/03 20:13:53	1.15
***************
*** 128,133 ****
  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.
  \end{funcdesc}
  
--- 128,133 ----
  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 converts
! forward slashes to backward slashes.
  \end{funcdesc}
  

Index: libpty.tex
===================================================================
RCS file: /projects/cvsroot/python/dist/src/Doc/lib/libpty.tex,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -r1.1 -r1.2
*** libpty.tex	1999/06/29 18:11:22	1.1
--- libpty.tex	2000/04/03 20:13:53	1.2
***************
*** 1,10 ****
- %%%% 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???
  \modulesynopsis{Pseudo-Terminal Handling for SGI and Linux.}
  \moduleauthor{Steen Lumholt}{}
--- 1,6 ----
  \section{\module{pty} ---
           Pseudo-terminal utilities}
  \declaremodule{standard}{pty}
!   \platform{IRIX, Linux}
  \modulesynopsis{Pseudo-Terminal Handling for SGI and Linux.}
  \moduleauthor{Steen Lumholt}{}

Index: libpwd.tex
===================================================================
RCS file: /projects/cvsroot/python/dist/src/Doc/lib/libpwd.tex,v
retrieving revision 1.11
retrieving revision 1.12
diff -C2 -r1.11 -r1.12
*** libpwd.tex	1999/03/02 17:03:39	1.11
--- libpwd.tex	2000/04/03 20:13:54	1.12
***************
*** 6,24 ****
  \modulesynopsis{The password database (\function{getpwnam()} and friends).}
  
! This module provides access to the \UNIX{} 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}.
  The uid and gid items are integers, all others are strings.
  \exception{KeyError} is raised if the entry asked for cannot be found.
  
  It defines the following items:
  
--- 6,36 ----
  \modulesynopsis{The password database (\function{getpwnam()} and friends).}
  
! 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:
! 
! \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:
  
***************
*** 34,35 ****
--- 46,52 ----
  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}

Index: libpycompile.tex
===================================================================
RCS file: /projects/cvsroot/python/dist/src/Doc/lib/libpycompile.tex,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -r1.1 -r1.2
*** libpycompile.tex	1998/08/11 15:46:25	1.1
--- libpycompile.tex	2000/04/03 20:13:54	1.2
***************
*** 1,7 ****
  % 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}
--- 1,7 ----
+ \section{\module{py_compile} ---
+          Compile Python source files}
+ 
  % Documentation based on module docstrings, by Fred L. Drake, Jr.
  % <fdrake@acm.org>
  
  \declaremodule[pycompile]{standard}{py_compile}

Index: libqueue.tex
===================================================================
RCS file: /projects/cvsroot/python/dist/src/Doc/lib/libqueue.tex,v
retrieving revision 1.9
retrieving revision 1.10
diff -C2 -r1.9 -r1.10
*** libqueue.tex	1999/02/08 18:43:13	1.9
--- libqueue.tex	2000/04/03 20:13:54	1.10
***************
*** 33,37 ****
  \begin{excdesc}{Full}
  Exception raised when non-blocking \method{put()} (or
! \method{get_nowait()}) is called on a \class{Queue} object which is
  full or locked.
  \end{excdesc}
--- 33,37 ----
  \begin{excdesc}{Full}
  Exception raised when non-blocking \method{put()} (or
! \method{put_nowait()}) is called on a \class{Queue} object which is
  full or locked.
  \end{excdesc}

Index: librandom.tex
===================================================================
RCS file: /projects/cvsroot/python/dist/src/Doc/lib/librandom.tex,v
retrieving revision 1.12
retrieving revision 1.13
diff -C2 -r1.12 -r1.13
*** librandom.tex	1999/04/21 18:14:22	1.12
--- librandom.tex	2000/04/03 20:13:54	1.13
***************
*** 13,32 ****
  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.
  
  \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.
  \end{funcdesc}
  
--- 13,35 ----
  uniform and von Mises distributions are available.
  
  
+ 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 range between 0 and 1.
  \end{funcdesc}
  
***************
*** 60,65 ****
  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.  
  \end{funcdesc}
  
--- 63,68 ----
  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.  
  \end{funcdesc}
  
***************
*** 87,90 ****
  
  \begin{seealso}
!   \seemodule{whrandom}{the standard Python random number generator}
  \end{seealso}
--- 90,128 ----
  
  \begin{seealso}
!   \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}

Index: librfc822.tex
===================================================================
RCS file: /projects/cvsroot/python/dist/src/Doc/lib/librfc822.tex,v
retrieving revision 1.27
retrieving revision 1.28
diff -C2 -r1.27 -r1.28
*** librfc822.tex	1999/06/10 15:03:07	1.27
--- librfc822.tex	2000/04/03 20:13:54	1.28
***************
*** 9,16 ****
  \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.
  
! Note that there's a separate module to read \UNIX{}, MH, and MMDF
! style mailbox files: \refmodule{mailbox}\refstmodindex{mailbox}.
  
  \begin{classdesc}{Message}{file\optional{, seekable}}
--- 9,17 ----
  \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.  Please refer to
! the RFC for information on the specific syntax of \rfc{822} headers.
  
! The \refmodule{mailbox}\refstmodindex{mailbox} module provides classes 
! to read mailboxes produced by various end-user mail programs.
  
  \begin{classdesc}{Message}{file\optional{, seekable}}
***************
*** 62,66 ****
  the date, \function{parsedate()} returns a 9-tuple that can be passed
  directly to \function{time.mktime()}; otherwise \code{None} will be
! returned.  
  \end{funcdesc}
  
--- 63,68 ----
  the date, \function{parsedate()} returns a 9-tuple that can be passed
  directly to \function{time.mktime()}; otherwise \code{None} will be
! returned.  Note that fields 6, 7, and 8 of the result tuple are not
! usable.
  \end{funcdesc}
  
***************
*** 75,79 ****
  \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}.
  \end{funcdesc}
  
--- 77,82 ----
  \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}.  Note that fields 6, 7, and 8 of the result tuple are not
! usable.
  \end{funcdesc}
  
***************
*** 88,91 ****
--- 91,100 ----
  
  
+ \begin{seealso}
+   \seemodule{mailbox}{Classes to read various mailbox formats produced 
+                       by end-user mail programs.}
+ \end{seealso}
+ 
+ 
  \subsection{Message Objects \label{message-objects}}
  
***************
*** 181,185 ****
  \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
  \var{name}, or it is unparsable, return \code{None}.
  
--- 190,195 ----
  \begin{methoddesc}{getdate}{name}
  Retrieve a header using \method{getheader()} and parse it into a 9-tuple
! 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}.
  
***************
*** 194,198 ****
  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
  there is no header matching \var{name}, or it is unparsable, return
  \code{None}. 
--- 204,209 ----
  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.  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}. 

Index: libsched.tex
===================================================================
RCS file: /projects/cvsroot/python/dist/src/Doc/lib/libsched.tex,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -r1.2 -r1.3
*** libsched.tex	1999/06/25 19:13:36	1.2
--- libsched.tex	2000/04/03 20:13:54	1.3
***************
*** 1,6 ****
- % LaTeXed and enhanced from comments in file
  \section{\module{sched} ---
           Event scheduler}
  
  \declaremodule{standard}{sched}
  \sectionauthor{Moshe Zadka}{mzadka@geocities.com}
--- 1,7 ----
  \section{\module{sched} ---
           Event scheduler}
  
+ % LaTeXed and enhanced from comments in file
+ 
  \declaremodule{standard}{sched}
  \sectionauthor{Moshe Zadka}{mzadka@geocities.com}
***************
*** 50,54 ****
  \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
  the same \var{time} will be executed in the order of their
  \var{priority}.
--- 51,56 ----
  \begin{methoddesc}{enterabs}{time, priority, action, argument}
  Schedule a new event. The \var{time} argument should be a numeric type
! 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}.

Index: libselect.tex
===================================================================
RCS file: /projects/cvsroot/python/dist/src/Doc/lib/libselect.tex,v
retrieving revision 1.14
retrieving revision 1.15
diff -C2 -r1.14 -r1.15
*** libselect.tex	1999/04/21 17:57:15	1.14
--- libselect.tex	2000/04/03 20:13:54	1.15
***************
*** 10,14 ****
  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
  it was last read.
  
--- 10,14 ----
  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 on regular files to determine whether a file has grown since
  it was last read.
  

Index: libshlex.tex
===================================================================
RCS file: /projects/cvsroot/python/dist/src/Doc/lib/libshlex.tex,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -r1.5 -r1.6
*** libshlex.tex	1999/05/11 15:14:15	1.5
--- libshlex.tex	2000/04/03 20:13:54	1.6
***************
*** 1,4 ****
- % Module and documentation by Eric S. Raymond, 21 Dec 1998 
- 
  \section{\module{shlex} ---
           Simple lexical analysis}
--- 1,2 ----

Index: libsmtplib.tex
===================================================================
RCS file: /projects/cvsroot/python/dist/src/Doc/lib/libsmtplib.tex,v
retrieving revision 1.12
retrieving revision 1.13
diff -C2 -r1.12 -r1.13
*** libsmtplib.tex	1999/11/09 20:11:17	1.12
--- libsmtplib.tex	2000/04/03 20:13:54	1.13
***************
*** 75,78 ****
--- 75,89 ----
  
  
+ \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}}
  
***************
*** 161,164 ****
--- 172,179 ----
  \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
***************
*** 178,202 ****
  This method may raise the following exceptions:
  
! \begin{itemize}
  \item[\exception{SMTPRecipientsRefused}]
  All recipients were refused.  Nobody got the mail.  The
! \var{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.
  
  \item[\exception{SMTPSenderRefused}]
! The server didn't accept the from_addr.
  
  \item[\exception{SMTPDataError}]
! The server replied with an unexpected
! error code (other than a refusal of
! a recipient).
! \end{itemize}
  
! Unless otherwise noted the connection will be open even after
  an exception is raised.
  
--- 193,215 ----
  This method may raise the following exceptions:
  
! \begin{description}
  \item[\exception{SMTPRecipientsRefused}]
  All recipients were refused.  Nobody got the mail.  The
! \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 \samp{HELO} greeting.
  
  \item[\exception{SMTPSenderRefused}]
! 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{description}
  
! Unless otherwise noted, the connection will be open even after
  an exception is raised.
  
***************
*** 217,221 ****
  
  This example prompts the user for addresses needed in the message
! envelop (`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
--- 230,234 ----
  
  This example prompts the user for addresses needed in the message
! 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
***************
*** 224,247 ****
  
  \begin{verbatim}
- import rfc822, string, sys
  import smtplib
  
  def prompt(prompt):
!     sys.stdout.write(prompt + ": ")
!     return string.strip(sys.stdin.readline())
  
! fromaddr = prompt("From")
! toaddrs  = string.splitfields(prompt("To"), ',')
  print "Enter message, end with ^D:"
! msg = ""
  while 1:
!     line = sys.stdin.readline()
      if not line:
          break
      msg = msg + line
  print "Message length is " + `len(msg)`
  
  server = smtplib.SMTP('localhost')
  server.set_debuglevel(1)
  server.sendmail(fromaddr, toaddrs, msg)
  server.quit()
--- 237,264 ----
  
  \begin{verbatim}
  import smtplib
+ import string
  
  def prompt(prompt):
!     return string.strip(raw_input(prompt))
  
! fromaddr = prompt("From: ")
! toaddrs  = string.split(prompt("To: "))
  print "Enter message, end with ^D:"
! 
! # 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 = 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()

Index: libsocket.tex
===================================================================
RCS file: /projects/cvsroot/python/dist/src/Doc/lib/libsocket.tex,v
retrieving revision 1.41
retrieving revision 1.42
diff -C2 -r1.41 -r1.42
*** libsocket.tex	1999/11/10 16:21:37	1.41
--- libsocket.tex	2000/04/03 20:13:54	1.42
***************
*** 7,11 ****
  
  This module provides access to the BSD \emph{socket} interface.
! It is available on \UNIX{} systems that support this interface.
  
  For an introduction to socket programming (in C), see the following
--- 7,12 ----
  
  This module provides access to the BSD \emph{socket} 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
***************
*** 14,20 ****
  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.
  
  The Python interface is a straightforward transliteration of the
--- 15,23 ----
  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 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

Index: libstatvfs.tex
===================================================================
RCS file: /projects/cvsroot/python/dist/src/Doc/lib/libstatvfs.tex,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -r1.1 -r1.2
*** libstatvfs.tex	1999/06/21 18:25:49	1.1
--- libstatvfs.tex	2000/04/03 20:13:54	1.2
***************
*** 23,26 ****
--- 23,30 ----
  \end{datadesc}
  
+ \begin{datadesc}{F_BLOCKS}
+ Total number of blocks in the filesystem.
+ \end{datadesc}
+ 
  \begin{datadesc}{F_BFREE}
  Total number of free blocks.
***************
*** 40,44 ****
  
  \begin{datadesc}{F_FAVAIL}
! Free nodes available to non-superuser.
  \end{datadesc}
  
--- 44,48 ----
  
  \begin{datadesc}{F_FAVAIL}
! Free nodes available to non-super user.
  \end{datadesc}
  

Index: libstdtypes.tex
===================================================================
RCS file: /projects/cvsroot/python/dist/src/Doc/lib/libstdtypes.tex,v
retrieving revision 1.21
retrieving revision 1.22
diff -C2 -r1.21 -r1.22
*** libstdtypes.tex	1999/11/10 16:21:37	1.21
--- libstdtypes.tex	2000/04/03 20:13:54	1.22
***************
*** 31,43 ****
  	\withsubitem{(Built-in object)}{\ttindex{None}}
  
! \item	zero of any numeric type, e.g., \code{0}, \code{0L}, \code{0.0}.
  
! \item	any empty sequence, e.g., \code{''}, \code{()}, \code{[]}.
  
! \item	any empty mapping, e.g., \code{\{\}}.
  
  \item	instances of user-defined classes, if the class defines a
  	\method{__nonzero__()} or \method{__len__()} method, when that
! 	method returns zero.
  
  \end{itemize}
--- 31,45 ----
  	\withsubitem{(Built-in object)}{\ttindex{None}}
  
! \item	zero of any numeric type, for example, \code{0}, \code{0L},
!         \code{0.0}, \code{0j}.
  
! \item	any empty sequence, for example, \code{''}, \code{()}, \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.\footnote{Additional information on these
! special methods may be found in the \emph{Python Reference Manual}.}
  
  \end{itemize}
***************
*** 78,84 ****
  
  \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.
  
  \end{description}
--- 80,86 ----
  
  \item[(2)]
! \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}
***************
*** 89,96 ****
  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).
  \indexii{chaining}{comparisons}
  
--- 91,99 ----
  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; 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}
  
***************
*** 124,127 ****
--- 127,131 ----
  \index{language!ABC@\ABC{}}
  \indexii{C@\C{}}{language}
+ \code{!=} is the preferred spelling; \code{<>} is obsolescent.
  
  \end{description}
***************
*** 130,148 ****
  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}
  \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.)
  
- 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}
- 
  
  \subsection{Numeric Types \label{typesnumeric}}
--- 134,158 ----
  compare equal; such objects are ordered consistently but arbitrarily
  (so that sorting a heterogeneous array yields a consistent result).
! 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}
  
! 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.
! 
! \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}}
***************
*** 151,157 ****
  \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
  bits of precision.  Long integers have unlimited precision.  Floating
! 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.
--- 161,167 ----
  \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
  bits of precision.  Long integers have unlimited precision.  Floating
! 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.
***************
*** 162,179 ****
  \indexii{floating point}{type}
  \indexii{complex number}{type}
! \indexii{C@\C{}}{language}
  
  Complex numbers have a real and imaginary part, which are both
! 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.
  \indexii{numeric}{literals}
  \indexii{integer}{literals}
--- 172,189 ----
  \indexii{floating point}{type}
  \indexii{complex number}{type}
! \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
  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
! \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}
***************
*** 237,241 ****
  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.
  \indexii{integer}{division}
  \indexiii{long}{integer}{division}
--- 247,253 ----
  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.  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}
***************
*** 244,255 ****
  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.
  \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.
  
  \end{description}
--- 256,267 ----
  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 \refmodule{math}\refbimodindex{math} for well-defined conversions.
  \withsubitem{(in module math)}{\ttindex{floor()}\ttindex{ceil()}}
  \indexii{numeric}{conversions}
  \indexii{C@\C{}}{language}
  
  \item[(3)]
! See section \ref{built-in-funcs}, ``Built-in Functions,'' for a full
! description.
  
  \end{description}
***************
*** 303,307 ****
  
  Strings literals are written in single or double quotes:
! \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,
--- 315,319 ----
  
  Strings literals are written in single or double quotes:
! \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,
***************
*** 333,340 ****
    \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)}
    \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)}
    \hline
    \lineiii{len(\var{s})}{length of \var{s}}{}
--- 345,352 ----
    \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}{(1)}
    \hline
!   \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}}{}
***************
*** 357,367 ****
  
  \begin{description}
!   
! \item[(1)] 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
    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
--- 369,382 ----
  
  \begin{description}
! \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[(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
***************
*** 369,377 ****
    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}
  
--- 384,387 ----
***************
*** 453,463 ****
  	{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}]}}{}
    \lineiii{\var{s}.extend(\var{x})}
!         {same as \code{\var{s}[len(\var{s}):len(\var{s})] = \var{x}}}{(5)}
    \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)}
    \lineiii{\var{s}.insert(\var{i}, \var{x})}
  	{same as \code{\var{s}[\var{i}:\var{i}] = [\var{x}]}
--- 463,473 ----
  	{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}]}}{(1)}
    \lineiii{\var{s}.extend(\var{x})}
!         {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}}}{(3)}
    \lineiii{\var{s}.insert(\var{i}, \var{x})}
  	{same as \code{\var{s}[\var{i}:\var{i}] = [\var{x}]}
***************
*** 466,474 ****
      {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)}
    \lineiii{\var{s}.reverse()}
! 	{reverses the items of \var{s} in place}{(3)}
    \lineiii{\var{s}.sort(\optional{\var{cmpfunc}})}
! 	{sort the items of \var{s} in place}{(2), (3)}
  \end{tableiii}
  \indexiv{operations on}{mutable}{sequence}{types}
--- 476,484 ----
      {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})]}}{(3)}
    \lineiii{\var{s}.reverse()}
! 	{reverses the items of \var{s} in place}{(5)}
    \lineiii{\var{s}.sort(\optional{\var{cmpfunc}})}
! 	{sort the items of \var{s} in place}{(5), (6)}
  \end{tableiii}
  \indexiv{operations on}{mutable}{sequence}{types}
***************
*** 485,492 ****
  Notes:
  \begin{description}
! \item[(1)] Raises \exception{ValueError} when \var{x} is not found in
    \var{s}.
  
! \item[(2)] 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
--- 495,521 ----
  Notes:
  \begin{description}
! \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[(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
***************
*** 498,519 ****
    \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}}
  
  A \dfn{mapping} object maps values of one type (the key type) to
--- 527,536 ----
    \function{sort()} with a comparison function that reverses the
    ordering of the elements.
  \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
***************
*** 528,534 ****
  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:
--- 545,548 ----
***************
*** 587,596 ****
  in the map.
  
! \item[(2)] Keys and values are listed in random order.
  
  \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
  provided and \var{k} is not in the map, \code{None} is returned.
  \end{description}
--- 601,615 ----
  in the map.
  
! \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{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}
***************
*** 630,634 ****
  \nodename{Classes and Instances}
  
! See Chapters 3 and 7 of the \citetitle[../ref/ref.html]{Python
  Reference Manual} for these.
  
--- 649,653 ----
  \nodename{Classes and Instances}
  
! See chapters 3 and 7 of the \citetitle[../ref/ref.html]{Python
  Reference Manual} for these.
  
***************
*** 731,735 ****
  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
  \ref{built-in-funcs}, ``Built-in Functions.''  They are also returned
  by some other built-in functions and methods, e.g.,
--- 750,754 ----
  File objects are implemented using \C{}'s \code{stdio}
  package and can be created with the built-in function
! \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.,
***************
*** 794,798 ****
    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
    string contains null characters (\code{'\e 0'}) if they occurred in the
    input.
--- 813,817 ----
    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
    string contains null characters (\code{'\e 0'}) if they occurred in the
    input.
***************
*** 824,833 ****
  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
  operation).
  \end{methoddesc}
  
  \begin{methoddesc}[file]{write}{str}
! 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.
--- 843,852 ----
  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 (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
  buffering, the string may not actually show up in the file until
  the \method{flush()} or \method{close()} method is called.

Index: libstruct.tex
===================================================================
RCS file: /projects/cvsroot/python/dist/src/Doc/lib/libstruct.tex,v
retrieving revision 1.24
retrieving revision 1.25
diff -C2 -r1.24 -r1.25
*** libstruct.tex	1999/08/24 20:16:29	1.24
--- libstruct.tex	2000/04/03 20:13:54	1.25
***************
*** 46,66 ****
  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}
  
  A format character may be preceded by an integral repeat count;
--- 46,78 ----
  C and Python values should be obvious given their types:
  
! \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;

Index: libsys.tex
===================================================================
RCS file: /projects/cvsroot/python/dist/src/Doc/lib/libsys.tex,v
retrieving revision 1.31
retrieving revision 1.32
diff -C2 -r1.31 -r1.32
*** libsys.tex	1999/11/09 19:45:59	1.31
--- libsys.tex	2000/04/03 20:13:54	1.32
***************
*** 32,35 ****
--- 32,40 ----
  \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
***************
*** 286,289 ****
  
  \begin{datadesc}{version}
! A string containing the version number of the Python interpreter.
  \end{datadesc}
--- 291,315 ----
  
  \begin{datadesc}{version}
! 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}

Index: libtelnetlib.tex
===================================================================
RCS file: /projects/cvsroot/python/dist/src/Doc/lib/libtelnetlib.tex,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -r1.2 -r1.3
*** libtelnetlib.tex	1999/04/22 17:53:37	1.2
--- libtelnetlib.tex	2000/04/03 20:13:54	1.3
***************
*** 1,5 ****
- % LaTeX'ized from the comments in the module by Skip Montanaro
- % <skip@mojam.com>.
- 
  \section{\module{telnetlib} ---
           Telnet client}
--- 1,2 ----
***************
*** 7,11 ****
  \declaremodule{standard}{telnetlib}
  \modulesynopsis{Telnet client class.}
! 
  
  The \module{telnetlib} module provides a \class{Telnet} class that
--- 4,8 ----
  \declaremodule{standard}{telnetlib}
  \modulesynopsis{Telnet client class.}
! \sectionauthor{Skip Montanaro}{skip@mojam.com}
  
  The \module{telnetlib} module provides a \class{Telnet} class that
***************
*** 150,151 ****
--- 147,177 ----
  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}

Index: libtime.tex
===================================================================
RCS file: /projects/cvsroot/python/dist/src/Doc/lib/libtime.tex,v
retrieving revision 1.28
retrieving revision 1.29
diff -C2 -r1.28 -r1.29
*** libtime.tex	1999/08/19 14:42:54	1.28
--- libtime.tex	2000/04/03 20:13:54	1.29
***************
*** 1,11 ****
  \section{\module{time} ---
!          Time access and conversions.}
! \declaremodule{builtin}{time}
  
  \modulesynopsis{Time access and conversions.}
  
  
  This module provides various time-related functions.
! It is always available.
  
  An explanation of some terminology and conventions is in order.
--- 1,12 ----
  \section{\module{time} ---
!          Time access and conversions}
  
+ \declaremodule{builtin}{time}
  \modulesynopsis{Time access and conversions.}
  
  
  This module provides various time-related functions.
! It is always available, but not all functions are available
! on all platforms.
  
  An explanation of some terminology and conventions is in order.
***************
*** 73,88 ****
  
  \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.
  
  \end{itemize}
  
--- 74,101 ----
  
  \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:
  
+ \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}
  
***************
*** 169,200 ****
  \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}
  
  Additional directives may be supported on certain platforms, but
--- 182,222 ----
  \function{strftime()} result:
  
! \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
***************
*** 216,221 ****
  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.
  \end{funcdesc}
  
--- 238,244 ----
  the local \UNIX{} documentation for restrictions or additional
  supported directives.  If \var{string} cannot be parsed according to
! \var{format}, \exception{ValueError} is raised.
! 
! Availability: Most modern \UNIX{} systems.
  \end{funcdesc}
  
***************
*** 239,240 ****
--- 262,269 ----
  \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}

Index: libtypes.tex
===================================================================
RCS file: /projects/cvsroot/python/dist/src/Doc/lib/libtypes.tex,v
retrieving revision 1.47
retrieving revision 1.48
diff -C2 -r1.47 -r1.48
*** libtypes.tex	1998/08/10 19:42:30	1.47
--- libtypes.tex	2000/04/03 20:13:54	1.48
***************
*** 1,10 ****
  \section{\module{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
--- 1,9 ----
  \section{\module{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
***************
*** 141,143 ****
--- 140,147 ----
  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}

Index: libundoc.tex
===================================================================
RCS file: /projects/cvsroot/python/dist/src/Doc/lib/libundoc.tex,v
retrieving revision 1.72
retrieving revision 1.73
diff -C2 -r1.72 -r1.73
*** libundoc.tex	2000/02/03 15:27:26	1.72
--- libundoc.tex	2000/04/03 20:13:54	1.73
***************
*** 24,27 ****
--- 24,30 ----
  --- 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
***************
*** 36,39 ****
--- 39,47 ----
  
  \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)
***************
*** 73,77 ****
  
  \item[\module{sunaudio}]
! --- interpret sun audio headers (may become obsolete or a tool/demo)
  
  \item[\module{toaiff}]
--- 81,85 ----
  
  \item[\module{sunaudio}]
! --- Interpret Sun audio headers (may become obsolete or a tool/demo)
  
  \item[\module{toaiff}]
***************
*** 80,92 ****
  \end{description}
  
  
! \section{Obsolete}
  
! 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}.
  
  \begin{description}
--- 88,109 ----
  \end{description}
  
+ 
+ \section{Obsolete \label{obsolete-modules}}
+ 
+ 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}

Index: liburllib.tex
===================================================================
RCS file: /projects/cvsroot/python/dist/src/Doc/lib/liburllib.tex,v
retrieving revision 1.20
retrieving revision 1.21
diff -C2 -r1.20 -r1.21
*** liburllib.tex	1999/02/22 22:42:14	1.20
--- liburllib.tex	2000/04/03 20:13:54	1.21
***************
*** 1,7 ****
  \section{\module{urllib} ---
!          Open an arbitrary object given by URL.}
! \declaremodule{standard}{urllib}
  
! \modulesynopsis{Open an arbitrary object given by URL (requires sockets).}
  
  \index{WWW}
--- 1,7 ----
  \section{\module{urllib} ---
!          Open an arbitrary resource by URL}
  
! \declaremodule{standard}{urllib}
! \modulesynopsis{Open an arbitrary network resource by URL (requires sockets).}
  
  \index{WWW}
***************
*** 63,66 ****
--- 63,97 ----
  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}
  
***************
*** 128,131 ****
--- 159,211 ----
  \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:
  
***************
*** 176,177 ****
--- 256,314 ----
  
  \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}

Index: libwhrandom.tex
===================================================================
RCS file: /projects/cvsroot/python/dist/src/Doc/lib/libwhrandom.tex,v
retrieving revision 1.11
retrieving revision 1.12
diff -C2 -r1.11 -r1.12
*** libwhrandom.tex	1999/11/10 16:21:37	1.11
--- libwhrandom.tex	2000/04/03 20:13:54	1.12
***************
*** 1,12 ****
  \section{\module{whrandom} ---
!          Floating point 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:
  
  \begin{funcdesc}{choice}{seq}
--- 1,26 ----
  \section{\module{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 \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}
***************
*** 32,39 ****
  \end{funcdesc}
  
! When imported, the \code{whrandom} module also creates an instance of
! the \code{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()
--- 46,54 ----
  \end{funcdesc}
  
! 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()
***************
*** 41,46 ****
  \end{verbatim}
  
  \begin{seealso}
!   \seemodule{random}{generators for various random distributions}
    \seetext{Wichmann, B. A. \& Hill, I. D., ``Algorithm AS 183: 
             An efficient and portable pseudo-random number generator'',
--- 56,66 ----
  \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 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'',

Index: libxmllib.tex
===================================================================
RCS file: /projects/cvsroot/python/dist/src/Doc/lib/libxmllib.tex,v
retrieving revision 1.21
retrieving revision 1.22
diff -C2 -r1.21 -r1.22
*** libxmllib.tex	1999/08/26 15:57:44	1.21
--- libxmllib.tex	2000/04/03 20:13:54	1.22
***************
*** 99,107 ****
  \end{methoddesc}
  
! \begin{methoddesc}{handle_doctype}{tag, 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.
  \end{methoddesc}
  
--- 99,108 ----
  \end{methoddesc}
  
! \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, 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}
  
***************
*** 227,230 ****
--- 228,237 ----
  
  \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

Index: libzlib.tex
===================================================================
RCS file: /projects/cvsroot/python/dist/src/Doc/lib/libzlib.tex,v
retrieving revision 1.19
retrieving revision 1.20
diff -C2 -r1.19 -r1.20
*** libzlib.tex	1999/04/21 18:44:41	1.19
--- libzlib.tex	2000/04/03 20:13:55	1.20
***************
*** 1,5 ****
- % 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}}
--- 1,2 ----
***************
*** 18,25 ****
  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:
  
--- 15,18 ----
***************
*** 69,78 ****
  \end{funcdesc}
  
! \begin{funcdesc}{decompress}{string\optional{, wbits\optional{, buffsize}}}
    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
    initial size of the output buffer.  Raises the \exception{error}
    exception if any error occurs.
  \end{funcdesc}
  
--- 62,88 ----
  \end{funcdesc}
  
! \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{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}
  
***************
*** 106,111 ****
  action is to delete the object.  
  \end{methoddesc}
  
! Decompression objects support the following methods:
  
  \begin{methoddesc}[Decompress]{decompress}{string}
--- 116,134 ----
  action is to delete the object.  
  \end{methoddesc}
+ 
+ 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}