........
r69578 | georg.brandl | 2009-02-13 12:03:59 +0100 (Fr, 13 Feb 2009) | 1 line
#3694: add test for fix committed in r66693.
........
r69579 | georg.brandl | 2009-02-13 12:06:59 +0100 (Fr, 13 Feb 2009) | 2 lines
Fix warnings GCC emits where the argument of PyErr_Format is a single variable.
........
r69580 | georg.brandl | 2009-02-13 12:10:04 +0100 (Fr, 13 Feb 2009) | 2 lines
Fix warnings GCC emits where the argument of PyErr_Format is a single variable.
........
r69901 | georg.brandl | 2009-02-23 12:24:46 +0100 (Mo, 23 Feb 2009) | 2 lines
#5349: C++ pure virtuals can also have an implementation.
........
r69907 | georg.brandl | 2009-02-23 19:33:48 +0100 (Mo, 23 Feb 2009) | 1 line
Fix grammar.
........
r69994 | georg.brandl | 2009-02-26 18:36:26 +0100 (Do, 26 Feb 2009) | 1 line
Document that setting sys.py3kwarning wont do anything.
........
r70022 | georg.brandl | 2009-02-27 17:23:18 +0100 (Fr, 27 Feb 2009) | 1 line
#5361: fix typo.
........
r70023 | georg.brandl | 2009-02-27 17:39:26 +0100 (Fr, 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 17:52:55 +0100 (Fr, 27 Feb 2009) | 1 line
#5344: fix punctuation.
........
r70026 | georg.brandl | 2009-02-27 17:59:03 +0100 (Fr, 27 Feb 2009) | 1 line
#5365: add quick look conversion table for different time representations.
........
r70166 | georg.brandl | 2009-03-04 19:24:41 +0100 (Mi, 04 Mär 2009) | 2 lines
Remove obsolete stuff from string module docs.
........
r70273 | georg.brandl | 2009-03-09 15:25:07 +0100 (Mo, 09 Mär 2009) | 2 lines
#5458: add a note when we started to raise RuntimeErrors.
........
r70275 | georg.brandl | 2009-03-09 17:35:48 +0100 (Mo, 09 Mär 2009) | 2 lines
Add missing space.
........
r70342 | georg.brandl | 2009-03-13 20:03:58 +0100 (Fr, 13 Mär 2009) | 1 line
#5486: typos.
........
r70386 | georg.brandl | 2009-03-15 22:32:06 +0100 (So, 15 Mär 2009) | 1 line
#5496: fix docstring of lookup().
........
r70387 | georg.brandl | 2009-03-15 22:37:16 +0100 (So, 15 Mär 2009) | 1 line
#5493: clarify __nonzero__ docs.
........
r70389 | georg.brandl | 2009-03-15 22:43:38 +0100 (So, 15 Mär 2009) | 1 line
Fix a small nit in the error message if bool() falls back on __len__ and it returns the wrong type: it would tell the user that __nonzero__ should return bool or int.
........
r70390 | georg.brandl | 2009-03-15 22:44:43 +0100 (So, 15 Mär 2009) | 1 line
#5491: clarify nested() semantics.
........
r70392 | georg.brandl | 2009-03-15 22:46:00 +0100 (So, 15 Mär 2009) | 1 line
#5488: add missing struct member.
........
r70393 | georg.brandl | 2009-03-15 22:47:42 +0100 (So, 15 Mär 2009) | 1 line
#5478: fix copy-paste oversight in function signature.
........
r70395 | georg.brandl | 2009-03-15 22:51:48 +0100 (So, 15 Mär 2009) | 1 line
#5276: document IDLESTARTUP and .Idle.py.
........
r70397 | georg.brandl | 2009-03-15 22:53:56 +0100 (So, 15 Mär 2009) | 1 line
#5469: add with statement to list of name-binding constructs.
........
r70400 | georg.brandl | 2009-03-15 22:59:37 +0100 (So, 15 Mär 2009) | 3 lines
Fix markup in re docs and give a mail address in regex howto, so that
the recommendation to send suggestions to the author can be followed.
........
r70418 | georg.brandl | 2009-03-16 20:42:03 +0100 (Mo, 16 Mär 2009) | 1 line
Add token markup.
........
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;
python setup.py register -r other
-
Regular Expression HOWTO
****************************
-:Author: A.M. Kuchling
+:Author: A.M. Kuchling <amk@amk.ca>
:Release: 0.05
.. TODO:
$ 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
.. 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
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
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.
.. 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
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
^^^^^^^^^^^^^^^^^^
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."
+------------+-----------------------------------------------------+-------+
| ``'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) |
+------------+-----------------------------------------------------+-------+
.. 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
.. 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:
.. 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"
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
.. 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
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()
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:
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.
=========== ===========
"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)
=========== ===========
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
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.
.. 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)
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.
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
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)
"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)
#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
#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
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) {
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) {
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;
}
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))
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;
}
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;
}