code: def _make_unary_attr(funcname):
      class GroupUnaryReductionAttrTyping(GroupUnaryAttrBase):
          key = f"GroupType.{funcname}"
  
      def _attr(self, mod):
          return types.BoundFunction(
              GroupUnaryReductionAttrTyping,
              GroupType(mod.group_scalar_type, mod.index_type),
          )
  
      return _attr
  
imports: from typing import Any, Dict
  import numba
  from numba import cuda, types
  from numba.core.extending import make_attribute_wrapper, models, register_model, type_callable, typeof_impl
  from numba.core.typing import signature
  from numba.core.typing.templates import AbstractTemplate, AttributeTemplate
  from numba.cuda.cudadecl import registry
  from numba.np import numpy_support
  from cudf.core.udf._ops import arith_ops, comparison_ops, unary_ops
  from cudf.core.udf.utils import Row, UDFError
label_desc: Use image node_id 6 for calling a global function with example usage: _make_unary_attr(funcname) and returns: _attr, types