A non-rewindable buffer that frees memory of chunks already consumed.
This class is necessary because
tell() to work relative to the start of the file, not relative to a place
in an intermediate buffer. Using this class, we present an external
interface with consistent seek and tell behavior without having to actually
store bytes already sent.
Behavior of this class differs from an ordinary BytesIO buffer.
will always append to the end of the file only and not change the seek
flush() will delete all data already read (data to the
left of the seek position).
tell() will report the seek position of the
buffer including all deleted data. Additionally the class implements
len() which will report the size of the actual underlying buffer.
This class does not attempt to implement the entire Python I/O interface.
Determine the size of the buffer by seeking to the end.
Delete already-read data (all data to the left of the position).
Read and move the cursor.
Seek to a position (backwards only) within the internal buffer.
This implementation of seek() verifies that the seek destination is contained in _buffer. It will raise ValueError if the destination byte has already been purged from the buffer.
The "whence" argument is not supported in this implementation.
Report how many bytes have been read from the buffer in total.
Append to the end of the buffer without changing the position.