code: def force_list(elements=None, to_tuple=False):
      """
      Makes sure `elements` is returned as a list, whether `elements` is a single
      item, already a list, or a tuple.
  
      Args:
          elements (Optional[any]): The inputs as single item, list, or tuple to
              be converted into a list/tuple. If None, returns empty list/tuple.
          to_tuple: Whether to use tuple (instead of list).
  
      Returns:
          Union[list,tuple]: All given elements in a list/tuple depending on
              `to_tuple`'s value. If elements is None,
              returns an empty list/tuple.
      """
      ctor = list
      if to_tuple is True:
          ctor = tuple
      return (
          ctor()
          if elements is None
          else ctor(elements)
          if type(elements) in [list, set, tuple]
          else ctor([elements])
      )
  
file_path: ray/python/ray/rllib/utils/__init__.py
imports: import contextlib
  from functools import partial
  from ray.rllib.utils.annotations import override, PublicAPI, DeveloperAPI
  from ray.rllib.utils.deprecation import deprecation_warning
  from ray.rllib.utils.filter import Filter
  from ray.rllib.utils.filter_manager import FilterManager
  from ray.rllib.utils.framework import try_import_jax, try_import_tf, try_import_tfp, try_import_torch
  from ray.rllib.utils.numpy import sigmoid, softmax, relu, one_hot, fc, lstm, SMALL_NUMBER, LARGE_INTEGER, MIN_LOG_NN_OUTPUT, MAX_LOG_NN_OUTPUT
  from ray.rllib.utils.pre_checks.env import check_env
  from ray.rllib.utils.schedules import LinearSchedule, PiecewiseSchedule, PolynomialSchedule, ExponentialSchedule, ConstantSchedule
  from ray.rllib.utils.test_utils import check, check_compute_single_action, check_train_results, framework_iterator
  from ray.tune.utils import merge_dicts, deep_update
label_desc: Use image node_id 2 for calling a global function with example usage: force_list(elements, to_tuple) and returns: unknown