[Python-checkins] cpython (merge 3.2 -> 3.2): merge heads

benjamin.peterson python-checkins at python.org
Tue Jun 21 04:38:11 CEST 2011


http://hg.python.org/cpython/rev/c38c3dab4bfb
changeset:   70917:c38c3dab4bfb
branch:      3.2
parent:      70916:8ece0dacd8e8
parent:      70909:1f171dd21bdb
user:        Benjamin Peterson <benjamin at python.org>
date:        Mon Jun 20 21:40:34 2011 -0500
summary:
  merge heads

files:
  Doc/library/asyncore.rst         |   4 ++--
  Doc/library/http.client.rst      |  13 ++++++++++++-
  Doc/tutorial/modules.rst         |  15 ++++++++-------
  Lib/multiprocessing/pool.py      |   2 ++
  Lib/test/test_multiprocessing.py |   3 +++
  5 files changed, 27 insertions(+), 10 deletions(-)


diff --git a/Doc/library/asyncore.rst b/Doc/library/asyncore.rst
--- a/Doc/library/asyncore.rst
+++ b/Doc/library/asyncore.rst
@@ -157,8 +157,8 @@
 
       Called on listening channels (passive openers) when a connection has been
       established with a new remote endpoint that has issued a :meth:`connect`
-      call for the local endpoint.  *conn* is a *new* socket object usable to
-      send and receive data on the connection, and *address* is the address
+      call for the local endpoint.  *sock* is a *new* socket object usable to
+      send and receive data on the connection, and *addr* is the address
       bound to the socket on the other end of the connection.
 
       .. versionadded:: 3.2
diff --git a/Doc/library/http.client.rst b/Doc/library/http.client.rst
--- a/Doc/library/http.client.rst
+++ b/Doc/library/http.client.rst
@@ -543,6 +543,9 @@
    A debugging hook.  If :attr:`debuglevel` is greater than zero, messages
    will be printed to stdout as the response is read and parsed.
 
+.. attribute:: HTTPResponse.closed
+
+   Is True if the stream is closed.
 
 Examples
 --------
@@ -555,7 +558,15 @@
    >>> r1 = conn.getresponse()
    >>> print(r1.status, r1.reason)
    200 OK
-   >>> data1 = r1.read()
+   >>> data1 = r1.read()  # This will return entire content.
+   >>> # The following example demonstrates reading data in chunks.
+   >>> conn.request("GET", "/index.html")
+   >>> r1 = conn.getresponse()
+   >>> while not r1.closed:
+   ...     print(r1.read(200)) # 200 bytes
+   b'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"...
+   ...
+   >>> # Example of an invalid request
    >>> conn.request("GET", "/parrot.spam")
    >>> r2 = conn.getresponse()
    >>> print(r2.status, r2.reason)
diff --git a/Doc/tutorial/modules.rst b/Doc/tutorial/modules.rst
--- a/Doc/tutorial/modules.rst
+++ b/Doc/tutorial/modules.rst
@@ -159,13 +159,14 @@
 
 .. index:: triple: module; search; path
 
-When a module named :mod:`spam` is imported, the interpreter searches for a file
-named :file:`spam.py` in the current directory, and then in the list of
-directories specified by the environment variable :envvar:`PYTHONPATH`.  This
-has the same syntax as the shell variable :envvar:`PATH`, that is, a list of
-directory names.  When :envvar:`PYTHONPATH` is not set, or when the file is not
-found there, the search continues in an installation-dependent default path; on
-Unix, this is usually :file:`.:/usr/local/lib/python`.
+When a module named :mod:`spam` is imported, the interpreter searches for a
+file named :file:`spam.py` in the directory containing the input script and
+then in the list of directories specified by the environment variable
+:envvar:`PYTHONPATH`.  This has the same syntax as the shell variable
+:envvar:`PATH`, that is, a list of directory names.  When :envvar:`PYTHONPATH`
+is not set, or when the file is not found there, the search continues in an
+installation-dependent default path; on Unix, this is usually
+:file:`.:/usr/local/lib/python`.
 
 Actually, modules are searched in the list of directories given by the variable
 ``sys.path`` which is initialized from the directory containing the input script
diff --git a/Lib/multiprocessing/pool.py b/Lib/multiprocessing/pool.py
--- a/Lib/multiprocessing/pool.py
+++ b/Lib/multiprocessing/pool.py
@@ -148,6 +148,8 @@
                 processes = cpu_count()
             except NotImplementedError:
                 processes = 1
+        if processes < 1:
+            raise ValueError("Number of processes must be at least 1")
 
         if initializer is not None and not hasattr(initializer, '__call__'):
             raise TypeError('initializer must be a callable')
diff --git a/Lib/test/test_multiprocessing.py b/Lib/test/test_multiprocessing.py
--- a/Lib/test/test_multiprocessing.py
+++ b/Lib/test/test_multiprocessing.py
@@ -1089,6 +1089,9 @@
         self.assertEqual(sorted(it), list(map(sqr, list(range(1000)))))
 
     def test_make_pool(self):
+        self.assertRaises(ValueError, multiprocessing.Pool, -1)
+        self.assertRaises(ValueError, multiprocessing.Pool, 0)
+
         p = multiprocessing.Pool(3)
         self.assertEqual(3, len(p._pool))
         p.close()

-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list