# Path: tensorflow_transform/nodes.py
# class ValueNode(
#     tfx_namedtuple.namedtuple('ValueNode',
#                               ['parent_operation', 'value_index'])):
# class OperationDef(metaclass=abc.ABCMeta):
# class OperationNode:
# class Visitor(metaclass=abc.ABCMeta):
# class Traverser:
# class _PrintGraphVisitor(Visitor):
#   def __init__(self, parent_operation, value_index: int):
#   def __iter__(self):
#   def num_outputs(self) -> int:
#   def label(self) -> str:
#   def get_field_str(self, field_name: str) -> str:
#   def is_partitionable(self) -> bool:
#   def cache_coder(self) -> Optional[object]:
#   def __init__(self, operation_def, inputs):
#   def __repr__(self):
#   def operation_def(self):
#   def inputs(self):
#   def outputs(self):
# def apply_operation(operation_def_cls, *args, **kwargs):
# def apply_multi_output_operation(operation_def_cls, *args, **kwargs):
#   def validate_value(self, value):
#   def visit(self, operation_def, input_values):
#   def __init__(self, visitor: Visitor):
#   def visit_value_node(self, value_node: ValueNode):
#   def _maybe_visit_value_node(self, value_node: ValueNode):
#   def _visit_operation(self, operation: OperationNode):
# def _escape(line: str) -> str:
#   def __init__(self):
#   def get_dot_graph(self) -> pydot.Dot:
#   def visit(self, operation_def, input_nodes) -> Tuple[pydot.Node, ...]:
#   def validate_value(self, value: pydot.Node):
# def get_dot_graph(leaf_nodes: Collection[ValueNode]) -> pydot.Dot:


import tensorflow as tf
from tensorflow_transform import nodes
from tfx_bsl.types import tfx_namedtuple
# resolved.


class CreateTensorBinding(
    tfx_namedtuple.namedtuple(
        'CreateTensorBinding',
        ['tensor_name', 'dtype_enum', 'is_asset_filepath', 'label']),
    nodes.OperationDef):
  """An operation that represents creating a tensor binding from a value.

  This `OperationDef` represents a `beam.PTransform` that applies a ParDo
  (where the input PCollection is assumed to contain a single element), which
  combines the single element with the a tensor name and `is_asset_filepath`
  to create a tensor binding.

  Attributes:
    tensor_name: The name of the tensor that the given value should replace as a
        constant tensor.
    dtype_enum: The Dtype of the tensor as a TF `types_pb2.DataType`.
    is_asset_filepath: If true, then the replaced value will be added to the
        ASSET_FILEPATHS collection if exporting a TF1 Graph.
    label: A unique label for this operation.
  """
  __slots__ = ()


class CreateSavedModel(
    tfx_namedtuple.namedtuple(
        'CreateSavedModel',
        ['table_initializers', 'output_signature', 'label']),

# Path: tensorflow_transform/nodes.py
# class ValueNode(
#     tfx_namedtuple.namedtuple('ValueNode',
#                               ['parent_operation', 'value_index'])):
# class OperationDef(metaclass=abc.ABCMeta):
# class OperationNode:
# class Visitor(metaclass=abc.ABCMeta):
# class Traverser:
# class _PrintGraphVisitor(Visitor):
#   def __init__(self, parent_operation, value_index: int):
#   def __iter__(self):
#   def num_outputs(self) -> int:
#   def label(self) -> str:
#   def get_field_str(self, field_name: str) -> str:
#   def is_partitionable(self) -> bool:
#   def cache_coder(self) -> Optional[object]:
#   def __init__(self, operation_def, inputs):
#   def __repr__(self):
#   def operation_def(self):
#   def inputs(self):
#   def outputs(self):
# def apply_operation(operation_def_cls, *args, **kwargs):
# def apply_multi_output_operation(operation_def_cls, *args, **kwargs):
#   def validate_value(self, value):
#   def visit(self, operation_def, input_values):
#   def __init__(self, visitor: Visitor):
#   def visit_value_node(self, value_node: ValueNode):
#   def _maybe_visit_value_node(self, value_node: ValueNode):
#   def _visit_operation(self, operation: OperationNode):
# def _escape(line: str) -> str:
#   def __init__(self):
#   def get_dot_graph(self) -> pydot.Dot:
#   def visit(self, operation_def, input_nodes) -> Tuple[pydot.Node, ...]:
#   def validate_value(self, value: pydot.Node):
# def get_dot_graph(leaf_nodes: Collection[ValueNode]) -> pydot.Dot:


# Path: tensorflow_transform/beam/beam_nodes.py
import tensorflow as tf
from tensorflow_transform import nodes
from tfx_bsl.types import tfx_namedtuple

# resolved.


class CreateTensorBinding(
    tfx_namedtuple.namedtuple(
        'CreateTensorBinding',
        ['tensor_name', 'dtype_enum', 'is_asset_filepath', 'label']),
    nodes.OperationDef):
  """An operation that represents creating a tensor binding from a value.

  This `OperationDef` represents a `beam.PTransform` that applies a ParDo
  (where the input PCollection is assumed to contain a single element), which
  combines the single element with the a tensor name and `is_asset_filepath`
  to create a tensor binding.

  Attributes:
    tensor_name: The name of the tensor that the given value should replace as a
        constant tensor.
    dtype_enum: The Dtype of the tensor as a TF `types_pb2.DataType`.
    is_asset_filepath: If true, then the replaced value will be added to the
        ASSET_FILEPATHS collection if exporting a TF1 Graph.
    label: A unique label for this operation.
  """
  __slots__ = ()


class CreateSavedModel(
    tfx_namedtuple.namedtuple(
        'CreateSavedModel',
        ['table_initializers', 'output_signature', 'label']),

    nodes.OperationDef):