Skip to content

Commit dbdc51f

Browse files
committed
-
1 parent c0f9ecb commit dbdc51f

File tree

2 files changed

+11
-8
lines changed

2 files changed

+11
-8
lines changed

source_py2/python_toolbox/sequence_tools/cute_range.py

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -175,13 +175,15 @@ def _repr(self):
175175

176176

177177

178-
def __getitem__(self, i):
178+
def __getitem__(self, i, allow_out_of_range=False):
179179
from python_toolbox import sequence_tools
180180
if isinstance(i, numbers.Integral):
181-
if 0 <= i < self.length:
181+
if i < 0:
182+
if i < (-self.length) and not allow_out_of_range:
183+
raise IndexError
184+
i += self.length
185+
if 0 <= i < self.length or allow_out_of_range:
182186
return self.start + (self.step * i)
183-
elif (-self.length) <= i < 0:
184-
return self.start + (self.step * (i + self.length))
185187
else:
186188
raise IndexError
187189
elif i == infinity:
@@ -196,12 +198,13 @@ def __getitem__(self, i):
196198
i, iterable_or_length=self
197199
)
198200
if not ((0 <= canonical_slice.start < self.length) and
199-
((0 <= canonical_slice.stop < self.length) or
201+
((0 <= canonical_slice.stop <= self.length) or
200202
(canonical_slice.stop == self.length == infinity))):
201203
raise TypeError
202204
return CuteRange(
203205
self[canonical_slice.start],
204-
self[canonical_slice.stop],
206+
self.__getitem__(canonical_slice.stop,
207+
allow_out_of_range=True),
205208
self.step * canonical_slice.step
206209
)
207210
else:

source_py3/python_toolbox/sequence_tools/cute_range.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@ def __getitem__(self, i, allow_out_of_range=False):
173173
from python_toolbox import sequence_tools
174174
if isinstance(i, numbers.Integral):
175175
if i < 0:
176-
if i < y (-self.length) and not allow_out_of_range:
176+
if i < (-self.length) and not allow_out_of_range:
177177
raise IndexError
178178
i += self.length
179179
if 0 <= i < self.length or allow_out_of_range:
@@ -192,7 +192,7 @@ def __getitem__(self, i, allow_out_of_range=False):
192192
i, iterable_or_length=self
193193
)
194194
if not ((0 <= canonical_slice.start < self.length) and
195-
((0 <= canonical_slice.stop < self.length) or
195+
((0 <= canonical_slice.stop <= self.length) or
196196
(canonical_slice.stop == self.length == infinity))):
197197
raise TypeError
198198
return CuteRange(

0 commit comments

Comments
 (0)