class_docstr: Base class for a node in TFX pipeline.
class_docstr_tok: ["Base","class","for","a","node","in","TFX","pipeline","."]
docstr: Initialize a node.
  
  Args:
    executor_spec: Optional instance of executor_spec.ExecutorSpec which
      describes how to execute this node (optional, defaults to an empty
      executor indicates no-op.
    driver_class: Optional subclass of base_driver.BaseDriver as a custom
      driver for this node (optional, defaults to base_driver.BaseDriver).
      Nodes usually use the default driver class, but may override it.
docstr_tok: ["Initialize","a","node",".","Args",":","executor_spec",":","Optional","instance","of","executor_spec.ExecutorSpec","which","describes","how","to","execute","this","node","(","optional",",","defaults","to","an","empty","executor","indicates","no-op",".","driver_class",":","Optional","subclass","of","base_driver.BaseDriver","as","a","custom","driver","for","this","node","(","optional",",","defaults","to","base_driver.BaseDriver",")",".","Nodes","usually","use","the","default","driver","class",",","but","may","override","it","."]
code: def __init__(
      self,
      executor_spec: Optional[executor_spec_module.ExecutorSpec] = None,
      driver_class: Optional[Type[base_driver.BaseDriver]] = None,
  ):
      """Initialize a node.
  
      Args:
        executor_spec: Optional instance of executor_spec.ExecutorSpec which
          describes how to execute this node (optional, defaults to an empty
          executor indicates no-op.
        driver_class: Optional subclass of base_driver.BaseDriver as a custom
          driver for this node (optional, defaults to base_driver.BaseDriver).
          Nodes usually use the default driver class, but may override it.
      """
      if executor_spec is None:
          executor_spec = executor_spec_module.ExecutorClassSpec(
              base_executor.EmptyExecutor
          )
      if driver_class is None:
          driver_class = base_driver.BaseDriver
      self.executor_spec = executor_spec
      self.driver_class = driver_class
      self._upstream_nodes = set()
      self._downstream_nodes = set()
      self._id = None
      self._node_execution_options: Optional[
          utils.NodeExecutionOptions
      ] = None
      dsl_context_registry.get().put_node(self)
  
imports: import abc
  import copy
  from typing import Any, Dict, Optional, Type
  from tfx.dsl.components.base import base_driver
  from tfx.dsl.components.base import base_executor
  from tfx.dsl.components.base import executor_spec
  from tfx.dsl.context_managers import dsl_context_registry
  from tfx.dsl.experimental.node_execution_options import utils
  from tfx.utils import deprecation_utils
  from tfx.utils import doc_controls
  from tfx.utils import json_utils
  from tfx.utils import name_utils
label_desc: Use image node_id 2 to create a new BaseNode object from inherited base classes: json_utils, abc with example: obj = BaseNode(executor_spec, driver_class)