class_docstr: Visitor optimizes the operation graph (see nodes.py).
  
  This operates on the translated graph which is emitted by the
  `_TranslateVisitor`, and performs optimizations.
  
  Namely, when enabled, this enables reading and writing from/to analyzer
  accumulator cache to avoid recomputing them over already seen datasets.
  This type of optimization requires also creating a partitioned view of the
  input data, according to the `is_partitionable` annotation.
code: def _make_next_hashed_path(self, parent_hashed_paths, operation_def):
      # Making a copy of parent_hashed_paths.
      paths_to_hash = list(parent_hashed_paths)
      paths_to_hash.append(
          tf.compat.as_bytes(operation_def.__class__.__name__)
      )
  
      if isinstance(operation_def, beam_nodes.ExtractFromDict):
          for key in operation_def.keys:
              path = self._tensor_keys_to_paths[key]
              paths_to_hash.append(path)
      else:
          for attr in sorted(
              [
                  x
                  for x in dir(operation_def)
                  if x not in operation_def._fields
              ]
          ):
              if attr.startswith("_") or callable(
                  getattr(operation_def, attr)
              ):
                  continue
              paths_to_hash.append(
                  tf.compat.as_bytes(
                      str((attr, getattr(operation_def, attr)))
                  )
              )
          for field in operation_def._fields:
              paths_to_hash.append(
                  tf.compat.as_bytes(
                      str((field, operation_def.get_field_str(field)))
                  )
              )
  
      hash_container = hashlib.sha1()
      for path in paths_to_hash:
          if path is None:
              return None
          hash_container.update(path)
      return hash_container.digest()
  
imports: import collections
  import dataclasses
  import hashlib
  from typing import Collection, Dict, Mapping, Optional, Tuple
  from typing import OrderedDict
  import tensorflow
  from tensorflow_transform import analyzer_nodes
  from tensorflow_transform import common_types
  from tensorflow_transform import graph_tools
  from tensorflow_transform import impl_helper
  from tensorflow_transform import nodes
  from tensorflow_transform import tf2_utils
  from tensorflow_transform import tf_utils
  from tensorflow_transform.beam import analyzer_cache
  from tensorflow_transform.beam import beam_nodes
  from tensorflow_transform.beam import combiner_packing_util
label_desc: Use image node_id 4 for calling the _OptimizeVisitor obj's underlying member method code with example usage: obj._make_next_hashed_path(parent_hashed_paths, operation_def) and returns: hash_container, None