class_docstr: Encapsulates the data transformation logic of a physical MapOperator.
  
  A MapTransformer may consist of one or more steps, each of which is represented
  as a MapTransformFn. The first MapTransformFn must take blocks as input, and
  the last MapTransformFn must output blocks. The intermediate data types can
  be blocks, rows, or batches.
class_docstr_tok: ["Encapsulates","the","data","transformation","logic","of","a","physical","MapOperator",".","A","MapTransformer","may","consist","of","one","or","more","steps",",","each","of","which","is","represented","as","a","MapTransformFn",".","The","first","MapTransformFn","must","take","blocks","as","input",",","and","the","last","MapTransformFn","must","output","blocks",".","The","intermediate","data","types","can","be","blocks",",","rows",",","or","batches","."]
docstr: Initialize the transformer.
  
  Should be called before applying the transform.
docstr_tok: ["Initialize","the","transformer",".","Should","be","called","before","applying","the","transform","."]
code: def init(self) -> None:
      """Initialize the transformer.
  
      Should be called before applying the transform.
      """
      self._init_fn()
  
imports: import itertools
  from abc import abstractmethod
  from enum import Enum
  from typing import Any, Callable, Dict, Iterable, List, Optional, TypeVar, Union
  from ray.data._internal.block_batching.block_batching import batch_blocks
  from ray.data._internal.execution.interfaces.task_context import TaskContext
  from ray.data._internal.output_buffer import BlockOutputBuffer
  from ray.data.block import Block, BlockAccessor, DataBatch
label_desc: Use image node_id 5 for calling the MapTransformer obj's underlying member method code with example usage: obj.init() without return types