Merged revisions 77120,77151,77155,77209,77229,77256,77317,77331,77333,77359-77360,77382,77561,77570 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk

........
  r77120 | georg.brandl | 2009-12-29 22:09:17 +0100 (Di, 29 Dez 2009) | 1 line

  #7595: fix typo in argument default constant.
........
  r77151 | georg.brandl | 2009-12-30 19:32:50 +0100 (Mi, 30 Dez 2009) | 1 line

  #7487: update Pygments version.
........
  r77155 | georg.brandl | 2009-12-30 20:03:00 +0100 (Mi, 30 Dez 2009) | 1 line

  We only support Windows NT derivatives now.
........
  r77209 | georg.brandl | 2010-01-01 14:07:05 +0100 (Fr, 01 Jan 2010) | 1 line

  More yearly updates.
........
  r77229 | georg.brandl | 2010-01-02 13:35:01 +0100 (Sa, 02 Jan 2010) | 1 line

  Fix casing.
........
  r77256 | georg.brandl | 2010-01-02 23:55:55 +0100 (Sa, 02 Jan 2010) | 1 line

  Fix typo.
........
  r77317 | georg.brandl | 2010-01-05 19:14:52 +0100 (Di, 05 Jan 2010) | 1 line

  Add Stefan.
........
  r77331 | georg.brandl | 2010-01-06 18:43:06 +0100 (Mi, 06 Jan 2010) | 1 line

  Small fixes to test_cmd: fix signature of do_shell, remove duplicate import, add option to run the custom Cmd class.
........
  r77333 | georg.brandl | 2010-01-06 19:26:08 +0100 (Mi, 06 Jan 2010) | 1 line

  #5950: document that zip files with comments are unsupported in zipimport.
........
  r77359 | georg.brandl | 2010-01-07 21:54:45 +0100 (Do, 07 Jan 2010) | 1 line

  Fix description for Py_GetPath(); it sounded like it always returned sys.path.
........
  r77360 | georg.brandl | 2010-01-07 22:48:47 +0100 (Do, 07 Jan 2010) | 1 line

  #7653: clarify how the PythonPath registry key should look like.
........
  r77382 | georg.brandl | 2010-01-09 10:47:11 +0100 (Sa, 09 Jan 2010) | 1 line

  #7422: make it clear that getargspec() only works on Python functions.
........
  r77561 | georg.brandl | 2010-01-17 09:42:30 +0100 (So, 17 Jan 2010) | 1 line

  #7699: improve datetime docs: straightforward linking to strftime/strptime section, mark classmethods as such.
........
  r77570 | georg.brandl | 2010-01-17 13:14:42 +0100 (So, 17 Jan 2010) | 1 line

  Add note about usage of STRINGLIB_EMPTY.
........
diff --git a/Doc/c-api/init.rst b/Doc/c-api/init.rst
index 7d8f0d3..195ce8d 100644
--- a/Doc/c-api/init.rst
+++ b/Doc/c-api/init.rst
@@ -257,14 +257,15 @@
       triple: module; search; path
       single: path (in module sys)
 
-   Return the default module search path; this is computed from the  program name
-   (set by :cfunc:`Py_SetProgramName` above) and some environment variables.  The
-   returned string consists of a series of directory names separated by a platform
-   dependent delimiter character.  The delimiter character is ``':'`` on Unix and
-   Mac OS X, ``';'`` on Windows.  The returned string points into static storage;
-   the caller should not modify its value.  The value is available to Python code
-   as the list ``sys.path``, which may be modified to change the future search path
-   for loaded modules.
+   Return the default module search path; this is computed from the program name
+   (set by :cfunc:`Py_SetProgramName` above) and some environment variables.
+   The returned string consists of a series of directory names separated by a
+   platform dependent delimiter character.  The delimiter character is ``':'``
+   on Unix and Mac OS X, ``';'`` on Windows.  The returned string points into
+   static storage; the caller should not modify its value.  The list
+   :data:`sys.path` is initialized with this value on interpreter startup; it
+   can be (and usually is) modified later to change the search path for loading
+   modules.
 
    .. XXX should give the exact rules
 
diff --git a/Doc/library/datetime.rst b/Doc/library/datetime.rst
index 021f88b..aeb0d58 100644
--- a/Doc/library/datetime.rst
+++ b/Doc/library/datetime.rst
@@ -38,7 +38,6 @@
 
 The :mod:`datetime` module exports the following constants:
 
-
 .. data:: MINYEAR
 
    The smallest year number allowed in a :class:`date` or :class:`datetime` object.
@@ -63,7 +62,6 @@
 Available Types
 ---------------
 
-
 .. class:: date
    :noindex:
 
@@ -133,7 +131,6 @@
 A :class:`timedelta` object represents a duration, the difference between two
 dates or times.
 
-
 .. class:: timedelta([days[, seconds[, microseconds[, milliseconds[, minutes[, hours[, weeks]]]]]]])
 
    All arguments are optional and default to ``0``.  Arguments may be ints, longs,
@@ -170,8 +167,8 @@
       >>> (d.days, d.seconds, d.microseconds)
       (-1, 86399, 999999)
 
-Class attributes are:
 
+Class attributes are:
 
 .. attribute:: timedelta.min
 
@@ -316,16 +313,16 @@
 
    If an argument outside those ranges is given, :exc:`ValueError` is raised.
 
+
 Other constructors, all class methods:
 
-
-.. method:: date.today()
+.. classmethod:: date.today()
 
    Return the current local date.  This is equivalent to
    ``date.fromtimestamp(time.time())``.
 
 
-.. method:: date.fromtimestamp(timestamp)
+.. classmethod:: date.fromtimestamp(timestamp)
 
    Return the local date corresponding to the POSIX timestamp, such as is returned
    by :func:`time.time`.  This may raise :exc:`ValueError`, if the timestamp is out
@@ -335,15 +332,15 @@
    timestamp, leap seconds are ignored by :meth:`fromtimestamp`.
 
 
-.. method:: date.fromordinal(ordinal)
+.. classmethod:: date.fromordinal(ordinal)
 
    Return the date corresponding to the proleptic Gregorian ordinal, where January
    1 of year 1 has ordinal 1.  :exc:`ValueError` is raised unless ``1 <= ordinal <=
    date.max.toordinal()``. For any date *d*, ``date.fromordinal(d.toordinal()) ==
    d``.
 
-Class attributes:
 
+Class attributes:
 
 .. attribute:: date.min
 
@@ -360,8 +357,8 @@
    The smallest possible difference between non-equal date objects,
    ``timedelta(days=1)``.
 
-Instance attributes (read-only):
 
+Instance attributes (read-only):
 
 .. attribute:: date.year
 
@@ -377,6 +374,7 @@
 
    Between 1 and the number of days in the given month of the given year.
 
+
 Supported operations:
 
 +-------------------------------+----------------------------------------------+
@@ -429,7 +427,6 @@
 
 Instance methods:
 
-
 .. method:: date.replace(year, month, day)
 
    Return a date with the same value, except for those members given new values by
@@ -509,7 +506,8 @@
 
    Return a string representing the date, controlled by an explicit format string.
    Format codes referring to hours, minutes or seconds will see 0 values. See
-   section :ref:`strftime-behavior`.
+   section :ref:`strftime-strptime-behavior`.
+
 
 Example of counting days to an event::
 
@@ -576,7 +574,6 @@
 
 Constructor:
 
-
 .. class:: datetime(year, month, day[, hour[, minute[, second[, microsecond[, tzinfo]]]]])
 
    The year, month and day arguments are required.  *tzinfo* may be ``None``, or an
@@ -595,15 +592,14 @@
 
 Other constructors, all class methods:
 
-
-.. method:: datetime.today()
+.. classmethod:: datetime.today()
 
    Return the current local datetime, with :attr:`tzinfo` ``None``. This is
    equivalent to ``datetime.fromtimestamp(time.time())``. See also :meth:`now`,
    :meth:`fromtimestamp`.
 
 
-.. method:: datetime.now([tz])
+.. classmethod:: datetime.now([tz])
 
    Return the current local date and time.  If optional argument *tz* is ``None``
    or not specified, this is like :meth:`today`, but, if possible, supplies more
@@ -617,14 +613,14 @@
    See also :meth:`today`, :meth:`utcnow`.
 
 
-.. method:: datetime.utcnow()
+.. classmethod:: datetime.utcnow()
 
    Return the current UTC date and time, with :attr:`tzinfo` ``None``. This is like
    :meth:`now`, but returns the current UTC date and time, as a naive
    :class:`datetime` object. See also :meth:`now`.
 
 
-.. method:: datetime.fromtimestamp(timestamp[, tz])
+.. classmethod:: datetime.fromtimestamp(timestamp[, tz])
 
    Return the local date and time corresponding to the POSIX timestamp, such as is
    returned by :func:`time.time`. If optional argument *tz* is ``None`` or not
@@ -645,7 +641,7 @@
    identical :class:`datetime` objects. See also :meth:`utcfromtimestamp`.
 
 
-.. method:: datetime.utcfromtimestamp(timestamp)
+.. classmethod:: datetime.utcfromtimestamp(timestamp)
 
    Return the UTC :class:`datetime` corresponding to the POSIX timestamp, with
    :attr:`tzinfo` ``None``. This may raise :exc:`ValueError`, if the timestamp is
@@ -654,7 +650,7 @@
    :meth:`fromtimestamp`.
 
 
-.. method:: datetime.fromordinal(ordinal)
+.. classmethod:: datetime.fromordinal(ordinal)
 
    Return the :class:`datetime` corresponding to the proleptic Gregorian ordinal,
    where January 1 of year 1 has ordinal 1. :exc:`ValueError` is raised unless ``1
@@ -662,7 +658,7 @@
    microsecond of the result are all 0, and :attr:`tzinfo` is ``None``.
 
 
-.. method:: datetime.combine(date, time)
+.. classmethod:: datetime.combine(date, time)
 
    Return a new :class:`datetime` object whose date members are equal to the given
    :class:`date` object's, and whose time and :attr:`tzinfo` members are equal to
@@ -671,18 +667,18 @@
    object, its time and :attr:`tzinfo` members are ignored.
 
 
-.. method:: datetime.strptime(date_string, format)
+.. classmethod:: datetime.strptime(date_string, format)
 
    Return a :class:`datetime` corresponding to *date_string*, parsed according to
    *format*.  This is equivalent to ``datetime(*(time.strptime(date_string,
    format)[0:6]))``. :exc:`ValueError` is raised if the date_string and format
    can't be parsed by :func:`time.strptime` or if it returns a value which isn't a
-   time tuple.
+   time tuple. See section :ref:`strftime-strptime-behavior`.
 
    .. versionadded:: 2.5
 
-Class attributes:
 
+Class attributes:
 
 .. attribute:: datetime.min
 
@@ -701,8 +697,8 @@
    The smallest possible difference between non-equal :class:`datetime` objects,
    ``timedelta(microseconds=1)``.
 
-Instance attributes (read-only):
 
+Instance attributes (read-only):
 
 .. attribute:: datetime.year
 
@@ -744,6 +740,7 @@
    The object passed as the *tzinfo* argument to the :class:`datetime` constructor,
    or ``None`` if none was passed.
 
+
 Supported operations:
 
 +---------------------------------------+-------------------------------+
@@ -817,7 +814,6 @@
 
 Instance methods:
 
-
 .. method:: datetime.date()
 
    Return :class:`date` object with same year, month and day.
@@ -995,7 +991,8 @@
 .. method:: datetime.strftime(format)
 
    Return a string representing the date and time, controlled by an explicit format
-   string.  See section :ref:`strftime-behavior`.
+   string.  See section :ref:`strftime-strptime-behavior`.
+
 
 Examples of working with datetime objects:
 
@@ -1108,7 +1105,6 @@
 A time object represents a (local) time of day, independent of any particular
 day, and subject to adjustment via a :class:`tzinfo` object.
 
-
 .. class:: time(hour[, minute[, second[, microsecond[, tzinfo]]]])
 
    All arguments are optional.  *tzinfo* may be ``None``, or an instance of a
@@ -1142,8 +1138,8 @@
    ``timedelta(microseconds=1)``, although note that arithmetic on :class:`time`
    objects is not supported.
 
-Instance attributes (read-only):
 
+Instance attributes (read-only):
 
 .. attribute:: time.hour
 
@@ -1170,6 +1166,7 @@
    The object passed as the tzinfo argument to the :class:`time` constructor, or
    ``None`` if none was passed.
 
+
 Supported operations:
 
 * comparison of :class:`time` to :class:`time`, where *a* is considered less
@@ -1192,8 +1189,8 @@
   only if, after converting it to minutes and subtracting :meth:`utcoffset` (or
   ``0`` if that's ``None``), the result is non-zero.
 
-Instance methods:
 
+Instance methods:
 
 .. method:: time.replace([hour[, minute[, second[, microsecond[, tzinfo]]]]])
 
@@ -1219,7 +1216,7 @@
 .. method:: time.strftime(format)
 
    Return a string representing the time, controlled by an explicit format string.
-   See section :ref:`strftime-behavior`.
+   See section :ref:`strftime-strptime-behavior`.
 
 
 .. method:: time.utcoffset()
@@ -1244,6 +1241,7 @@
    ``self.tzinfo.tzname(None)``, or raises an exception if the latter doesn't
    return ``None`` or a string object.
 
+
 Example:
 
     >>> from datetime import time, tzinfo
@@ -1380,6 +1378,7 @@
 
    The default implementation of :meth:`tzname` raises :exc:`NotImplementedError`.
 
+
 These methods are called by a :class:`datetime` or :class:`time` object, in
 response to their methods of the same names.  A :class:`datetime` object passes
 itself as the argument, and a :class:`time` object passes ``None`` as the
@@ -1483,10 +1482,10 @@
 EST (fixed offset -5 hours), or only EDT (fixed offset -4 hours)).
 
 
-.. _strftime-behavior:
+.. _strftime-strptime-behavior:
 
-:meth:`strftime` Behavior
--------------------------
+:meth:`strftime` and :meth:`strptime` Behavior
+----------------------------------------------
 
 :class:`date`, :class:`datetime`, and :class:`time` objects all support a
 ``strftime(format)`` method, to create a string representing the time under the
@@ -1494,9 +1493,14 @@
 acts like the :mod:`time` module's ``time.strftime(fmt, d.timetuple())``
 although not all objects support a :meth:`timetuple` method.
 
+Conversely, the :meth:`datetime.strptime` class method creates a
+:class:`datetime` object from a string representing a date and time and a
+corresponding format string. ``datetime.strptime(date_string, format)`` is
+equivalent to ``datetime(*(time.strptime(date_string, format)[0:6]))``.
+
 For :class:`time` objects, the format codes for year, month, and day should not
 be used, as time objects have no such values.  If they're used anyway, ``1900``
-is substituted for the year, and ``0`` for the month and day.
+is substituted for the year, and ``1`` for the month and day.
 
 For :class:`date` objects, the format codes for hours, minutes, seconds, and
 microseconds should not be used, as :class:`date` objects have no such
@@ -1623,14 +1627,14 @@
 Notes:
 
 (1)
-   When used with the :func:`strptime` function, the ``%f`` directive
+   When used with the :meth:`strptime` method, the ``%f`` directive
    accepts from one to six digits and zero pads on the right.  ``%f`` is
    an extension to the set of format characters in the C standard (but
    implemented separately in datetime objects, and therefore always
    available).
 
 (2)
-   When used with the :func:`strptime` function, the ``%p`` directive only affects
+   When used with the :meth:`strptime` method, the ``%p`` directive only affects
    the output hour field if the ``%I`` directive is used to parse the hour.
 
 (3)
@@ -1638,11 +1642,11 @@
    accounts for leap seconds and the (very rare) double leap seconds.
    The :mod:`time` module may produce and does accept leap seconds since
    it is based on the Posix standard, but the :mod:`datetime` module
-   does not accept leap seconds in :func:`strptime` input nor will it
+   does not accept leap seconds in :meth:`strptime` input nor will it
    produce them in :func:`strftime` output.
 
 (4)
-   When used with the :func:`strptime` function, ``%U`` and ``%W`` are only used in
+   When used with the :meth:`strptime` method, ``%U`` and ``%W`` are only used in
    calculations when the day of the week and the year are specified.
 
 (5)
diff --git a/Doc/library/inspect.rst b/Doc/library/inspect.rst
index 39f1f3e..29dc6ae 100644
--- a/Doc/library/inspect.rst
+++ b/Doc/library/inspect.rst
@@ -457,7 +457,7 @@
 
 .. function:: getargspec(func)
 
-   Get the names and default values of a function's arguments. A tuple of four
+   Get the names and default values of a Python function's arguments. A tuple of four
    things is returned: ``(args, varargs, varkw, defaults)``. *args* is a list of
    the argument names (it may contain nested lists). *varargs* and *varkw* are the
    names of the ``*`` and ``**`` arguments or ``None``. *defaults* is a tuple of
diff --git a/Doc/library/msvcrt.rst b/Doc/library/msvcrt.rst
index 4537be8..4fc553f 100644
--- a/Doc/library/msvcrt.rst
+++ b/Doc/library/msvcrt.rst
@@ -153,6 +153,4 @@
 .. function:: heapmin()
 
    Force the :cfunc:`malloc` heap to clean itself up and return unused blocks to
-   the operating system.  This only works on Windows NT.  On failure, this raises
-   :exc:`IOError`.
-
+   the operating system.  On failure, this raises :exc:`IOError`.
diff --git a/Doc/library/select.rst b/Doc/library/select.rst
index 0e6e4af..b599d97 100644
--- a/Doc/library/select.rst
+++ b/Doc/library/select.rst
@@ -50,7 +50,7 @@
    .. versionadded:: 2.6
 
 
-.. function:: kevent(ident, filter=KQ_FILTER_READ, flags=KQ_ADD, fflags=0, data=0, udata=0)
+.. function:: kevent(ident, filter=KQ_FILTER_READ, flags=KQ_EV_ADD, fflags=0, data=0, udata=0)
 
    (Only supported on BSD.)  Returns a kernel event object object; see section
    :ref:`kevent-objects` below for the methods supported by kqueue objects.
diff --git a/Doc/library/zipimport.rst b/Doc/library/zipimport.rst
index 1cad24c..8e6b132 100644
--- a/Doc/library/zipimport.rst
+++ b/Doc/library/zipimport.rst
@@ -33,6 +33,8 @@
 loaded from a ZIP archive; it is unlikely that :func:`reload` would be needed,
 since this would imply that the ZIP has been altered during runtime.
 
+ZIP archives with an archive comment are currently not supported.
+
 .. seealso::
 
    `PKZIP Application Note <http://www.pkware.com/documents/casestudies/APPNOTE.TXT>`_
diff --git a/Doc/using/windows.rst b/Doc/using/windows.rst
index f5235f1..52349d7 100644
--- a/Doc/using/windows.rst
+++ b/Doc/using/windows.rst
@@ -168,12 +168,13 @@
 
 .. ``
 
-Modifying the module search path can also be done through the Windows registry:
-Edit
-:file:`HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\{version}\\PythonPath\\`,
-as described above for the environment variable :envvar:`%PYTHONPATH%`.  A
-convenient registry editor is :program:`regedit` (start it by typing "regedit"
-into :menuselection:`Start --> Run`).
+Modifying the module search path can also be done through the Windows registry
+under the key :file:`HKLM\\SOFTWARE\\Python\\PythonCore\\{version}\\PythonPath`.
+Subkeys which have semicolon-delimited path strings as their default value will
+cause each path to be searched.  Multiple subkeys can be created and are
+appended to the path in alphabetical order.  A convenient registry editor is
+:program:`regedit` (start it by typing "regedit" into :menuselection:`Start -->
+Run`).
 
 
 Executing scripts