class_docstr: Represents an OpTask that only handles metadata, instead of Block data.
class_docstr_tok: ["Represents","an","OpTask","that","only","handles","metadata",",","instead","of","Block","data","."]
docstr: Args:
      object_ref: The ObjectRef of the task.
      task_done_callback: The callback to call when the task is done.
docstr_tok: ["Args",":","object_ref",":","The","ObjectRef","of","the","task",".","task_done_callback",":","The","callback","to","call","when","the","task","is","done","."]
code: def __init__(
      self,
      task_index: int,
      object_ref: ray.ObjectRef,
      task_done_callback: Callable[[], None],
  ):
      """
      Args:
          object_ref: The ObjectRef of the task.
          task_done_callback: The callback to call when the task is done.
      """
      super().__init__(task_index)
      self._object_ref = object_ref
      self._task_done_callback = task_done_callback
  
imports: from abc import ABC, abstractmethod
  from typing import Any, Callable, Dict, List, Optional, Union
  import ray
  from .ref_bundle import RefBundle
  from ray._raylet import ObjectRefGenerator
  from ray.data._internal.execution.interfaces.execution_options import ExecutionOptions, ExecutionResources
  from ray.data._internal.execution.interfaces.op_runtime_metrics import OpRuntimeMetrics
  from ray.data._internal.logical.interfaces import Operator
  from ray.data._internal.stats import StatsDict
  from ray.data.context import DataContext
label_desc: Use image node_id 1 to create a new MetadataOpTask object from inherited base classes: OpTask with example: obj = MetadataOpTask(task_index, object_ref, task_done_callback)