Commit 182edaef authored by Raymond Hettinger's avatar Raymond Hettinger

Add keyword arg support to itertools.repeat().

parent 2e2909f5
...@@ -632,6 +632,7 @@ class TestBasicOps(unittest.TestCase): ...@@ -632,6 +632,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(zip(xrange(3),repeat('a')), self.assertEqual(zip(xrange(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'])
......
...@@ -3617,11 +3617,10 @@ repeat_new(PyTypeObject *type, PyObject *args, PyObject *kwds) ...@@ -3617,11 +3617,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))
return NULL; if (!PyArg_ParseTupleAndKeywords(args, kwds, "O|n:repeat", kwargs,
&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)
...@@ -3699,8 +3698,8 @@ static PyMethodDef repeat_methods[] = { ...@@ -3699,8 +3698,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 = {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment