code: def __init__(
      self,
      arguments: Union[str, List[DtypedArgument]],
      neutral: str,
      reduce_expr: str,
      map_expr: Optional[str] = None,
      is_segment_start_expr: Optional[str] = None,
      input_fetch_exprs: Optional[List[Tuple[str, str, int]]] = None,
      name_prefix: str = "reduce",
      preamble: str = "",
      template_processor: Any = None,
  ) -> None:
      super().__init__(template_processor=template_processor)
  
      if input_fetch_exprs is None:
          input_fetch_exprs = []
  
      self.arguments = arguments
      self.reduce_expr = reduce_expr
      self.neutral = neutral
      self.map_expr = map_expr
      self.name_prefix = name_prefix
      self.preamble = preamble
  
imports: from dataclasses import dataclass
  from typing import Any, List, Optional, Tuple, Union
  import numpy
  import pyopencl
  from pyopencl.tools import DtypedArgument, KernelTemplateBase, context_dependent_memoize, dtype_to_ctype, _process_code_for_macro
label_desc: Use image node_id 1 to create a new ReductionTemplate object from inherited base classes: KernelTemplateBase with example: obj = ReductionTemplate(arguments, neutral, reduce_expr, map_expr, is_segment_start_expr, input_fetch_exprs, name_prefix, preamble, template_processor)