From: Walter Dörwald Date: Fri, 18 Feb 2005 13:22:43 +0000 (+0000) Subject: Add support for negative indices in UserString.MutableString.__setitem__ X-Git-Tag: v2.5a0~2012 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=af3b39a1823d57eca4034ce6879ab926f175595e;p=thirdparty%2FPython%2Fcpython.git Add support for negative indices in UserString.MutableString.__setitem__ and UserString.MutableString.__delitem__. --- diff --git a/Lib/UserString.py b/Lib/UserString.py index e8e0fedd87f7..32511390501f 100755 --- a/Lib/UserString.py +++ b/Lib/UserString.py @@ -146,9 +146,13 @@ class MutableString(UserString): def __hash__(self): raise TypeError, "unhashable type (it is mutable)" def __setitem__(self, index, sub): + if index < 0: + index += len(self.data) if index < 0 or index >= len(self.data): raise IndexError self.data = self.data[:index] + sub + self.data[index+1:] def __delitem__(self, index): + if index < 0: + index += len(self.data) if index < 0 or index >= len(self.data): raise IndexError self.data = self.data[:index] + self.data[index+1:] def __setslice__(self, start, end, sub): diff --git a/Lib/test/test_userstring.py b/Lib/test/test_userstring.py index 95f13515385a..53114db28513 100755 --- a/Lib/test/test_userstring.py +++ b/Lib/test/test_userstring.py @@ -52,20 +52,20 @@ class MutableStringTest(UserStringTest): def test_setitem(self): s = self.type2test("foo") - self.assertRaises(IndexError, s.__setitem__, -1, "bar") + self.assertRaises(IndexError, s.__setitem__, -4, "bar") self.assertRaises(IndexError, s.__setitem__, 3, "bar") + s[-1] = "bar" + self.assertEqual(s, "fobar") s[0] = "bar" - self.assertEqual(s, "baroo") - s[4] = "foo" - self.assertEqual(s, "barofoo") + self.assertEqual(s, "barobar") def test_delitem(self): s = self.type2test("foo") - self.assertRaises(IndexError, s.__delitem__, -1) + self.assertRaises(IndexError, s.__delitem__, -4) self.assertRaises(IndexError, s.__delitem__, 3) + del s[-1] + self.assertEqual(s, "fo") del s[0] - self.assertEqual(s, "oo") - del s[1] self.assertEqual(s, "o") del s[0] self.assertEqual(s, "") diff --git a/Misc/NEWS b/Misc/NEWS index a5ab25a01d1a..71e7b82440de 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -152,6 +152,9 @@ Library - The reconvert.quote function can now emit triple-quoted strings. The reconvert module now has some simple documentation. +- ``UserString.MutableString`` now supports negative indices in + ``__setitem__`` and ``__delitem__`` + Build -----