code: def _get_scalar_kernel(sr, func, args):
      sr_type = MaskedType(
          string_view
          if sr.dtype == "O"
          else numpy_support.from_dtype(sr.dtype)
      )
      scalar_return_type = _get_udf_return_type(sr_type, func, args)
  
      sig = _construct_signature(sr, scalar_return_type, args=args)
      f_ = cuda.jit(device=True)(func)
      global_exec_context = {
          "f_": f_,
          "cuda": cuda,
          "Masked": Masked,
          "_mask_get": _mask_get,
          "pack_return": pack_return,
      }
      kernel_string = _scalar_kernel_string_from_template(sr, args=args)
      kernel = _get_kernel(
          kernel_string, global_exec_context, sig, func
      )
  
      return kernel, scalar_return_type
  
file_path: cudf/python/cudf/cudf/core/udf/scalar_function.py
imports: from numba import cuda
  from numba.np import numpy_support
  from cudf.core.udf.api import Masked, pack_return
  from cudf.core.udf.masked_typing import MaskedType
  from cudf.core.udf.strings_typing import string_view
  from cudf.core.udf.templates import masked_input_initializer_template, scalar_kernel_template, unmasked_input_initializer_template
  from cudf.core.udf.utils import _construct_signature, _get_kernel, _get_udf_return_type, _mask_get
label_desc: Use image node_id 2 for calling a global function with example usage: _get_scalar_kernel(sr, func, args) and returns: kernel,  scalar_return_type