code: def compute_chunksize(df, num_splits, default_block_size=32, axis=None):
      
      if axis == 0 or axis is None:
          row_chunksize = get_default_chunksize(len(df.index), num_splits)
          # Take the min of the default and the memory-usage chunksize first to avoid a
          # large amount of small partitions.
          row_chunksize = max(1, row_chunksize, default_block_size)
          if axis == 0:
              return row_chunksize
      # We always execute this because we can only get here if axis is 1 or None.
      col_chunksize = get_default_chunksize(len(df.columns), num_splits)
      # Take the min of the default and the memory-usage chunksize first to avoid a
      # large amount of small partitions.
      col_chunksize = max(1, col_chunksize, default_block_size)
      if axis == 1:
          return col_chunksize
  
      return row_chunksize, col_chunksize
docs: Computes the number of rows and/or columns to include in each partition.
  
      Args:
          df: The DataFrame to split.
          num_splits: The maximum number of splits to separate the DataFrame into.
          default_block_size: Minimum number of rows/columns (default set to 32x32).
          axis: The axis to split. (0: Index, 1: Columns, None: Both)
  
      Returns:
           If axis is 1 or 0, returns an integer number of rows/columns to split the
           DataFrame. If axis is None, return a tuple containing both.