code: def test_parse_parameter_arg_succeeds(self):
      def func_with_primitive_parameter(
          foo: annotations.Parameter[int],
          int_param: annotations.Parameter[int],
          float_param: annotations.Parameter[float],
          str_param: annotations.Parameter[str],
          bool_param: annotations.Parameter[bool],
          dict_int_param: annotations.Parameter[Dict[str, int]],
          list_bool_param: annotations.Parameter[List[bool]],
          dict_list_bool_param: annotations.Parameter[
              Dict[str, List[bool]]
          ],
          list_dict_float_param: annotations.Parameter[
              List[Dict[str, float]]
          ],
      ) -> None:
          pass
  
      arg_defaults = utils.extract_arg_defaults(
          inspect.getfullargspec(func_with_primitive_parameter),
      )
      typehints = func_with_primitive_parameter.__annotations__
      original_parameters = {"foo": int}
      original_arg_formats = {"foo": utils.ArgFormats.PARAMETER}
      expected_arg_types_by_name = {
          "int_param": int,
          "float_param": float,
          "str_param": str,
          "bool_param": bool,
          "dict_int_param": Dict[str, int],
          "list_bool_param": List[bool],
          "dict_list_bool_param": Dict[str, List[bool]],
          "list_dict_float_param": List[Dict[str, float]],
      }
      for arg_name, arg_type in expected_arg_types_by_name.items():
          parameters = copy.deepcopy(original_parameters)
          arg_formats = copy.deepcopy(original_arg_formats)
          utils.parse_parameter_arg(
              arg_name,
              arg_defaults,
              typehints[arg_name],
              parameters,
              arg_formats,
          )
          self.assertEqual(parameters, {"foo": int, arg_name: arg_type})
          self.assertEqual(
              arg_formats,
              {
                  "foo": utils.ArgFormats.PARAMETER,
                  arg_name: utils.ArgFormats.PARAMETER,
              },
          )
  
imports: import copy
  import inspect
  from typing import Dict, List
  import tensorflow
  from tfx.dsl.component.experimental import annotations
  from tfx.dsl.component.experimental import decorators
  from tfx.dsl.component.experimental import function_parser
  from tfx.dsl.component.experimental import utils
  from tfx.dsl.components.base import executor_spec
  from tfx.types import standard_artifacts
  from tfx.types import system_executions
label_desc: Use image node_id 6 for calling the UtilsTest obj's underlying member method code with example usage: obj.test_parse_parameter_arg_succeeds() without return types