'Constructor.
Args:
blob: The blob key, blob info, or string blob key to read from.
buffer_size: The minimum size to fetch chunks of data from blobstore.
position: The initial position in the file.
Raises:
ValueError if a blob key, blob info or string blob key is not supplied.'

def __init__(self, blob, buffer_size=131072, position=0):

    if (not blob):
        raise ValueError('A    BlobKey,    BlobInfo    or    string    is    required.')
    if hasattr(blob, 'key'):
        self.__blob_key = blob.key()
        self.__blob_info = blob
    else:
        self.__blob_key = blob
        self.__blob_info = None
    self.__buffer_size = buffer_size
    self.__buffer = ''
    self.__position = position
    self.__buffer_position = 0
    self.__eof = False
