summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGeorg Brandl <georg@python.org>2009-08-13 12:26:19 (GMT)
committerGeorg Brandl <georg@python.org>2009-08-13 12:26:19 (GMT)
commitd80344f8d3dec44c3045964c4f5a7710a502bdf5 (patch)
treedf8ca536cab9e081535d403e49b4914e8e0b628b
parenta85ee5cfb612e5933c9ef2eb0b24a103acc14ef7 (diff)
downloadcpython-d80344f8d3dec44c3045964c4f5a7710a502bdf5.zip
cpython-d80344f8d3dec44c3045964c4f5a7710a502bdf5.tar.gz
cpython-d80344f8d3dec44c3045964c4f5a7710a502bdf5.tar.bz2
Merged revisions 74055 via svnmerge from
svn+ssh://svn.python.org/python/branches/py3k (Selected changes only.) ................ r74055 | alexandre.vassalotti | 2009-07-17 11:18:18 +0200 (Fr, 17 Jul 2009) | 55 lines Merged revisions 73995,74002,74005,74007-74008,74011,74019-74023 via svnmerge from svn+ssh://pythondev@svn.python.org/python/trunk ........ r74008 | benjamin.peterson | 2009-07-14 20:46:42 -0400 (Tue, 14 Jul 2009) | 1 line update year ........ r74011 | ezio.melotti | 2009-07-15 13:07:04 -0400 (Wed, 15 Jul 2009) | 1 line methods' names pep8ification ........ r74019 | amaury.forgeotdarc | 2009-07-15 17:29:27 -0400 (Wed, 15 Jul 2009) | 2 lines #6076 Add a title to the IDLE Preferences window. ........ r74020 | georg.brandl | 2009-07-16 03:18:07 -0400 (Thu, 16 Jul 2009) | 1 line #5910: fix kqueue for calls with more than one event. ........ r74021 | georg.brandl | 2009-07-16 03:33:04 -0400 (Thu, 16 Jul 2009) | 1 line #6486: start with built in functions rather than "built in objects". ........ r74022 | georg.brandl | 2009-07-16 03:38:35 -0400 (Thu, 16 Jul 2009) | 1 line #6481: fix typo in os.system() replacement. ........ r74023 | jesse.noller | 2009-07-16 10:23:04 -0400 (Thu, 16 Jul 2009) | 1 line Issue 6433: multiprocessing.pool.map hangs on empty list ........ ................
-rw-r--r--Doc/copyright.rst2
-rw-r--r--Doc/library/intro.rst5
-rw-r--r--Doc/library/subprocess.rst2
-rw-r--r--Lib/idlelib/configDialog.py1
-rw-r--r--Lib/multiprocessing/pool.py2
-rw-r--r--Lib/test/test_kqueue.py16
-rw-r--r--Lib/test/test_multiprocessing.py6
-rw-r--r--Misc/ACKS1
-rw-r--r--Misc/NEWS2
-rw-r--r--Modules/selectmodule.c7
10 files changed, 37 insertions, 7 deletions
diff --git a/Doc/copyright.rst b/Doc/copyright.rst
index 376b1c4..ec78a38 100644
--- a/Doc/copyright.rst
+++ b/Doc/copyright.rst
@@ -4,7 +4,7 @@ Copyright
Python and this documentation is:
-Copyright © 2001-2008 Python Software Foundation. All rights reserved.
+Copyright © 2001-2009 Python Software Foundation. All rights reserved.
Copyright © 2000 BeOpen.com. All rights reserved.
diff --git a/Doc/library/intro.rst b/Doc/library/intro.rst
index ce1691d..a0f2d63 100644
--- a/Doc/library/intro.rst
+++ b/Doc/library/intro.rst
@@ -43,8 +43,9 @@ browse the table of contents (in front of the manual), or look for a specific
function, module or term in the index (in the back). And finally, if you enjoy
learning about random subjects, you choose a random page number (see module
:mod:`random`) and read a section or two. Regardless of the order in which you
-read the sections of this manual, it helps to start with chapter :ref:`builtin`,
-as the remainder of the manual assumes familiarity with this material.
+read the sections of this manual, it helps to start with chapter
+:ref:`built-in-funcs`, as the remainder of the manual assumes familiarity with
+this material.
Let the show begin!
diff --git a/Doc/library/subprocess.rst b/Doc/library/subprocess.rst
index bf4ead7..2af5489 100644
--- a/Doc/library/subprocess.rst
+++ b/Doc/library/subprocess.rst
@@ -424,7 +424,7 @@ Replacing :func:`os.system`
sts = os.system("mycmd" + " myarg")
==>
p = Popen("mycmd" + " myarg", shell=True)
- sts = os.waitpid(p.pid, 0)
+ sts = os.waitpid(p.pid, 0)[1]
Notes:
diff --git a/Lib/idlelib/configDialog.py b/Lib/idlelib/configDialog.py
index 20ed827..6482119 100644
--- a/Lib/idlelib/configDialog.py
+++ b/Lib/idlelib/configDialog.py
@@ -30,6 +30,7 @@ class ConfigDialog(Toplevel):
self.wm_withdraw()
self.configure(borderwidth=5)
+ self.title('IDLE Preferences')
self.geometry("+%d+%d" % (parent.winfo_rootx()+20,
parent.winfo_rooty()+30))
#Theme Elements. Each theme element key is its display name.
diff --git a/Lib/multiprocessing/pool.py b/Lib/multiprocessing/pool.py
index 5c1805f..d3ecc9b 100644
--- a/Lib/multiprocessing/pool.py
+++ b/Lib/multiprocessing/pool.py
@@ -208,6 +208,8 @@ class Pool(object):
chunksize, extra = divmod(len(iterable), len(self._pool) * 4)
if extra:
chunksize += 1
+ if len(iterable) == 0:
+ chunksize = 0
task_batches = Pool._get_tasks(func, iterable, chunksize)
result = MapResult(self._cache, chunksize, len(iterable), callback)
diff --git a/Lib/test/test_kqueue.py b/Lib/test/test_kqueue.py
index dd1ecc8..5ba21a2 100644
--- a/Lib/test/test_kqueue.py
+++ b/Lib/test/test_kqueue.py
@@ -163,6 +163,22 @@ class TestKQueue(unittest.TestCase):
server.close()
serverSocket.close()
+ def testPair(self):
+ kq = select.kqueue()
+ a, b = socket.socketpair()
+
+ a.send(b'foo')
+ event1 = select.kevent(a, select.KQ_FILTER_READ, select.KQ_EV_ADD | select.KQ_EV_ENABLE)
+ event2 = select.kevent(b, select.KQ_FILTER_READ, select.KQ_EV_ADD | select.KQ_EV_ENABLE)
+ r = kq.control([event1, event2], 1, 1)
+ self.assertTrue(r)
+ self.assertFalse(r[0].flags & select.KQ_EV_ERROR)
+ self.assertEquals(b.recv(r[0].data), b'foo')
+
+ a.close()
+ b.close()
+ kq.close()
+
def test_main():
support.run_unittest(TestKQueue)
diff --git a/Lib/test/test_multiprocessing.py b/Lib/test/test_multiprocessing.py
index 9f4e1a2..18066ba 100644
--- a/Lib/test/test_multiprocessing.py
+++ b/Lib/test/test_multiprocessing.py
@@ -991,6 +991,12 @@ class _TestPool(BaseTestCase):
self.assertEqual(pmap(sqr, list(range(100)), chunksize=20),
list(map(sqr, list(range(100)))))
+ def test_map_chunksize(self):
+ try:
+ self.pool.map_async(sqr, [], chunksize=1).get(timeout=TIMEOUT1)
+ except multiprocessing.TimeoutError:
+ self.fail("pool.map_async with chunksize stalled on null list")
+
def test_async(self):
res = self.pool.apply_async(sqr, (7, TIMEOUT1,))
get = TimingWrapper(res.get)
diff --git a/Misc/ACKS b/Misc/ACKS
index cd8605f..959f2d5 100644
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -199,6 +199,7 @@ Walter Dörwald
Hans Eckardt
Grant Edwards
John Ehresman
+Eric Eisner
Andrew Eland
Lance Ellinghaus
David Ely
diff --git a/Misc/NEWS b/Misc/NEWS
index 3de1557..2b7fe80 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -950,6 +950,8 @@ Library
- Issue #6459: distutils.command.build_ext.get_export_symbols now uses the
"PyInit" prefix, rather than "init".
+- Issue #6433: fixed issues with multiprocessing.pool.map hanging on empty list
+
- Issue #6455: Fixed test_build_ext under win32.
- Issue #6413: Fixed the log level in distutils.dist for announce.
diff --git a/Modules/selectmodule.c b/Modules/selectmodule.c
index 191296e..13ac115 100644
--- a/Modules/selectmodule.c
+++ b/Modules/selectmodule.c
@@ -1492,7 +1492,7 @@ kqueue_queue_control(kqueue_queue_Object *self, PyObject *args)
if (nevents < 0) {
PyErr_Format(PyExc_ValueError,
"Length of eventlist must be 0 or positive, got %d",
- nchanges);
+ nevents);
return NULL;
}
@@ -1550,6 +1550,7 @@ kqueue_queue_control(kqueue_queue_Object *self, PyObject *args)
PyErr_NoMemory();
return NULL;
}
+ i = 0;
while ((ei = PyIter_Next(it)) != NULL) {
if (!kqueue_event_Check(ei)) {
Py_DECREF(ei);
@@ -1558,7 +1559,7 @@ kqueue_queue_control(kqueue_queue_Object *self, PyObject *args)
"select.kevent objects");
goto error;
} else {
- chl[i] = ((kqueue_event_Object *)ei)->e;
+ chl[i++] = ((kqueue_event_Object *)ei)->e;
}
Py_DECREF(ei);
}
@@ -1589,7 +1590,7 @@ kqueue_queue_control(kqueue_queue_Object *self, PyObject *args)
goto error;
}
- for (i=0; i < gotevents; i++) {
+ for (i = 0; i < gotevents; i++) {
kqueue_event_Object *ch;
ch = PyObject_New(kqueue_event_Object, &kqueue_event_Type);