]> granicus.if.org Git - python/commitdiff
Add keyword arg support to itertools.compress().
authorRaymond Hettinger <python@rcn.com>
Thu, 19 Feb 2009 02:15:14 +0000 (02:15 +0000)
committerRaymond Hettinger <python@rcn.com>
Thu, 19 Feb 2009 02:15:14 +0000 (02:15 +0000)
Lib/test/test_itertools.py
Modules/itertoolsmodule.c

index a33939eb20f655ea99f56a4688bb44ae055deb93..2cdb1d7dc0ba3ecc8c28b4220c4450e28b11fa83 100644 (file)
@@ -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'))
index fefcbfb230e65493f3301c8612369831dc142877..3c6d618bc1dcd364f6a4f3ef9f512c95d5b4e6fc 100644 (file)
@@ -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\