1.1 --- a/lib/__builtins__/list.py Mon Nov 28 00:53:13 2016 +0100
1.2 +++ b/lib/__builtins__/list.py Mon Nov 28 00:59:41 2016 +0100
1.3 @@ -107,18 +107,14 @@
1.4
1.5 "Return the item at the normalised (positive) 'index'."
1.6
1.7 - if index >= len(self):
1.8 - raise IndexError(index)
1.9 -
1.10 + self._check_index(index)
1.11 return native._list_element(self, index)
1.12
1.13 def __set_single_item__(self, index, value):
1.14
1.15 "Set at the normalised (positive) 'index' the given 'value'."
1.16
1.17 - if index >= len(self):
1.18 - raise IndexError(index)
1.19 -
1.20 + self._check_index(index)
1.21 return native._list_setelement(self, index, value)
1.22
1.23 # vim: tabstop=4 expandtab shiftwidth=4
2.1 --- a/lib/__builtins__/sequence.py Mon Nov 28 00:53:13 2016 +0100
2.2 +++ b/lib/__builtins__/sequence.py Mon Nov 28 00:59:41 2016 +0100
2.3 @@ -54,7 +54,7 @@
2.4 # ones.
2.5
2.6 if _isinstance(index, int):
2.7 - index = _normalise_index(index, self.__len__())
2.8 + index = _get_absolute_index(index, self.__len__())
2.9 return self.__get_single_item__(index)
2.10
2.11 # Handle slices separately.
2.12 @@ -75,7 +75,7 @@
2.13 # ones.
2.14
2.15 if _isinstance(index, int):
2.16 - index = _normalise_index(index, self.__len__())
2.17 + index = _get_absolute_index(index, self.__len__())
2.18 return self.__set_single_item__(index, value)
2.19
2.20 # Handle slices separately.
2.21 @@ -100,7 +100,7 @@
2.22 if start is None:
2.23 start = 0
2.24 else:
2.25 - start = _normalise_index(start, length)
2.26 + start = _get_absolute_index(start, length)
2.27
2.28 # Handle a null end as the first position after the end of the sequence,
2.29 # otherwise normalising any end index.
2.30 @@ -108,7 +108,7 @@
2.31 if end is None:
2.32 end = length
2.33 else:
2.34 - end = _normalise_index(end, length)
2.35 + end = _get_absolute_index(end, length)
2.36
2.37 result = []
2.38
2.39 @@ -118,6 +118,16 @@
2.40
2.41 return result
2.42
2.43 + def _check_index(self, index):
2.44 +
2.45 + """
2.46 + Check the given absolute 'index', raising an IndexError if out of
2.47 + bounds.
2.48 + """
2.49 +
2.50 + if index < 0 or index >= len(self):
2.51 + raise IndexError(index)
2.52 +
2.53 def _get_absolute_index(index, length):
2.54
2.55 """
2.56 @@ -130,12 +140,6 @@
2.57 else:
2.58 return index
2.59
2.60 -def _normalise_index(index, length):
2.61 -
2.62 - "Normalise 'index' for a collection having the specified 'length'."
2.63 -
2.64 - return _min(length, _max(0, _get_absolute_index(index, length)))
2.65 -
2.66 def _max(x, y):
2.67
2.68 "Return the maximum of 'x' and 'y'."
3.1 --- a/lib/__builtins__/tuple.py Mon Nov 28 00:53:13 2016 +0100
3.2 +++ b/lib/__builtins__/tuple.py Mon Nov 28 00:59:41 2016 +0100
3.3 @@ -86,9 +86,7 @@
3.4
3.5 "Return the item at the normalised (positive) 'index'."
3.6
3.7 - if index >= len(self):
3.8 - raise IndexError(index)
3.9 -
3.10 + self._check_index(index)
3.11 return native._list_element(self, index)
3.12
3.13 def __set_single_item__(self, index, value):