code: def testEmptyReturnValue(self):
      # No output typehint.
      def func_a(
          examples: InputArtifact[standard_artifacts.Examples],
          model: OutputArtifact[standard_artifacts.Model],
          a: int,
          b: float,
          c: Parameter[int],
          d: Parameter[str],
          e: Parameter[bool],
          f: BeamComponentParameter[beam.Pipeline],
      ):
          del examples, model, a, b, c, d, e, f
  
      # `None` output typehint.
      def func_b(
          examples: InputArtifact[standard_artifacts.Examples],
          model: OutputArtifact[standard_artifacts.Model],
          a: int,
          b: float,
          c: Parameter[int],
          d: Parameter[str],
          e: Parameter[bool],
          f: BeamComponentParameter[beam.Pipeline],
      ) -> None:
          del examples, model, a, b, c, d, e, f
  
      # Both functions should be parsed in the same way.
      for func in [func_a, func_b]:
          (
              inputs,
              outputs,
              parameters,
              arg_formats,
              arg_defaults,
              returned_values,
              json_typehints,
              return_json_typehints,
          ) = parse_typehint_component_function(func)
          self.assertDictEqual(
              inputs,
              {
                  "examples": standard_artifacts.Examples,
                  "a": standard_artifacts.Integer,
                  "b": standard_artifacts.Float,
              },
          )
          self.assertDictEqual(
              outputs,
              {
                  "model": standard_artifacts.Model,
              },
          )
          self.assertDictEqual(
              parameters,
              {
                  "c": int,
                  "d": str,
                  "e": bool,
                  "f": beam.Pipeline,
              },
          )
          self.assertDictEqual(
              arg_formats,
              {
                  "examples": ArgFormats.INPUT_ARTIFACT,
                  "model": ArgFormats.OUTPUT_ARTIFACT,
                  "a": ArgFormats.ARTIFACT_VALUE,
                  "b": ArgFormats.ARTIFACT_VALUE,
                  "c": ArgFormats.PARAMETER,
                  "d": ArgFormats.PARAMETER,
                  "e": ArgFormats.PARAMETER,
                  "f": ArgFormats.BEAM_PARAMETER,
              },
          )
          self.assertDictEqual(arg_defaults, {})
          self.assertEqual(returned_values, {})
          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 3 for calling the FunctionParserTest obj's underlying member method code with example usage: obj.testEmptyReturnValue() without return types