code: def construct_inputs_from_placeholders(
      input_placeholders: Dict[str, Placeholder], upper_bound: int
  ) -> [List[TensorType]]:
      """Construct the `inputs` param from placeholders with upper_bound."""
      inputs: [List[TensorType]] = []
      for input_name, placeholder in input_placeholders.items():
          input_shape = [
              ct.RangeDim(upper_bound=upper_bound)
              if is_symbolic(shape)
              else shape
              for shape in placeholder.sym_shape
          ]
          input_tensor_type = TensorType(
              name=input_name, shape=input_shape
          )
          inputs.append(input_tensor_type)
      return inputs
  
file_path: coremltools/coremltools/converters/mil/mil/ops/tests/testing_utils.py
imports: import functools
  from typing import Dict, List, Optional
  import pytest
  import coremltools
  from coremltools import _logger
  from coremltools.converters.mil.input_types import TensorType
  from coremltools.converters.mil.mil import Function, Placeholder, Program
  from coremltools.converters.mil.mil.passes.pass_pipeline import PassPipeline
  from coremltools.converters.mil.mil.types.symbolic import is_symbolic
  from coremltools.converters.mil.testing_reqs import BackendConfig
  from coremltools.converters.mil.testing_utils import compare_backend, ct_convert, validate_minimum_deployment_target
label_desc: Use image node_id 3 for calling a global function with example usage: construct_inputs_from_placeholders(input_placeholders, upper_bound) and returns: inputs