summaryrefslogtreecommitdiffstats
path: root/Doc
diff options
context:
space:
mode:
authorGeorg Brandl <georg@python.org>2008-07-16 12:55:28 (GMT)
committerGeorg Brandl <georg@python.org>2008-07-16 12:55:28 (GMT)
commit2ee470f7f99f78348baa1e7a13007540d89d9c92 (patch)
treec8c65be74a06e665375c0d0de7ee7514e61cdb49 /Doc
parent38bbc4888a1fcbcedd7eb8b83ac4b070f2aeb5f2 (diff)
downloadcpython-2ee470f7f99f78348baa1e7a13007540d89d9c92.zip
cpython-2ee470f7f99f78348baa1e7a13007540d89d9c92.tar.gz
cpython-2ee470f7f99f78348baa1e7a13007540d89d9c92.tar.bz2
Merged revisions 64722,64729,64753,64845-64846,64849,64871,64880-64882,64885,64888,64897,64900-64901,64915,64926-64929,64938-64941,64944,64961,64966,64973 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk ........ r64722 | georg.brandl | 2008-07-05 12:13:36 +0200 (Sat, 05 Jul 2008) | 4 lines #2663: support an *ignore* argument to shutil.copytree(). Patch by Tarek Ziade. This is a new feature, but Barry authorized adding it in the beta period. ........ r64729 | mark.dickinson | 2008-07-05 13:33:52 +0200 (Sat, 05 Jul 2008) | 5 lines Issue 3188: accept float('infinity') as well as float('inf'). This makes the float constructor behave in the same way as specified by various other language standards, including C99, IEEE 754r, and the IBM Decimal standard. ........ r64753 | gregory.p.smith | 2008-07-06 05:35:58 +0200 (Sun, 06 Jul 2008) | 4 lines - Issue #2862: Make int and float freelist management consistent with other freelists. Changes their CompactFreeList apis into ClearFreeList apis and calls them via gc.collect(). ........ r64845 | raymond.hettinger | 2008-07-10 16:03:19 +0200 (Thu, 10 Jul 2008) | 1 line Issue 3301: Bisect functions behaved badly when lo was negative. ........ r64846 | raymond.hettinger | 2008-07-10 16:34:57 +0200 (Thu, 10 Jul 2008) | 1 line Issue 3285: Fractions from_float() and from_decimal() accept Integral arguments. ........ r64849 | andrew.kuchling | 2008-07-10 16:43:31 +0200 (Thu, 10 Jul 2008) | 1 line Wording changes ........ r64871 | raymond.hettinger | 2008-07-11 14:00:21 +0200 (Fri, 11 Jul 2008) | 1 line Add cautionary note on the use of PySequence_Fast_ITEMS. ........ r64880 | amaury.forgeotdarc | 2008-07-11 23:28:25 +0200 (Fri, 11 Jul 2008) | 5 lines #3317 in zipfile module, restore the previous names of global variables: some applications relied on them. Also remove duplicated lines. ........ r64881 | amaury.forgeotdarc | 2008-07-11 23:45:06 +0200 (Fri, 11 Jul 2008) | 3 lines #3342: In tracebacks, printed source lines were not indented since r62555. #3343: Py_DisplaySourceLine should be a private function. Rename it to _Py_DisplaySourceLine. ........ r64882 | josiah.carlson | 2008-07-12 00:17:14 +0200 (Sat, 12 Jul 2008) | 2 lines Fix for the AttributeError in test_asynchat. ........ r64885 | josiah.carlson | 2008-07-12 01:26:59 +0200 (Sat, 12 Jul 2008) | 2 lines Fixed test for asyncore. ........ r64888 | matthias.klose | 2008-07-12 09:51:48 +0200 (Sat, 12 Jul 2008) | 2 lines - Fix bashisms in Tools/faqwiz/move-faqwiz.sh ........ r64897 | benjamin.peterson | 2008-07-12 22:16:19 +0200 (Sat, 12 Jul 2008) | 1 line fix various doc typos #3320 ........ r64900 | alexandre.vassalotti | 2008-07-13 00:06:53 +0200 (Sun, 13 Jul 2008) | 2 lines Fixed typo. ........ r64901 | benjamin.peterson | 2008-07-13 01:41:19 +0200 (Sun, 13 Jul 2008) | 1 line #1778443 robotparser fixes from Aristotelis Mikropoulos ........ r64915 | nick.coghlan | 2008-07-13 16:52:36 +0200 (Sun, 13 Jul 2008) | 1 line Fix issue 3221 by emitting a RuntimeWarning instead of raising SystemError when the parent module can't be found during an absolute import (likely due to non-PEP 361 aware code which sets a module level __package__ attribute) ........ r64926 | martin.v.loewis | 2008-07-13 22:31:49 +0200 (Sun, 13 Jul 2008) | 2 lines Add turtle into the module index. ........ r64927 | alexandre.vassalotti | 2008-07-13 22:42:44 +0200 (Sun, 13 Jul 2008) | 3 lines Issue #3274: Use a less common identifier for the temporary variable in Py_CLEAR(). ........ r64928 | andrew.kuchling | 2008-07-13 23:43:25 +0200 (Sun, 13 Jul 2008) | 1 line Re-word ........ r64929 | andrew.kuchling | 2008-07-13 23:43:52 +0200 (Sun, 13 Jul 2008) | 1 line Add various items; move ctypes items into a subsection of their own ........ r64938 | andrew.kuchling | 2008-07-14 02:35:32 +0200 (Mon, 14 Jul 2008) | 1 line Typo fixes ........ r64939 | andrew.kuchling | 2008-07-14 02:40:55 +0200 (Mon, 14 Jul 2008) | 1 line Typo fix ........ r64940 | andrew.kuchling | 2008-07-14 03:18:16 +0200 (Mon, 14 Jul 2008) | 1 line Typo fix ........ r64941 | andrew.kuchling | 2008-07-14 03:18:31 +0200 (Mon, 14 Jul 2008) | 1 line Expand the multiprocessing section ........ r64944 | gregory.p.smith | 2008-07-14 08:06:48 +0200 (Mon, 14 Jul 2008) | 7 lines Fix posix.fork1() / os.fork1() to only call PyOS_AfterFork() in the child process rather than both parent and child. Does anyone actually use fork1()? It appears to be a Solaris thing but if Python is built with pthreads on Solaris, fork1() and fork() should be the same. ........ r64961 | jesse.noller | 2008-07-15 15:47:33 +0200 (Tue, 15 Jul 2008) | 1 line multiprocessing/connection.py patch to remove fqdn oddness for issue 3270 ........ r64966 | nick.coghlan | 2008-07-15 17:40:22 +0200 (Tue, 15 Jul 2008) | 1 line Add missing NEWS entry for r64962 ........ r64973 | jesse.noller | 2008-07-15 20:29:18 +0200 (Tue, 15 Jul 2008) | 1 line Revert 3270 patch: self._address is in pretty widespread use, need to revisit ........
Diffstat (limited to 'Doc')
-rw-r--r--Doc/c-api/conversion.rst8
-rw-r--r--Doc/c-api/float.rst7
-rw-r--r--Doc/c-api/sequence.rst4
-rw-r--r--Doc/extending/windows.rst2
-rw-r--r--Doc/library/__future__.rst2
-rw-r--r--Doc/library/ctypes.rst4
-rw-r--r--Doc/library/ftplib.rst2
-rw-r--r--Doc/library/functions.rst1
-rw-r--r--Doc/library/gc.rst5
-rw-r--r--Doc/library/multiprocessing.rst21
-rw-r--r--Doc/library/operator.rst2
-rw-r--r--Doc/library/select.rst4
-rw-r--r--Doc/library/stdtypes.rst2
-rw-r--r--Doc/library/string.rst2
-rw-r--r--Doc/library/sys.rst13
-rw-r--r--Doc/library/tkinter.tix.rst4
-rw-r--r--Doc/library/tkinter.turtle.rst8
-rw-r--r--Doc/library/urllib.request.rst2
-rw-r--r--Doc/library/wsgiref.rst2
-rw-r--r--Doc/library/xmlrpc.client.rst4
-rw-r--r--Doc/tutorial/stdlib2.rst2
-rw-r--r--Doc/using/windows.rst4
-rw-r--r--Doc/whatsnew/2.6.rst200
23 files changed, 227 insertions, 78 deletions
diff --git a/Doc/c-api/conversion.rst b/Doc/c-api/conversion.rst
index f926094..b71283b 100644
--- a/Doc/c-api/conversion.rst
+++ b/Doc/c-api/conversion.rst
@@ -83,11 +83,11 @@ The following functions provide locale-independent string to number conversions.
.. cfunction:: char * PyOS_stricmp(char *s1, char *s2)
- Case insensitive comparison of strings. The functions works almost
- identical to :cfunc:`strcmp` except that it ignores the case.
+ Case insensitive comparison of strings. The function works almost
+ identically to :cfunc:`strcmp` except that it ignores the case.
.. cfunction:: char * PyOS_strnicmp(char *s1, char *s2, Py_ssize_t size)
- Case insensitive comparison of strings. The functions works almost
- identical to :cfunc:`strncmp` except that it ignores the case.
+ Case insensitive comparison of strings. The function works almost
+ identically to :cfunc:`strncmp` except that it ignores the case.
diff --git a/Doc/c-api/float.rst b/Doc/c-api/float.rst
index 8fff0d0..77a8b83 100644
--- a/Doc/c-api/float.rst
+++ b/Doc/c-api/float.rst
@@ -73,8 +73,7 @@ Floating Point Objects
Return the minimum normalized positive float *DBL_MIN* as C :ctype:`double`.
-.. cfunction:: void PyFloat_CompactFreeList(size_t *bc, size_t *bf, size_t *sum)
+.. cfunction:: int PyFloat_ClearFreeList(void)
- Compact the float free list. *bc* is the number of allocated blocks before
- blocks are freed, *bf* is the number of freed blocks and *sum* is the number
- of remaining objects in the blocks.
+ Clear the float free list. Return the number of items that could not
+ be freed.
diff --git a/Doc/c-api/sequence.rst b/Doc/c-api/sequence.rst
index 6d3ef71..0ebc0f3 100644
--- a/Doc/c-api/sequence.rst
+++ b/Doc/c-api/sequence.rst
@@ -143,6 +143,10 @@ Sequence Protocol
Return the underlying array of PyObject pointers. Assumes that *o* was returned
by :cfunc:`PySequence_Fast` and *o* is not *NULL*.
+
+ Note, if a list gets resized, the reallocation may relocate the items array.
+ So, only use the underlying array pointer in contexts where the sequence
+ cannot change.
.. cfunction:: PyObject* PySequence_ITEM(PyObject *o, Py_ssize_t i)
diff --git a/Doc/extending/windows.rst b/Doc/extending/windows.rst
index a0782a7..1811277 100644
--- a/Doc/extending/windows.rst
+++ b/Doc/extending/windows.rst
@@ -23,7 +23,7 @@ C++.
This chapter mentions a number of filenames that include an encoded Python
version number. These filenames are represented with the version number shown
- as ``XY``; in practive, ``'X'`` will be the major version number and ``'Y'``
+ as ``XY``; in practice, ``'X'`` will be the major version number and ``'Y'``
will be the minor version number of the Python release you're working with. For
example, if you are using Python 2.2.1, ``XY`` will actually be ``22``.
diff --git a/Doc/library/__future__.rst b/Doc/library/__future__.rst
index e2349cc..d6f82a3 100644
--- a/Doc/library/__future__.rst
+++ b/Doc/library/__future__.rst
@@ -16,7 +16,7 @@
* To document when incompatible changes were introduced, and when they will be
--- or were --- made mandatory. This is a form of executable documentation, and
- can be inspected programatically via importing :mod:`__future__` and examining
+ can be inspected programmatically via importing :mod:`__future__` and examining
its contents.
Each statement in :file:`__future__.py` is of the form::
diff --git a/Doc/library/ctypes.rst b/Doc/library/ctypes.rst
index 939bf8f..f422bf3 100644
--- a/Doc/library/ctypes.rst
+++ b/Doc/library/ctypes.rst
@@ -1781,8 +1781,8 @@ Utility functions
.. function:: byref(obj[, offset])
Returns a light-weight pointer to ``obj``, which must be an
- instance of a ctypes type. ``offset`` defaults to zero, it must be
- an integer which is added to the internal pointer value.
+ instance of a ctypes type. ``offset`` defaults to zero, and must be
+ an integer that will be added to the internal pointer value.
``byref(obj, offset)`` corresponds to this C code::
diff --git a/Doc/library/ftplib.rst b/Doc/library/ftplib.rst
index f360c60..d4f8888 100644
--- a/Doc/library/ftplib.rst
+++ b/Doc/library/ftplib.rst
@@ -300,7 +300,7 @@ followed by ``lines`` for the text version or ``binary`` for the binary version.
Send a ``QUIT`` command to the server and close the connection. This is the
"polite" way to close a connection, but it may raise an exception of the server
- reponds with an error to the ``QUIT`` command. This implies a call to the
+ responds with an error to the ``QUIT`` command. This implies a call to the
:meth:`close` method which renders the :class:`FTP` instance useless for
subsequent calls (see below).
diff --git a/Doc/library/functions.rst b/Doc/library/functions.rst
index 4b1cbc6..ac40ce7 100644
--- a/Doc/library/functions.rst
+++ b/Doc/library/functions.rst
@@ -1186,6 +1186,7 @@ are always available. They are listed here in alphabetical order.
care about trailing, unmatched values from the longer iterables. If those
values are important, use :func:`itertools.zip_longest` instead.
+
.. rubric:: Footnotes
.. [#] Specifying a buffer size currently has no effect on systems that don't have
diff --git a/Doc/library/gc.rst b/Doc/library/gc.rst
index 99504c6..7c425e3 100644
--- a/Doc/library/gc.rst
+++ b/Doc/library/gc.rst
@@ -44,6 +44,11 @@ The :mod:`gc` module provides the following functions:
:exc:`ValueError` is raised if the generation number is invalid. The number of
unreachable objects found is returned.
+ The free lists maintained for a number of builtin types are cleared
+ whenever a full collection or collection of the highest generation (2)
+ is run. Not all items in some free lists may be freed due to the
+ particular implementation, in particular :class:`float`.
+
.. function:: set_debug(flags)
diff --git a/Doc/library/multiprocessing.rst b/Doc/library/multiprocessing.rst
index be87775..10ccb17 100644
--- a/Doc/library/multiprocessing.rst
+++ b/Doc/library/multiprocessing.rst
@@ -158,7 +158,7 @@ However, if you really do need to use some shared data then
The ``'d'`` and ``'i'`` arguments used when creating ``num`` and ``arr`` are
typecodes of the kind used by the :mod:`array` module: ``'d'`` indicates a
- double precision float and ``'i'`` inidicates a signed integer. These shared
+ double precision float and ``'i'`` indicates a signed integer. These shared
objects will be process and thread safe.
For more flexibility in using shared memory one can use the
@@ -168,7 +168,7 @@ However, if you really do need to use some shared data then
**Server process**
A manager object returned by :func:`Manager` controls a server process which
- holds python objects and allows other processes to manipulate them using
+ holds Python objects and allows other processes to manipulate them using
proxies.
A manager returned by :func:`Manager` will support types :class:`list`,
@@ -451,7 +451,7 @@ Note that one can also create a shared queue by using a manager object -- see
This means that if you try joining that process you may get a deadlock unless
you are sure that all items which have been put on the queue have been
consumed. Similarly, if the child process is non-daemonic then the parent
- process may hang on exit when it tries to join all it non-daemonic children.
+ process may hang on exit when it tries to join all its non-daemonic children.
Note that a queue created using a manager does not have this issue. See
:ref:`multiprocessing-programming`.
@@ -532,7 +532,8 @@ For an example of the usage of queues for interprocess communication see
Equivalent to ``get(False)``.
:class:`multiprocessing.Queue` has a few additional methods not found in
- :class:`queue.Queue` which are usually unnecessary:
+ :class:`queue.Queue`. These methods are usually unnecessary for most
+ code:
.. method:: close()
@@ -772,7 +773,7 @@ Synchronization primitives
~~~~~~~~~~~~~~~~~~~~~~~~~~
Generally synchronization primitives are not as necessary in a multiprocess
-program as they are in a mulithreaded program. See the documentation for
+program as they are in a multithreaded program. See the documentation for
:mod:`threading` module.
Note that one can also create synchronization primitives by using a manager
@@ -782,7 +783,7 @@ object -- see :ref:`multiprocessing-managers`.
A bounded semaphore object: a clone of :class:`threading.BoundedSemaphore`.
- (On Mac OSX this is indistiguishable from :class:`Semaphore` because
+ (On Mac OSX this is indistinguishable from :class:`Semaphore` because
``sem_getvalue()`` is not implemented on that platform).
.. class:: Condition([lock])
@@ -891,8 +892,8 @@ processes.
.. note::
- Although it is posible to store a pointer in shared memory remember that this
- will refer to a location in the address space of a specific process.
+ Although it is possible to store a pointer in shared memory remember that
+ this will refer to a location in the address space of a specific process.
However, the pointer is quite likely to be invalid in the context of a second
process and trying to dereference the pointer from the second process may
cause a crash.
@@ -1081,7 +1082,7 @@ their parent process exits. The manager classes are defined in the
Start a subprocess to start the manager.
- .. method:: server_forever()
+ .. method:: serve_forever()
Run the server in the current process.
@@ -1774,7 +1775,7 @@ handler type) for messages from different processes to get mixed up.
handler which sends output to :data:`sys.stderr` using format
``'[%(levelname)s/%(processName)s] %(message)s'``. (The logger allows use of
the non-standard ``'%(processName)s'`` format.) Message sent to this logger
- will not by default propogate to the root logger.
+ will not by default propagate to the root logger.
Note that on Windows child processes will only inherit the level of the
parent process's logger -- any other customization of the logger will not be
diff --git a/Doc/library/operator.rst b/Doc/library/operator.rst
index 37996e0..a67c6d8 100644
--- a/Doc/library/operator.rst
+++ b/Doc/library/operator.rst
@@ -513,7 +513,7 @@ Python syntax and the functions in the :mod:`operator` module.
+-----------------------+-------------------------+---------------------------------+
| Right Shift | ``a >> b`` | ``rshift(a, b)`` |
+-----------------------+-------------------------+---------------------------------+
-| Sequence Repitition | ``seq * i`` | ``repeat(seq, i)`` |
+| Sequence Repetition | ``seq * i`` | ``repeat(seq, i)`` |
+-----------------------+-------------------------+---------------------------------+
| String Formatting | ``s % obj`` | ``mod(s, obj)`` |
+-----------------------+-------------------------+---------------------------------+
diff --git a/Doc/library/select.rst b/Doc/library/select.rst
index 102d3ea..f64d6dd 100644
--- a/Doc/library/select.rst
+++ b/Doc/library/select.rst
@@ -330,7 +330,7 @@ http://www.freebsd.org/cgi/man.cgi?query=kqueue&sektion=2
+---------------------------+---------------------------------------------+
| :const:`KQ_EV_DISABLE` | Disablesevent |
+---------------------------+---------------------------------------------+
- | :const:`KQ_EV_ONESHOT` | Removes event after first occurence |
+ | :const:`KQ_EV_ONESHOT` | Removes event after first occurrence |
+---------------------------+---------------------------------------------+
| :const:`KQ_EV_CLEAR` | Reset the state after an event is retrieved |
+---------------------------+---------------------------------------------+
@@ -365,7 +365,7 @@ http://www.freebsd.org/cgi/man.cgi?query=kqueue&sektion=2
+============================+============================================+
| :const:`KQ_NOTE_DELETE` | *unlink()* was called |
+----------------------------+--------------------------------------------+
- | :const:`KQ_NOTE_WRITE` | a write occured |
+ | :const:`KQ_NOTE_WRITE` | a write occurred |
+----------------------------+--------------------------------------------+
| :const:`KQ_NOTE_EXTEND` | the file was extended |
+----------------------------+--------------------------------------------+
diff --git a/Doc/library/stdtypes.rst b/Doc/library/stdtypes.rst
index 586770a..40417d8 100644
--- a/Doc/library/stdtypes.rst
+++ b/Doc/library/stdtypes.rst
@@ -1565,7 +1565,7 @@ The constructors for both classes work the same:
.. method:: isdisjoint(other)
Return True if the set has no elements in common with *other*. Sets are
- disjoint if and only if their interesection is the empty set.
+ disjoint if and only if their intersection is the empty set.
.. method:: issubset(other)
set <= other
diff --git a/Doc/library/string.rst b/Doc/library/string.rst
index 662541e..07a2c4b 100644
--- a/Doc/library/string.rst
+++ b/Doc/library/string.rst
@@ -266,7 +266,7 @@ Then the outer replacement field would be evaluated, producing::
"noses "
-Which is subsitituted into the string, yielding::
+Which is substituted into the string, yielding::
"A man with two noses "
diff --git a/Doc/library/sys.rst b/Doc/library/sys.rst
index f92b1e4..3f73ec2 100644
--- a/Doc/library/sys.rst
+++ b/Doc/library/sys.rst
@@ -54,19 +54,6 @@ always available.
A string containing the copyright pertaining to the Python interpreter.
-.. function:: _compact_freelists()
-
- Compact the free list of floats by deallocating unused blocks.
- It can reduce the memory usage of the Python process several tenth of
- thousands of integers or floats have been allocated at once.
-
- The return value is a tuple of tuples each containing three elements,
- amount of used objects, total block count before the blocks are deallocated
- and amount of freed blocks.
-
- This function should be used for specialized purposes only.
-
-
.. function:: _clear_type_cache()
Clear the internal type cache. The type cache is used to speed up attribute
diff --git a/Doc/library/tkinter.tix.rst b/Doc/library/tkinter.tix.rst
index a85aeb1..b555376 100644
--- a/Doc/library/tkinter.tix.rst
+++ b/Doc/library/tkinter.tix.rst
@@ -305,8 +305,8 @@ File Selectors
.. \ulink{FileEntry}{http://tix.sourceforge.net/dist/current/demos/samples/FileEnt.tcl}
-Hierachical ListBox
-^^^^^^^^^^^^^^^^^^^
+Hierarchical ListBox
+^^^^^^^^^^^^^^^^^^^^
.. class:: HList()
diff --git a/Doc/library/tkinter.turtle.rst b/Doc/library/tkinter.turtle.rst
index 575c2fc..6bf9c10 100644
--- a/Doc/library/tkinter.turtle.rst
+++ b/Doc/library/tkinter.turtle.rst
@@ -2,6 +2,10 @@
:mod:`turtle` --- Turtle graphics for Tk
========================================
+.. module:: tkinter.turtle
+ :synopsis: Turtle graphics for Tk
+.. sectionauthor:: Gregor Lingl <gregor.lingl@aon.at>
+
Introduction
============
@@ -1251,7 +1255,7 @@ Window control
... left(10)
...
>>> for _ in range(8):
- ... left(45); fd(2) # a regular octogon
+ ... left(45); fd(2) # a regular octagon
Animation control
@@ -1262,7 +1266,7 @@ Animation control
:param delay: positive integer
Set or return the drawing *delay* in milliseconds. (This is approximately
- the time interval between two consecutived canvas updates.) The longer the
+ the time interval between two consecutive canvas updates.) The longer the
drawing delay, the slower the animation.
Optional argument:
diff --git a/Doc/library/urllib.request.rst b/Doc/library/urllib.request.rst
index c506829..3038588 100644
--- a/Doc/library/urllib.request.rst
+++ b/Doc/library/urllib.request.rst
@@ -1062,7 +1062,7 @@ involved. For example, the :envvar:`http_proxy` environment variable is read to
obtain the HTTP proxy's URL.
This example replaces the default :class:`ProxyHandler` with one that uses
-programatically-supplied proxy URLs, and adds proxy authorization support with
+programmatically-supplied proxy URLs, and adds proxy authorization support with
:class:`ProxyBasicAuthHandler`. ::
proxy_handler = urllib.request.ProxyHandler({'http': 'http://www.example.com:3128/'})
diff --git a/Doc/library/wsgiref.rst b/Doc/library/wsgiref.rst
index 70064fc..fcfe769 100644
--- a/Doc/library/wsgiref.rst
+++ b/Doc/library/wsgiref.rst
@@ -413,7 +413,7 @@ Paste" library.
from wsgiref.validate import validator
from wsgiref.simple_server import make_server
- # Our callable object which is intentionally not compilant to the
+ # Our callable object which is intentionally not compliant to the
# standard, so the validator is going to break
def simple_app(environ, start_response):
status = '200 OK' # HTTP Status
diff --git a/Doc/library/xmlrpc.client.rst b/Doc/library/xmlrpc.client.rst
index e249b12..1f18810 100644
--- a/Doc/library/xmlrpc.client.rst
+++ b/Doc/library/xmlrpc.client.rst
@@ -344,7 +344,7 @@ The client code for the preceding server::
try:
proxy.add(2, 5)
except xmlrpc.client.Fault, err:
- print("A fault occured")
+ print("A fault occurred")
print("Fault code: %d" % err.faultCode)
print("Fault string: %s" % err.faultString)
@@ -391,7 +391,7 @@ by providing an invalid URI::
try:
proxy.some_method()
except xmlrpc.client.ProtocolError, err:
- print("A protocol error occured")
+ print("A protocol error occurred")
print("URL: %s" % err.url)
print("HTTP/HTTPS headers: %s" % err.headers)
print("Error code: %d" % err.errcode)
diff --git a/Doc/tutorial/stdlib2.rst b/Doc/tutorial/stdlib2.rst
index 7d76363..84dfb61 100644
--- a/Doc/tutorial/stdlib2.rst
+++ b/Doc/tutorial/stdlib2.rst
@@ -286,7 +286,7 @@ sometimes there is a need for alternative implementations with different
performance trade-offs.
The :mod:`array` module provides an :class:`array()` object that is like a list
-that stores only homogenous data and stores it more compactly. The following
+that stores only homogeneous data and stores it more compactly. The following
example shows an array of numbers stored as two byte unsigned binary numbers
(typecode ``"H"``) rather than the usual 16 bytes per entry for regular lists of
python int objects::
diff --git a/Doc/using/windows.rst b/Doc/using/windows.rst
index 4064fa1..2dd236f 100644
--- a/Doc/using/windows.rst
+++ b/Doc/using/windows.rst
@@ -186,7 +186,7 @@ of your Python installation directory). This suppresses the terminal window on
startup.
You can also make all ``.py`` scripts execute with :program:`pythonw.exe`,
-setting this through the usual facilites, for example (might require
+setting this through the usual facilities, for example (might require
administrative rights):
#. Launch a command prompt.
@@ -215,7 +215,7 @@ PyWin32
The `PyWin32 <http://python.net/crew/mhammond/win32/>`_ module by Mark Hammond
is a collection of modules for advanced Windows-specific support. This includes
-utilites for:
+utilities for:
* `Component Object Model <http://www.microsoft.com/com/>`_ (COM)
* Win32 API calls
diff --git a/Doc/whatsnew/2.6.rst b/Doc/whatsnew/2.6.rst
index 264ec2e..5cf29cb 100644
--- a/Doc/whatsnew/2.6.rst
+++ b/Doc/whatsnew/2.6.rst
@@ -51,7 +51,7 @@
This article explains the new features in Python 2.6. The release
schedule is described in :pep:`361`; currently the final release is
-scheduled for September 3 2008.
+scheduled for October 1 2008.
This article doesn't attempt to provide a complete specification of
the new features, but instead provides a convenient overview. For
@@ -526,28 +526,152 @@ environment variable.
PEP 371: The ``multiprocessing`` Package
=====================================================
-.. XXX I think this still needs help
+The new :mod:`multiprocessing` package lets Python programs create new
+processes that will perform a computation and return a result to the
+parent. The parent and child processes can communicate using queues
+and pipes, synchronize their operations using locks and semaphores,
+and can share simple arrays of data.
+
+The :mod:`multiprocessing` module started out as an exact emulation of
+the :mod:`threading` module using processes instead of threads. That
+goal was discarded along the path to Python 2.6, but the general
+approach of the module is still similar. The fundamental class
+is the :class:`Process`, which is passed a callable object and
+a collection of arguments. The :meth:`start` method
+sets the callable running in a subprocess, after which you can call
+the :meth:`is_alive` method to check whether the subprocess is still running
+and the :meth:`join` method to wait for the process to exit.
+
+Here's a simple example where the subprocess will calculate a
+factorial. The function doing the calculation is a bit strange; it's
+written to take significantly longer when the input argument is a
+multiple of 4.
+
+::
+
+ import time
+ from multiprocessing import Process, Queue
+
+
+ def factorial(queue, N):
+ "Compute a factorial."
+ # If N is a multiple of 4, this function will take much longer.
+ if (N % 4) == 0:
+ time.sleep(.05 * N/4)
+
+ # Calculate the result
+ fact = 1L
+ for i in range(1, N+1):
+ fact = fact * i
+
+ # Put the result on the queue
+ queue.put(fact)
+
+ if __name__ == '__main__':
+ queue = Queue()
+
+ N = 5
+
+ p = Process(target=factorial, args=(queue, N))
+ p.start()
+ p.join()
+
+ result = queue.get()
+ print 'Factorial', N, '=', result
+
+A :class:`Queue` object is created and stored as a global. The child
+process will use the value of the variable when the child was created;
+because it's a :class:`Queue`, parent and child can use the object to
+communicate. (If the parent were to change the value of the global
+variable, the child's value would be unaffected, and vice versa.)
+
+Two other classes, :class:`Pool` and :class:`Manager`, provide
+higher-level interfaces. :class:`Pool` will create a fixed number of
+worker processes, and requests can then be distributed to the workers
+by calling :meth:`apply` or `apply_async`, adding a single request,
+and :meth:`map` or :meth:`map_async` to distribute a number of
+requests. The following code uses a :class:`Pool` to spread requests
+across 5 worker processes, receiving a list of results back.
+
+::
+
+ from multiprocessing import Pool
+
+ p = Pool(5)
+ result = p.map(factorial, range(1, 1000, 10))
+ for v in result:
+ print v
+
+This produces the following output::
+
+ 1
+ 39916800
+ 51090942171709440000
+ 8222838654177922817725562880000000
+ 33452526613163807108170062053440751665152000000000
+ ...
+
+The :class:`Manager` class creates a separate server process that can
+hold master copies of Python data structures. Other processes can
+then access and modify these data structures by using proxy objects.
+The following example creates a shared dictionary by calling the
+:meth:`dict` method; the worker processes then insert values into the
+dictionary. (No locking is done automatically, which doesn't matter
+in this example. :class:`Manager`'s methods also include
+:meth:`Lock`, :meth:`RLock`, and :meth:`Semaphore` to create shared locks.
+
+::
+
+ import time
+ from multiprocessing import Pool, Manager
+
+ def factorial(N, dictionary):
+ "Compute a factorial."
+ # Calculate the result
+ fact = 1L
+ for i in range(1, N+1):
+ fact = fact * i
+
+ # Store result in dictionary
+ dictionary[N] = fact
+
+ if __name__ == '__main__':
+ p = Pool(5)
+ mgr = Manager()
+ d = mgr.dict() # Create shared dictionary
-:mod:`multiprocessing` makes it easy to distribute work over multiple processes.
-Its API is similiar to that of :mod:`threading`. For example::
+ # Run tasks using the pool
+ for N in range(1, 1000, 10):
+ p.apply_async(factorial, (N, d))
- from multiprocessing import Process
+ # Mark pool as closed -- no more tasks can be added.
+ p.close()
- def long_hard_task(n):
- print n * 43
+ # Wait for tasks to exit
+ p.join()
- for i in range(10):
- Process(target=long_hard_task, args=(i)).start()
+ # Output results
+ for k, v in sorted(d.items()):
+ print k, v
-will multiply the numbers between 0 and 10 times 43 and print out the result
-concurrently.
+This will produce the output::
+
+ 1 1
+ 11 39916800
+ 21 51090942171709440000
+ 31 8222838654177922817725562880000000
+ 41 33452526613163807108170062053440751665152000000000
+ 51 1551118753287382280224243016469303211063259720016986112000000000000
.. seealso::
+ The documentation for the :mod:`multiprocessing` module.
+
:pep:`371` - Addition of the multiprocessing package
PEP written by Jesse Noller and Richard Oudkerk;
implemented by Richard Oudkerk and Jesse Noller.
+
.. ======================================================================
.. _pep-3101:
@@ -1775,21 +1899,6 @@ details.
(Contributed by Raymond Hettinger.)
-* XXX Describe the new ctypes calling convention that allows safe
- access to errno.
- (Implemented by Thomas Heller; :issue:`1798`.)
-
-* The :mod:`ctypes` module now supports a :class:`c_bool` datatype
- that represents the C99 ``bool`` type. (Contributed by David Remahl;
- :issue:`1649190`.)
-
- The :mod:`ctypes` string, buffer and array types also have improved
- support for extended slicing syntax,
- where various combinations of ``(start, stop, step)`` are supplied.
- (Implemented by Thomas Wouters.)
-
- .. Revision 57769
-
* A new method in the :mod:`curses` module: for a window, :meth:`chgat` changes
the display characters for a certain number of characters on a single line.
(Contributed by Fabian Kreutz.)
@@ -2628,6 +2737,45 @@ Using the module is simple::
.. ======================================================================
+ctypes Enhancements
+--------------------------------------------------
+
+Thomas Heller continued to maintain and enhance the
+:mod:`ctypes` module.
+
+:mod:`ctypes` now supports a :class:`c_bool` datatype
+that represents the C99 ``bool`` type. (Contributed by David Remahl;
+:issue:`1649190`.)
+
+The :mod:`ctypes` string, buffer and array types have improved
+support for extended slicing syntax,
+where various combinations of ``(start, stop, step)`` are supplied.
+(Implemented by Thomas Wouters.)
+
+.. Revision 57769
+
+A new calling convention tells :mod:`ctypes` to clear the ``errno`` or
+Win32 LastError variables at the outset of each wrapped call.
+(Implemented by Thomas Heller; :issue:`1798`.)
+
+For the Unix ``errno`` variable: when creating a wrapped function,
+you can supply ``use_errno=True`` as a keyword parameter
+to the :func:`DLL` function
+and then call the module-level methods :meth:`set_errno`
+and :meth:`get_errno` to set and retrieve the error value.
+
+The Win32 LastError variable is supported similarly by
+the :func:`DLL`, :func:`OleDLL`, and :func:`WinDLL` functions.
+You supply ``use_last_error=True`` as a keyword parameter
+and then call the module-level methods :meth:`set_last_error`
+and :meth:`get_last_error`.
+
+The :func:`byref` function, used to retrieve a pointer to a ctypes
+instance, now has an optional **offset** parameter that is a byte
+count that will be added to the returned pointer.
+
+.. ======================================================================
+
Improved SSL Support
--------------------------------------------------