From ba1c39341504922d4a7af8453d929de71ad86c13 Mon Sep 17 00:00:00 2001 From: Heiko Noordhof Date: Thu, 16 Oct 2014 10:21:49 +0200 Subject: turn deprecated slice methods into wrappers __delslice__() and __setslice__() are deprecated as of python v2.6 [1] and urwid does not support python versions pre-v2.6 (anymore). Making these methods wrappers of __delitem__() and __setitem__() de-duplicates code (and doctest's) [1] https://docs.python.org/2.6/reference/datamodel.html --- urwid/monitored_list.py | 45 ++------------------------------------------- 1 file changed, 2 insertions(+), 43 deletions(-) diff --git a/urwid/monitored_list.py b/urwid/monitored_list.py index a1a6326..028e082 100755 --- a/urwid/monitored_list.py +++ b/urwid/monitored_list.py @@ -319,51 +319,10 @@ class MonitoredFocusList(MonitoredList): if not PYTHON3: def __delslice__(self, i, j): - """ - >>> def modified(indices, new_items): - ... print "range%r <- %r" % (indices, list(new_items)) - >>> ml = MonitoredFocusList([0,1,2,3,4], focus=2) - >>> ml.set_validate_contents_modified(modified) - >>> del ml[3:5] - range(3, 5, 1) <- [] - >>> ml - MonitoredFocusList([0, 1, 2], focus=2) - >>> del ml[:1] - range(0, 1, 1) <- [] - >>> ml - MonitoredFocusList([1, 2], focus=1) - >>> del ml[1:]; ml - range(1, 2, 1) <- [] - MonitoredFocusList([1], focus=0) - >>> del ml[:]; ml - range(0, 1, 1) <- [] - MonitoredFocusList([], focus=None) - """ - focus = self._adjust_focus_on_contents_modified(slice(i, j)) - rval = super(MonitoredFocusList, self).__delslice__(i, j) - self._set_focus(focus) - return rval + return self.__delitem__(slice(i,j)) def __setslice__(self, i, j, y): - """ - >>> ml = MonitoredFocusList([0,1,2,3,4], focus=2) - >>> ml[3:5] = [-1]; ml - MonitoredFocusList([0, 1, 2, -1], focus=2) - >>> ml[0:1] = []; ml - MonitoredFocusList([1, 2, -1], focus=1) - >>> ml[1:] = [3, 4]; ml - MonitoredFocusList([1, 3, 4], focus=1) - >>> ml[1:] = [2]; ml - MonitoredFocusList([1, 2], focus=1) - >>> ml[0:1] = [9,9,9]; ml - MonitoredFocusList([9, 9, 9, 2], focus=3) - >>> ml[:] = []; ml - MonitoredFocusList([], focus=None) - """ - focus = self._adjust_focus_on_contents_modified(slice(i, j), y) - rval = super(MonitoredFocusList, self).__setslice__(i, j, y) - self._set_focus(focus) - return rval + return self.__setitem__(slice(i, j), y) def __imul__(self, n): """ -- cgit v1.2.1 From 8eac1bac3f163448083b9a77e3a03f79f8f06da0 Mon Sep 17 00:00:00 2001 From: Heiko Noordhof Date: Wed, 15 Oct 2014 15:23:53 +0200 Subject: add doctest examples of negative indices --- urwid/monitored_list.py | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/urwid/monitored_list.py b/urwid/monitored_list.py index 028e082..e7de5f9 100755 --- a/urwid/monitored_list.py +++ b/urwid/monitored_list.py @@ -265,8 +265,10 @@ class MonitoredFocusList(MonitoredList): def __delitem__(self, y): """ - >>> ml = MonitoredFocusList([0,1,2,3], focus=2) + >>> ml = MonitoredFocusList([0,1,2,3,4], focus=2) >>> del ml[3]; ml + MonitoredFocusList([0, 1, 2, 4], focus=2) + >>> del ml[-1]; ml MonitoredFocusList([0, 1, 2], focus=2) >>> del ml[0]; ml MonitoredFocusList([1, 2], focus=1) @@ -279,6 +281,13 @@ class MonitoredFocusList(MonitoredList): MonitoredFocusList([5, 6, 5, 6, 5], focus=2) >>> del ml[::2]; ml MonitoredFocusList([6, 6], focus=1) + >>> ml = MonitoredFocusList([0,1,2,3,4,6,7], focus=2) + >>> del ml[-2:]; ml + MonitoredFocusList([0, 1, 2, 3, 4], focus=2) + >>> del ml[-4:-2]; ml + MonitoredFocusList([0, 3, 4], focus=1) + >>> del ml[:]; ml + MonitoredFocusList([], focus=None) """ if isinstance(y, slice): focus = self._adjust_focus_on_contents_modified(y) @@ -308,6 +317,14 @@ class MonitoredFocusList(MonitoredList): range(1, 4, 2) <- [12, 13] >>> ml[::2] = [10, 11] range(0, 4, 2) <- [10, 11] + >>> ml[-3:-1] = [21, 22, 23] + range(1, 3, 1) <- [21, 22, 23] + >>> ml + MonitoredFocusList([10, 21, 22, 23, 13], focus=2) + >>> ml[:] = [] + range(0, 5, 1) <- [] + >>> ml + MonitoredFocusList([], focus=None) """ if isinstance(i, slice): focus = self._adjust_focus_on_contents_modified(i, y) -- cgit v1.2.1 From 2985ed71b01a8fe1bf0a64715930a1bf597d3d0a Mon Sep 17 00:00:00 2001 From: Heiko Noordhof Date: Wed, 15 Oct 2014 15:40:27 +0200 Subject: make __delitem__ support negative indices --- urwid/monitored_list.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/urwid/monitored_list.py b/urwid/monitored_list.py index e7de5f9..f9170ca 100755 --- a/urwid/monitored_list.py +++ b/urwid/monitored_list.py @@ -292,7 +292,8 @@ class MonitoredFocusList(MonitoredList): if isinstance(y, slice): focus = self._adjust_focus_on_contents_modified(y) else: - focus = self._adjust_focus_on_contents_modified(slice(y, y+1)) + focus = self._adjust_focus_on_contents_modified(slice(y, + y+1 or None)) rval = super(MonitoredFocusList, self).__delitem__(y) self._set_focus(focus) return rval -- cgit v1.2.1