summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRaymond Hettinger <python@rcn.com>2009-02-19 02:15:14 +0000
committerRaymond Hettinger <python@rcn.com>2009-02-19 02:15:14 +0000
commite59fc71c71f7a20777030a8d2b0269bb5a654f83 (patch)
treedd59d2d8bc44dfa0de0eda1195522274b27693e7
parent6d15de98d7e0ee5d3199fab4821fdd6251ce9af2 (diff)
downloadcpython-e59fc71c71f7a20777030a8d2b0269bb5a654f83.tar.gz
Add keyword arg support to itertools.compress().
-rw-r--r--Lib/test/test_itertools.py1
-rw-r--r--Modules/itertoolsmodule.c10
2 files changed, 5 insertions, 6 deletions
diff --git a/Lib/test/test_itertools.py b/Lib/test/test_itertools.py
index a33939eb20..2cdb1d7dc0 100644
--- a/Lib/test/test_itertools.py
+++ b/Lib/test/test_itertools.py
@@ -306,6 +306,7 @@ class TestBasicOps(unittest.TestCase):
self.assertEqual(comb, sorted(set(cwr) & set(perm))) # comb: both a cwr and a perm
def test_compress(self):
+ self.assertEqual(list(compress(data='ABCDEF', selectors=[1,0,1,0,1,1])), list('ACEF'))
self.assertEqual(list(compress('ABCDEF', [1,0,1,0,1,1])), list('ACEF'))
self.assertEqual(list(compress('ABCDEF', [0,0,0,0,0,0])), list(''))
self.assertEqual(list(compress('ABCDEF', [1,1,1,1,1,1])), list('ABCDEF'))
diff --git a/Modules/itertoolsmodule.c b/Modules/itertoolsmodule.c
index fefcbfb230..3c6d618bc1 100644
--- a/Modules/itertoolsmodule.c
+++ b/Modules/itertoolsmodule.c
@@ -2782,11 +2782,9 @@ compress_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
PyObject *seq1, *seq2;
PyObject *data=NULL, *selectors=NULL;
compressobject *lz;
-
- if (type == &compress_type && !_PyArg_NoKeywords("compress()", kwds))
- return NULL;
-
- if (!PyArg_UnpackTuple(args, "compress", 2, 2, &seq1, &seq2))
+ static char *kwargs[] = {"data", "selectors", NULL};
+
+ if (!PyArg_ParseTupleAndKeywords(args, kwds, "OO:compress", kwargs, &seq1, &seq2))
return NULL;
data = PyObject_GetIter(seq1);
@@ -2864,7 +2862,7 @@ compress_next(compressobject *lz)
}
PyDoc_STRVAR(compress_doc,
-"compress(data sequence, selector sequence) --> iterator over selected data\n\
+"compress(data, selectors) --> iterator over selected data\n\
\n\
Return data elements corresponding to true selector elements.\n\
Forms a shorter iterator from selected data elements using the\n\