class_docstr: Kubeflow pipelines task builder.
  
  Constructs a pipeline task spec based on the TFX node information. Meanwhile,
  augments the deployment config associated with the node.
docstr: Builds ImporterSpec.
docstr_tok: ["Builds","ImporterSpec","."]
code: def _build_importer_spec(self) -> ImporterSpec:
      """Builds ImporterSpec."""
      assert isinstance(self._node, importer.Importer)
      output_key = cast(
          str, self._exec_properties[importer.OUTPUT_KEY_KEY]
      )
      output_channel = self._node.outputs[output_key]
      result = ImporterSpec()
  
      # Importer's output channel contains one artifact instance with
      # additional properties.
      if output_channel.additional_properties:
          result.metadata.update(output_channel.additional_properties)
      if output_channel.additional_custom_properties:
          result.metadata.update(
              output_channel.additional_custom_properties
          )
  
      result.reimport = bool(
          self._exec_properties[importer.REIMPORT_OPTION_KEY]
      )
  
      # 'artifact_uri' property of Importer node should be string, but the type
      # is not checked (except the pytype hint) in Importer node.
      # It is possible to escape the type constraint and pass a RuntimeParameter.
      # If that happens, we need to overwrite the runtime parameter name to
      # 'artifact_uri', instead of using the name of user-provided runtime
      # parameter.
      if isinstance(
          self._exec_properties[importer.SOURCE_URI_KEY],
          data_types.RuntimeParameter,
      ):
          result.artifact_uri.runtime_parameter = (
              importer.SOURCE_URI_KEY
          )
      else:
          result.artifact_uri.CopyFrom(
              compiler_utils.value_converter(
                  self._exec_properties[importer.SOURCE_URI_KEY]
              )
          )
  
      result.type_schema.CopyFrom(
          pipeline_pb2.ArtifactTypeSchema(
              instance_schema=compiler_utils.get_artifact_schema(
                  output_channel.type
              )
          )
      )
  
      return result
  
imports: import itertools
  from typing import Any, Dict, List, Optional, Tuple, cast
  from absl import logging
  from kfp.pipeline_spec import pipeline_spec_pb2
  from tfx import components
  from tfx.components.evaluator import constants
  from tfx.dsl.compiler import compiler_utils
  from tfx.dsl.component.experimental import executor_specs
  from tfx.dsl.component.experimental import placeholders
  from tfx.dsl.components.base import base_component
  from tfx.dsl.components.base import base_node
  from tfx.dsl.components.base import executor_spec
  from tfx.dsl.components.common import importer
  from tfx.dsl.components.common import resolver
  from tfx.dsl.context_managers import dsl_context_registry
  from tfx.dsl.experimental.conditionals import conditional
  from tfx.dsl.input_resolution.strategies import latest_artifact_strategy
  from tfx.dsl.input_resolution.strategies import latest_blessed_model_strategy
  from tfx.dsl.placeholder import placeholder
  from tfx.orchestration import data_types
  from tfx.orchestration.kubeflow import decorators
  from tfx.orchestration.kubeflow import utils
  from tfx.orchestration.kubeflow.v2 import compiler_utils
  from tfx.orchestration.kubeflow.v2 import parameter_utils
  from tfx.types import channel_utils
  from tfx.types import standard_artifacts
  from tfx.types.channel import Channel
  from tfx.utils import deprecation_utils
  from tfx.utils import name_utils
  from ml_metadata.proto import metadata_store_pb2
label_desc: Use image node_id 5 for calling the StepBuilder obj's underlying member method code with example usage: obj._build_importer_spec() and returns: result