Merged revisions 69998-69999,70002,70022-70023,70025-70026,70061,70086,70145,70171,70183,70188,70235,70244,70275,70281 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk

........
  r69998 | benjamin.peterson | 2009-02-26 13:04:40 -0600 (Thu, 26 Feb 2009) | 1 line

  the startship is rather outdated now
........
  r69999 | benjamin.peterson | 2009-02-26 13:05:59 -0600 (Thu, 26 Feb 2009) | 1 line

  comma
........
  r70002 | andrew.kuchling | 2009-02-26 16:34:30 -0600 (Thu, 26 Feb 2009) | 1 line

  The curses panel library is now supported
........
  r70022 | georg.brandl | 2009-02-27 10:23:18 -0600 (Fri, 27 Feb 2009) | 1 line

  #5361: fix typo.
........
  r70023 | georg.brandl | 2009-02-27 10:39:26 -0600 (Fri, 27 Feb 2009) | 1 line

  #5363: fix cmpfiles() docs. Another instance where a prose description is twice as long as the code.
........
  r70025 | georg.brandl | 2009-02-27 10:52:55 -0600 (Fri, 27 Feb 2009) | 1 line

  #5344: fix punctuation.
........
  r70026 | georg.brandl | 2009-02-27 10:59:03 -0600 (Fri, 27 Feb 2009) | 1 line

  #5365: add quick look conversion table for different time representations.
........
  r70061 | hirokazu.yamamoto | 2009-02-28 09:24:00 -0600 (Sat, 28 Feb 2009) | 1 line

  Binary flag is needed on windows.
........
  r70086 | benjamin.peterson | 2009-03-01 21:35:12 -0600 (Sun, 01 Mar 2009) | 1 line

  fix a silly problem of caching gone wrong #5401
........
  r70145 | benjamin.peterson | 2009-03-03 16:51:57 -0600 (Tue, 03 Mar 2009) | 1 line

  making the writing more formal
........
  r70171 | facundo.batista | 2009-03-04 15:18:17 -0600 (Wed, 04 Mar 2009) | 3 lines

  Fixed a typo.
........
  r70183 | benjamin.peterson | 2009-03-04 18:17:57 -0600 (Wed, 04 Mar 2009) | 1 line

  add example
........
  r70188 | hirokazu.yamamoto | 2009-03-05 03:34:14 -0600 (Thu, 05 Mar 2009) | 1 line

  Fixed memory leak on failure.
........
  r70235 | benjamin.peterson | 2009-03-07 18:21:17 -0600 (Sat, 07 Mar 2009) | 1 line

  fix funky indentation
........
  r70244 | martin.v.loewis | 2009-03-08 09:06:19 -0500 (Sun, 08 Mar 2009) | 2 lines

  Add Chris Withers.
........
  r70275 | georg.brandl | 2009-03-09 11:35:48 -0500 (Mon, 09 Mar 2009) | 2 lines

  Add missing space.
........
  r70281 | benjamin.peterson | 2009-03-09 15:38:56 -0500 (Mon, 09 Mar 2009) | 1 line

  gzip and bz2 are context managers
........
diff --git a/Doc/library/bz2.rst b/Doc/library/bz2.rst
index cde5749..4808b47 100644
--- a/Doc/library/bz2.rst
+++ b/Doc/library/bz2.rst
@@ -58,6 +58,11 @@
    reading. Instances support iteration in the same way as normal :class:`file`
    instances.
 
+   :class:`BZ2File` supports the :keyword:`with` statement.
+
+   .. versionchanged:: 2.7
+      Support for the :keyword:`with` statement was added.
+
 
    .. method:: close()
 
diff --git a/Doc/library/filecmp.rst b/Doc/library/filecmp.rst
index 3377d97..11d74ba 100644
--- a/Doc/library/filecmp.rst
+++ b/Doc/library/filecmp.rst
@@ -31,17 +31,24 @@
 
 .. function:: cmpfiles(dir1, dir2, common[, shallow])
 
-   Returns three lists of file names: *match*, *mismatch*, *errors*.  *match*
-   contains the list of files match in both directories, *mismatch* includes the
-   names of those that don't, and *errros* lists the names of files which could not
-   be compared.  Files may be listed in *errors* because the user may lack
-   permission to read them or many other reasons, but always that the comparison
-   could not be done for some reason.
+   Compare the files in the two directories *dir1* and *dir2* whose names are
+   given by *common*.
 
-   The *common* parameter is a list of file names found in both directories. The
-   *shallow* parameter has the same meaning and default value as for
+   Returns three lists of file names: *match*, *mismatch*,
+   *errors*.  *match* contains the list of files that match, *mismatch* contains
+   the names of those that don't, and *errors* lists the names of files which
+   could not be compared.  Files are listed in *errors* if they don't exist in
+   one of the directories, the user lacks permission to read them or if the
+   comparison could not be done for some other reason.
+
+   The *shallow* parameter has the same meaning and default value as for
    :func:`filecmp.cmp`.
 
+   For example, ``cmpfiles('a', 'b', ['c', 'd/e'])`` will compare ``a/c`` with
+   ``b/c`` and ``a/d/e`` with ``b/d/e``.  ``'c'`` and ``'d/e'`` will each be in
+   one of the three returned lists.
+
+
 Example::
 
    >>> import filecmp
diff --git a/Doc/library/gzip.rst b/Doc/library/gzip.rst
index fa73bba..c76bae8 100644
--- a/Doc/library/gzip.rst
+++ b/Doc/library/gzip.rst
@@ -53,7 +53,7 @@
    ``9`` is slowest and produces the most compression.  The default is ``9``.
 
    The *mtime* argument is an optional numeric timestamp to be written to
-   the stream when compressing.  All :program:`gzip`compressed streams are
+   the stream when compressing.  All :program:`gzip` compressed streams are
    required to contain a timestamp.  If omitted or ``None``, the current
    time is used.  This module ignores the timestamp when decompressing;
    however, some programs, such as :program:`gunzip`\ , make use of it.
@@ -67,6 +67,11 @@
    writing as *fileobj*, and retrieve the resulting memory buffer using the
    :class:`StringIO` object's :meth:`getvalue` method.
 
+   :class:`GzipFile` supports the :keyword:`with` statement.
+
+   .. versionchanged:: 2.7
+      Support for the :keyword:`with` statement was added.
+
 
 .. function:: open(filename[, mode[, compresslevel]])
 
diff --git a/Doc/library/mmap.rst b/Doc/library/mmap.rst
index e85a964..ceca29a 100644
--- a/Doc/library/mmap.rst
+++ b/Doc/library/mmap.rst
@@ -93,10 +93,10 @@
       import mmap
 
       # write a simple example file
-      with open("hello.txt", "w") as f:
+      with open("hello.txt", "wb") as f:
           f.write("Hello Python!\n")
 
-      with open("hello.txt", "r+") as f:
+      with open("hello.txt", "r+b") as f:
           # memory-map the file, size 0 means whole file
           map = mmap.mmap(f.fileno(), 0)
           # read content via standard file methods
diff --git a/Doc/library/stdtypes.rst b/Doc/library/stdtypes.rst
index eea7364..ec2fe96 100644
--- a/Doc/library/stdtypes.rst
+++ b/Doc/library/stdtypes.rst
@@ -1247,7 +1247,7 @@
 +------------+-----------------------------------------------------+-------+
 | ``'o'``    | Signed octal value.                                 | \(1)  |
 +------------+-----------------------------------------------------+-------+
-| ``'u'``    | Obselete type -- it is identical to ``'d'``.        | \(7)  |
+| ``'u'``    | Obsolete type -- it is identical to ``'d'``.        | \(7)  |
 +------------+-----------------------------------------------------+-------+
 | ``'x'``    | Signed hexadecimal (lowercase).                     | \(2)  |
 +------------+-----------------------------------------------------+-------+
diff --git a/Doc/library/struct.rst b/Doc/library/struct.rst
index 7802fdb..bd8a7a9 100644
--- a/Doc/library/struct.rst
+++ b/Doc/library/struct.rst
@@ -48,7 +48,7 @@
 
 .. function:: unpack_from(fmt, buffer[,offset=0])
 
-   Unpack the *buffer* according to tthe given format. The result is a tuple even
+   Unpack the *buffer* according to the given format. The result is a tuple even
    if it contains exactly one item. The *buffer* must contain at least the amount
    of data required by the format (``len(buffer[offset:])`` must be at least
    ``calcsize(fmt)``).
diff --git a/Doc/library/symtable.rst b/Doc/library/symtable.rst
index 28306e6..9ea3f01 100644
--- a/Doc/library/symtable.rst
+++ b/Doc/library/symtable.rst
@@ -164,6 +164,12 @@
       If the name is used as the target of a function or class statement, this
       will be true.
 
+      For example::
+
+         >>> table = symtable.symtable("def some_func(): pass", "string", "exec")
+         >>> table.lookup("some_func").is_namespace()
+         True
+
       Note that a single name can be bound to multiple objects.  If the result
       is ``True``, the name may also be bound to other objects, like an int or
       list, that does not introduce a new namespace.
diff --git a/Doc/library/time.rst b/Doc/library/time.rst
index 0e82b7d..46d972a 100644
--- a/Doc/library/time.rst
+++ b/Doc/library/time.rst
@@ -114,6 +114,25 @@
   :class:`struct_time`, or having elements of the wrong type, a :exc:`TypeError`
   is raised.
 
+* Use the following functions to convert between time representations:
+
+  +-------------------------+-------------------------+-------------------------+
+  | From                    | To                      | Use                     |
+  +=========================+=========================+=========================+
+  | seconds since the epoch | :class:`struct_time` in | :func:`gmtime`          |
+  |                         | UTC                     |                         |
+  +-------------------------+-------------------------+-------------------------+
+  | seconds since the epoch | :class:`struct_time` in | :func:`localtime`       |
+  |                         | local time              |                         |
+  +-------------------------+-------------------------+-------------------------+
+  | :class:`struct_time` in | seconds since the epoch | :func:`calendar.timegm` |
+  | UTC                     |                         |                         |
+  +-------------------------+-------------------------+-------------------------+
+  | :class:`struct_time` in | seconds since the epoch | :func:`mktime`          |
+  | local time              |                         |                         |
+  +-------------------------+-------------------------+-------------------------+
+
+
 The module defines the following functions and data items: