class_docstr: A path-like object for object storage.
class_docstr_tok: ["A","path-like","object","for","object","storage","."]
docstr: Read a block of bytes.
  
  Starting at ``offset`` of the file, read ``length`` bytes. If
  ``delimiter`` is set then we ensure that the read starts and stops at
  delimiter boundaries that follow the locations ``offset`` and ``offset
  + length``. If ``offset`` is zero then we start at zero. The
  bytestring returned WILL include the end delimiter string.
  
  If offset+length is beyond the eof, reads to eof.
  
  :param offset: int
                Byte offset to start read
  :param length: int
                Number of bytes to read. If None, read to the end.
  :param delimiter: bytes (optional)
                  Ensure reading starts and stops at delimiter bytestring
  
  Examples
  --------
  >>> read_block(0, 13)
  b'Alice, 100\\nBo'
  >>> read_block(0, 13, delimiter=b"\\n")
  b'Alice, 100\\nBob, 200\\n'
  
  Use ``length=None`` to read to the end of the file.
  >>> read_block(0, None, delimiter=b"\\n")
  b'Alice, 100\\nBob, 200\\nCharlie, 300'
  
  See Also
  --------
  :func:`fsspec.utils.read_block`
docstr_tok: ["Read","a","block","of","bytes",".","Starting","at","``","offset","``","of","the","file",",","read","``","length","``","bytes",".","If","``","delimiter","``","is","set","then","we","ensure","that","the","read","starts","and","stops","at","delimiter","boundaries","that","follow","the","locations","``","offset","``","and","``","offset","+","length","``",".","If","``","offset","``","is","zero","then","we","start","at","zero",".","The","bytestring","returned","WILL","include","the","end","delimiter","string",".","If","offset+length","is","beyond","the","eof",",","reads","to","eof",".",":","param","offset",":","int","Byte","offset","to","start","read",":","param","length",":","int","Number","of","bytes","to","read",".","If","None",",","read","to","the","end",".",":","param","delimiter",":","bytes","(","optional",")","Ensure","reading","starts","and","stops","at","delimiter","bytestring","Examples","--","--","--","--",">",">",">","read_block","(","0",",","13",")","b'Alice",",","100\\\\nBo'",">",">",">","read_block","(","0",",","13",",","delimiter=b","''","\\\\n","''",")","b'Alice",",","100\\\\nBob",",","200\\\\n'","Use","``","length=None","``","to","read","to","the","end","of","the","file",".",">",">",">","read_block","(","0",",","None",",","delimiter=b","''","\\\\n","''",")","b'Alice",",","100\\\\nBob",",","200\\\\nCharlie",",","300'","See","Also","--","--","--","--",":","func",":","`","fsspec.utils.read_block","`"]
code: def read_block(self, offset: int, length: int, delimiter=None):
      r"""Read a block of bytes.
  
      Starting at ``offset`` of the file, read ``length`` bytes. If
      ``delimiter`` is set then we ensure that the read starts and stops at
      delimiter boundaries that follow the locations ``offset`` and ``offset
      + length``. If ``offset`` is zero then we start at zero. The
      bytestring returned WILL include the end delimiter string.
  
      If offset+length is beyond the eof, reads to eof.
  
      :param offset: int
                    Byte offset to start read
      :param length: int
                    Number of bytes to read. If None, read to the end.
      :param delimiter: bytes (optional)
                      Ensure reading starts and stops at delimiter bytestring
  
      Examples
      --------
      >>> read_block(0, 13)
      b'Alice, 100\\nBo'
      >>> read_block(0, 13, delimiter=b"\\n")
      b'Alice, 100\\nBob, 200\\n'
  
      Use ``length=None`` to read to the end of the file.
      >>> read_block(0, None, delimiter=b"\\n")
      b'Alice, 100\\nBob, 200\\nCharlie, 300'
  
      See Also
      --------
      :func:`fsspec.utils.read_block`
      """
      return self.fs.read_block(
          self.path, offset=offset, length=length, delimiter=delimiter
      )
  
imports: from __future__ import annotations
  import contextlib
  import functools
  import os
  import shutil
  import typing
  from pathlib import PurePath
  from urllib.parse import urlsplit
  from fsspec.core import split_protocol
  from fsspec.utils import stringify_path
  from upath.implementations.cloud import CloudPath, _CloudAccessor
  from upath.registry import get_upath_class
  from airflow.io.store import attach
  from airflow.io.utils.stat import stat_result
label_desc: Use image node_id 17 for calling the ObjectStoragePath obj's underlying member method code with example usage: obj.read_block(offset, length, delimiter) and returns: self