code: def _set_node_parameters(
      node: pipeline_pb2.PipelineNode, tfx_node: base_node.BaseNode
  ):
      """Compiles exec properties of a pipeline node."""
      for key, value in tfx_node.exec_properties.items():
          if value is None:
              continue
          parameter_value = node.parameters.parameters[key]
  
          # Order matters, because runtime parameter can be in serialized string.
          if isinstance(value, data_types.RuntimeParameter):
              compiler_utils.set_runtime_parameter_pb(
                  parameter_value.runtime_parameter,
                  value.name,
                  value.ptype,
                  value.default,
              )
          elif isinstance(value, placeholder.Placeholder):
              compiler_utils.validate_exec_property_placeholder(
                  key, value
              )
              parameter_value.placeholder.CopyFrom(
                  channel_utils.encode_placeholder_with_channels(
                      value, compiler_utils.implicit_channel_key
                  )
              )
          else:
              try:
                  data_types_utils.set_parameter_value(
                      parameter_value, value
                  )
              except ValueError as e:
                  raise ValueError(
                      "Component {} got unsupported parameter {} with type {}.".format(
                          tfx_node.id, key, type(value)
                      )
                  ) from e
  
imports: import itertools
  from typing import Any, Callable, Dict, Iterator, List, Optional, Tuple, Type, cast
  from tfx import types
  from tfx.dsl.compiler import compiler_context
  from tfx.dsl.compiler import compiler_utils
  from tfx.dsl.compiler import constants
  from tfx.dsl.compiler import node_inputs_compiler
  from tfx.dsl.components.base import base_component
  from tfx.dsl.components.base import base_driver
  from tfx.dsl.components.base import base_node
  from tfx.dsl.experimental.node_execution_options import utils
  from tfx.dsl.placeholder import placeholder
  from tfx.orchestration import data_types
  from tfx.orchestration import data_types_utils
  from tfx.orchestration import pipeline
  from tfx.proto.orchestration import executable_spec_pb2
  from tfx.proto.orchestration import pipeline_pb2
  from tfx.types import channel
  from tfx.types import channel_utils
  from tfx.utils import deprecation_utils
  from tfx.utils import name_utils
label_desc: Use image node_id 7 for calling a global function with example usage: _set_node_parameters(node, tfx_node) without return types