code: def compile_node_inputs(
      context: compiler_context.PipelineContext,
      tfx_node: base_node.BaseNode,
      result: pipeline_pb2.NodeInputs,
  ) -> None:
      """Compile NodeInputs from BaseNode input channels."""
      # Compile DSL node inputs.
      for input_key, channel in tfx_node.inputs.items():
          if compiler_utils.is_resolver(tfx_node) or (
              isinstance(tfx_node, base_component.BaseComponent)
              and tfx_node.spec.is_allow_empty_input(input_key)
          ):
              min_count = 0
          else:
              min_count = 1
              if isinstance(channel, channel_types.OutputChannel):
                  _validate_min_count(
                      input_key=input_key,
                      min_count=min_count,
                      channel=channel,
                      consumer_node=tfx_node,
                  )
          _compile_input_spec(
              pipeline_ctx=context,
              tfx_node=tfx_node,
              input_key=input_key,
              channel=channel,
              hidden=False,
              min_count=min_count,
              result=result,
          )
  
      # Add implicit input channels that are used in conditionals.
      _compile_conditionals(context, tfx_node, result)
  
      # Add implicit input channels that are used in dynamic properties.
      _compile_inputs_for_dynamic_properties(context, tfx_node, result)
  
imports: from typing import 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.components.base import base_component
  from tfx.dsl.components.base import base_node
  from tfx.dsl.experimental.conditionals import conditional
  from tfx.dsl.input_resolution import resolver_op
  from tfx.dsl.placeholder import artifact_placeholder
  from tfx.dsl.placeholder import placeholder
  from tfx.orchestration import data_types_utils
  from tfx.proto.orchestration import metadata_pb2
  from tfx.proto.orchestration import pipeline_pb2
  from tfx.types import channel
  from tfx.types import channel_utils
  from tfx.types import resolved_channel
  from tfx.types import value_artifact
  from tfx.utils import deprecation_utils
  from tfx.utils import name_utils
  from tfx.utils import typing_utils
label_desc: Use image node_id 7 for calling a global function with example usage: compile_node_inputs(context, tfx_node, result) without return types