class_docstr: Per-node context for pipeline compilation.
class_docstr_tok: ["Per-node","context","for","pipeline","compilation","."]
code: def __init__(self, tfx_node: base_node.BaseNode):
      self._input_key_by_channel = {
          channel: input_key
          for input_key, channel in tfx_node.inputs.items()
      }
      self._input_graph_key_by_resolver_fn = {}
  
imports: from __future__ import annotations
  import collections
  from typing import Optional, List, Set, Iterable, Dict
  from tfx.dsl.compiler import compiler_utils
  from tfx.dsl.components.base import base_node
  from tfx.dsl.context_managers import dsl_context_registry
  from tfx.dsl.control_flow import for_each_internal
  from tfx.dsl.experimental.conditionals import conditional
  from tfx.dsl.input_resolution import resolver_op
  from tfx.orchestration import pipeline
  from tfx.proto.orchestration import pipeline_pb2
  from tfx.types import channel
  from tfx.types import channel_utils
label_desc: Use image node_id 1 to create a new NodeContext object  with example: obj = NodeContext(tfx_node)