Add keyword arg support to itertools.repeat().

This commit is contained in:
Raymond Hettinger 2009-02-19 02:44:01 +00:00
parent 15a4950da1
commit f4bb7f2100
2 changed files with 7 additions and 7 deletions

View File

@ -640,6 +640,7 @@ class TestBasicOps(unittest.TestCase):
self.assertNotEqual(len(set(map(id, list(product('abc', 'def'))))), 1) self.assertNotEqual(len(set(map(id, list(product('abc', 'def'))))), 1)
def test_repeat(self): def test_repeat(self):
self.assertEqual(list(repeat(object='a', times=3)), ['a', 'a', 'a'])
self.assertEqual(lzip(range(3),repeat('a')), self.assertEqual(lzip(range(3),repeat('a')),
[(0, 'a'), (1, 'a'), (2, 'a')]) [(0, 'a'), (1, 'a'), (2, 'a')])
self.assertEqual(list(repeat('a', 3)), ['a', 'a', 'a']) self.assertEqual(list(repeat('a', 3)), ['a', 'a', 'a'])

View File

@ -3106,11 +3106,10 @@ repeat_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
repeatobject *ro; repeatobject *ro;
PyObject *element; PyObject *element;
Py_ssize_t cnt = -1; Py_ssize_t cnt = -1;
static char *kwargs[] = {"object", "times", NULL};
if (type == &repeat_type && !_PyArg_NoKeywords("repeat()", kwds)) if (!PyArg_ParseTupleAndKeywords(args, kwds, "O|n:repeat", kwargs,
return NULL; &element, &cnt))
if (!PyArg_ParseTuple(args, "O|n:repeat", &element, &cnt))
return NULL; return NULL;
if (PyTuple_Size(args) == 2 && cnt < 0) if (PyTuple_Size(args) == 2 && cnt < 0)
@ -3178,8 +3177,8 @@ static PyMethodDef repeat_methods[] = {
}; };
PyDoc_STRVAR(repeat_doc, PyDoc_STRVAR(repeat_doc,
"repeat(element [,times]) -> create an iterator which returns the element\n\ "repeat(object [,times]) -> create an iterator which returns the object\n\
for the specified number of times. If not specified, returns the element\n\ for the specified number of times. If not specified, returns the object\n\
endlessly."); endlessly.");
static PyTypeObject repeat_type = { static PyTypeObject repeat_type = {