code: def add_prepare_data_cli_args(params):
      add_training_data_args(params, required=True)
      add_vocab_args(params)
      add_bucketing_args(params)
  
      params.add_argument(
          "--num-samples-per-shard",
          type=int_greater_or_equal(1),
          default=10000000,
          help="The approximate number of samples per shard. Default: %(default)s.",
      )
  
      params.add_argument(
          "--min-num-shards",
          default=1,
          type=int_greater_or_equal(1),
          help="The minimum number of shards to use, even if they would not "
          "reach the desired number of samples per shard. Default: %(default)s.",
      )
  
      params.add_argument(
          "--seed",
          type=int,
          default=13,
          help="Random seed used that makes shard assignments deterministic. Default: %(default)s.",
      )
  
      params.add_argument(
          "--output",
          "-o",
          required=True,
          help="Folder where the prepared and possibly sharded data is written to.",
      )
  
      add_logging_args(params)
      add_process_pool_args(params)
  
imports: import argparse
  import os
  import sys
  import types
  from typing import Any, Callable, Dict, List, Tuple, Optional
  import yaml
  from sockeye.utils import smart_open
  from .None import constants
label_desc: Use image node_id 25 for calling a global function with example usage: add_prepare_data_cli_args(params) without return types