A non-rewindable buffer that frees memory of chunks already consumed.
This class is necessary because google-resumable-media-python expects
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. write()
will always append to the end of the file only and not change the seek
position otherwise. 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.
Methods
__len__
__len__()
Determine the size of the buffer by seeking to the end.
flush
flush()
Delete already-read data (all data to the left of the position).
read
read(size=-1)
Read and move the cursor.
seek
seek(pos)
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.
tell
tell()
Report how many bytes have been read from the buffer in total.
write
write(b)
Append to the end of the buffer without changing the position.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-12 UTC."],[],[],null,["# Class SlidingBuffer (3.3.0)\n\nVersion latestkeyboard_arrow_down\n\n- [3.3.0 (latest)](/python/docs/reference/storage/latest/google.cloud.storage.fileio.SlidingBuffer)\n- [3.2.0](/python/docs/reference/storage/3.2.0/google.cloud.storage.fileio.SlidingBuffer)\n- [3.1.1](/python/docs/reference/storage/3.1.1/google.cloud.storage.fileio.SlidingBuffer)\n- [3.0.0](/python/docs/reference/storage/3.0.0/google.cloud.storage.fileio.SlidingBuffer)\n- [2.19.0](/python/docs/reference/storage/2.19.0/google.cloud.storage.fileio.SlidingBuffer)\n- [2.17.0](/python/docs/reference/storage/2.17.0/google.cloud.storage.fileio.SlidingBuffer)\n- [2.16.0](/python/docs/reference/storage/2.16.0/google.cloud.storage.fileio.SlidingBuffer)\n- [2.15.0](/python/docs/reference/storage/2.15.0/google.cloud.storage.fileio.SlidingBuffer)\n- [2.14.0](/python/docs/reference/storage/2.14.0/google.cloud.storage.fileio.SlidingBuffer)\n- [2.13.0](/python/docs/reference/storage/2.13.0/google.cloud.storage.fileio.SlidingBuffer)\n- [2.12.0](/python/docs/reference/storage/2.12.0/google.cloud.storage.fileio.SlidingBuffer)\n- [2.11.0](/python/docs/reference/storage/2.11.0/google.cloud.storage.fileio.SlidingBuffer)\n- [2.10.0](/python/docs/reference/storage/2.10.0/google.cloud.storage.fileio.SlidingBuffer)\n- [2.9.0](/python/docs/reference/storage/2.9.0/google.cloud.storage.fileio.SlidingBuffer)\n- [2.8.0](/python/docs/reference/storage/2.8.0/google.cloud.storage.fileio.SlidingBuffer)\n- [2.7.0](/python/docs/reference/storage/2.7.0/google.cloud.storage.fileio.SlidingBuffer)\n- [2.6.0](/python/docs/reference/storage/2.6.0/google.cloud.storage.fileio.SlidingBuffer)\n- [2.5.0](/python/docs/reference/storage/2.5.0/google.cloud.storage.fileio.SlidingBuffer)\n- [2.4.0](/python/docs/reference/storage/2.4.0/google.cloud.storage.fileio.SlidingBuffer)\n- [2.3.0](/python/docs/reference/storage/2.3.0/google.cloud.storage.fileio.SlidingBuffer)\n- [2.2.1](/python/docs/reference/storage/2.2.1/google.cloud.storage.fileio.SlidingBuffer)\n- [2.1.0](/python/docs/reference/storage/2.1.0/google.cloud.storage.fileio.SlidingBuffer)\n- [2.0.0](/python/docs/reference/storage/2.0.0/google.cloud.storage.fileio.SlidingBuffer)\n- [1.44.0](/python/docs/reference/storage/1.44.0/google.cloud.storage.fileio.SlidingBuffer)\n- [1.43.0](/python/docs/reference/storage/1.43.0/google.cloud.storage.fileio.SlidingBuffer)\n- [1.42.3](/python/docs/reference/storage/1.42.3/google.cloud.storage.fileio.SlidingBuffer)\n- [1.41.1](/python/docs/reference/storage/1.41.1/google.cloud.storage.fileio.SlidingBuffer)\n- [1.40.0](/python/docs/reference/storage/1.40.0/google.cloud.storage.fileio.SlidingBuffer)\n- [1.39.0](/python/docs/reference/storage/1.39.0/google.cloud.storage.fileio.SlidingBuffer)\n- [1.38.0](/python/docs/reference/storage/1.38.0/google.cloud.storage.fileio.SlidingBuffer)\n- [1.37.1](/python/docs/reference/storage/1.37.1/google.cloud.storage.fileio.SlidingBuffer)\n- [1.36.2](/python/docs/reference/storage/1.36.2/google.cloud.storage.fileio.SlidingBuffer)\n- [1.35.1](/python/docs/reference/storage/1.35.1/google.cloud.storage.fileio.SlidingBuffer)\n- [1.34.0](/python/docs/reference/storage/1.34.0/google.cloud.storage.fileio.SlidingBuffer)\n- [1.33.0](/python/docs/reference/storage/1.33.0/google.cloud.storage.fileio.SlidingBuffer)\n- [1.32.0](/python/docs/reference/storage/1.32.0/google.cloud.storage.fileio.SlidingBuffer)\n- [1.31.2](/python/docs/reference/storage/1.31.2/google.cloud.storage.fileio.SlidingBuffer)\n- [1.30.0](/python/docs/reference/storage/1.30.0/google.cloud.storage.fileio.SlidingBuffer)\n- [1.29.0](/python/docs/reference/storage/1.29.0/google.cloud.storage.fileio.SlidingBuffer)\n- [1.28.1](/python/docs/reference/storage/1.28.1/google.cloud.storage.fileio.SlidingBuffer)\n- [1.27.0](/python/docs/reference/storage/1.27.0/google.cloud.storage.fileio.SlidingBuffer)\n- [1.26.0](/python/docs/reference/storage/1.26.0/google.cloud.storage.fileio.SlidingBuffer)\n- [1.25.0](/python/docs/reference/storage/1.25.0/google.cloud.storage.fileio.SlidingBuffer)\n- [1.24.1](/python/docs/reference/storage/1.24.1/google.cloud.storage.fileio.SlidingBuffer)\n- [1.23.0](/python/docs/reference/storage/1.23.0/google.cloud.storage.fileio.SlidingBuffer)\n- [1.22.0](/python/docs/reference/storage/1.22.0/google.cloud.storage.fileio.SlidingBuffer)\n- [1.21.0](/python/docs/reference/storage/1.21.0/google.cloud.storage.fileio.SlidingBuffer)\n- [1.20.0](/python/docs/reference/storage/1.20.0/google.cloud.storage.fileio.SlidingBuffer)\n- [1.19.0](/python/docs/reference/storage/1.19.0/google.cloud.storage.fileio.SlidingBuffer)\n- [1.18.0](/python/docs/reference/storage/1.18.0/google.cloud.storage.fileio.SlidingBuffer)\n- [1.17.0](/python/docs/reference/storage/1.17.0/google.cloud.storage.fileio.SlidingBuffer) \n\n SlidingBuffer()\n\nA non-rewindable buffer that frees memory of chunks already consumed.\n\nThis class is necessary because `google-resumable-media-python` expects\n`tell()` to work relative to the start of the file, not relative to a place\nin an intermediate buffer. Using this class, we present an external\ninterface with consistent seek and tell behavior without having to actually\nstore bytes already sent.\n\nBehavior of this class differs from an ordinary BytesIO buffer. `write()`\nwill always append to the end of the file only and not change the seek\nposition otherwise. `flush()` will delete all data already read (data to the\nleft of the seek position). `tell()` will report the seek position of the\nbuffer including all deleted data. Additionally the class implements\n**len**() which will report the size of the actual underlying buffer.\n\nThis class does not attempt to implement the entire Python I/O interface.\n\nMethods\n-------\n\n### __len__\n\n __len__()\n\nDetermine the size of the buffer by seeking to the end.\n\n### flush\n\n flush()\n\nDelete already-read data (all data to the left of the position).\n\n### read\n\n read(size=-1)\n\nRead and move the cursor.\n\n### seek\n\n seek(pos)\n\nSeek to a position (backwards only) within the internal buffer.\n\nThis implementation of seek() verifies that the seek destination is\ncontained in _buffer. It will raise ValueError if the destination byte\nhas already been purged from the buffer.\n\nThe \"whence\" argument is not supported in this implementation.\n\n### tell\n\n tell()\n\nReport how many bytes have been read from the buffer in total.\n\n### write\n\n write(b)\n\nAppend to the end of the buffer without changing the position."]]