code: def get_cli_args():
      """Create CLI parser and return parsed arguments"""
      parser = argparse.ArgumentParser()
  
      # Example-specific args.
      parser.add_argument(
          "--port",
          type=int,
          default=SERVER_BASE_PORT,
          help="The base-port to use (on localhost). "
          f"Default is {SERVER_BASE_PORT}.",
      )
      parser.add_argument(
          "--callbacks-verbose",
          action="store_true",
          help="Activates info-messages for different events on "
          "server/client (episode steps, postprocessing, etc..).",
      )
      parser.add_argument(
          "--num-workers",
          type=int,
          default=2,
          help="The number of workers to use. Each worker will create "
          "its own listening socket for incoming experiences.",
      )
      parser.add_argument(
          "--no-restore",
          action="store_true",
          help="Do not restore from a previously saved checkpoint (location of "
          "which is saved in `last_checkpoint_[algo-name].out`).",
      )
  
      # General args.
      parser.add_argument(
          "--run",
          default="PPO",
          choices=["APEX", "DQN", "IMPALA", "PPO", "R2D2"],
          help="The RLlib-registered algorithm to use.",
      )
      parser.add_argument("--num-cpus", type=int, default=3)
      parser.add_argument(
          "--framework",
          choices=["tf", "tf2", "torch"],
          default="torch",
          help="The DL framework specifier.",
      )
      parser.add_argument(
          "--use-lstm",
          action="store_true",
          help="Whether to auto-wrap the model with an LSTM. Only valid option for "
          "--run=[IMPALA|PPO|R2D2]",
      )
      parser.add_argument(
          "--stop-iters",
          type=int,
          default=200,
          help="Number of iterations to train.",
      )
      parser.add_argument(
          "--stop-timesteps",
          type=int,
          default=500000,
          help="Number of timesteps to train.",
      )
      parser.add_argument(
          "--stop-reward",
          type=float,
          default=80.0,
          help="Reward at which we stop training.",
      )
      parser.add_argument(
          "--as-test",
          action="store_true",
          help="Whether this script should be run as a test: --stop-reward must "
          "be achieved within --stop-timesteps AND --stop-iters.",
      )
      parser.add_argument(
          "--no-tune",
          action="store_true",
          help="Run without Tune using a manual train loop instead. Here,"
          "there is no TensorBoard support.",
      )
      parser.add_argument(
          "--local-mode",
          action="store_true",
          help="Init Ray in local mode for easier debugging.",
      )
  
      args = parser.parse_args()
      print(f"Running with following CLI args: {args}")
      return args
  
file_path: ray/python/ray/rllib/examples/serving/cartpole_server.py
imports: import argparse
  import gymnasium
  import os
  import ray
  from ray import air, tune
  from ray.rllib.env.policy_server_input import PolicyServerInput
  from ray.rllib.examples.custom_metrics_and_callbacks import MyCallbacks
  from ray.tune.logger import pretty_print
  from ray.tune.registry import get_trainable_cls
label_desc: Use image node_id 1 for calling a global function with example usage: get_cli_args() and returns: args