'Returns an iterator over the data file for range (start, stop)'

def app_iter_range(self, start, stop):

    if (start or (start == 0)):
        self._fp.seek(start)
    if (stop is not None):
        length = (stop - start)
    else:
        length = None
    try:
        for chunk in self:
            if (length is not None):
                length -= len(chunk)
                if (length < 0):
                    (yield chunk[:length])
                    break
            (yield chunk)
    finally:
        if (not self._suppress_file_closing):
            self.close()
