code: def _get_chunk_size(self) -> int:
      if (
          self._total_size
          > self._max_chunk_count * self._max_chunk_size
      ):
          # can't fit it
          max_size = self._max_chunk_count * self._max_chunk_size
          raise InternalClientError(
              f"File {self._filename or 'stream'} is too big to upload:"
              f" {self._total_size} bytes exceeds max size {max_size}"
          )
      if (
          self._total_size
          <= self._max_chunk_count * self._min_chunk_size
      ):
          # can be done as minimal size chunks -- go for it!
          return self._min_chunk_size
      else:
          # need larger chunks -- split more or less equally
          return math.ceil(self._total_size / self._max_chunk_count)
  
file_path: neptune-client/src/neptune/common/storage/datastream.py
imports: import dataclasses
  import io
  import math
  import os
  import tarfile
  from typing import Any, Generator, Optional
  from neptune.common.backends.api_model import MultipartConfig
  from neptune.common.exceptions import InternalClientError, UploadedFileChanged
label_desc: Use image node_id 2 for calling the FileChunker obj's underlying member method code with example usage: obj._get_chunk_size() and returns: self, math