docs: def _compute_total_chunks(self, chunk_size):
          # type: (Descriptor, int) -> int
          """Compute total number of chunks for entity
          :param Descriptor self: this
          :param int chunk_size: chunk size
          :rtype: int
          :return: num chunks
          """
          try:
              chunks = int(math.ceil(self._ase.size / chunk_size))
          except ZeroDivisionError:
              chunks = 1
          # for stdin, override and use 1 chunk to start, this will change
          # dynamically as data as read
          if self.local_path.use_stdin:
              chunks = 1
          if (self._ase.mode != blobxfer.models.azure.StorageModes.Page and
                  chunks > 50000):
              max_vector = False
              if self._ase.mode == blobxfer.models.azure.StorageModes.Block:
                  if self._chunk_size == _MAX_BLOCK_BLOB_CHUNKSIZE_BYTES:
                      max_vector = True
              elif self._chunk_size == _MAX_NONBLOCK_BLOB_CHUNKSIZE_BYTES:
                  max_vector = True
              if max_vector:
                  raise RuntimeError(
                      ('number of chunks {} exceeds maximum permissible '
                       'limit and chunk size is set at the maximum value '
                       'for {}. Please try using stripe mode '
                       'vectorization to overcome this limitation').format(
                          chunks, self.local_path.absolute_path))
              else:
                  raise RuntimeError(
                      ('number of chunks {} exceeds maximum permissible '
                       'limit for {}, please adjust chunk size higher or '
                       'set to -1 for automatic chunk size selection').format(
                           chunks, self.local_path.absolute_path))
          return chunks