From af3b39a1823d57eca4034ce6879ab926f175595e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Walter=20D=C3=B6rwald?= Date: Fri, 18 Feb 2005 13:22:43 +0000 Subject: Add support for negative indices in UserString.MutableString.__setitem__ and UserString.MutableString.__delitem__. --- Lib/UserString.py | 4 ++++ Lib/test/test_userstring.py | 14 +++++++------- Misc/NEWS | 3 +++ 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/Lib/UserString.py b/Lib/UserString.py index e8e0fed..3251139 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 95f1351..53114db 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 a5ab25a..71e7b82 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 ----- -- cgit v0.12