code: def get_num_shards(num_samples: int, samples_per_shard: int, min_num_shards: int) -> int:
      
      return max(int(math.ceil(num_samples / samples_per_shard)), min_num_shards)
docs: Returns the number of shards.
  
      :param num_samples: Number of training data samples.
      :param samples_per_shard: Samples per shard.
      :param min_num_shards: Minimum number of shards.
      :return: Number of shards.