summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Doc/c-api/typeobj.rst1
-rw-r--r--Doc/distutils/packageindex.rst1
-rw-r--r--Doc/howto/regex.rst2
-rw-r--r--Doc/library/2to3.rst6
-rw-r--r--Doc/library/abc.rst2
-rw-r--r--Doc/library/contextlib.rst9
-rw-r--r--Doc/library/exceptions.rst2
-rw-r--r--Doc/library/filecmp.rst25
-rw-r--r--Doc/library/idle.rst18
-rw-r--r--Doc/library/re.rst2
-rw-r--r--Doc/library/stdtypes.rst2
-rw-r--r--Doc/library/string.rst21
-rw-r--r--Doc/library/sys.rst4
-rw-r--r--Doc/library/threading.rst7
-rw-r--r--Doc/library/time.rst18
-rw-r--r--Doc/library/turtle.rst6
-rw-r--r--Doc/library/xml.dom.rst2
-rw-r--r--Doc/reference/datamodel.rst9
-rw-r--r--Doc/reference/executionmodel.rst7
-rw-r--r--Doc/whatsnew/2.6.rst2
-rw-r--r--Lib/test/test_struct.py4
-rw-r--r--Modules/_codecsmodule.c2
-rw-r--r--Modules/_ctypes/_ctypes.c14
-rw-r--r--Objects/typeobject.c6
-rw-r--r--Objects/unicodeobject.c6
25 files changed, 119 insertions, 59 deletions
diff --git a/Doc/c-api/typeobj.rst b/Doc/c-api/typeobj.rst
index 24f508e..a320d9e 100644
--- a/Doc/c-api/typeobj.rst
+++ b/Doc/c-api/typeobj.rst
@@ -1180,6 +1180,7 @@ Number Object Structures
binaryfunc nb_inplace_add;
binaryfunc nb_inplace_subtract;
binaryfunc nb_inplace_multiply;
+ binaryfunc nb_inplace_divide;
binaryfunc nb_inplace_remainder;
ternaryfunc nb_inplace_power;
binaryfunc nb_inplace_lshift;
diff --git a/Doc/distutils/packageindex.rst b/Doc/distutils/packageindex.rst
index 3715c82..912248e 100644
--- a/Doc/distutils/packageindex.rst
+++ b/Doc/distutils/packageindex.rst
@@ -91,4 +91,3 @@ Or even with the section name::
python setup.py register -r other
-
diff --git a/Doc/howto/regex.rst b/Doc/howto/regex.rst
index d7ab078..eab23af 100644
--- a/Doc/howto/regex.rst
+++ b/Doc/howto/regex.rst
@@ -4,7 +4,7 @@
Regular Expression HOWTO
****************************
-:Author: A.M. Kuchling
+:Author: A.M. Kuchling <amk@amk.ca>
:Release: 0.05
.. TODO:
diff --git a/Doc/library/2to3.rst b/Doc/library/2to3.rst
index 375bd10..b1c2dd7 100644
--- a/Doc/library/2to3.rst
+++ b/Doc/library/2to3.rst
@@ -36,9 +36,9 @@ It can be converted to Python 3.x code via 2to3 on the command line::
$ 2to3 example.py
A diff against the original source file is printed. 2to3 can also write the
-needed modifications right back to the source file. (Of course, a backup of the
-original is also be made unless :option:`-n` is also given.) Writing the
-changes back is enabled with the :option:`-w` flag::
+needed modifications right back to the source file. (A backup of the original
+file is made unless :option:`-n` is also given.) Writing the changes back is
+enabled with the :option:`-w` flag::
$ 2to3 -w example.py
diff --git a/Doc/library/abc.rst b/Doc/library/abc.rst
index 505fca1..9f70b02 100644
--- a/Doc/library/abc.rst
+++ b/Doc/library/abc.rst
@@ -153,7 +153,7 @@ It also provides the following decorators:
.. note::
- Unlike C++'s pure virtual functions, or Java abstract methods, these abstract
+ Unlike Java abstract methods, these abstract
methods may have an implementation. This implementation can be
called via the :func:`super` mechanism from the class that
overrides it. This could be useful as an end-point for a
diff --git a/Doc/library/contextlib.rst b/Doc/library/contextlib.rst
index 8c10c95..935afee 100644
--- a/Doc/library/contextlib.rst
+++ b/Doc/library/contextlib.rst
@@ -63,14 +63,15 @@ Functions provided:
from contextlib import nested
- with nested(A, B, C) as (X, Y, Z):
+ with nested(A(), B(), C()) as (X, Y, Z):
do_something()
is equivalent to this::
- with A as X:
- with B as Y:
- with C as Z:
+ m1, m2, m3 = A(), B(), C()
+ with m1 as X:
+ with m2 as Y:
+ with m3 as Z:
do_something()
Note that if the :meth:`__exit__` method of one of the nested context managers
diff --git a/Doc/library/exceptions.rst b/Doc/library/exceptions.rst
index 9673dab..a50ffbf 100644
--- a/Doc/library/exceptions.rst
+++ b/Doc/library/exceptions.rst
@@ -52,7 +52,7 @@ The following exceptions are only used as base classes for other exceptions.
The base class for all built-in exceptions. It is not meant to be directly
inherited by user-defined classes (for that use :exc:`Exception`). If
:func:`str` or :func:`unicode` is called on an instance of this class, the
- representation of the argument(s) to the instance are returned or the emptry
+ representation of the argument(s) to the instance are returned or the empty
string when there were no arguments. All arguments are stored in :attr:`args`
as a tuple.
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 @@ The :mod:`filecmp` module defines the following functions:
.. 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.
-
- 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
+ Compare the files in the two directories *dir1* and *dir2* whose names are
+ given by *common*.
+
+ 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/idle.rst b/Doc/library/idle.rst
index 413750f..1b78fb9 100644
--- a/Doc/library/idle.rst
+++ b/Doc/library/idle.rst
@@ -253,6 +253,24 @@ Shell colors:
black
+Startup
+-------
+
+Upon startup with the ``-s`` option, IDLE will execute the file referenced by
+the environment variables :envvar:`IDLESTARTUP` or :envvar:`PYTHONSTARTUP`.
+Idle first checks for ``IDLESTARTUP``; if ``IDLESTARTUP`` is present the file
+referenced is run. If ``IDLESTARTUP`` is not present, Idle checks for
+``PYTHONSTARTUP``. Files referenced by these environment variables are
+convenient places to store functions that are used frequently from the Idle
+shell, or for executing import statements to import common modules.
+
+In addition, ``Tk`` also loads a startup file if it is present. Note that the
+Tk file is loaded unconditionally. This additional file is ``.Idle.py`` and is
+looked for in the user's home directory. Statements in this file will be
+executed in the Tk namespace, so this file is not useful for importing functions
+to be used from Idle's Python shell.
+
+
Command line usage
^^^^^^^^^^^^^^^^^^
diff --git a/Doc/library/re.rst b/Doc/library/re.rst
index 6ff89ea..d2c9558 100644
--- a/Doc/library/re.rst
+++ b/Doc/library/re.rst
@@ -1093,7 +1093,7 @@ For example:
string)`` or ``re.search(pattern, string)``.
:func:`match` has an optional second parameter that gives an index in the string
-where the search is to start:
+where the search is to start::
>>> pattern = re.compile("o")
>>> pattern.match("dog") # No match as "o" is not at the start of "dog."
diff --git a/Doc/library/stdtypes.rst b/Doc/library/stdtypes.rst
index 998ae77..56b6312 100644
--- a/Doc/library/stdtypes.rst
+++ b/Doc/library/stdtypes.rst
@@ -1296,7 +1296,7 @@ The conversion types are:
+------------+-----------------------------------------------------+-------+
| ``'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/string.rst b/Doc/library/string.rst
index 673f756..4c3be4f 100644
--- a/Doc/library/string.rst
+++ b/Doc/library/string.rst
@@ -62,10 +62,9 @@ The constants defined in this module are:
.. data:: lowercase
A string containing all the characters that are considered lowercase letters.
- On most systems this is the string ``'abcdefghijklmnopqrstuvwxyz'``. Do not
- change its definition --- the effect on the routines :func:`upper` and
- :func:`swapcase` is undefined. The specific value is locale-dependent, and will
- be updated when :func:`locale.setlocale` is called.
+ On most systems this is the string ``'abcdefghijklmnopqrstuvwxyz'``. The
+ specific value is locale-dependent, and will be updated when
+ :func:`locale.setlocale` is called.
.. data:: octdigits
@@ -89,18 +88,16 @@ The constants defined in this module are:
.. data:: uppercase
A string containing all the characters that are considered uppercase letters.
- On most systems this is the string ``'ABCDEFGHIJKLMNOPQRSTUVWXYZ'``. Do not
- change its definition --- the effect on the routines :func:`lower` and
- :func:`swapcase` is undefined. The specific value is locale-dependent, and will
- be updated when :func:`locale.setlocale` is called.
+ On most systems this is the string ``'ABCDEFGHIJKLMNOPQRSTUVWXYZ'``. The
+ specific value is locale-dependent, and will be updated when
+ :func:`locale.setlocale` is called.
.. data:: whitespace
A string containing all characters that are considered whitespace. On most
systems this includes the characters space, tab, linefeed, return, formfeed, and
- vertical tab. Do not change its definition --- the effect on the routines
- :func:`strip` and :func:`split` is undefined.
+ vertical tab.
.. _new-string-formatting:
@@ -224,7 +221,7 @@ The grammar for a replacement field is as follows:
.. productionlist:: sf
replacement_field: "{" `field_name` ["!" `conversion`] [":" `format_spec`] "}"
- field_name: (`identifier` | `integer`) ("." `attribute_name` | "[" element_index "]")*
+ field_name: (`identifier` | `integer`) ("." `attribute_name` | "[" `element_index` "]")*
attribute_name: `identifier`
element_index: `integer`
conversion: "r" | "s"
@@ -599,7 +596,7 @@ They are not available as string methods.
Don't use strings derived from :const:`lowercase` and :const:`uppercase` as
arguments; in some locales, these don't have the same length. For case
- conversions, always use :func:`lower` and :func:`upper`.
+ conversions, always use :meth:`str.lower` and :meth:`str.upper`.
Deprecated string functions
diff --git a/Doc/library/sys.rst b/Doc/library/sys.rst
index a476f4d..61b7576 100644
--- a/Doc/library/sys.rst
+++ b/Doc/library/sys.rst
@@ -661,7 +661,9 @@ always available.
.. data:: py3kwarning
Bool containing the status of the Python 3.0 warning flag. It's ``True``
- when Python is started with the -3 option.
+ when Python is started with the -3 option. (This should be considered
+ read-only; setting it to a different value doesn't have an effect on
+ Python 3.0 warnings.)
.. versionadded:: 2.6
diff --git a/Doc/library/threading.rst b/Doc/library/threading.rst
index e6616db..69593ae 100644
--- a/Doc/library/threading.rst
+++ b/Doc/library/threading.rst
@@ -21,9 +21,14 @@ The :mod:`dummy_threading` module is provided for situations where
deprecation of the ``camelCase`` names and they remain fully supported in
both Python 2.x and 3.x.
-This module defines the following functions and objects:
+.. note::
+
+ Starting with Python 2.5, several Thread methods raise :exc:`RuntimeError`
+ instead of :exc:`AssertionError` if called erroneously.
+This module defines the following functions and objects:
+
.. function:: active_count()
activeCount()
diff --git a/Doc/library/time.rst b/Doc/library/time.rst
index c9b7355..1ffef2b 100644
--- a/Doc/library/time.rst
+++ b/Doc/library/time.rst
@@ -118,6 +118,24 @@ An explanation of some terminology and conventions is in order.
The time value sequence was changed from a tuple to a :class:`struct_time`, with
the addition of attribute names for the fields.
+* 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:
diff --git a/Doc/library/turtle.rst b/Doc/library/turtle.rst
index fd84597..9707420 100644
--- a/Doc/library/turtle.rst
+++ b/Doc/library/turtle.rst
@@ -61,7 +61,7 @@ The object-oriented interface uses essentially two+two classes:
The procedural interface provides functions which are derived from the methods
of the classes :class:`Screen` and :class:`Turtle`. They have the same names as
-the corresponding methods. A screen object is automativally created whenever a
+the corresponding methods. A screen object is automatically created whenever a
function derived from a Screen method is called. An (unnamed) turtle object is
automatically created whenever any of the functions derived from a Turtle method
is called.
@@ -1608,7 +1608,7 @@ The public classes of the module :mod:`turtle`
=========== ===========
"polygon" a polygon-tuple, i.e. a tuple of pairs of coordinates
"image" an image (in this form only used internally!)
- "compound" ``None`` (a compund shape has to be constructed using the
+ "compound" ``None`` (a compound shape has to be constructed using the
:meth:`addcomponent` method)
=========== ===========
@@ -1830,7 +1830,7 @@ There is a set of demo scripts in the turtledemo directory located in the
It contains:
-- a set of 15 demo scripts demonstrating differet features of the new module
+- a set of 15 demo scripts demonstrating different features of the new module
:mod:`turtle`
- a demo viewer :file:`turtleDemo.py` which can be used to view the sourcecode
of the scripts and run them at the same time. 14 of the examples can be
diff --git a/Doc/library/xml.dom.rst b/Doc/library/xml.dom.rst
index 16cfad5..8a74e7d 100644
--- a/Doc/library/xml.dom.rst
+++ b/Doc/library/xml.dom.rst
@@ -611,7 +611,7 @@ of that class.
Same as equivalent method in the :class:`Document` class.
-.. method:: Element.getElementsByTagNameNS(tagName)
+.. method:: Element.getElementsByTagNameNS(namespaceURI, localName)
Same as equivalent method in the :class:`Document` class.
diff --git a/Doc/reference/datamodel.rst b/Doc/reference/datamodel.rst
index c13e802..7d5b7be 100644
--- a/Doc/reference/datamodel.rst
+++ b/Doc/reference/datamodel.rst
@@ -1414,11 +1414,12 @@ Basic customization
.. index:: single: __len__() (mapping object method)
- Called to implement truth value testing, and the built-in operation ``bool()``;
+ Called to implement truth value testing and the built-in operation ``bool()``;
should return ``False`` or ``True``, or their integer equivalents ``0`` or
- ``1``. When this method is not defined, :meth:`__len__` is called, if it is
- defined (see below). If a class defines neither :meth:`__len__` nor
- :meth:`__nonzero__`, all its instances are considered true.
+ ``1``. When this method is not defined, :meth:`__len__` is called, if it is
+ defined, and the object is considered true if its result is nonzero.
+ If a class defines neither :meth:`__len__` nor :meth:`__nonzero__`, all its
+ instances are considered true.
.. method:: object.__unicode__(self)
diff --git a/Doc/reference/executionmodel.rst b/Doc/reference/executionmodel.rst
index 0d15657..05f8b92 100644
--- a/Doc/reference/executionmodel.rst
+++ b/Doc/reference/executionmodel.rst
@@ -87,9 +87,10 @@ subclass of :exc:`NameError`.
The following constructs bind names: formal parameters to functions,
:keyword:`import` statements, class and function definitions (these bind the
class or function name in the defining block), and targets that are identifiers
-if occurring in an assignment, :keyword:`for` loop header, or in the second
-position of an :keyword:`except` clause header. The :keyword:`import` statement
-of the form "``from ...import *``" binds all names defined in the imported
+if occurring in an assignment, :keyword:`for` loop header, in the second
+position of an :keyword:`except` clause header or after :keyword:`as` in a
+:keyword:`with` statement. The :keyword:`import` statement
+of the form ``from ... import *`` binds all names defined in the imported
module, except those beginning with an underscore. This form may only be used
at the module level.
diff --git a/Doc/whatsnew/2.6.rst b/Doc/whatsnew/2.6.rst
index 297584b..9cfa980 100644
--- a/Doc/whatsnew/2.6.rst
+++ b/Doc/whatsnew/2.6.rst
@@ -270,7 +270,7 @@ structure is::
The expression is evaluated, and it should result in an object that supports the
context management protocol (that is, has :meth:`__enter__` and :meth:`__exit__`
-methods.
+methods).
The object's :meth:`__enter__` is called before *with-block* is executed and
therefore can run set-up code. It also may return a value that is bound to the
diff --git a/Lib/test/test_struct.py b/Lib/test/test_struct.py
index 7f5f08b..cda7dee 100644
--- a/Lib/test/test_struct.py
+++ b/Lib/test/test_struct.py
@@ -512,6 +512,10 @@ class StructTest(unittest.TestCase):
self.assertRaises(struct.error, s.pack_into, small_buf, 0, test_string)
self.assertRaises(struct.error, s.pack_into, small_buf, 2, test_string)
+ # Test bogus offset (issue 3694)
+ sb = small_buf
+ self.assertRaises(TypeError, struct.pack_into, b'1', sb, None)
+
def test_pack_into_fn(self):
test_string = 'Reykjavik rocks, eow!'
writable_buf = array.array('c', ' '*100)
diff --git a/Modules/_codecsmodule.c b/Modules/_codecsmodule.c
index 9a14700..6877238 100644
--- a/Modules/_codecsmodule.c
+++ b/Modules/_codecsmodule.c
@@ -61,7 +61,7 @@ PyDoc_STRVAR(lookup__doc__,
"lookup(encoding) -> CodecInfo\n\
\n\
Looks up a codec tuple in the Python codec registry and returns\n\
-a tuple of function (or a CodecInfo object).");
+a CodecInfo object.");
static
PyObject *codec_lookup(PyObject *self, PyObject *args)
diff --git a/Modules/_ctypes/_ctypes.c b/Modules/_ctypes/_ctypes.c
index a509d4b..360046b 100644
--- a/Modules/_ctypes/_ctypes.c
+++ b/Modules/_ctypes/_ctypes.c
@@ -599,13 +599,14 @@ CDataType_in_dll(PyObject *type, PyObject *args)
#else
address = (void *)ctypes_dlsym(handle, name);
if (!address) {
- PyErr_Format(PyExc_ValueError,
#ifdef __CYGWIN__
/* dlerror() isn't very helpful on cygwin */
+ PyErr_Format(PyExc_ValueError,
"symbol '%s' not found (%s) ",
- name,
+ name);
+#else
+ PyErr_SetString(PyExc_ValueError, ctypes_dlerror());
#endif
- ctypes_dlerror());
return NULL;
}
#endif
@@ -3283,13 +3284,14 @@ CFuncPtr_FromDll(PyTypeObject *type, PyObject *args, PyObject *kwds)
#else
address = (PPROC)ctypes_dlsym(handle, name);
if (!address) {
- PyErr_Format(PyExc_AttributeError,
#ifdef __CYGWIN__
/* dlerror() isn't very helpful on cygwin */
+ PyErr_Format(PyExc_AttributeError,
"function '%s' not found (%s) ",
- name,
+ name);
+#else
+ PyErr_SetString(PyExc_AttributeError, ctypes_dlerror());
#endif
- ctypes_dlerror());
return NULL;
}
#endif
diff --git a/Objects/typeobject.c b/Objects/typeobject.c
index 3f790e8..ddfc730 100644
--- a/Objects/typeobject.c
+++ b/Objects/typeobject.c
@@ -5092,6 +5092,7 @@ slot_nb_nonzero(PyObject *self)
PyObject *func, *args;
static PyObject *nonzero_str, *len_str;
int result = -1;
+ int using_len = 0;
func = lookup_maybe(self, "__nonzero__", &nonzero_str);
if (func == NULL) {
@@ -5100,6 +5101,7 @@ slot_nb_nonzero(PyObject *self)
func = lookup_maybe(self, "__len__", &len_str);
if (func == NULL)
return PyErr_Occurred() ? -1 : 1;
+ using_len = 1;
}
args = PyTuple_New(0);
if (args != NULL) {
@@ -5110,8 +5112,10 @@ slot_nb_nonzero(PyObject *self)
result = PyObject_IsTrue(temp);
else {
PyErr_Format(PyExc_TypeError,
- "__nonzero__ should return "
+ "%s should return "
"bool or int, returned %s",
+ (using_len ? "__len__"
+ : "__nonzero__"),
temp->ob_type->tp_name);
result = -1;
}
diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c
index acec713..5c27b04 100644
--- a/Objects/unicodeobject.c
+++ b/Objects/unicodeobject.c
@@ -1385,7 +1385,7 @@ int unicode_decode_call_errorhandler(const char *errors, PyObject **errorHandler
if (restuple == NULL)
goto onError;
if (!PyTuple_Check(restuple)) {
- PyErr_Format(PyExc_TypeError, &argparse[4]);
+ PyErr_SetString(PyExc_TypeError, &argparse[4]);
goto onError;
}
if (!PyArg_ParseTuple(restuple, argparse, &PyUnicode_Type, &repunicode, &newpos))
@@ -3440,7 +3440,7 @@ static PyObject *unicode_encode_call_errorhandler(const char *errors,
if (restuple == NULL)
return NULL;
if (!PyTuple_Check(restuple)) {
- PyErr_Format(PyExc_TypeError, &argparse[4]);
+ PyErr_SetString(PyExc_TypeError, &argparse[4]);
Py_DECREF(restuple);
return NULL;
}
@@ -4712,7 +4712,7 @@ static PyObject *unicode_translate_call_errorhandler(const char *errors,
if (restuple == NULL)
return NULL;
if (!PyTuple_Check(restuple)) {
- PyErr_Format(PyExc_TypeError, &argparse[4]);
+ PyErr_SetString(PyExc_TypeError, &argparse[4]);
Py_DECREF(restuple);
return NULL;
}