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

index c34b915cebf98e4faa80667d8a90afbe3c38a8cd..94159b5d0e6c28b55f64b8350ddc90d4e94aaaeb 100644 (file)
@@ -310,6 +310,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 3eb760be9c42d6dd466f55940d118b7fd1fc342a..e2ca9c74b71c5d91c0bbaf37b69fc8e557dabc97 100644 (file)
@@ -2607,11 +2607,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);
@@ -2689,7 +2687,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\