Author: Manuel Jacob Branch: remove-list-smm-2 Changeset: r64185:b42d871e5519 Date: 2013-05-15 16:56 +0200 http://bitbucket.org/pypy/pypy/changeset/b42d871e5519/
Log: Remove list.__delitem__/__delslice__ multi-methods. diff --git a/pypy/objspace/std/listobject.py b/pypy/objspace/std/listobject.py --- a/pypy/objspace/std/listobject.py +++ b/pypy/objspace/std/listobject.py @@ -397,6 +397,27 @@ w_other = W_ListObject(space, sequence_w) self.setslice(start, 1, stop-start, w_other) + def descr_delitem(self, space, w_idx): + if isinstance(w_idx, W_SliceObject): + start, stop, step, slicelength = w_idx.indices4(space, self.length()) + self.deleteslice(start, step, slicelength) + return + + idx = get_list_index(space, w_idx) + if idx < 0: + idx += self.length() + try: + self.pop(idx) + except IndexError: + raise OperationError(space.w_IndexError, + space.wrap("list index out of range")) + + + def descr_delslice(self, space, w_start, w_stop): + length = self.length() + start, stop = normalize_simple_slice(space, length, w_start, w_stop) + self.deleteslice(start, 1, stop-start) + def descr_reversed(self, space): 'L.__reversed__() -- return a reverse iterator over the list' from pypy.objspace.std.iterobject import W_ReverseSeqIterObject @@ -1439,11 +1460,6 @@ init_signature = Signature(['sequence'], None, None) init_defaults = [None] -def delslice__List_ANY_ANY(space, w_list, w_start, w_stop): - length = w_list.length() - start, stop = normalize_simple_slice(space, length, w_start, w_stop) - w_list.deleteslice(start, 1, stop-start) - def contains__List_ANY(space, w_list, w_obj): try: w_list.find(w_obj) @@ -1543,22 +1559,6 @@ gt__List_List = _make_list_comparison('gt') ge__List_List = _make_list_comparison('ge') -def delitem__List_ANY(space, w_list, w_idx): - idx = get_list_index(space, w_idx) - if idx < 0: - idx += w_list.length() - try: - w_list.pop(idx) - except IndexError: - raise OperationError(space.w_IndexError, - space.wrap("list deletion index out of range")) - return space.w_None - - -def delitem__List_Slice(space, w_list, w_slice): - start, stop, step, slicelength = w_slice.indices4(space, w_list.length()) - w_list.deleteslice(start, step, slicelength) - app = applevel(""" def listrepr(currently_in_repr, l): 'The app-level part of repr().' @@ -1694,6 +1694,8 @@ __getslice__ = interp2app(W_ListObject.descr_getslice), __setitem__ = interp2app(W_ListObject.descr_setitem), __setslice__ = interp2app(W_ListObject.descr_setslice), + __delitem__ = interp2app(W_ListObject.descr_delitem), + __delslice__ = interp2app(W_ListObject.descr_delslice), sort = interp2app(W_ListObject.descr_sort), index = interp2app(W_ListObject.descr_index), _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit