class_docstr: Determines which tensors will be ready when running the graph.
  
  Determines which tensors from `fetches` are ready to run, using following
  algorithm.
  
  1. Determine which table initializers are ready to run.  A table initializer
     is an element of the TABLE_INITIALIZERS collection and it is ready to run
     if all the tensors it depends on are set to ready in
     `replaced_tensors_ready`.
  
  2. Determine which of `fetches` are ready to run.  A fetch is ready to run if
     it only depends on tensors in `feeds` and tensors that are set to ready in
     `replaced_tensors_ready`.
docstr: Gets a _SourceInfo for a given table init op.
docstr_tok: ["Gets","a","_SourceInfo","for","a","given","table","init","op","."]
code: def _get_table_init_op_source_info(
      self, table_init_op, graph_analyzer, translate_path_fn
  ):
      """Gets a _SourceInfo for a given table init op."""
  
      if table_init_op.type not in _TABLE_INIT_OP_TYPES:
          raise ValueError(
              "Table initializer {} did not have expected op type".format(
                  table_init_op
              )
          )
      if not table_init_op.inputs:
          raise ValueError(
              "Table initializer {} did not have expected number if inputs "
              "(expected >= 1 inputs, got 0)".format(table_init_op)
          )
      table_op = table_init_op.inputs[0].op
      table_init_inputs = table_init_op.inputs[1:]
      try:
          ready = all(
              map(graph_analyzer.ready_to_run, table_init_inputs)
          )
          path = translate_path_fn(
              table_op,
              parents=list(
                  map(graph_analyzer.get_unique_path, table_init_inputs)
              ),
          )
      except _UnexpectedPlaceholderError as e:
          if e.func_graph_name:
              raise e
          raise ValueError(
              "The table initializer {} depended on a placeholder ({}).  Note "
              "placeholders will not be fed during table initialization".format(
                  table_init_op, e.tensor
              )
          ) from e
      except _UnexpectedTableError as e:
          if e.func_graph_name:
              raise e
          raise ValueError(
              "The table initializer {} depended on an initializable table ({}). "
              "Note tables are initialized in one pass so a table initializer "
              "cannot depend on the output of an initializeable table".format(
                  table_init_op, e.op
              )
          ) from e
      return _SourceInfo(ready, path)
  
imports: import collections
  import copy
  import hashlib
  import itertools
  from typing import Iterable, List, Mapping, Optional, Set, Union
  import uuid
  from absl import logging
  import tensorflow
  from tensorflow_transform import analyzer_nodes
  from tensorflow_transform import common_types
  from tensorflow_transform import nodes
  from tensorflow_transform import tf_utils
  from tfx_bsl.types import tfx_namedtuple
  from tensorflow.python.framework import composite_tensor
  from tensorflow.python.framework import func_graph
  from tensorflow.python.framework import function_def_to_graph
  from tensorflow.python.util import object_identity
label_desc: Use image node_id 5 for calling the InitializableGraphAnalyzer obj's underlying member method code with example usage: obj._get_table_init_op_source_info(table_init_op, graph_analyzer, translate_path_fn) and returns: _SourceInfo