code: def _make_template(s: str):
      import re
  
      leftovers = set()
  
      def replace_id(match: "re.Match") -> str:
          # avoid name clashes with user code by adding 'psc_' prefix to
          # identifiers.
  
          word = match.group(1)
          if word in _IGNORED_WORDS:
              return word
          elif word in _PREFIX_WORDS:
              return f"psc_{word}"
          else:
              leftovers.add(word)
              return word
  
      s = re.sub(r"\b([a-zA-Z0-9_]+)\b", replace_id, s)
      if leftovers:
          from warnings import warn
  
          warn(
              "Leftover words in identifier prefixing: "
              + " ".join(leftovers),
              stacklevel=3,
          )
  
      return mako.template.Template(s, strict_undefined=True)
  
imports: from abc import ABC, abstractmethod
  from dataclasses import dataclass
  from typing import Any, Dict, List, Optional, Set, Tuple, Union
  import numpy
  import pyopencl
  import pyopencl.array
  from pyopencl.tools import KernelTemplateBase, DtypedArgument, bitlog2, context_dependent_memoize, dtype_to_ctype, get_arg_list_scalar_arg_dtypes, get_arg_offset_adjuster_code, _process_code_for_macro, _NumpyTypesKeyBuilder
  import pyopencl._mymako
  from pyopencl._cluda import CLUDA_PREAMBLE
  from pytools.persistent_dict import WriteOncePersistentDict
  import logging
label_desc: Use image node_id 2 for calling a global function with example usage: _make_template(s) and returns: mako, word, str, word, word