Commit 7baf625b authored by Georg Brandl's avatar Georg Brandl

Merged revisions 74613,74615,74619-74620,74622 via svnmerge from

svn+ssh://svn.python.org/python/branches/py3k

................
  r74613 | georg.brandl | 2009-09-01 09:34:27 +0200 (Di, 01 Sep 2009) | 1 line

  #6814: remove traces of xrange().
................
  r74615 | georg.brandl | 2009-09-01 09:42:40 +0200 (Di, 01 Sep 2009) | 9 lines

  Recorded merge of revisions 74614 via svnmerge from
  svn+ssh://pythondev@svn.python.org/python/trunk

  ........
    r74614 | georg.brandl | 2009-09-01 09:40:54 +0200 (Di, 01 Sep 2009) | 1 line

    #6813: better documentation for numberless string formats.
  ........
................
  r74619 | georg.brandl | 2009-09-01 10:02:03 +0200 (Di, 01 Sep 2009) | 1 line

  #6754: remove old struct member nb_inplace_divide.
................
  r74620 | georg.brandl | 2009-09-01 10:03:26 +0200 (Di, 01 Sep 2009) | 1 line

  #6732: fix return value of module init function in example.
................
  r74622 | georg.brandl | 2009-09-01 10:11:14 +0200 (Di, 01 Sep 2009) | 73 lines

  Merged revisions 74542,74544-74548,74550,74554-74555,74578,74588,74590,74603,74616-74618,74621 via svnmerge from
  svn+ssh://pythondev@svn.python.org/python/trunk

  ........
    r74542 | georg.brandl | 2009-08-23 23:28:56 +0200 (So, 23 Aug 2009) | 1 line

    Restore alphabetic order.
  ........
    r74544 | georg.brandl | 2009-08-24 19:12:30 +0200 (Mo, 24 Aug 2009) | 1 line

    #6775: fix python.org URLs in README.
  ........
    r74545 | georg.brandl | 2009-08-24 19:14:29 +0200 (Mo, 24 Aug 2009) | 1 line

    #6772: mention utf-8 as utf8 alias.
  ........
    r74546 | georg.brandl | 2009-08-24 19:20:40 +0200 (Mo, 24 Aug 2009) | 1 line

    #6725: spell "namespace" consistently.
  ........
    r74547 | georg.brandl | 2009-08-24 19:22:05 +0200 (Mo, 24 Aug 2009) | 1 line

    #6718: fix example.
  ........
    r74548 | georg.brandl | 2009-08-24 19:24:27 +0200 (Mo, 24 Aug 2009) | 1 line

    #6677: mention "deleting" as an alias for removing files.
  ........
    r74550 | georg.brandl | 2009-08-24 19:48:40 +0200 (Mo, 24 Aug 2009) | 1 line

    #6677: note that rmdir only removes empty directories.
  ........
    r74554 | georg.brandl | 2009-08-27 20:59:02 +0200 (Do, 27 Aug 2009) | 1 line

    Typo fix.
  ........
    r74555 | georg.brandl | 2009-08-27 21:02:43 +0200 (Do, 27 Aug 2009) | 1 line

    #6787: reference fix.
  ........
    r74578 | tarek.ziade | 2009-08-29 15:33:21 +0200 (Sa, 29 Aug 2009) | 1 line

    fixed #6801: symmetric_difference_update also accepts pipe
  ........
    r74588 | georg.brandl | 2009-08-30 10:35:01 +0200 (So, 30 Aug 2009) | 1 line

    #6803: fix old name.
  ........
    r74590 | georg.brandl | 2009-08-30 13:51:53 +0200 (So, 30 Aug 2009) | 1 line

    #6801: fix copy-paste oversight.
  ........
    r74603 | georg.brandl | 2009-08-31 08:38:29 +0200 (Mo, 31 Aug 2009) | 1 line

    other -> others where multiple arguments are accepted.
  ........
    r74616 | georg.brandl | 2009-09-01 09:46:26 +0200 (Di, 01 Sep 2009) | 1 line

    #6808: clarification.
  ........
    r74617 | georg.brandl | 2009-09-01 09:53:37 +0200 (Di, 01 Sep 2009) | 1 line

    #6765: hint that log(x, base) is not very sophisticated.
  ........
    r74618 | georg.brandl | 2009-09-01 10:00:47 +0200 (Di, 01 Sep 2009) | 1 line

    #6810: add a link to the section about frame objects instead of just a description where to find it.
  ........
    r74621 | georg.brandl | 2009-09-01 10:06:03 +0200 (Di, 01 Sep 2009) | 1 line

    #6638: fix wrong parameter name and markup a class.
  ........
................
parent 2686039b
...@@ -1052,7 +1052,6 @@ Number Object Structures ...@@ -1052,7 +1052,6 @@ Number Object Structures
binaryfunc nb_inplace_add; binaryfunc nb_inplace_add;
binaryfunc nb_inplace_subtract; binaryfunc nb_inplace_subtract;
binaryfunc nb_inplace_multiply; binaryfunc nb_inplace_multiply;
binaryfunc nb_inplace_divide;
binaryfunc nb_inplace_remainder; binaryfunc nb_inplace_remainder;
ternaryfunc nb_inplace_power; ternaryfunc nb_inplace_power;
binaryfunc nb_inplace_lshift; binaryfunc nb_inplace_lshift;
......
...@@ -98,17 +98,17 @@ def test(): ...@@ -98,17 +98,17 @@ def test():
t = time.time() t = time.time()
A = list(map(pow3, range(N))) A = list(map(pow3, range(N)))
print('\tmap(pow3, xrange(%d)):\n\t\t%s seconds' % \ print('\tmap(pow3, range(%d)):\n\t\t%s seconds' % \
(N, time.time() - t)) (N, time.time() - t))
t = time.time() t = time.time()
B = pool.map(pow3, range(N)) B = pool.map(pow3, range(N))
print('\tpool.map(pow3, xrange(%d)):\n\t\t%s seconds' % \ print('\tpool.map(pow3, range(%d)):\n\t\t%s seconds' % \
(N, time.time() - t)) (N, time.time() - t))
t = time.time() t = time.time()
C = list(pool.imap(pow3, range(N), chunksize=N//8)) C = list(pool.imap(pow3, range(N), chunksize=N//8))
print('\tlist(pool.imap(pow3, xrange(%d), chunksize=%d)):\n\t\t%s' \ print('\tlist(pool.imap(pow3, range(%d), chunksize=%d)):\n\t\t%s' \
' seconds' % (N, N//8, time.time() - t)) ' seconds' % (N, N//8, time.time() - t))
assert A == B == C, (len(A), len(B), len(C)) assert A == B == C, (len(A), len(B), len(C))
......
...@@ -95,4 +95,5 @@ PyInit_shoddy(void) ...@@ -95,4 +95,5 @@ PyInit_shoddy(void)
Py_INCREF(&ShoddyType); Py_INCREF(&ShoddyType);
PyModule_AddObject(m, "Shoddy", (PyObject *) &ShoddyType); PyModule_AddObject(m, "Shoddy", (PyObject *) &ShoddyType);
return m;
} }
...@@ -147,7 +147,7 @@ In addition to these methods, lock objects can also be used via the ...@@ -147,7 +147,7 @@ In addition to these methods, lock objects can also be used via the
module is available, interrupts always go to the main thread.) module is available, interrupts always go to the main thread.)
* Calling :func:`sys.exit` or raising the :exc:`SystemExit` exception is * Calling :func:`sys.exit` or raising the :exc:`SystemExit` exception is
equivalent to calling :func:`exit`. equivalent to calling :func:`_thread.exit`.
* Not all built-in functions that may block waiting for I/O allow other threads * Not all built-in functions that may block waiting for I/O allow other threads
to run. (The most popular ones (:func:`time.sleep`, :meth:`file.read`, to run. (The most popular ones (:func:`time.sleep`, :meth:`file.read`,
......
...@@ -891,7 +891,8 @@ or with dictionaries as mapping tables. The following table lists the codecs by ...@@ -891,7 +891,8 @@ or with dictionaries as mapping tables. The following table lists the codecs by
name, together with a few common aliases, and the languages for which the name, together with a few common aliases, and the languages for which the
encoding is likely used. Neither the list of aliases nor the list of languages encoding is likely used. Neither the list of aliases nor the list of languages
is meant to be exhaustive. Notice that spelling alternatives that only differ in is meant to be exhaustive. Notice that spelling alternatives that only differ in
case or use a hyphen instead of an underscore are also valid aliases. case or use a hyphen instead of an underscore are also valid aliases; therefore,
e.g. ``'utf-8'`` is a valid alias for the ``'utf_8'`` codec.
Many of the character sets support the same languages. They vary in individual Many of the character sets support the same languages. They vary in individual
characters (e.g. whether the EURO SIGN is supported or not), and in the characters (e.g. whether the EURO SIGN is supported or not), and in the
......
...@@ -1592,7 +1592,7 @@ type and the argument types of the function. ...@@ -1592,7 +1592,7 @@ type and the argument types of the function.
The returned function prototype creates functions that use the standard C The returned function prototype creates functions that use the standard C
calling convention. The function will release the GIL during the call. If calling convention. The function will release the GIL during the call. If
*use_errno* is set to True, the ctypes private copy of the system *use_errno* is set to True, the ctypes private copy of the system
:data:`errno` variable is exchanged with the real :data:`errno` value bafore :data:`errno` variable is exchanged with the real :data:`errno` value before
and after the call; *use_last_error* does the same for the Windows error and after the call; *use_last_error* does the same for the Windows error
code. code.
......
...@@ -150,8 +150,10 @@ Power and logarithmic functions ...@@ -150,8 +150,10 @@ Power and logarithmic functions
.. function:: log(x[, base]) .. function:: log(x[, base])
Return the logarithm of *x* to the given *base*. If the *base* is not specified, With one argument, return the natural logarithm of *x* (to base *e*).
return the natural logarithm of *x* (that is, the logarithm to base *e*).
With two arguments, return the logarithm of *x* to the given *base*,
calculated as ``log(x)/log(base)``.
.. function:: log1p(x) .. function:: log1p(x)
...@@ -162,7 +164,8 @@ Power and logarithmic functions ...@@ -162,7 +164,8 @@ Power and logarithmic functions
.. function:: log10(x) .. function:: log10(x)
Return the base-10 logarithm of *x*. Return the base-10 logarithm of *x*. This is usually more accurate
than ``log(x, 10)``.
.. function:: pow(x, y) .. function:: pow(x, y)
......
...@@ -1166,19 +1166,20 @@ where the input parameters are ...@@ -1166,19 +1166,20 @@ where the input parameters are
the list of arguments to process (default: ``sys.argv[1:]``) the list of arguments to process (default: ``sys.argv[1:]``)
``values`` ``values``
object to store option arguments in (default: a new instance of optparse.Values) object to store option arguments in (default: a new instance of
:class:`optparse.Values`)
and the return values are and the return values are
``options`` ``options``
the same object that was passed in as ``options``, or the optparse.Values the same object that was passed in as ``values``, or the optparse.Values
instance created by :mod:`optparse` instance created by :mod:`optparse`
``args`` ``args``
the leftover positional arguments after all options have been processed the leftover positional arguments after all options have been processed
The most common usage is to supply neither keyword argument. If you supply The most common usage is to supply neither keyword argument. If you supply
``options``, it will be modified with repeated ``setattr()`` calls (roughly one ``values``, it will be modified with repeated ``setattr()`` calls (roughly one
for every option argument stored to an option destination) and returned by for every option argument stored to an option destination) and returned by
:meth:`parse_args`. :meth:`parse_args`.
......
...@@ -396,7 +396,7 @@ by file descriptors. ...@@ -396,7 +396,7 @@ by file descriptors.
Close all file descriptors from *fd_low* (inclusive) to *fd_high* (exclusive), Close all file descriptors from *fd_low* (inclusive) to *fd_high* (exclusive),
ignoring errors. Availability: Unix, Windows. Equivalent to:: ignoring errors. Availability: Unix, Windows. Equivalent to::
for fd in xrange(fd_low, fd_high): for fd in range(fd_low, fd_high):
try: try:
os.close(fd) os.close(fd)
except OSError: except OSError:
...@@ -947,12 +947,12 @@ Files and Directories ...@@ -947,12 +947,12 @@ Files and Directories
.. function:: remove(path) .. function:: remove(path)
Remove the file *path*. If *path* is a directory, :exc:`OSError` is raised; see Remove (delete) the file *path*. If *path* is a directory, :exc:`OSError` is
:func:`rmdir` below to remove a directory. This is identical to the raised; see :func:`rmdir` below to remove a directory. This is identical to
:func:`unlink` function documented below. On Windows, attempting to remove a the :func:`unlink` function documented below. On Windows, attempting to
file that is in use causes an exception to be raised; on Unix, the directory remove a file that is in use causes an exception to be raised; on Unix, the
entry is removed but the storage allocated to the file is not made available directory entry is removed but the storage allocated to the file is not made
until the original file is no longer in use. Availability: Unix, available until the original file is no longer in use. Availability: Unix,
Windows. Windows.
...@@ -997,7 +997,10 @@ Files and Directories ...@@ -997,7 +997,10 @@ Files and Directories
.. function:: rmdir(path) .. function:: rmdir(path)
Remove the directory *path*. Availability: Unix, Windows. Remove (delete) the directory *path*. Only works when the directory is
empty, otherwise, :exc:`OSError` is raised. In order to remove whole
directory trees, :func:`shutil.rmtree` can be used. Availability: Unix,
Windows.
.. function:: stat(path) .. function:: stat(path)
...@@ -1099,9 +1102,9 @@ Files and Directories ...@@ -1099,9 +1102,9 @@ Files and Directories
.. function:: unlink(path) .. function:: unlink(path)
Remove the file *path*. This is the same function as :func:`remove`; the Remove (delete) the file *path*. This is the same function as
:func:`unlink` name is its traditional Unix name. Availability: Unix, :func:`remove`; the :func:`unlink` name is its traditional Unix
Windows. name. Availability: Unix, Windows.
.. function:: utime(path, times) .. function:: utime(path, times)
......
...@@ -205,9 +205,9 @@ The :mod:`signal` module defines the following functions: ...@@ -205,9 +205,9 @@ The :mod:`signal` module defines the following functions:
exception to be raised. exception to be raised.
The *handler* is called with two arguments: the signal number and the current The *handler* is called with two arguments: the signal number and the current
stack frame (``None`` or a frame object; for a description of frame objects, see stack frame (``None`` or a frame object; for a description of frame objects,
the reference manual section on the standard type hierarchy or see the attribute see the :ref:`description in the type hierarchy <frame-objects>` or see the
descriptions in the :mod:`inspect` module). attribute descriptions in the :mod:`inspect` module).
.. _signal-example: .. _signal-example:
......
...@@ -1724,12 +1724,12 @@ The constructors for both classes work the same: ...@@ -1724,12 +1724,12 @@ The constructors for both classes work the same:
.. method:: update(other, ...) .. method:: update(other, ...)
set |= other | ... set |= other | ...
Update the set, adding elements from *other*. Update the set, adding elements from all others.
.. method:: intersection_update(other, ...) .. method:: intersection_update(other, ...)
set &= other & ... set &= other & ...
Update the set, keeping only elements found in it and *other*. Update the set, keeping only elements found in it and all others.
.. method:: difference_update(other, ...) .. method:: difference_update(other, ...)
set -= other | ... set -= other | ...
...@@ -2478,9 +2478,9 @@ decimal arithmetic context. The specific types are not treated specially beyond ...@@ -2478,9 +2478,9 @@ decimal arithmetic context. The specific types are not treated specially beyond
their implementation of the context management protocol. See the their implementation of the context management protocol. See the
:mod:`contextlib` module for some examples. :mod:`contextlib` module for some examples.
Python's :term:`generator`\s and the ``contextlib.contextfactory`` :term:`decorator` Python's :term:`generator`\s and the ``contextlib.contextmanager`` :term:`decorator`
provide a convenient way to implement these protocols. If a generator function is provide a convenient way to implement these protocols. If a generator function is
decorated with the ``contextlib.contextfactory`` decorator, it will return a decorated with the ``contextlib.contextmanager`` decorator, it will return a
context manager implementing the necessary :meth:`__enter__` and context manager implementing the necessary :meth:`__enter__` and
:meth:`__exit__` methods, rather than the iterator produced by an undecorated :meth:`__exit__` methods, rather than the iterator produced by an undecorated
generator function. generator function.
......
...@@ -194,7 +194,7 @@ literal text, it can be escaped by doubling: ``{{`` and ``}}``. ...@@ -194,7 +194,7 @@ literal text, it can be escaped by doubling: ``{{`` and ``}}``.
The grammar for a replacement field is as follows: The grammar for a replacement field is as follows:
.. productionlist:: sf .. productionlist:: sf
replacement_field: "{" `field_name` ["!" `conversion`] [":" `format_spec`] "}" replacement_field: "{" [`field_name`] ["!" `conversion`] [":" `format_spec`] "}"
field_name: arg_name ("." `attribute_name` | "[" `element_index` "]")* field_name: arg_name ("." `attribute_name` | "[" `element_index` "]")*
arg_name: (`identifier` | `integer`)? arg_name: (`identifier` | `integer`)?
attribute_name: `identifier` attribute_name: `identifier`
...@@ -202,7 +202,7 @@ The grammar for a replacement field is as follows: ...@@ -202,7 +202,7 @@ The grammar for a replacement field is as follows:
conversion: "r" | "s" | "a" conversion: "r" | "s" | "a"
format_spec: <described in the next section> format_spec: <described in the next section>
In less formal terms, the replacement field starts with a *field_name* that specifies In less formal terms, the replacement field can start with a *field_name* that specifies
the object whose value is to be formatted and inserted the object whose value is to be formatted and inserted
into the output instead of the replacement field. into the output instead of the replacement field.
The *field_name* is optionally followed by a *conversion* field, which is The *field_name* is optionally followed by a *conversion* field, which is
...@@ -223,7 +223,7 @@ Some simple format string examples:: ...@@ -223,7 +223,7 @@ Some simple format string examples::
"First, thou shalt count to {0}" # References first positional argument "First, thou shalt count to {0}" # References first positional argument
"Bring me a {}" # Implicitly references the first positional argument "Bring me a {}" # Implicitly references the first positional argument
"From {} to {}" # Same as "From {0] to {1}" "From {} to {}" # Same as "From {0} to {1}"
"My quest is {name}" # References keyword argument 'name' "My quest is {name}" # References keyword argument 'name'
"Weight in tons {0.weight}" # 'weight' attribute of first positional arg "Weight in tons {0.weight}" # 'weight' attribute of first positional arg
"Units destroyed: {players[0]}" # First element of keyword argument 'players'. "Units destroyed: {players[0]}" # First element of keyword argument 'players'.
...@@ -243,6 +243,7 @@ Some examples:: ...@@ -243,6 +243,7 @@ Some examples::
"Harold's a clever {0!s}" # Calls str() on the argument first "Harold's a clever {0!s}" # Calls str() on the argument first
"Bring out the holy {name!r}" # Calls repr() on the argument first "Bring out the holy {name!r}" # Calls repr() on the argument first
"More {!a}" # Calls ascii() on the argument first
The *format_spec* field contains a specification of how the value should be The *format_spec* field contains a specification of how the value should be
presented, including such details as field width, alignment, padding, decimal presented, including such details as field width, alignment, padding, decimal
......
...@@ -864,6 +864,8 @@ Internal types ...@@ -864,6 +864,8 @@ Internal types
If a code object represents a function, the first item in :attr:`co_consts` is If a code object represents a function, the first item in :attr:`co_consts` is
the documentation string of the function, or ``None`` if undefined. the documentation string of the function, or ``None`` if undefined.
.. _frame-objects:
Frame objects Frame objects
.. index:: object: frame .. index:: object: frame
......
...@@ -51,8 +51,8 @@ need for two different argument passing mechanisms as in Pascal. ...@@ -51,8 +51,8 @@ need for two different argument passing mechanisms as in Pascal.
.. _tut-scopes: .. _tut-scopes:
Python Scopes and Name Spaces Python Scopes and Namespaces
============================= ============================
Before introducing classes, I first have to tell you something about Python's Before introducing classes, I first have to tell you something about Python's
scope rules. Class definitions play some neat tricks with namespaces, and you scope rules. Class definitions play some neat tricks with namespaces, and you
...@@ -87,7 +87,7 @@ attributes is possible. Module attributes are writable: you can write ...@@ -87,7 +87,7 @@ attributes is possible. Module attributes are writable: you can write
:keyword:`del` statement. For example, ``del modname.the_answer`` will remove :keyword:`del` statement. For example, ``del modname.the_answer`` will remove
the attribute :attr:`the_answer` from the object named by ``modname``. the attribute :attr:`the_answer` from the object named by ``modname``.
Name spaces are created at different moments and have different lifetimes. The Namespaces are created at different moments and have different lifetimes. The
namespace containing the built-in names is created when the Python interpreter namespace containing the built-in names is created when the Python interpreter
starts up, and is never deleted. The global namespace for a module is created starts up, and is never deleted. The global namespace for a module is created
when the module definition is read in; normally, module namespaces also last when the module definition is read in; normally, module namespaces also last
...@@ -381,9 +381,9 @@ data attribute, its class is searched. If the name denotes a valid class ...@@ -381,9 +381,9 @@ data attribute, its class is searched. If the name denotes a valid class
attribute that is a function object, a method object is created by packing attribute that is a function object, a method object is created by packing
(pointers to) the instance object and the function object just found together in (pointers to) the instance object and the function object just found together in
an abstract object: this is the method object. When the method object is called an abstract object: this is the method object. When the method object is called
with an argument list, it is unpacked again, a new argument list is constructed with an argument list, a new argument list is constructed from the instance
from the instance object and the original argument list, and the function object object and the argument list, and the function object is called with this new
is called with this new argument list. argument list.
.. _tut-remarks: .. _tut-remarks:
......
...@@ -126,12 +126,12 @@ with zeros. It understands about plus and minus signs:: ...@@ -126,12 +126,12 @@ with zeros. It understands about plus and minus signs::
Basic usage of the :meth:`str.format` method looks like this:: Basic usage of the :meth:`str.format` method looks like this::
>>> print('We are the {0} who say "{1}!"'.format('knights', 'Ni')) >>> print('We are the {} who say "{}!"'.format('knights', 'Ni'))
We are the knights who say "Ni!" We are the knights who say "Ni!"
The brackets and characters within them (called format fields) are replaced with The brackets and characters within them (called format fields) are replaced with
the objects passed into the :meth:`~str.format` method. The number in the the objects passed into the :meth:`~str.format` method. A number in the
brackets refers to the position of the object passed into the brackets can be used to refer to the position of the object passed into the
:meth:`~str.format` method. :: :meth:`~str.format` method. ::
>>> print('{0} and {1}'.format('spam', 'eggs')) >>> print('{0} and {1}'.format('spam', 'eggs'))
...@@ -152,6 +152,15 @@ Positional and keyword arguments can be arbitrarily combined:: ...@@ -152,6 +152,15 @@ Positional and keyword arguments can be arbitrarily combined::
other='Georg')) other='Georg'))
The story of Bill, Manfred, and Georg. The story of Bill, Manfred, and Georg.
``'!a'`` (apply :func:`ascii`), ``'!s'`` (apply :func:`str`) and ``'!r'``
(apply :func:`repr`) can be used to convert the value before it is formatted::
>>> import math
>>> print('The value of PI is approximately {}.'.format(math.pi))
The value of PI is approximately 3.14159265359.
>>> print('The value of PI is approximately {!r}.'.format(math.pi))
The value of PI is approximately 3.141592653589793.
An optional ``':'`` and format specifier can follow the field name. This allows An optional ``':'`` and format specifier can follow the field name. This allows
greater control over how the value is formatted. The following example greater control over how the value is formatted. The following example
truncates Pi to three places after the decimal. truncates Pi to three places after the decimal.
......
...@@ -789,6 +789,7 @@ Mats Wichmann ...@@ -789,6 +789,7 @@ Mats Wichmann
Truida Wiedijk Truida Wiedijk
Felix Wiemann Felix Wiemann
Gerry Wiener Gerry Wiener
Frank Wierzbicki
Bryce "Zooko" Wilcox-O'Hearn Bryce "Zooko" Wilcox-O'Hearn
John Williams John Williams
Sue Williams Sue Williams
......
...@@ -1462,6 +1462,9 @@ Build ...@@ -1462,6 +1462,9 @@ Build
- Issue #4204: Fixed module build errors on FreeBSD 4. - Issue #4204: Fixed module build errors on FreeBSD 4.
- Issue #6801 : symmetric_difference_update also accepts |.
Thanks to Carl Chenet.
C-API C-API
----- -----
......
...@@ -606,7 +606,7 @@ from time import clock as now ...@@ -606,7 +606,7 @@ from time import clock as now
def fill(n): def fill(n):
from random import random from random import random
return [random() for i in xrange(n)] return [random() for i in range(n)]
def mycmp(x, y): def mycmp(x, y):
global ncmp global ncmp
......
...@@ -431,7 +431,7 @@ PyTypeObject PyRangeIter_Type = { ...@@ -431,7 +431,7 @@ PyTypeObject PyRangeIter_Type = {
rangeiter_new, /* tp_new */ rangeiter_new, /* tp_new */
}; };
/* Return number of items in range/xrange (lo, hi, step). step > 0 /* Return number of items in range (lo, hi, step). step > 0
* required. Return a value < 0 if & only if the true value is too * required. Return a value < 0 if & only if the true value is too
* large to fit in a signed long. * large to fit in a signed long.
*/ */
......
...@@ -260,10 +260,7 @@ class IntegerCounting(Test): ...@@ -260,10 +260,7 @@ class IntegerCounting(Test):
# Run test rounds # Run test rounds
# #
# NOTE: Use xrange() for all test loops unless you want to face for i in range(self.rounds):
# a 20MB process !
#
for i in xrange(self.rounds):
# Repeat the operations per round to raise the run-time # Repeat the operations per round to raise the run-time
# per operation significantly above the noise level of the # per operation significantly above the noise level of the
...@@ -305,7 +302,7 @@ class IntegerCounting(Test): ...@@ -305,7 +302,7 @@ class IntegerCounting(Test):
a = 1 a = 1
# Run test rounds (without actually doing any operation) # Run test rounds (without actually doing any operation)
for i in xrange(self.rounds): for i in range(self.rounds):
# Skip the actual execution of the operations, since we # Skip the actual execution of the operations, since we
# only want to measure the test's administration overhead. # only want to measure the test's administration overhead.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment