def get_substream_blocks(self): assert self.chunk_size is not None lock = self.stream_lock blob_length = self.blob_size if blob_length is None: blob_length = _len_plus(self.stream) if blob_length is None: raise ValueError(_ERROR_VALUE_SHOULD_BE_SEEKABLE_STREAM.format('stream')) blocks = int(ceil(blob_length / (self.chunk_size * 1.0))) last_block_size = self.chunk_size if blob_length % self.chunk_size == 0 else blob_length % self.chunk_size for i in range(blocks): yield ('BlockId{}'.format("%05d" % i), _SubStream(self.stream, i * self.chunk_size, last_block_size if i == blocks - 1 else self.chunk_size, lock))
def get_substream_blocks(self): assert self.chunk_size is not None lock = self.stream_lock blob_length = self.blob_size if blob_length is None: blob_length = _len_plus(self.stream) if blob_length is None: raise ValueError(_ERROR_VALUE_SHOULD_BE_SEEKABLE_STREAM.format('stream')) blocks = int(ceil(blob_length / (self.chunk_size * 1.0))) last_block_size = self.chunk_size if blob_length % self.chunk_size == 0 else blob_length % self.chunk_size for i in range(blocks): yield ('BlockId{}'.format("%05d" % i), _SubStream(self.stream, i * self.chunk_size, last_block_size if i == blocks - 1 else self.chunk_size, lock))