summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenjamin Peterson <benjamin@python.org>2011-06-21 02:40:34 (GMT)
committerBenjamin Peterson <benjamin@python.org>2011-06-21 02:40:34 (GMT)
commit66b371e0001f5a8de4765c23e2e88e610fb4808d (patch)
tree3b4fd04b6a4a25454a3196e01307c4945a2d8ce6
parentf63d615f8bae0a2ad994fb65e37b8657da93a941 (diff)
parent2fae27b735f4d93c8a7789a7a98857e1ce3c7193 (diff)
downloadcpython-66b371e0001f5a8de4765c23e2e88e610fb4808d.zip
cpython-66b371e0001f5a8de4765c23e2e88e610fb4808d.tar.gz
cpython-66b371e0001f5a8de4765c23e2e88e610fb4808d.tar.bz2
merge heads
-rw-r--r--Doc/library/asyncore.rst4
-rw-r--r--Doc/library/http.client.rst13
-rw-r--r--Doc/tutorial/modules.rst15
-rw-r--r--Lib/multiprocessing/pool.py2
-rw-r--r--Lib/test/test_multiprocessing.py3
5 files changed, 27 insertions, 10 deletions
diff --git a/Doc/library/asyncore.rst b/Doc/library/asyncore.rst
index 5f95d41..619b7bb 100644
--- a/Doc/library/asyncore.rst
+++ b/Doc/library/asyncore.rst
@@ -157,8 +157,8 @@ any that have been added to the map during asynchronous service) is closed.
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
index 704585b..54873ae 100644
--- a/Doc/library/http.client.rst
+++ b/Doc/library/http.client.rst
@@ -543,6 +543,9 @@ statement.
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 @@ Here is an example session that uses the ``GET`` method::
>>> 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
index d4bfbda..3254a80 100644
--- a/Doc/tutorial/modules.rst
+++ b/Doc/tutorial/modules.rst
@@ -159,13 +159,14 @@ The Module Search Path
.. 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
index 92170f2..e450319 100644
--- a/Lib/multiprocessing/pool.py
+++ b/Lib/multiprocessing/pool.py
@@ -148,6 +148,8 @@ class Pool(object):
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
index 2614689..dc41e15 100644
--- a/Lib/test/test_multiprocessing.py
+++ b/Lib/test/test_multiprocessing.py
@@ -1089,6 +1089,9 @@ class _TestPool(BaseTestCase):
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()