=== modified file 'Lib/test/test_dictviews.py' --- Lib/test/test_dictviews.py 2007-02-12 02:23:40 +0000 +++ Lib/test/test_dictviews.py 2008-04-17 20:00:15 +0000 @@ -16,6 +16,8 @@ def test_dict_keys(self): d = {1: 10, "a": "ABC"} + g = {1: 10, "a": "ABC", 3:'efg'} + f = {1: 10, "a": "ABC", 3:'efg', 'four':4} keys = d.keys() self.assertEqual(len(keys), 2) self.assertEqual(set(keys), {1, "a"}) @@ -33,9 +35,14 @@ self.assertEqual(d.keys(), e.keys()) del e["a"] self.assertNotEqual(d.keys(), e.keys()) - + self.assertEqual(repr(d.keys()), "") + self.assertEqual(repr(g.keys()), "") + self.assertEqual(repr(f.keys()), "") + def test_dict_items(self): d = {1: 10, "a": "ABC"} + g = {1: 10, "a": "ABC", 3:'efg'} + f = {1: 10, "a": "ABC", 3:'efg', 'four':4} items = d.items() self.assertEqual(len(items), 2) self.assertEqual(set(items), {(1, 10), ("a", "ABC")}) @@ -56,6 +63,11 @@ self.assertEqual(d.items(), e.items()) e["a"] = "def" self.assertNotEqual(d.items(), e.items()) + self.assertEqual(repr(d.items()), "") + self.assertEqual(repr(g.items()), "") + self.assertEqual(repr(f.items()), "") + + def test_dict_mixed_keys_items(self): d = {(1, 1): 11, (2, 2): 22} @@ -65,9 +77,15 @@ def test_dict_values(self): d = {1: 10, "a": "ABC"} + e = {1: 10, "a": "ABC", 3:'efg'} + f = {1: 10, "a": "ABC", 3:'efg', 'four':4} values = d.values() self.assertEqual(set(values), {10, "ABC"}) self.assertEqual(len(values), 2) + self.assertEqual(repr(d.values()), "") + self.assertEqual(repr(e.values()), "") + self.assertEqual(repr(f.values()), "") + def test_main(): test_support.run_unittest(DictSetTest) === modified file 'Lib/test/test_range.py' --- Lib/test/test_range.py 2007-12-04 23:02:19 +0000 +++ Lib/test/test_range.py 2008-04-17 19:54:25 +0000 @@ -61,6 +61,14 @@ self.assertEqual(repr(range(1, 2)), 'range(1, 2)') self.assertEqual(repr(range(1, 2, 3)), 'range(1, 2, 3)') + def test_str(self): + self.assertEqual(str(range(1)), '') + self.assertEqual(str(range(1, 3)), '') + self.assertEqual(str(range(1, 10, 2)), '') + self.assertEqual(str(range(10, 2, -2)), '') + self.assertEqual(str(range(6)), '') + self.assertEqual(str(range(7)), '') + def test_main(): test.test_support.run_unittest(RangeTest) === modified file 'Objects/dictobject.c' --- Objects/dictobject.c 2008-02-25 12:39:23 +0000 +++ Objects/dictobject.c 2008-04-17 19:56:37 +0000 @@ -2627,6 +2627,80 @@ return result; } + +static PyObject* +dictview_repr(PyObject* self) { + PyObject *iter; + PyObject *next; + PyObject *result; + PyObject *repr; + PyObject *append; + result = NULL; + next = NULL; + repr = NULL; + append = NULL; + + iter = PyObject_GetIter(self); + if(!iter) + goto Fail; + + if (Py_TYPE(self) == &PyDictKeys_Type) + result = PyUnicode_FromString(""); + else + repr = PyUnicode_FromString(">"); + + append = PyUnicode_Concat(result, repr); + + Py_DECREF(repr); + Py_DECREF(result); + Py_XDECREF(next); + Py_DECREF(iter); + result = append; + + return result; + + Fail: + Py_XDECREF(append); + Py_XDECREF(repr); + Py_XDECREF(result); + Py_XDECREF(iter); + return NULL; + +} + static PyNumberMethods dictviews_as_number = { 0, /*nb_add*/ (binaryfunc)dictviews_sub, /*nb_subtract*/ @@ -2661,7 +2735,7 @@ 0, /* tp_getattr */ 0, /* tp_setattr */ 0, /* tp_compare */ - 0, /* tp_repr */ + dictview_repr, /* tp_repr */ /* bnm -- is this the place???? */ &dictviews_as_number, /* tp_as_number */ &dictkeys_as_sequence, /* tp_as_sequence */ 0, /* tp_as_mapping */ @@ -2745,7 +2819,7 @@ 0, /* tp_getattr */ 0, /* tp_setattr */ 0, /* tp_compare */ - 0, /* tp_repr */ + dictview_repr, /* tp_repr */ &dictviews_as_number, /* tp_as_number */ &dictitems_as_sequence, /* tp_as_sequence */ 0, /* tp_as_mapping */ @@ -2810,7 +2884,7 @@ 0, /* tp_getattr */ 0, /* tp_setattr */ 0, /* tp_compare */ - 0, /* tp_repr */ + dictview_repr, /* tp_repr */ 0, /* tp_as_number */ &dictvalues_as_sequence, /* tp_as_sequence */ 0, /* tp_as_mapping */ === modified file 'Objects/rangeobject.c' --- Objects/rangeobject.c 2008-02-09 04:13:49 +0000 +++ Objects/rangeobject.c 2008-04-17 19:53:29 +0000 @@ -233,6 +233,97 @@ } static PyObject * +range_str(rangeobject *r) +{ + /* construct a string rep of range like */ + + PyObject *result, *append, *repr; + result = NULL; + append = NULL, + repr = NULL; + + PyObject *rangeitem[7] = {NULL, NULL, NULL, NULL, NULL, NULL, NULL}; + int i; + Py_ssize_t ilen = range_length(r); + if (ilen < 0) + goto Fail; + + if (ilen < 7) { + result = PyUnicode_FromString(""); + if (!repr) + goto Fail; + append = PyUnicode_Concat(result, repr); + if (!append) + goto Fail; + Py_DECREF(result); + Py_DECREF(repr); + result = append; + } + else + { + if ((rangeitem[0] = range_item(r, 0)) == NULL) + goto Fail; + if ((rangeitem[1] = range_item(r, 1)) == NULL) + goto Fail; + if ((rangeitem[2] = range_item(r, 2)) == NULL) + goto Fail; + if ((rangeitem[3] = range_item(r, ilen-2)) == NULL) + goto Fail; + if ((rangeitem[4] = range_item(r, ilen-1)) == NULL) + goto Fail; + ilen = 5; + result = PyUnicode_FromFormat("", + rangeitem[0], + rangeitem[1], + rangeitem[2], + rangeitem[3], + rangeitem[4]); + if (!result) + goto Fail; + } + + for(i=0; i