From: Raymond Hettinger Date: Thu, 8 Apr 2004 21:54:00 +0000 (+0000) Subject: Provide more information representations of repeat() and count(). X-Git-Tag: v2.4a1~514 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=7dacda2947e1d339ce138c237474df009dcc64be;p=python Provide more information representations of repeat() and count(). --- diff --git a/Modules/itertoolsmodule.c b/Modules/itertoolsmodule.c index 3ad26d5b2c..3445dccb4a 100644 --- a/Modules/itertoolsmodule.c +++ b/Modules/itertoolsmodule.c @@ -2051,6 +2051,12 @@ count_next(countobject *lz) return PyInt_FromLong(lz->cnt++); } +static PyObject * +count_repr(countobject *lz) +{ + return PyString_FromFormat("count(%d)", lz->cnt); +} + PyDoc_STRVAR(count_doc, "count([firstval]) --> count object\n\ \n\ @@ -2069,7 +2075,7 @@ static PyTypeObject count_type = { 0, /* tp_getattr */ 0, /* tp_setattr */ 0, /* tp_compare */ - 0, /* tp_repr */ + (reprfunc)count_repr, /* tp_repr */ 0, /* tp_as_number */ 0, /* tp_as_sequence */ 0, /* tp_as_mapping */ @@ -2355,6 +2361,25 @@ repeat_next(repeatobject *ro) return ro->element; } +static PyObject * +repeat_repr(repeatobject *ro) +{ + PyObject *result, *objrepr; + + objrepr = PyObject_Repr(ro->element); + if (objrepr == NULL) + return NULL; + + if (ro->cnt == -1) + result = PyString_FromFormat("repeat(%s)", + PyString_AS_STRING(objrepr)); + else + result = PyString_FromFormat("repeat(%s, %d)", + PyString_AS_STRING(objrepr), ro->cnt); + Py_DECREF(objrepr); + return result; +} + static int repeat_len(repeatobject *ro) { @@ -2385,7 +2410,7 @@ static PyTypeObject repeat_type = { 0, /* tp_getattr */ 0, /* tp_setattr */ 0, /* tp_compare */ - 0, /* tp_repr */ + (reprfunc)repeat_repr, /* tp_repr */ 0, /* tp_as_number */ &repeat_as_sequence, /* tp_as_sequence */ 0, /* tp_as_mapping */