_frame_iterator has an old comment about some hand-written code that
was needed when supporting Python 2.6. This patch simplifies the code
by using a couple of features of collections.deque.
# Is this a slice from the end of the backtrace, ie bt -2?
if frame_low < 0:
- count = 0
- slice_length = abs(frame_low)
- # We cannot use MAXLEN argument for deque as it is 2.6 onwards
- # and some GDB versions might be < 2.6.
- sliced = collections.deque()
-
- for frame_item in frame_iterator:
- if count >= slice_length:
- sliced.popleft()
- count = count + 1
- sliced.append(frame_item)
-
+ sliced = collections.deque(iterable=frame_iterator, maxlen=abs(frame_low))
return iter(sliced)
# -1 for frame_high means until the end of the backtrace. Set to