code: def testBuildParameterTypeSpec(self):
      type_enum = pipeline_pb2.PrimitiveType.PrimitiveTypeEnum
      testdata = {
          42: type_enum.INT,
          42.1: type_enum.DOUBLE,
          "42": type_enum.STRING,
          data_types.RuntimeParameter(
              name="_", ptype=int
          ): type_enum.INT,
          data_types.RuntimeParameter(
              name="_", ptype=float
          ): type_enum.DOUBLE,
          data_types.RuntimeParameter(
              name="_", ptype=str
          ): type_enum.STRING,
      }
      for value, expected_type_enum in testdata.items():
          self.assertEqual(
              compiler_utils.build_parameter_type_spec(value).type,
              expected_type_enum,
          )
  
imports: import os
  from absl.testing import parameterized
  from kfp.pipeline_spec import pipeline_spec_pb2
  import tensorflow
  from tfx.dsl.io import fileio
  from tfx.orchestration import data_types
  from tfx.orchestration.kubeflow.v2 import compiler_utils
  from tfx.types import artifact
  from tfx.types import channel
  from tfx.types import channel_utils
  from tfx.types import standard_artifacts
  from tfx.types.experimental import simple_artifacts
  import yaml
  from google.protobuf import text_format
label_desc: Use image node_id 7 for calling the CompilerUtilsTest obj's underlying member method code with example usage: obj.testBuildParameterTypeSpec() without return types