code: def testArtifactFunctionParse(self):
      def func_a(
          examples: InputArtifact[standard_artifacts.Examples],
          model: OutputArtifact[standard_artifacts.Model],
          schema: InputArtifact[standard_artifacts.Schema],
          statistics: OutputArtifact[
              standard_artifacts.ExampleStatistics
          ],
          num_steps: Parameter[int],
          unused_beam_pipeline: BeamComponentParameter[beam.Pipeline],
      ) -> OutputDict(
          precision=float,
          recall=float,
          message=str,
          serialized_value=bytes,
          is_blessed=bool,
      ):
          del (
              examples,
              model,
              schema,
              statistics,
              num_steps,
              unused_beam_pipeline,
          )
          return {
              "precision": 0.9,
              "recall": 0.8,
              "message": "foo",
              "serialized_value": b"bar",
              "is_blessed": False,
          }
  
      (
          inputs,
          outputs,
          parameters,
          arg_formats,
          arg_defaults,
          returned_values,
          json_typehints,
          return_json_typehints,
      ) = parse_typehint_component_function(func_a)
      self.assertDictEqual(
          inputs,
          {
              "examples": standard_artifacts.Examples,
              "schema": standard_artifacts.Schema,
          },
      )
      self.assertDictEqual(
          outputs,
          {
              "model": standard_artifacts.Model,
              "statistics": standard_artifacts.ExampleStatistics,
              "precision": standard_artifacts.Float,
              "recall": standard_artifacts.Float,
              "message": standard_artifacts.String,
              "serialized_value": standard_artifacts.Bytes,
              "is_blessed": standard_artifacts.Boolean,
          },
      )
      self.assertDictEqual(
          parameters,
          {
              "num_steps": int,
              "unused_beam_pipeline": beam.Pipeline,
          },
      )
      self.assertDictEqual(
          arg_formats,
          {
              "examples": ArgFormats.INPUT_ARTIFACT,
              "model": ArgFormats.OUTPUT_ARTIFACT,
              "schema": ArgFormats.INPUT_ARTIFACT,
              "statistics": ArgFormats.OUTPUT_ARTIFACT,
              "num_steps": ArgFormats.PARAMETER,
              "unused_beam_pipeline": ArgFormats.BEAM_PARAMETER,
          },
      )
      self.assertDictEqual(arg_defaults, {})
      self.assertEqual(
          returned_values,
          {
              "precision": False,
              "recall": False,
              "message": False,
              "serialized_value": False,
              "is_blessed": False,
          },
      )
      self.assertDictEqual(json_typehints, {})
      self.assertDictEqual(return_json_typehints, {})
  
imports: from typing import Dict, List, Optional, TypedDict, Union
  import apache_beam
  import tensorflow
  from tfx.dsl.component.experimental.annotations import BeamComponentParameter
  from tfx.dsl.component.experimental.annotations import InputArtifact
  from tfx.dsl.component.experimental.annotations import OutputArtifact
  from tfx.dsl.component.experimental.annotations import OutputDict
  from tfx.dsl.component.experimental.annotations import Parameter
  from tfx.dsl.component.experimental.function_parser import parse_typehint_component_function
  from tfx.dsl.component.experimental.utils import ArgFormats
  from tfx.types import standard_artifacts
label_desc: Use image node_id 2 for calling the FunctionParserTest obj's underlying member method code with example usage: obj.testArtifactFunctionParse() and returns: dict