Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 15a4950

Browse files
committed
Add keyword arg support to itertools.compress().
1 parent bc67084 commit 15a4950

2 files changed

Lines changed: 5 additions & 6 deletions

File tree

Lib/test/test_itertools.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -310,6 +310,7 @@ def test_combinatorics(self):
310310
self.assertEqual(comb, sorted(set(cwr) & set(perm))) # comb: both a cwr and a perm
311311

312312
def test_compress(self):
313+
self.assertEqual(list(compress(data='ABCDEF', selectors=[1,0,1,0,1,1])), list('ACEF'))
313314
self.assertEqual(list(compress('ABCDEF', [1,0,1,0,1,1])), list('ACEF'))
314315
self.assertEqual(list(compress('ABCDEF', [0,0,0,0,0,0])), list(''))
315316
self.assertEqual(list(compress('ABCDEF', [1,1,1,1,1,1])), list('ABCDEF'))

Modules/itertoolsmodule.c

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2607,11 +2607,9 @@ compress_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
26072607
PyObject *seq1, *seq2;
26082608
PyObject *data=NULL, *selectors=NULL;
26092609
compressobject *lz;
2610-
2611-
if (type == &compress_type && !_PyArg_NoKeywords("compress()", kwds))
2612-
return NULL;
2613-
2614-
if (!PyArg_UnpackTuple(args, "compress", 2, 2, &seq1, &seq2))
2610+
static char *kwargs[] = {"data", "selectors", NULL};
2611+
2612+
if (!PyArg_ParseTupleAndKeywords(args, kwds, "OO:compress", kwargs, &seq1, &seq2))
26152613
return NULL;
26162614

26172615
data = PyObject_GetIter(seq1);
@@ -2689,7 +2687,7 @@ compress_next(compressobject *lz)
26892687
}
26902688

26912689
PyDoc_STRVAR(compress_doc,
2692-
"compress(data sequence, selector sequence) --> iterator over selected data\n\
2690+
"compress(data, selectors) --> iterator over selected data\n\
26932691
\n\
26942692
Return data elements corresponding to true selector elements.\n\
26952693
Forms a shorter iterator from selected data elements using the\n\

0 commit comments

Comments
 (0)